1include(MAKEDEV.sub)dnl 2dnl 3vers(a, {-$OpenBSD: MAKEDEV.mi,v 1.68 2004/02/10 01:31:20 millert Exp $-})dnl 4dnl 5divert(1)dnl 6{-#-} 7{-#-} Copyright (c) 2001,2002,2003 Todd T. Fries <todd@OpenBSD.org> 8{-#-} 9{-#-} Permission to use, copy, modify, and distribute this software for any 10{-#-} purpose with or without fee is hereby granted, provided that the above 11{-#-} copyright notice and this permission notice appear in all copies. 12{-#-} 13{-#-} THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 14{-#-} WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 15{-#-} MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 16{-#-} ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17{-#-} WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 18{-#-} ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 19{-#-} OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20{-#-} 21dnl 22dnl Diversions: (upon termination, concatenated output queues) 23dnl 24dnl 0 - very top 25dnl 1 - descriptions of devices 26dnl 2 - init of script, function definitions, etc 27dnl 3 - beginning of global recursive R() function 28dnl 7 - body of MAKEDEV, device creations, etc 29dnl 9 - end 30dnl 31dnl HOW TO ADD A DEVICE: 32dnl 33dnl In this file, you must use at least two macros: 34dnl 35dnl Use '__devitem(uniqueid, name-pattern, description)' to create an entry 36dnl in the description at the top of the generated MAKEDEV file: 37dnl 38dnl __devitem(sca, sca*, Sugar Generic device)dnl 39dnl __devitem(cry, crypto, hardware crypto access driver)dnl 40dnl 41dnl This is ultimately shown as: 42dnl 43dnl # sca* Sugar Generic device 44dnl # crypto hardware crypto access driver 45dnl 46dnl Use '_mkdev(uniqueid, shell-pattern, {-shell-script-})dnl' to create 47dnl a shell script fragment used to 'create' the device (be sure to match 48dnl the uniqueid from above): 49dnl 50dnl _mkdev(sca, sca*, {-M sca$U c major_sca_c $U 51dnl M rsca$U b major_sca_b Add($U, 128)-})dnl 52dnl _mkdev(cry, crypto, {-M crypto c major_cry_c 0-})dnl 53dnl 54dnl This is ultimately expanded into: 55dnl 56dnl sca*) 57dnl M sca$U c 24 $U 58dnl M sca$U b 42 $(($U+128)) 59dnl ;; 60dnl 61dnl crypto) 62dnl M crypto c 47 0 63dnl ;; 64dnl 65dnl In the MAKEDEV.md file, add a '_DEV(uniqueid, charmajor, blockmajor)' 66dnl entry: 67dnl 68dnl _DEV(sca, 24, 42) 69dnl _DEV(cry, 47) 70dnl 71dnl Final step is to use the 'target/twrget' macros to have the 'all)' target 72dnl generate one or more device(s). Usage of 'target/twrget' is: 73dnl target(target_name, device_name [, append_string ] .. ) 74dnl twrget(target_name, uniqueid, device_name, [, append_string ] .. ) 75dnl 76dnl target_name a unique name that later is used as an argument to 77dnl 'show_target()' (which expands all devices for a 78dnl given 'target_name'). 79dnl uniqueid same as 'uniqueid' above 80dnl device_name string representing the device to be mknod'ed 81dnl append_string for each append_string, `device_name' is prepended 82dnl 83dnl Note: 'target(a,b,c)' is equivalent to 'twrget(a,b,b,c)' 84dnl 85dnl 86dnl For a short example: 87dnl 88dnl target(all, std)dnl 89dnl target(all, sca, 0, 1, 2, 3)dnl 90dnl twrget(all, cry, crypto)dnl 91dnl 92dnl would expand to: 93dnl 94dnl all) 95dnl R std sca0 sca1 sca2 sca3 crypto 96dnl ;; 97dnl 98dnl presuming '_DEV(sca, ?, ?)' and '_DEV(std)' were in the MAKEDEV.md file. 99dnl 100dnl 101dnl Everything is 'automatically' added to 'MAKEDEV' based on whether or 102dnl not the '_DEV()' entry has a corresponding _mkdev() and __devitem() 103dnl entry in MAKEDEV.mi (this file). 104dnl 105dnl Note: be very wary of adding whitespace, carriage returns, or not 106dnl finishing a macro with ')dnl' .. otherwise, extra blank lines show up 107dnl in the output. 108dnl 109dnl TODO: 110dnl 111dnl make a 'disktgt' macro that automatically does: 112dnl disktgt(rd, {-rd-}) 113dnl 114dnl target(all,rd,0) 115dnl target(ramd,rd,0) 116dnl disk_q(rd) 117dnl __devitem(rd, {-rd*-}, {-rd-})dnl 118dnl 119dnl Note: not all disks are generated in 'all)'. (e.g. vax has a lot of 120dnl disks that are not generated by 'all)') 121dnl 122dnl 123_mkdev(loc, local, {-test -s $T.local && sh $T.local-})dnl 124dnl 125__devtitle(make, Device "make" file. Valid arguments)dnl 126__devitem({-all-}, {-all-}, 127{-makes all known devices{-,-} including local devices. 128{-#-} Tries to make the ``standard'' number of each type.-})dnl 129dnl 130dnl 131target(all, mcd, 0)dnl 132twrget(all, fdesc, fd)dnl 133target(all, st, 0, 1)dnl 134target(all, std)dnl 135target(all, raid, 0, 1, 2, 3)dnl 136target(all, rz, 0, 1, 2, 3, 4)dnl 137target(all, hp, 0, 1, 2, 3)dnl 138target(all, ra, 0, 1, 2, 3)dnl 139target(all, rx, 0, 1)dnl 140target(all, wd, 0, 1, 2, 3)dnl 141target(all, xd, 0, 1, 2, 3)dnl 142twrget(all, aflo, fd, 0, 1, 2, 3)dnl 143target(all, systrace)dnl 144target(all, pctr)dnl 145target(all, pctr0)dnl 146target(all, pf)dnl 147twrget(all, cry, crypto)dnl 148target(all, apm)dnl 149twrget(all, tth, ttyh, 0, 1)dnl 150target(all, ttyA, 0, 1)dnl 151target(all, ttyB, 0, 1, 2, 3, 4, 5)dnl 152twrget(all, attyB, ttyB, 0, 1, 2, 3, 4)dnl 153target(all, tty0, 0, 1, 2, 3)dnl 154twrget(all, mac_tty0, tty0, 0, 1)dnl 155twrget(all, tzs, tty, a, b, c, d)dnl 156twrget(all, czs, cua, a, b, c, d)dnl 157target(all, ttyc, 0, 1, 2, 3, 4, 5, 6, 7)dnl 158twrget(all, com, tty0, 0, 1, 2, 3)dnl 159target(all, lkm)dnl 160twrget(all, mmcl, mmclock)dnl 161target(all, lpt, 0, 1, 2)dnl 162twrget(all, lpt, lpa, 0, 1, 2)dnl 163target(all, joy, 0, 1)dnl 164twrget(all, rnd, random)dnl 165target(all, uk, 0)dnl 166target(all, wt, 0)dnl 167target(all, wdt, 0)dnl 168twrget(all, au, audio, 0)dnl 169twrget(all, speak, speaker)dnl 170target(all, asc, 0)dnl 171target(all, music, 0)dnl 172target(all, radio, 0)dnl 173target(all, tuner, 0)dnl 174target(all, rmidi, 0, 1, 2, 3, 4, 5, 6, 7)dnl 175target(all, usbs)dnl 176target(all, adb)dnl 177target(all, iop, 0, 1)dnl 178target(all, pci)dnl 179twrget(all, wsmouse, wscons)dnl 180twrget(all, grf_mac, grf, 0, 1, 2, 3)dnl 181target(all, par, 0)dnl 182twrget(all, amouse, mouse, 0, 1)dnl 183twrget(all, akbd, kbd)dnl 184target(all, apci, 0)dnl 185target(all, ppi, 0)dnl 186target(all, view0, 0, 1, 2, 3, 4, 5)dnl 187target(all, local)dnl 188target(all, gpr, 0)dnl 189target(all, ptm)dnl 190dnl 191_mkdev(all, {-all-}, {-dnl 192show_target(all)dnl 193-})dnl 194dnl 195__devitem(ramdisk, ramdisk, devices to be put on ramdisk-based media)dnl 196__devitem(std, {-std-}, standard devices)dnl 197dnl 198dnl 199dnl 200dnl _std 201dnl 202dnl $1: tty 203dnl $2: memstuff 204dnl $3: ksyms 205dnl $4: drum 206dnl $5: klog 207dnl 208define({-_std-}, {-dnl 209std) 210 M console c 0 0 600 211 M tty c $1 0 212 M mem c $2 0 640 kmem 213 M kmem c $2 1 640 kmem 214 M null c $2 2 215 M zero c $2 12 216 M stdin c major_fdesc_c 0 217 M stdout c major_fdesc_c 1 218 M stderr c major_fdesc_c 2 219 M ksyms c $3 0 640 kmem 220 M drum c $4 0 640 kmem 221 M klog c $5 0 600-})dnl 222dnl 223target(usb, usb, 0, 1)dnl 224target(usb, urio, 0)dnl 225twrget(usb, uscan, uscanner, 0)dnl 226target(usb, uhid, 0, 1, 2, 3)dnl 227target(usb, ulpt, 0, 1)dnl 228target(usb, ugen, 0, 1)dnl 229target(usb, ttyU, 0, 1)dnl 230dnl 231__devitem({-usbs-}, usbs, make USB devices)dnl 232_mkdev(usbs, usbs, {-dnl 233show_target({-usb-})dnl 234-})dnl 235__devtitle(tap, Tapes)dnl 236__devitem(wt, {-wt* -}, QIC-interface (e.g. not SCSI) 3M cartridge tape)dnl 237_mkdev(wt, wt*, 238{-name=wt 239 n=Mult($U, 8) m=Add($n, 4) 240 M $name$U b major_wt_b $n 640 operator 241 M r$name$U c major_wt_c $n 640 operator 242 M n$name$U b major_wt_b $m 640 operator 243 M nr$name$U c major_wt_c $m 640 operator-})dnl 244__devitem(tz, tz*, {-SCSI tapes{-,-} DEC TK50 cartridge tape-})dnl 245__devitem(st, {-st*-}, SCSI tapes)dnl 246_mkdev(st, st*, {-n=Mult($U, 16) 247 for pre in " " n e en 248 do 249 M ${pre}st$U b major_st_b $n 660 operator 250 M ${pre}rst$U c major_st_c $n 660 operator 251 n=Add($n, 1) 252 done-})dnl 253__devitem(ct, ct*, HP300 HP-IB cartridge tape)dnl 254__devitem(mt, mt*, (Magnetic) 9-track reel tape)dnl 255__devitem(ht, ht*, massbus tm03 & tu??)dnl 256__devitem(tm, tm*, unibus tm11 & te10 emulations (e.g. Emulex tc-11))dnl 257__devitem(ts, ts*, unibus ts11)dnl 258__devitem(ut, ut*, unibus tu45 emulations (e.g.si 9700))dnl 259__devtitle(dis, Disks)dnl 260__devitem(rz, rz*, SCSI disks)dnl 261__devitem(sd, {-sd*-}, {-SCSI disks, includes flopticals-})dnl 262__devitem(hd, {-hd*-}, HP300 HP-IB disks)dnl 263__devitem(cd, {-cd*-}, SCSI cdrom drives)dnl 264__devitem(acd, acd*, ATAPI cdrom drives)dnl 265_mkdev(cd, cd*, {-dodisk2 cd $U major_cd_b major_cd_c $U 0{--}ifstep(cd)-})dnl 266__devitem(mcd, mcd*, Mitsumi cdrom drives)dnl 267_mkdev(mcd, mcd*, {-dodisk2 mcd $U major_mcd_b major_mcd_c $U 0{--}ifstep(mcd)dnl 268-})dnl 269__devitem(ch, {-ch*-}, SCSI media changer)dnl 270_mcdev(ch, ch*, ch, {-major_ch_c-}, 660, operator)dnl 271__devitem(uk, uk*, SCSI Unknown device)dnl 272_mcdev(uk, uk*, uk, {-major_uk_c-}, 640, operator)dnl 273__devitem(ss, ss*, SCSI scanners)dnl 274_mkdev(ss, ss*, {-M ss$U c major_ss_c Mult($U,16) 640 operator 275 M nss$U c major_ss_c Add(Mult($U,16),1) 640 operator 276 M enss$U c major_ss_c Add(Mult($U,16),3) 640 operator 277 RMlist="$RMlist scan$U" 278 MKlist="$MKlist;umask 77;ln -s ss$U scan$U"-})dnl 279__devitem(ses, ses*, SES/SAF-TE SCSI devices)dnl 280_mkdev(ses, ses*, {-M ses$U c major_ses_c $U 640 operator-})dnl 281__devitem(ramd, ramdisk, makes all devices for a ramdisk kernel)dnl arc 282_mkdev(ramd, ramdisk, {-dnl 283show_target(ramd)dnl 284-})dnl 285target(ramd, std)dnl 286target(ramd, random)dnl 287target(ramd, bpf, 0)dnl 288__devitem(rd, {-rd*-}, "rd" pseudo-disks)dnl 289_mkdev(rd, rd*, {-dodisk2 rd $U major_rd_b major_rd_c $U 0{--}ifstep(rd)-})dnl 290__devitem(xd, xd*, Xylogic 753/7053 disks)dnl 291__devitem(xy, xy*, {- Xylogic 450/451 disks-})dnl 292__devitem(flo, {-fd*-}, {-Floppy disk drives (3 1/2"{-,-} 5 1/4")-})dnl 293_mkdev(flo, fd*, 294{-typnam=$U${i#fd[01]*} 295 case $typnam in 296 0|1) typnum=0;; # no type specified, assume A 297 *A) typnum=0; typnam=0;; 298 *B) typnum=1;; 299 *C) typnum=2;; 300 *D) typnum=3;; 301 *E) typnum=4;; 302 *F) typnum=5;; 303 *G) typnum=6;; 304 *H) typnum=7;; 305 *) echo bad type $typnam for $i; exit 1;; 306 esac 307 case $U in 308 0|1) blk=major_flo_b; chr=major_flo_c;; 309 *) echo bad unit $U for $i; exit 1;; 310 esac 311 nam=fd${typnam} 312 n=Add(Mult($U, 128), Mult($typnum, 16)) 313 M ${nam}a b $blk $n 640 operator 314 M ${nam}b b $blk Add($n, 1) 640 operator 315 M ${nam}c b $blk Add($n, 2) 640 operator 316 M r${nam}a c $chr $n 640 operator 317 M r${nam}b c $chr Add($n, 1) 640 operator 318 M r${nam}c c $chr Add($n, 2) 640 operator-}, 664)dnl 319__devitem(aflo, ramdisk, devices needed for install floppies)dnl 320_mkdev(aflo, fd*, {-case $U in 0|1|2|3) 321 M fd${U}a b major_aflo_b Mult($U, 16) 640 operator 322 M fd${U}b b major_aflo_b Add(Mult($U, 16), 1) 640 operator 323 M rfd${U}a c major_aflo_c Mult($U, 16) 640 operator 324 M rfd${U}b c major_aflo_c Add(Mult($U, 16), 1) 640 operator;; 325 *) echo bad unit for floppy disk in: $i;; 326 esac-})dnl 327__devitem(iop, iop*, I2O controller device)dnl 328_mcdev(iop, iop*, iop, {-major_iop_c-}, 660)dnl 329__devitem(wdt, wdt0, watchdog timer)dnl 330_mcdev(wdt, wdt0, wdt, {-major_wdt_c-}, 440, operator)dnl 331__devitem(local, local, configuration specific devices)dnl 332__devitem(wd, {-wd*-}, {-"winchester" disk drives (ST506, IDE, ESDI, RLL, ...)-})dnl 333__devitem(ccd, ccd*, concatenated disk devices)dnl 334__devitem(raid, raid*, RAIDframe disk devices)dnl 335__devitem(vnd, vnd*, "file" pseudo-disks)dnl 336_mkdev(vnd, vnd*, {-dodisk vnd $U major_vnd_b major_vnd_c $U 0{--}ifstep(vnd) 337 dodisk svnd $U major_vnd_b major_vnd_c $U 2048{--}ifstep(vnd)-})dnl 338__devitem(ra, ra*, {-MSCP disks (ra??, hd??)-})dnl 339__devitem(hp, hp*, {-massbuss rm??-})dnl 340__devitem(hk, hk*, {-unibus rk06 and rk07-})dnl 341__devitem(up, up*, {-other unibus devices (e.g. on Emulex sc-21v controller)-})dnl 342__devitem(rb, rb*, {-730 idc w/ rb80 and/or rb02-})dnl 343__devitem(rx, rx*, {-MSCP floppy disk (rx33/50/...)-})dnl 344__devitem(rl, rl*, {-unibus r102-})dnl 345__devitem(hd, hd*, {-HDC9224 hd disks on VS2000-})dnl 346dnl 347dnl For normal disk devices, add a disk_q entry; anything else define like 348dnl the rest (such as vnd above). 349dnl 350disk_q({-ccd-})dnl 351disk_q({-hd-})dnl 352disk_q({-hk-})dnl 353disk_q({-hp-})dnl 354disk_q({-ra-})dnl 355disk_q({-raid-})dnl 356disk_q({-rb-})dnl 357disk_q({-rl-})dnl 358disk_q({-rx-})dnl 359disk_q({-sd-})dnl 360disk_q({-xy-})dnl 361disk_q({-xd-})dnl 362disk_q({-up-})dnl 363disk_q({-wd-})dnl 364disk_q({-rz-})dnl 365dnl 366__devitem(loc, local, configuration specific devices)dnl 367_mkdev(loc, local, {-test -s $T.local && sh $T.local-})dnl 368_mkdev({-disks-}, {-undefine({-C_ase-})show_disks()undefine({-C_ase-})-}, 369{-case $i in 370show_disks2()dnl 371 esac-})dnl 372__mkdev({-disks-}){--}dnl 373dnl 374__devtitle(cons, Console ports)dnl 375__devitem(ttyv0, ttyv0, pccons or pcvt screen 0)dnl 376__devitem(ttyv, ttyv*, pcvt)dnl 377__devitem(wscons, ttyC0, wscons screen 0)dnl 378twrget(wscons, wscons, ttyC, cfg, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b)dnl 379target(wscons, wsmux)dnl 380target(wscons, wskbd, 0, 1, 2, 3)dnl 381target(wscons, wsmouse, 0, 1, 2, 3)dnl 382_mkdev({-wscons-}, {-wscons-}, {-dnl 383show_target(wscons)dnl 384-})dnl 385__devitem(wsdisp, ttyC-F*, wscons virtual consoles)dnl 386_mkdev({-wsdisp-}, tty[C-F]*, {-U=${i##tty[C-F]} 387 case $i in 388 ttyC*) n=C m=expr(0*256);; 389 ttyD*) n=D m=expr(1*256);; 390 ttyE*) n=E m=expr(2*256);; 391 ttyF*) n=F m=expr(3*256);; 392 esac 393 case $U in 394 [0-9a-f]) M tty$n$U c major_wsdisp_c {-$(( 16#$U + $m ))-} 600;; 395 cfg) M tty${n}cfg c major_wsdisp_c Add(255,$m) 600;; 396 *) echo bad unit $U for $i; exit 1;; 397 esac-})dnl 398__devitem(wskbd, wskbd*, wscons keyboards)dnl 399_mkdev(wskbd, wskbd*, {-M wskbd$U c major_wskbd_c $U 600-})dnl 400__devitem(wsmux, wsmux, wscons keyboard/mouse mux devices)dnl 401_mkdev(wsmux, wsmux|wsmouse|wskbd, {-M wsmouse c major_wsmux_c 0 600 402 M wskbd c major_wsmux_c 1 600-})dnl 403__devitem(pcons, console, PROM console)dnl 404__devtitle(point, Pointing devices)dnl 405__devitem(wsmouse, wsmouse*, wscons mice)dnl 406_mkdev(wsmouse, wsmouse*, {-M wsmouse$U c major_wsmouse_c $U 600-})dnl 407__devitem(quad, quadmouse, "quadrature mouse")dnl 408__devtitle(pty, Pseudo terminals)dnl 409__devitem(ptm, ptm, pty master device)dnl 410_mkdev(ptm, ptm, {-M ptm c major_ptm_c 0 666-})dnl 411__devitem(tty, tty*, set of 16 slave psuedo terminals)dnl 412__devitem(pty, pty*, set of 16 master pseudo terminals)dnl 413_mkdev(pty, pty*, {-if [ $U -gt 15 ]; then 414 echo bad unit for pty in: $i 415 continue 416 fi 417 set -A tbl p q r s t u v w x y z P Q R S T 418 name=${tbl[$U]} 419 n=0 420 while [ $n -lt 16 ] 421 do 422 nam=$name$(hex $n) 423 off=Mult($U, 16) 424 M tty$nam c major_tty_c Add($off, $n) 425 M pty$nam c major_pty_c Add($off, $n) 426 n=Add($n, 1) 427 done-})dnl 428__devitem(dc, dc*, {-4 channel serial interface (keyboard{-,-} mouse{-,-}modem{-,-} printer)-})dnl 429__devtitle(prn, Printers)dnl 430__devitem(par, par*, motherboard parallel port)dnl 431__devitem(lpt, lpt*, IEEE 1284 centronics printer)dnl 432_mkdev(lpt, lpt*|lpa*, 433{-case $i in 434 lpt*) n=lpt f=0;; 435 lpa*) n=lpa f=128;; 436 esac 437 M $n$U c major_lpt_c Add($U, $f) 600-})dnl 438__devitem(lpa, lpa*, interruptless lp)dnl 439__devitem(ppi, ppi*, HP-IB plotters)dnl 440__devtitle({-usb-}, USB devices)dnl 441__devitem({-usb-}, usb*, Bus control devices used by usbd for attach/detach)dnl 442_mkdev({-usb-}, usb*, {-[ "$i" = "usb" ] && u= || u=$U 443 M usb$u c major_usb_c $U 660-})dnl 444__devitem(uhid, uhid*, Generic HID devices)dnl 445_mcdev({-uhid-}, uhid*, {-uhid-}, {-major_uhid_c-}, 660)dnl 446__devitem(ulpt, ulpt*, Printer devices)dnl 447_mcdev({-ulpt-}, ulpt*, {-ulpt-}, {-major_ulpt_c-}, 660)dnl 448__devitem(ttyU, ttyU*, Serial ports)dnl 449_mkdev({-ttyU-}, {-ttyU[0-9a-zA-Z]-}, {-U=${i#ttyU*} 450 o=$(alph2d $U) 451 M ttyU$U c major_ttyU_c $o 660 dialer uucp-})dnl 452__devitem(urio, urio*, Diamond Multimedia Rio 500)dnl 453_mcdev({-urio-}, urio*, {-urio-}, {-major_urio_c-}, 660)dnl 454__devitem(uscan, uscanner*, Scanners)dnl 455_mcdev({-uscan-}, uscanner*, {-uscanner-}, {-major_uscan_c-}, 660)dnl 456__devitem(ugen, ugen*, Generic device)dnl 457_mkdev(ugen, ugen*, {-n=Mult($U, 16) 458 for j in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 459 do 460 M ugen$U.$j c major_ugen_c Add($n, $j) 660 461 done-})dnl 462__devtitle(cpu, Cpus)dnl 463__devitem(cpu, cpu*, cpus)dnl 464__devtitle(call, Call units)dnl 465__devtitle(term, Terminal ports)dnl 466__devtitle(termp, Terminal multiplexers)dnl 467__devitem(dca, dca*, HP200/300 single port serial interface)dnl 468__devitem(dcm, dcm*, HP200/300 4 port serial mux interface)dnl 469__devitem(apci, apci*, HP400 4 port serial mux interface)dnl 470__devitem({-com-}, {-tty[0-7][0-9a-f]-}, NS16x50 serial ports)dnl 471_mkdev(com, {-tty[0-7][0-9a-f]-}, {-U=${i#tty*} 472 o=$(h2d $U) 473 M tty$U c major_com_c $o 660 dialer uucp 474 M cua$U c major_com_c Add($o, 128) 660 dialer uucp-})dnl 475__devitem(ttyc, ttyc*, Cyclades serial ports)dnl 476__devitem(tzs, tty[a-z]*, Zilog 8530 Serial Port)dnl 477_mkdev(tzs, {-tty[a-z]-}, {-u=${i#tty*} 478 case $u in 479 a) n=0 ;; 480 b) n=1 ;; 481 c) n=4 ;; 482 d) n=5 ;; 483 *) echo unknown tty device $i ;; 484 esac 485 M tty$u c major_tzs_c $n 660 dialer uucp-})dnl 486__devitem(tth, ttyh*, Sab82532 serial devices)dnl 487_mkdev(tth, ttyh*, {-M ttyh$U c major_tth_c $U 660 dialer uucp-})dnl 488__devitem(czs, cua[a-z]*, Zilog 8530 Serial Port)dnl 489_mkdev(czs, cua[a-z], {-u=${i#cua*} 490 case $u in 491 a) n=0 ;; 492 b) n=1 ;; 493 c) n=4 ;; 494 d) n=5 ;; 495 *) echo unknown cua device $i ;; 496 esac 497 M cua$u c major_czs_c Add($n, 128) 660 dialer uucp-})dnl 498__devitem(arm_tty, tty*, {-alias for PC COM ports{-,-} this is what the system really wants-})dnl 499__devitem(tty0, tty00, standard serial port)dnl 500__devitem(mac_tty0, tty00, standard serial port)dnl 501__devitem(ttyA, ttyA*, mfc serial ports)dnl 502__devitem(ttyz, tty[a-d], onboard zs serial ports)dnl 503__devitem(cuaz, cua[a-d], onboard zs serial ports)dnl 504__devitem(ttyB, ttyB?, DEC 3000 ZS8530 ("scc") serial ports)dnl 505__devitem(scc, scc*, 82530 serial interface)dnl 506__devitem(arc_ttyC, ttyC0, pccons)dnl 507__devitem(i386_ttyC, ttyC*, pcvt)dnl 508__devitem(ttyC, ttyC?, {-AlphaStation NS16550 ("com serial ports")-})dnl 509__devitem(ttyE, ttyE?, Workstation console (framebuffer & keyboard) tty emulators)dnl 510__devitem(ser02, ser02, {-serial2 port (channel A on 8530)-})dnl 511__devitem(mdm02, mdm02, {-modem2 port (channel B on 8530)-})dnl 512__devtitle(spec, Special purpose devices)dnl 513__devitem(apm, apm , power management device)dnl 514_mkdev(apm, apm*, {-M apm c major_apm_c 0 644 515 M apmctl c major_apm_c 8 644-})dnl 516__devitem(pcmcia, pcmcia*, PCMCIA card drivers)dnl 517__devitem(pctr, pctr*, PC Performance Tuning Register access device)dnl 518_mkdev(pctr, pctr, {-M pctr c major_pctr_c 0 644-})dnl 519__devitem(systrace, systrace*, system call tracing device)dnl 520_mkdev(systrace, systrace, {-M systrace c major_systrace_c 0 644-})dnl 521__devitem(au, audio*, audio device)dnl 522_mkdev(au, audio*, {-M sound$U c major_au_c $U 523 M mixer$U c major_au_c Add($U, 16) 524 M audio$U c major_au_c Add($U, 128) 525 M audioctl$U c major_au_c Add($U, 192) 526 MKlist="$MKlist;[ -e audio ] || ln -s audio$U audio" 527 MKlist="$MKlist;[ -e mixer ] || ln -s mixer$U mixer" 528 MKlist="$MKlist;[ -e sound ] || ln -s sound$U sound" 529 MKlist="$MKlist;[ -e audioctl ] || ln -s audioctl$U audioctl"-})dnl 530__devitem(asc, asc*, ASC Audio device)dnl 531_mkdev(asc, asc*, {-M asc$U major_asc_c 0-})dnl 532__devitem(music, music*, midi devices)dnl 533_mkdev(music, music*, {-M music$U c major_music_c $U 534 M sequencer$U c major_music_c Add($U, 128) 535 MKlist="$MKlist;[ -e music ] || ln -s music$U music" 536 MKlist="$MKlist;[ -e sequencer ] || ln -s sequencer$U sequencer"-})dnl 537__devitem(radio, radio*, FM tuner device)dnl 538_mkdev(radio, radio*, {-M radio$U c major_radio_c $U 539 MKlist="$MKlist;[ -e radio ] || ln -s radio$U radio"-})dnl 540__devitem(fdesc, fd, makes fd/* for the fdescfs)dnl 541_mkdev(fdesc, fd, {-RMlist="mkdir -p fd;$RMlist" n=0 542 while [ $n -lt 64 ];do M fd/$n c major_fdesc_c $n;n=Add($n, 1);done 543 MKlist="$MKlist;chmod 555 fd"-})dnl 544__devtitle(graph, Graphics devices)dnl 545__devitem(grf_mac, grf*, {-custom chip (grf0){-,-} Retina Z2/Z3 (grf1/grf2){-,-} 546{-#-} Cirrus boards (grf3){-,-} A2410 (grf4) video or 547{-#-} CyberVision 64 (grf5)-})dnl 548__devitem(ite, ite*, terminal emulator interface to HP300 graphics devices)dnl 549__devitem({-hil-}, {-hil-}, HP300 HIL input devices)dnl 550__devitem(oppr, openprom)dnl 551_cdev(oppr, openprom, 70, 0)dnl 552__devitem(cry, crypto, hardware crypto access driver)dnl 553_mkdev(cry, crypto, {-M crypto c major_cry_c-} 0)dnl 554__devitem(pf, pf*, Packet Filter)dnl 555_mkdev(pf, {-pf*-}, {-M pf c major_pf_c 0 600-})dnl 556__devitem(bpf, bpf*, Berkeley Packet Filter)dnl 557_mkdev(bpf, {-bpf*-}, {-M bpf$U c major_bpf_c $U 600-}, 600)dnl 558_mkdev(tun, {-tun*-}, {-M tun$U c major_tun_c $U 600-}, 600)dnl 559__devitem(speak, speaker, pc speaker)dnl 560_mkdev(speak, speaker, {-M speaker c major_speak_c 0 600-})dnl 561__devitem(kbd, kbd, keyboard (provides events, for X11))dnl 562_cdev(kbd, kbd, {-major_kbd_c-}, 0, 600)dnl 563__devitem(kbd_atari, kbd, Atari keyboard)dnl 564__devitem(akbd, kbd, Amiga keyboard)dnl 565__devitem(rkbd, kbd, raw keyboard)dnl 566__devitem(kbdctl, kbdctl, keyboard control)dnl 567__devitem(beep, beep, riscpc speaker)dnl 568__devitem(iic, iic*, IIC bus device)dnl 569__devitem(rtc, rtc*, RTC device)dnl 570__devitem(view, view*, generic interface to graphic displays)dnl 571__devitem(aconf, aconf, {-autoconfig information (not yet)-})dnl 572__devitem(mouse-, mouse-*, "mouse link")dnl 573__devitem(mouse, mouse, mouse (provides events, for X11))dnl 574__devitem(amouse, mouse*, Amiga mice)dnl 575__devitem(lkm, lkm, loadable kernel modules interface)dnl 576_cdev(lkm, lkm, {-major_lkm_c-}, 0, 640, _lkm)dnl 577__devitem(mmcl, mmclock, memory mapped clock)dnl 578__devitem(tun, tun*, network tunnel driver)dnl 579__devitem(rnd, *random, inkernel random data source)dnl 580_mkdev(rnd, *random, {-n=0 581 for pre in " " s u p a 582 do 583 M ${pre}random c major_rnd_c $n 644 584 n=Add($n, 1) 585 done-}, 644)dnl 586__devitem(joy, joy*, joystick driver)dnl 587_mcdev(joy, joy*, joy, {-major_joy_c-}, 666)dnl 588__devitem(mag, magma*, magma card (makes 16 tty and 2 bpp))dnl 589__devitem(bppmag, bppmag[mno], magma parallel port device)dnl 590__devitem(spif, spif*, spif card (makes 8 tty and 1 bpp))dnl 591__devitem(bppsp, bpp[jkl], spif parallel port device)dnl 592_mkdev(mag, magma*, {-case $U in 593 0) offset=0 nam=m;; 594 1) offset=16 nam=n;; 595 2) offset=32 nam=o;; 596 *) echo "bad unit for $i: $U"; exit 127;; 597 esac 598 offset=Mult($U, 64) 599 n=0 600 while [ $n -lt 16 ] 601 do 602 name=${nam}`hex $n` 603 M tty$name c major_mag_c Add($offset, $n) 660 dialer uucp 604 n=Add($n, 1) 605 done 606 M bpp${nam}0 c major_bppmag_c Add($offset, 0) 600 607 M bpp${nam}1 c major_bppmag_c Add($offset, 1) 600-})dnl 608_mkdev(spif, spif*, {-case $U in 609 0) offset=0 nam=j;; 610 1) offset=16 nam=k;; 611 2) offset=32 nam=l;; 612 *) echo "bad unit for $i: $U"; exit 127;; 613 esac 614 offset=Mult($U, 64) 615 n=0 616 while [ $n -lt 8 ] 617 do 618 name=${nam}`hex $n` 619 M tty$name c major_spif_c Add($offset, $n) 660 dialer uucp 620 n=Add($n, 1) 621 done 622 M bpp${nam}0 c major_bppsp_c Add($offset, 0) 600-})dnl 623__devitem(bpp, bpp*, parallel port devices)dnl 624_mkdev(bpp, {-bpp*-}, {-M bpp$U c major_bpp_c $U 600-}, 600)dnl 625__devitem(xfs, xfs*, XFS filesystem devices)dnl 626_mcdev(xfs, xfs*, xfs, {-major_xfs_c-}, 600)dnl 627__devitem(hil, hil, HIL input devices)dnl 628__devitem(rmidi, rmidi*, raw midi devices)dnl 629_mcdev(rmidi, rmidi*, rmidi, {-major_rmidi_c-}, 666)dnl 630__devtitle(plat, Platform-specific devices)dnl 631__devitem(fb, fb*, framebuffer device)dnl 632__devitem(bktr, bktr*, video capturing)dnl 633_mcdev(bktr, bktr*, bktr, {-major_bktr_c-}, 644)dnl 634__devitem(tuner, tuner*, tuner device)dnl 635_mkdev(tuner, tuner*, {-M tuner$U c major_bktr_c Add(Mult($U, 2), 16) 644-}, 644)dnl 636__devitem(pci, pci, PCI bus device)dnl 637_mkdev(pci, pci, {-M pci c major_pci_c 0 600-}, 600)dnl 638__devitem(adb, adb, Apple Desktop bus event interface)dnl 639_mkdev(adb, adb, {-M adb c major_adb_c 0-})dnl 640__devitem(pdc, pdc, PDC device)dnl 641_mkdev(local, local, {-test -s $T.local && sh $T.local-}, 666)dnl 642__devitem(gpr, gpr*, gpr400 pcmcia device)dnl 643_mcdev(gpr, gpr*, gpr, {-major_gpr_c-})dnl 644dnl 645divert(1)dnl 646include(etc.MACHINE/MAKEDEV.md)dnl 647dnl 648dnl 649divert(0)dnl 650#!/bin/sh - 651# 652# THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. 653# generated from: 654# 655show_vers()dnl <-- now that all files are included, show versions 656# 657dnl 658divert(2)dnl 659PATH=/sbin:/usr/sbin:/bin:/usr/bin 660T=$0 661 662# set this to echo for Echo-Only debugging 663[ "$eo" ] || eo= 664 665hex() 666{ 667 case ${--}1 in 668 [0-9]) echo -n {-$-}1;; 669 10) echo -n a;; 670 11) echo -n b;; 671 12) echo -n c;; 672 13) echo -n d;; 673 14) echo -n e;; 674 15) echo -n f;; 675 esac 676} 677 678alph2d() 679{ 680 local t="$1" 681 local p="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" 682 local sub=${p%${t}*} 683 echo ${#sub} 684} 685 686h2d() 687{ 688 local s="$1" 689 local f=${s%*[0-9a-f]} n=${s#[0-9a-f]*} 690 691 echo $(($(_h2d $f)*16+ $(_h2d $n) )) 692} 693 694_h2d() 695{ 696 case $1 in 697 [0-9]) echo -n $1;; 698 a) echo -n 10;; 699 b) echo -n 11;; 700 c) echo -n 12;; 701 d) echo -n 13;; 702 e) echo -n 14;; 703 f) echo -n 15;; 704 esac 705} 706 707unt() 708{ 709 # XXX pdksh can't seem to deal with locally scoped variables 710 # in ${foo#$bar} expansions 711 arg="{-$-}1" 712 tmp="${arg#[a-zA-Z]*}" 713 tmp="${tmp%*[a-zA-Z]}" 714 while [ "$tmp" != "$arg" ] 715 do 716 arg=$tmp 717 tmp="${arg#[a-zA-Z]*}" 718 tmp="${tmp%*[a-zA-Z]}" 719 done 720 echo $arg 721} 722dnl 723dnl dodisk(name, unit, blkmaj, chrmaj, unit, off[, stepping]) 724dnl arg: 1 2 3 4 5 6 7 725dnl 726 727dodisk() 728{ 729 [ "$DEBUG" ] && set -x 730 n=Add(Mult(${5}, ${7:-16}), ${6}) count=0 731 RMlist="$RMlist {-$-}1{-$-}2? r{-$-}1{-$-}2?" 732 [ 0$7 -ne 8 ] && l="i j k l m n o p" 733 for d in a b c d e f g h $l 734 do 735 M {-$-}1{-$-}2$d b {-$-}3 Add($n, $count) 640 736 M r{-$-}1{-$-}2$d c {-$-}4 Add($n, $count) 640 737 let count=count+1 738 done 739 MKlist="$MKlist;chown root:operator {-$-}1{-$-}2? r{-$-}1{-$-}2?" 740} 741dnl 742dnl dodisk2(name, unit, blkmaj, chrmaj, unit, off[, stepping]) 743dnl 744dnl 1. name - prefix name of the device 745dnl 2. unit - beginning unit number for block devices 746dnl 3. blkmaj - block device major number 747dnl 4. chrmaj - character device major number 748dnl 5. unit - beginning unit number for character devices 749dnl 6. off - offset from 0 for all minor numbers (see svnd for an example) 750dnl 7. step - optional, defaults to 16, number of partitions per device 751dnl 752 753dodisk2() 754{ 755 n=Add(Mult({-$-}5, ${7:-16}), {-$-}6) 756 M {-$-}1{-$-}2a b {-$-}3 $n 640 operator 757 M r{-$-}1{-$-}2a c {-$-}4 $n 640 operator 758 n=Add($n, 2) 759 M {-$-}1{-$-}2c b {-$-}3 $n 640 operator 760 M r{-$-}1{-$-}2c c {-$-}4 $n 640 operator 761} 762 763# M name b/c major minor [mode] [group] 764RMlist="rm -f" 765MKlist=":" 766 767mkl() { 768dnl 769dnl uncomment if multi mknod happens 770dnl 771ifelse(1, 0, 772[ "${mklist[{-$-}1]}" ] && mklist[{-$-}1]="${mklist[{-$-}1]} {-$-}2 {-$-}3 {-$-}4 {-$-}5" || { 773 mklist[{-$-}1]="mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5" 774 modes="$modes {-$-}1" 775 }, 776dnl 777dnl non multi mknod 778dnl 779 [ "${mklist[{-$-}1]}" ] && { 780 mklist[{-$-}1]="${mklist[{-$-}1]};mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5" 781 } || { 782 mklist[{-$-}1]="mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5" 783 modes="$modes {-$-}1" 784 }) 785} 786 787M() { 788 RMlist="$RMlist {-$-}1" 789 mkl ${5-666} {-$-}1 {-$-}2 {-$-}3 {-$-}4 790 mklist="$mklist {-$-}1" 791 G={-$-}{6:-wheel} 792 [ "{-$-}7" ] && { 793 MKlist="$MKlist;chown {-$-}7:{-$-}G {-$-}1" 794 } || { 795 case $G in 796 wheel)g=0;;kmem)g=2;;operator)g=5;;tty)g=4;;dialer)g=117;;_lkm)g=61;; 797 esac 798 [ "${grplist[$g]}" ] && { 799 grplist[$g]="${grplist[$g]} {-$-}1" 800 } || { 801 groups="$groups $g" 802 grplist[$g]="chgrp $G {-$-}1" 803 } 804 } 805 return 0 806} 807divert(7)dnl 808dnl 809dnl there is no blank line at the end of etc.arch/MAKEDEV.md files, so add one 810dnl on the following line: 811 812show_devs()dnl 813dnl 814divert(9)dnl 815*) 816 echo $i: unknown device 817 ;; 818esac 819done 820} 821_recurse "$@" 822list="$RMlist" 823for mode in $modes; do 824 list="$list;${mklist[$mode]}" 825done 826for group in $groups; do 827 list="$list;${grplist[$group]}" 828done 829list="$list;$MKlist" 830if [ "$eo" = "echo" ]; then 831 $eo "$list" 832else 833 echo "$list" | sh 834fi 835divert(3)dnl 836dnl 837 838R() { 839[ "$DEBUG" ] && set -x 840for i in "$@" 841do 842U=`unt $i` 843[ "$U" ] || U=0 844 845case $i in 846dnl 847