MAKEDEV.common revision 1.36
1vers(a, {-$OpenBSD: MAKEDEV.common,v 1.36 2007/07/23 23:21:25 todd Exp $-})dnl 2dnl 3dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org> 4dnl 5dnl Permission to use, copy, modify, and distribute this software for any 6dnl purpose with or without fee is hereby granted, provided that the above 7dnl copyright notice and this permission notice appear in all copies. 8dnl 9dnl THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10dnl WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11dnl MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12dnl ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13dnl WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16dnl 17dnl Common device definitions. 18dnl 19dnl This file contains the MI device definitions (as well as some MD 20dnl definitions not cleaned up yet...) 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 Diversions 2, 3 and 7 are not filled when generating the manual page. 32dnl 33dnl HOW TO ADD A DEVICE: 34dnl 35dnl In this file, you must use at least two macros: 36dnl 37dnl Use '__devitem(uniqueid, name-pattern, description)' to create an entry 38dnl in the description at the top of the generated MAKEDEV file: 39dnl 40dnl __devitem(sca, sca*, Sugar Generic device)dnl 41dnl __devitem(cry, crypto, hardware crypto access driver)dnl 42dnl 43dnl This is ultimately shown as: 44dnl 45dnl # sca* Sugar Generic device 46dnl # crypto hardware crypto access driver 47dnl 48dnl Use '_mkdev(uniqueid, shell-pattern, {-shell-script-})dnl' to create 49dnl a shell script fragment used to 'create' the device (be sure to match 50dnl the uniqueid from above): 51dnl 52dnl _mkdev(sca, sca*, {-M sca$U c major_sca_c $U 53dnl M rsca$U b major_sca_b Add($U, 128)-})dnl 54dnl _mkdev(cry, crypto, {-M crypto c major_cry_c 0-})dnl 55dnl 56dnl This is ultimately expanded into: 57dnl 58dnl sca*) 59dnl M sca$U c 24 $U 60dnl M sca$U b 42 $(($U+128)) 61dnl ;; 62dnl 63dnl crypto) 64dnl M crypto c 47 0 65dnl ;; 66dnl 67dnl In the MAKEDEV.md file, add a '_DEV(uniqueid, charmajor, blockmajor)' 68dnl entry: 69dnl 70dnl _DEV(sca, 24, 42) 71dnl _DEV(cry, 47) 72dnl 73dnl Final step is to use the 'target/twrget' macros to have the 'all)' target 74dnl generate one or more device(s). Usage of 'target/twrget' is: 75dnl target(target_name, device_name [, append_string ] .. ) 76dnl twrget(target_name, uniqueid, device_name, [, append_string ] .. ) 77dnl 78dnl target_name a unique name that later is used as an argument to 79dnl 'show_target()' (which expands all devices for a 80dnl given 'target_name'). 81dnl uniqueid same as 'uniqueid' above 82dnl device_name string representing the device to be mknod'ed 83dnl append_string for each append_string, `device_name' is prepended 84dnl 85dnl Note: 'target(a,b,c)' is equivalent to 'twrget(a,b,b,c)' 86dnl 87dnl 88dnl For a short example: 89dnl 90dnl target(all, std)dnl 91dnl target(all, sca, 0, 1, 2, 3)dnl 92dnl twrget(all, cry, crypto)dnl 93dnl 94dnl would expand to: 95dnl 96dnl all) 97dnl R std sca0 sca1 sca2 sca3 crypto 98dnl ;; 99dnl 100dnl presuming '_DEV(sca, ?, ?)' and '_DEV(std)' were in the MAKEDEV.md file. 101dnl 102dnl 103dnl Everything is 'automatically' added to 'MAKEDEV' based on whether or 104dnl not the '_DEV()' entry has a corresponding _mkdev() and __devitem() 105dnl entry in MAKEDEV.mi (this file). 106dnl 107dnl Note: be very wary of adding whitespace, carriage returns, or not 108dnl finishing a macro with ')dnl' .. otherwise, extra blank lines show up 109dnl in the output. 110dnl 111dnl TODO: 112dnl 113dnl make a 'disktgt' macro that automatically does: 114dnl disktgt(rd, {-rd-}) 115dnl 116dnl target(all,rd,0) 117dnl target(ramd,rd,0) 118dnl disk_q(rd) 119dnl __devitem(rd, {-rd*-}, {-rd-})dnl 120dnl 121dnl Note: not all disks are generated in 'all)'. (e.g. vax has a lot of 122dnl disks that are not generated by 'all)') 123dnl 124divert(1)dnl 125target(all, mcd, 0)dnl 126twrget(all, fdesc, fd)dnl 127target(all, st, 0, 1)dnl 128target(all, std)dnl 129target(all, raid, 0, 1, 2, 3)dnl 130target(all, rz, 0, 1, 2, 3, 4)dnl 131target(all, hp, 0, 1, 2, 3)dnl 132target(all, ra, 0, 1, 2, 3)dnl 133target(all, rx, 0, 1)dnl 134target(all, wd, 0, 1, 2, 3)dnl 135target(all, xd, 0, 1, 2, 3)dnl 136target(all, systrace)dnl 137target(all, pctr)dnl 138target(all, pctr0)dnl 139target(all, pf)dnl 140twrget(all, cry, crypto)dnl 141target(all, apm)dnl 142target(all, acpi)dnl 143twrget(all, tth, ttyh, 0, 1)dnl 144target(all, ttyA, 0, 1)dnl 145target(all, ttyB, 0, 1, 2, 3, 4, 5)dnl 146twrget(all, attyB, ttyB, 0, 1, 2, 3, 4)dnl 147twrget(all, mac_tty0, tty0, 0, 1)dnl 148twrget(all, tzs, tty, a, b, c, d)dnl 149twrget(all, czs, cua, a, b, c, d)dnl 150target(all, ttyc, 0, 1, 2, 3, 4, 5, 6, 7)dnl 151twrget(all, com, tty0, 0, 1, 2, 3)dnl 152target(all, lkm)dnl 153twrget(all, mmcl, mmclock)dnl 154target(all, lpt, 0, 1, 2)dnl 155twrget(all, lpt, lpa, 0, 1, 2)dnl 156target(all, joy, 0, 1)dnl 157twrget(all, rnd, random)dnl 158target(all, uk, 0)dnl 159twrget(all, au, audio, 0)dnl 160twrget(all, speak, speaker)dnl 161target(all, asc, 0)dnl 162target(all, music, 0)dnl 163target(all, radio, 0)dnl 164target(all, tuner, 0)dnl 165target(all, rmidi, 0, 1, 2, 3, 4, 5, 6, 7)dnl 166target(all, uall)dnl 167target(all, adb)dnl 168target(all, iop, 0, 1)dnl 169target(all, pci, 0, 1, 2, 3)dnl 170twrget(all, wsmouse, wscons)dnl 171twrget(all, grf_mac, grf, 0, 1, 2, 3)dnl 172target(all, par, 0)dnl 173twrget(all, amouse, mouse, 0, 1)dnl 174twrget(all, akbd, kbd)dnl 175target(all, apci, 0)dnl 176target(all, ppi, 0)dnl 177target(all, view0, 0, 1, 2, 3, 4, 5)dnl 178target(all, local)dnl 179target(all, gpr, 0)dnl 180target(all, ptm)dnl 181target(all, hotplug)dnl 182dnl 183_mkdev(all, {-all-}, {-dnl 184show_target(all)dnl 185-})dnl 186dnl 187dnl XXX some arches use ramd, others ramdisk - needs to be fixed eventually 188__devitem(ramdisk, ramdisk, Ramdisk kernel devices,nothing)dnl 189dnl 190target(usb, usb, 0, 1, 2, 3, 4, 5)dnl 191target(usb, urio, 0)dnl 192twrget(usb, uscan, uscanner, 0)dnl 193target(usb, uhid, 0, 1, 2, 3)dnl 194target(usb, ulpt, 0, 1)dnl 195target(usb, ugen, 0, 1)dnl 196target(usb, ttyU, 0, 1, 2, 3)dnl 197dnl 198__devitem({-uall-}, uall, All USB devices,usb)dnl 199_mkdev(uall, uall, {-dnl 200show_target({-usb-})dnl 201-})dnl 202__devtitle(tap, Tapes)dnl 203__devitem(tz, tz*, {-DEC TK50 cartridge tape drives-})dnl 204__devitem(st, {-st*-}, SCSI tape drives)dnl 205_mkdev(st, st*, {-n=Mult($U, 16) 206 for pre in " " n e en 207 do 208 M ${pre}st$U b major_st_b $n 660 operator 209 M ${pre}rst$U c major_st_c $n 660 operator 210 n=Add($n, 1) 211 done-})dnl 212__devitem(mt, mt*, (Magnetic) 9-track reel tape drives)dnl 213__devitem(ht, ht*, MASSBUS TM03 and TU?? devices)dnl 214__devitem(tm, tm*, UNIBUS TM11 and TE10 emulations (e.g. Emulex TC-11))dnl 215__devitem(ts, ts*, UNIBUS TS11)dnl 216__devitem(ut, ut*, UNIBUS TU45 emulations (e.g. 9700))dnl 217__devtitle(dis, Disks)dnl 218__devitem(sd, {-sd*-}, {-SCSI disks{-,-} including flopticals-})dnl 219__devitem(cd, {-cd*-}, ATAPI and SCSI CD-ROM drives)dnl 220_mkdev(cd, cd*, {-dodisk2 cd $U major_cd_b major_cd_c $U 0{--}ifstep(cd)-})dnl 221__devitem(mcd, mcd*, Mitsumi CD-ROM drives)dnl 222_mkdev(mcd, mcd*, {-dodisk2 mcd $U major_mcd_b major_mcd_c $U 0{--}ifstep(mcd)dnl 223-})dnl 224__devitem(bthub, {-bthub*-}, Bluetooth Hubs)dnl 225_mcdev(bthub, bthub*, bthub, {-major_bthub_c-})dnl 226__devitem(ch, {-ch*-}, SCSI media changers)dnl 227_mcdev(ch, ch*, ch, {-major_ch_c-}, 660, operator)dnl 228__devitem(uk, uk*, Unknown SCSI devices)dnl 229_mcdev(uk, uk*, uk, {-major_uk_c-}, 640, operator)dnl 230__devitem(ss, ss*, SCSI scanners)dnl 231_mkdev(ss, ss*, {-M ss$U c major_ss_c Mult($U,16) 640 operator 232 M nss$U c major_ss_c Add(Mult($U,16),1) 640 operator 233 M enss$U c major_ss_c Add(Mult($U,16),3) 640 operator 234 RMlist[${#RMlist[*]}]="scan$U" 235 MKlist[${#MKlist[*]}]=";umask 77;ln -s ss$U scan$U"-})dnl 236dnl XXX see ramdisk above 237__devitem(ramd, ramdisk, Ramdisk kernel devices,nothing)dnl 238dnl 239_mkdev(ramd, ramdisk, {-dnl 240show_target(ramd)dnl 241-})dnl 242dnl 243target(ramd, std)dnl 244target(ramd, bpf, 0)dnl 245twrget(ramd, com, tty0, 0, 1)dnl 246target(ramd, sd, 0, 1, 2, 3, 4)dnl 247target(ramd, wd, 0, 1, 2, 3, 4)dnl 248target(ramd, st, 0, 1)dnl 249target(ramd, cd, 0, 1)dnl 250target(ramd, rd, 0)dnl 251dnl 252__devitem(rd, {-rd*-}, quote(rd)pseudo-disks)dnl 253_mkdev(rd, rd*, {-dodisk2 rd $U major_rd_b major_rd_c $U 0{--}ifstep(rd)-})dnl 254__devitem(xd, xd*, Xylogic 753/7053 disks)dnl 255__devitem(xy, xy*, {- Xylogic 450/451 disks-})dnl 256__devitem(flo, {-fd*-}, {-Floppy disk drives (3 1/2"{-,-} 5 1/4")-},fd)dnl 257_mkdev(flo, fd*, 258{-typnam=$U${i#fd[01]*} 259 case $typnam in 260 0|1) typnum=0;; # no type specified, assume A 261 *A) typnum=0; typnam=0;; 262 *B) typnum=1;; 263 *C) typnum=2;; 264 *D) typnum=3;; 265 *E) typnum=4;; 266 *F) typnum=5;; 267 *G) typnum=6;; 268 *H) typnum=7;; 269 *) echo bad type $typnam for $i; exit 1;; 270 esac 271 case $U in 272 0|1) blk=major_flo_b; chr=major_flo_c;; 273 *) echo bad unit $U for $i; exit 1;; 274 esac 275 nam=fd${typnam} 276 n=Add(Mult($U, 128), Mult($typnum, 16)) 277 M ${nam}a b $blk $n 640 operator 278 M ${nam}b b $blk Add($n, 1) 640 operator 279 M ${nam}c b $blk Add($n, 2) 640 operator 280 M ${nam}i b $blk Add($n, 8) 640 operator 281 M r${nam}a c $chr $n 640 operator 282 M r${nam}b c $chr Add($n, 1) 640 operator 283 M r${nam}c c $chr Add($n, 2) 640 operator 284 M r${nam}i c $chr Add($n, 8) 640 operator-}, 664)dnl 285__devitem(iop, iop*, I2O controller devices)dnl 286_mcdev(iop, iop*, iop, {-major_iop_c-}, 660)dnl 287__devitem(wd, {-wd*-}, {-quote(winchester)disk drives (ST506{-,-} IDE{-,-} ESDI{-,-} RLL{-,-} ...)-})dnl 288__devitem(ccd, ccd*, Concatenated disk devices)dnl 289__devitem(raid, raid*, RAIDframe disk devices)dnl 290__devitem(vnd, vnd*, quote(file)pseudo-disk devices)dnl 291_mkdev(vnd, vnd*, {-dodisk vnd $U major_vnd_b major_vnd_c $U 0{--}ifstep(vnd) 292 dodisk svnd $U major_vnd_b major_vnd_c $U 2048{--}ifstep(vnd)-})dnl 293__devitem(ra, ra*, {-MSCP disks-})dnl 294__devitem(hp, hp*, {-MASSBUS disks-})dnl 295__devitem(hk, hk*, {-UNIBUS RK06 and RK07 disks-})dnl 296__devitem(up, up*, {-Other UNIBUS devices-})dnl 297__devitem(rb, rb*, {-730 IDC w/ RB80 and/or RB02-})dnl 298__devitem(rx, rx*, {-RX02 floppy disks-})dnl 299__devitem(rl, rl*, {-UNIBUS RL02-})dnl 300dnl 301dnl For normal disk devices, add a disk_q entry; anything else define like 302dnl the rest (such as vnd above). 303dnl 304disk_q({-ccd-})dnl 305disk_q({-hd-})dnl 306disk_q({-hk-})dnl 307disk_q({-hp-})dnl 308disk_q({-ra-})dnl 309disk_q({-raid-})dnl 310disk_q({-rb-})dnl 311disk_q({-rl-})dnl 312disk_q({-rx-})dnl 313disk_q({-sd-})dnl 314disk_q({-xy-})dnl 315disk_q({-xd-})dnl 316disk_q({-up-})dnl 317disk_q({-wd-})dnl 318disk_q({-rz-})dnl 319_mkdev({-disks-}, {-undefine({-C_ase-})show_disks()undefine({-C_ase-})-}, 320{-case $i in 321show_disks2()dnl 322 esac-})dnl 323__mkdev({-disks-}){--}dnl 324dnl 325__devtitle(cons, Console ports)dnl 326__devitem(wscons, wscons, Minimal wscons devices)dnl 327twrget(wscons, wscons, ttyC, cfg, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b)dnl 328target(wscons, wsmux)dnl 329target(wscons, wskbd, 0, 1, 2, 3)dnl 330target(wscons, wsmouse, 0, 1, 2, 3)dnl 331_mkdev({-wscons-}, {-wscons-}, {-dnl 332show_target(wscons)dnl 333-})dnl 334__devitem(wsdisp, ttyC-J*, wscons display devices,wsdisplay)dnl 335_mkdev({-wsdisp-}, tty[C-J]*, {-U=${i##tty[C-J]} 336 case $i in 337 ttyC*) n=C m=expr(0*256);; 338 ttyD*) n=D m=expr(1*256);; 339 ttyE*) n=E m=expr(2*256);; 340 ttyF*) n=F m=expr(3*256);; 341 ttyG*) n=G m=expr(4*256);; 342 ttyH*) n=H m=expr(5*256);; 343 ttyI*) n=I m=expr(6*256);; 344 ttyJ*) n=J m=expr(7*256);; 345 esac 346 case $U in 347 [0-9a-f]) M tty$n$U c major_wsdisp_c Add(16#$U, $m) 600;; 348 cfg) M tty${n}cfg c major_wsdisp_c Add(255,$m) 600;; 349 *) echo bad unit $U for $i; exit 1;; 350 esac-})dnl 351__devitem(wskbd, wskbd*, wscons keyboards)dnl 352_mkdev(wskbd, wskbd*, {-M wskbd$U c major_wskbd_c $U 600-})dnl 353__devitem(wsmux, wsmux, wscons keyboard/mouse mux devices)dnl 354_mkdev(wsmux, wsmux|wsmouse|wskbd, {-M wsmouse c major_wsmux_c 0 600 355 M wskbd c major_wsmux_c 1 600-})dnl 356__devitem(pcons, console, PROM console)dnl 357__devtitle(point, Pointing devices)dnl 358__devitem(wsmouse, wsmouse*, wscons mice)dnl 359_mkdev(wsmouse, wsmouse*, {-M wsmouse$U c major_wsmouse_c $U 600-})dnl 360__devtitle(pty, Pseudo terminals)dnl 361__devitem(ptm, ptm, pty master device)dnl 362_mkdev(ptm, ptm, {-M ptm c major_ptm_c 0 666-})dnl 363__devitem(tty, tty*, Set of 62 slave pseudo terminals)dnl 364__devitem(pty, pty*, Set of 62 master pseudo terminals)dnl 365_mkdev(pty, pty*, {-if [ $U -gt 15 ]; then 366 echo bad unit for pty in: $i 367 continue 368 fi 369 set -A letters p q r s t u v w x y z P Q R S T 370 set -A suffixes 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q \ 371 r s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W X \ 372 Y Z 373 374 name=${letters[$U]} 375 n=0 376 while [ $n -lt 62 ] 377 do 378 nam=$name${suffixes[$n]} 379 off=Mult($U, 62) 380 M tty$nam c major_tty_c Add($off, $n) 381 M pty$nam c major_pty_c Add($off, $n) 382 n=Add($n, 1) 383 done-})dnl 384__devitem(dc, dc*, {-4 channel serial interface (keyboard{-,-} mouse{-,-}modem{-,-} printer)-})dnl 385__devtitle(prn, Printers)dnl 386__devitem(lpt, lpt*, IEEE 1284 centronics printer)dnl 387_mkdev(lpt, lpt*|lpa*, 388{-case $i in 389 lpt*) n=lpt f=0;; 390 lpa*) n=lpa f=128;; 391 esac 392 M $n$U c major_lpt_c Add($U, $f) 600-})dnl 393__devitem(lpa, lpa*, Polled printer port,lpt)dnl 394__devitem(ppi, ppi*, HP-IB plotters)dnl 395__devtitle({-usb-}, USB devices)dnl 396__devitem({-usb-}, usb*, Bus control devices used by usbd for attach/detach)dnl 397_mkdev({-usb-}, usb*, {-[ "$i" = "usb" ] && u= || u=$U 398 M usb$u c major_usb_c $U 660-})dnl 399__devitem(uhid, uhid*, Generic HID devices)dnl 400_mcdev({-uhid-}, uhid*, {-uhid-}, {-major_uhid_c-}, 660)dnl 401__devitem(ulpt, ulpt*, Printer devices)dnl 402_mcdev({-ulpt-}, ulpt*, {-ulpt-}, {-major_ulpt_c-}, 660)dnl 403__devitem(ttyU, ttyU*, USB serial ports,ucom)dnl 404_mkdev({-ttyU-}, {-ttyU[0-9a-zA-Z]-}, {-U=${i#ttyU*} 405 o=$(alph2d $U) 406 M ttyU$U c major_ttyU_c $o 660 dialer uucp 407 M cuaU$U c major_ttyU_c Add($o, 128) 660 dialer uucp-})dnl 408__devitem(urio, urio*, Diamond Multimedia Rio 500)dnl 409_mcdev({-urio-}, urio*, {-urio-}, {-major_urio_c-}, 660)dnl 410__devitem(uscan, uscanner*, Scanners,uscanner)dnl 411_mcdev({-uscan-}, uscanner*, {-uscanner-}, {-major_uscan_c-}, 660)dnl 412__devitem(ugen, ugen*, Generic USB devices)dnl 413_mkdev(ugen, ugen*, {-n=Mult($U, 16) 414 for j in 0{0,1,2,3,4,5,6,7,8,9} 1{0,1,2,3,4,5} 415 do 416 M ugen$U.$j c major_ugen_c Add($n, 10#$j) 660 417 done-})dnl 418__devtitle(call, Call units)dnl 419__devtitle(term, Terminal ports)dnl 420__devitem(dca, dca*, HP200/300 single port serial interface)dnl 421__devitem(dcm, dcm*, HP200/300 4 port serial mux interface)dnl 422__devitem(apci, apci*, HP400 4 port serial mux interface)dnl 423__devitem({-com-}, {-tty[0-7][0-9a-f]-}, NS16x50 serial ports)dnl 424_mkdev(com, {-tty[0-7][0-9a-f]-}, {-U=${i#tty*} 425 o=$(h2d $U) 426 M tty$U c major_com_c $o 660 dialer uucp 427 M cua$U c major_com_c Add($o, 128) 660 dialer uucp-})dnl 428__devitem(ttyc, ttyc*, Cyclades serial ports,cy)dnl 429__devitem(tzs, tty[a-z]*, Zilog 8530 Serial Port,zs)dnl 430_mkdev(tzs, {-tty[a-z]-}, {-u=${i#tty*} 431 case $u in 432 a) n=0 ;; 433 b) n=1 ;; 434 c) n=4 ;; 435 d) n=5 ;; 436 *) echo unknown tty device $i ;; 437 esac 438 M tty$u c major_tzs_c $n 660 dialer uucp-})dnl 439__devitem(tth, ttyh*, Sab82532 serial devices,sab)dnl 440_mkdev(tth, ttyh*, {-M ttyh$U c major_tth_c $U 660 dialer uucp-})dnl 441__devitem(czs, cua[a-z]*, Zilog 8530 Serial Port,zs)dnl 442_mkdev(czs, cua[a-z], {-u=${i#cua*} 443 case $u in 444 a) n=0 ;; 445 b) n=1 ;; 446 c) n=4 ;; 447 d) n=5 ;; 448 *) echo unknown cua device $i ;; 449 esac 450 M cua$u c major_czs_c Add($n, 128) 660 dialer uucp-})dnl 451__devitem(tty0, tty00, Standard serial port,com)dnl 452__devitem(mac_tty0, tty00, Standard serial port,zsc)dnl 453__devitem(ttyz, tty[a-d], On-board zs serial ports,zs)dnl 454__devitem(cuaz, cua[a-d], On-board zs serial ports,zs)dnl 455__devitem(ttyB, ttyB?, DEC 3000 ZS8530 ("scc") serial ports,scc)dnl 456__devitem(scc, scc*, 82530 serial interface,scc)dnl 457__devtitle(spec, Special purpose devices)dnl 458_mkdev(apm, apm*, {-M apm c major_apm_c 0 644 459 M apmctl c major_apm_c 8 644-})dnl 460_mkdev(acpi, acpi*, {-M acpi c major_acpi_c 0 644-})dnl 461__devitem(pctr, pctr*, PC Performance Tuning Register access device)dnl 462_mkdev(pctr, pctr, {-M pctr c major_pctr_c 0 644-})dnl 463__devitem(systrace, systrace*, System call tracing device)dnl 464_mkdev(systrace, systrace, {-M systrace c major_systrace_c 0 644-})dnl 465__devitem(au, audio*, Audio devices,audio)dnl 466_mkdev(au, audio*, {-M sound$U c major_au_c $U 467 M mixer$U c major_au_c Add($U, 16) 468 M audio$U c major_au_c Add($U, 128) 469 M audioctl$U c major_au_c Add($U, 192) 470 MKlist[${#MKlist[*]}]=";[ -e audio ] || ln -s audio$U audio" 471 MKlist[${#MKlist[*]}]=";[ -e mixer ] || ln -s mixer$U mixer" 472 MKlist[${#MKlist[*]}]=";[ -e sound ] || ln -s sound$U sound" 473 MKlist[${#MKlist[*]}]=";[ -e audioctl ] || ln -s audioctl$U audioctl"-})dnl 474__devitem(asc, asc*, ASC Audio device)dnl 475_mkdev(asc, asc*, {-M asc$U major_asc_c 0-})dnl 476__devitem(bio, bio, {-ioctl tunnel pseudo-device-})dnl 477_mkdev(bio, bio, {-M bio c major_bio_c 0 600-})dnl 478__devitem(music, music*, MIDI devices,midi)dnl 479_mkdev(music, music*, {-M music$U c major_music_c $U 480 M sequencer$U c major_music_c Add($U, 128) 481 MKlist[${#MKlist[*]}]=";[ -e music ] || ln -s music$U music" 482 MKlist[${#MKlist[*]}]=";[ -e sequencer ] || ln -s sequencer$U sequencer"-})dnl 483__devitem(radio, radio*, FM tuner devices)dnl 484_mkdev(radio, radio*, {-M radio$U c major_radio_c $U 485 MKlist[${#MKlist[*]}]=";[ -e radio ] || ln -s radio$U radio"-})dnl 486__devitem(fdesc, fd, fd/* nodes, fd)dnl 487_mkdev(fdesc, fd, {-RMlist[${#RMlist[*]}]=";mkdir -p fd;rm -f" n=0 488 while [ $n -lt 64 ];do M fd/$n c major_fdesc_c $n;n=Add($n, 1);done 489 MKlist[${#MKlist[*]}]=";chmod 555 fd"-})dnl 490__devitem(grf_mac, grf*, Raw interface to the mac68k graphics devices,grf)dnl 491__devitem(oppr, openprom,PROM settings,openprom)dnl 492_cdev(oppr, openprom, 70, 0)dnl 493__devitem(cry, crypto, Hardware crypto access driver,crypto)dnl 494_mkdev(cry, crypto, {-M crypto c major_cry_c-} 0)dnl 495__devitem(pf, pf*, Packet Filter)dnl 496_mkdev(pf, {-pf*-}, {-M pf c major_pf_c 0 600-})dnl 497__devitem(bpf, bpf*, Berkeley Packet Filter)dnl 498_mkdev(bpf, {-bpf*-}, {-M bpf$U c major_bpf_c $U 600-}, 600)dnl 499_mkdev(tun, {-tun*-}, {-M tun$U c major_tun_c $U 600-}, 600)dnl 500__devitem(speak, speaker, PC speaker,spkr)dnl 501_mkdev(speak, speaker, {-M speaker c major_speak_c 0 600-})dnl 502__devitem(lkm, lkm, Loadable kernel modules interface)dnl 503_cdev(lkm, lkm, {-major_lkm_c-}, 0, 640, _lkm)dnl 504__devitem(tun, tun*, Network tunnel driver)dnl 505__devitem(rnd, *random, In-kernel random data source,random)dnl 506_mkdev(rnd, *random, {-n=0 507 for pre in " " s u p a 508 do 509 M ${pre}random c major_rnd_c $n 644 510 n=Add($n, 1) 511 done-}, 644)dnl 512__devitem(joy, joy*, Joystick driver)dnl 513_mcdev(joy, joy*, joy, {-major_joy_c-}, 666)dnl 514__devitem(mag, magma*, Magma multiport cards,magma)dnl 515__devitem(bppmag, bppmag[mno], Magma parallel port,magma)dnl 516__devitem(spif, spif*, quote(spif)multiport cards)dnl 517__devitem(bppsp, bpp[jkl], quote(spif)parallel port,spif)dnl 518_mkdev(mag, magma*, {-case $U in 519 0) offset=0 nam=m;; 520 1) offset=16 nam=n;; 521 2) offset=32 nam=o;; 522 *) echo "bad unit for $i: $U"; exit 127;; 523 esac 524 offset=Mult($U, 64) 525 n=0 526 while [ $n -lt 16 ] 527 do 528 name=${nam}`hex $n` 529 M tty$name c major_mag_c Add($offset, $n) 660 dialer uucp 530 n=Add($n, 1) 531 done 532 M bpp${nam}0 c major_bppmag_c Add($offset, 0) 600 533 M bpp${nam}1 c major_bppmag_c Add($offset, 1) 600-})dnl 534_mkdev(spif, spif*, {-case $U in 535 0) offset=0 nam=j;; 536 1) offset=16 nam=k;; 537 2) offset=32 nam=l;; 538 *) echo "bad unit for $i: $U"; exit 127;; 539 esac 540 offset=Mult($U, 64) 541 n=0 542 while [ $n -lt 8 ] 543 do 544 name=${nam}`hex $n` 545 M tty$name c major_spif_c Add($offset, $n) 660 dialer uucp 546 n=Add($n, 1) 547 done 548 M bpp${nam}0 c major_bppsp_c Add($offset, 0) 600-})dnl 549__devitem(bpp, bpp*, Parallel port)dnl 550_mkdev(bpp, {-bpp*-}, {-M bpp$U c major_bpp_c $U 600-}, 600)dnl 551__devitem(xfs, xfs*, XFS filesystem node, mount_xfs 8)dnl 552_mcdev(xfs, xfs*, xfs, {-major_xfs_c-}, 600)dnl 553__devitem(rmidi, rmidi*, Raw MIDI devices,midi)dnl 554_mcdev(rmidi, rmidi*, rmidi, {-major_rmidi_c-}, 666)dnl 555__devtitle(plat, Platform-specific devices)dnl 556__devitem(bktr, bktr*, Video frame grabbers)dnl 557_mcdev(bktr, bktr*, bktr, {-major_bktr_c-}, 644)dnl 558__devitem(tuner, tuner*, Tuner devices)dnl 559_mkdev(tuner, tuner*, {-M tuner$U c major_bktr_c Add(Mult($U, 2), 16) 644-}, 644)dnl 560__devitem(pci, pci*, PCI bus devices)dnl 561_mkdev(pci, pci*, {-M pci$U c major_pci_c $U 600 562 MKlist[${#MKlist[*]}]=";[ -h pci ] || ln -sf pci0 pci"-})dnl 563__devitem(adb, adb, Apple Desktop bus event interface)dnl 564_mkdev(adb, adb, {-M adb c major_adb_c 0-})dnl 565__devitem(pdc, pdc, PDC device)dnl 566__devitem(gpr, gpr*, GPR400 smartcard reader)dnl 567_mcdev(gpr, gpr*, gpr, {-major_gpr_c-})dnl 568__devitem(hotplug, hotplug, devices hot plugging)dnl 569_mkdev(hotplug, hotplug, {-M hotplug c major_hotplug_c $U 400-})dnl 570__devitem(gpio, gpio*, General Purpose Input/Output)dnl 571_mcdev(gpio, gpio*, gpio, {-major_gpio_c-}, 600)dnl 572_mkdev(local, local, {-test -s $T.local && sh $T.local-})dnl 573