MAKEDEV.common revision 1.58
1vers(a, {-$OpenBSD: MAKEDEV.common,v 1.58 2011/10/22 19:31:20 miod 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 devices are generated in 'all)' below. MAKEDEV.md contains 122dnl its own extra list. 123dnl 124divert(1)dnl 125twrget(all, fdesc, fd)dnl 126target(all, st, 0, 1)dnl 127target(all, std)dnl 128target(all, raid, 0, 1, 2, 3)dnl 129target(all, ra, 0, 1, 2, 3)dnl 130target(all, rx, 0, 1)dnl 131target(all, wd, 0, 1, 2, 3)dnl 132target(all, xd, 0, 1, 2, 3)dnl 133target(all, systrace)dnl 134target(all, pctr)dnl 135target(all, pctr0)dnl 136target(all, pf)dnl 137twrget(all, cry, crypto)dnl 138target(all, apm)dnl 139target(all, acpi)dnl 140twrget(all, tth, ttyh, 0, 1)dnl 141target(all, ttyA, 0, 1)dnl 142target(all, ttyB, 0, 1, 2, 3, 4, 5)dnl 143twrget(all, attyB, ttyB, 0, 1, 2, 3, 4)dnl 144twrget(all, mac_tty0, tty0, 0, 1)dnl 145twrget(all, tzs, tty, a, b, c, d)dnl 146twrget(all, czs, cua, a, b, c, d)dnl 147target(all, ttyc, 0, 1, 2, 3, 4, 5, 6, 7)dnl 148twrget(all, com, tty0, 0, 1, 2, 3)dnl 149target(all, lkm)dnl 150twrget(all, mmcl, mmclock)dnl 151target(all, lpt, 0, 1, 2)dnl 152twrget(all, lpt, lpa, 0, 1, 2)dnl 153target(all, joy, 0, 1)dnl 154twrget(all, rnd, random)dnl 155target(all, uk, 0)dnl 156twrget(all, vi, video, 0, 1)dnl 157twrget(all, speak, speaker)dnl 158target(all, asc, 0)dnl 159target(all, music, 0)dnl 160target(all, radio, 0)dnl 161target(all, tuner, 0)dnl 162target(all, rmidi, 0, 1, 2, 3, 4, 5, 6, 7)dnl 163target(all, uall)dnl 164target(all, iop, 0, 1)dnl 165target(all, pci, 0, 1, 2, 3)dnl 166twrget(all, wsmouse, wscons)dnl 167target(all, par, 0)dnl 168target(all, apci, 0)dnl 169target(all, ppi, 0)dnl 170target(all, local)dnl 171target(all, gpr, 0)dnl 172target(all, ptm)dnl 173target(all, hotplug)dnl 174dnl 175_mkdev(all, {-all-}, {-dnl 176show_target(all)dnl 177-})dnl 178dnl 179dnl XXX some arches use ramd, others ramdisk - needs to be fixed eventually 180__devitem(ramdisk, ramdisk, Ramdisk kernel devices,nothing)dnl 181dnl 182target(usb, usb, 0, 1, 2, 3, 4, 5, 6, 7)dnl 183target(usb, urio, 0)dnl 184twrget(usb, uscan, uscanner, 0)dnl 185target(usb, uhid, 0, 1, 2, 3)dnl 186target(usb, ulpt, 0, 1)dnl 187target(usb, ugen, 0, 1)dnl 188target(usb, ttyU, 0, 1, 2, 3)dnl 189dnl 190__devitem({-uall-}, uall, All USB devices,usb)dnl 191_mkdev(uall, uall, {-dnl 192show_target({-usb-})dnl 193-})dnl 194__devtitle(tap, Tapes)dnl 195__devitem(tz, tz*, {-DEC TK50 cartridge tape drives-})dnl 196__devitem(st, {-st*-}, SCSI tape drives)dnl 197_mkdev(st, st*, {-n=Mult($U, 16) 198 for pre in " " n e en 199 do 200 M ${pre}st$U b major_st_b $n 660 operator 201 M ${pre}rst$U c major_st_c $n 660 operator 202 n=Add($n, 1) 203 done-})dnl 204__devitem(mt, mt*, (Magnetic) 9-track reel tape drives)dnl 205__devtitle(dis, Disks)dnl 206__devitem(sd, {-sd*-}, {-SCSI disks{-,-} including flopticals-})dnl 207__devitem(cd, {-cd*-}, ATAPI and SCSI CD-ROM drives)dnl 208_mkdev(cd, cd*, {-dodisk2 cd $U major_cd_b major_cd_c $U 0{--}ifstep(cd)-})dnl 209__devitem(bthub, {-bthub*-}, Bluetooth Hubs)dnl 210_mcdev(bthub, bthub*, bthub, {-major_bthub_c-})dnl 211__devitem(ch, {-ch*-}, SCSI media changers)dnl 212_mcdev(ch, ch*, ch, {-major_ch_c-}, 660, operator)dnl 213__devitem(uk, uk*, Unknown SCSI devices)dnl 214_mcdev(uk, uk*, uk, {-major_uk_c-}, 640, operator)dnl 215dnl XXX see ramdisk above 216__devitem(ramd, ramdisk, Ramdisk kernel devices,nothing)dnl 217dnl 218_mkdev(ramd, ramdisk, {-dnl 219show_target(ramd)dnl 220-})dnl 221dnl 222target(ramd, std)dnl 223target(ramd, bpf, 0)dnl 224twrget(ramd, com, tty0, 0, 1)dnl 225target(ramd, sd, 0, 1, 2, 3, 4)dnl 226target(ramd, wd, 0, 1, 2, 3, 4)dnl 227target(ramd, st, 0, 1)dnl 228target(ramd, cd, 0, 1)dnl 229target(ramd, rd, 0)dnl 230dnl 231__devitem(rd, {-rd*-}, quote(rd)pseudo-disks)dnl 232_mkdev(rd, rd*, {-dodisk2 rd $U major_rd_b major_rd_c $U 0{--}ifstep(rd)-})dnl 233__devitem(xd, xd*, Xylogic 753/7053 disks)dnl 234__devitem(xy, xy*, {- Xylogic 450/451 disks-})dnl 235__devitem(flo, {-fd*-}, {-Floppy disk drives (3 1/2"{-,-} 5 1/4")-},fd)dnl 236_mkdev(flo, fd*, 237{-typnam=$U${i#fd[01]*} 238 case $typnam in 239 0|1) typnum=0;; # no type specified, assume A 240 *A) typnum=0; typnam=0;; 241 *B) typnum=1;; 242 *C) typnum=2;; 243 *D) typnum=3;; 244 *E) typnum=4;; 245 *F) typnum=5;; 246 *G) typnum=6;; 247 *H) typnum=7;; 248 *) echo bad type $typnam for $i; exit 1;; 249 esac 250 case $U in 251 0|1) blk=major_flo_b; chr=major_flo_c;; 252 *) echo bad unit $U for $i; exit 1;; 253 esac 254 nam=fd${typnam} 255 n=Add(Mult($U, 128), Mult($typnum, 16)) 256 M ${nam}a b $blk $n 640 operator 257 M ${nam}b b $blk Add($n, 1) 640 operator 258 M ${nam}c b $blk Add($n, 2) 640 operator 259 M ${nam}i b $blk Add($n, 8) 640 operator 260 M r${nam}a c $chr $n 640 operator 261 M r${nam}b c $chr Add($n, 1) 640 operator 262 M r${nam}c c $chr Add($n, 2) 640 operator 263 M r${nam}i c $chr Add($n, 8) 640 operator-}, 664)dnl 264__devitem(iop, iop*, I2O controller devices)dnl 265_mcdev(iop, iop*, iop, {-major_iop_c-}, 660)dnl 266__devitem(wd, {-wd*-}, {-quote(winchester)disk drives (ST506{-,-} IDE{-,-} ESDI{-,-} RLL{-,-} ...)-})dnl 267__devitem(raid, raid*, RAIDframe disk devices)dnl 268__devitem(vnd, vnd*, quote(file)pseudo-disk devices)dnl 269_mkdev(vnd, vnd*, {-dodisk vnd $U major_vnd_b major_vnd_c $U 0{--}ifstep(vnd)-})dnl 270__devitem(ra, ra*, {-MSCP disks-})dnl 271__devitem(rx, rx*, {-RX02 floppy disks-})dnl 272dnl 273dnl For normal disk devices, add a disk_q entry; anything else define like 274dnl the rest (such as vnd above). 275dnl 276disk_q({-hd-})dnl 277disk_q({-ra-})dnl 278disk_q({-raid-})dnl 279disk_q({-rx-})dnl 280disk_q({-sd-})dnl 281disk_q({-xy-})dnl 282disk_q({-xd-})dnl 283disk_q({-wd-})dnl 284_mkdev({-disks-}, {-undefine({-C_ase-})show_disks()undefine({-C_ase-})-}, 285{-case $i in 286show_disks2()dnl 287 esac-})dnl 288__mkdev({-disks-}){--}dnl 289dnl 290__devtitle(cons, Console ports)dnl 291__devitem(wscons, wscons, Minimal wscons devices)dnl 292twrget(wscons, wscons, ttyC, cfg, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b)dnl 293target(wscons, wsmux)dnl 294target(wscons, wskbd, 0, 1, 2, 3)dnl 295target(wscons, wsmouse, 0, 1, 2, 3)dnl 296_mkdev({-wscons-}, {-wscons-}, {-dnl 297show_target(wscons)dnl 298-})dnl 299__devitem(wsdisp, ttyC-J*, wscons display devices,wsdisplay)dnl 300_mkdev({-wsdisp-}, tty[C-J]*, {-U=${i##tty[C-J]} 301 case $i in 302 ttyC*) n=C m=expr(0*256);; 303 ttyD*) n=D m=expr(1*256);; 304 ttyE*) n=E m=expr(2*256);; 305 ttyF*) n=F m=expr(3*256);; 306 ttyG*) n=G m=expr(4*256);; 307 ttyH*) n=H m=expr(5*256);; 308 ttyI*) n=I m=expr(6*256);; 309 ttyJ*) n=J m=expr(7*256);; 310 esac 311 case $U in 312 [0-9a-f]) M tty$n$U c major_wsdisp_c Add(16#$U, $m) 600;; 313 cfg) M tty${n}cfg c major_wsdisp_c Add(255,$m) 600;; 314 *) echo bad unit $U for $i; exit 1;; 315 esac-})dnl 316__devitem(wskbd, wskbd*, wscons keyboards)dnl 317dnl XXX wskbd[0-9]* instead of wskbd* in case this appears before 318dnl XXX ``wsmux|wsmouse|wskbd'' in the final MAKEDEV. 319_mkdev(wskbd, wskbd[0-9]*, {-M wskbd$U c major_wskbd_c $U 600-})dnl 320__devitem(wsmux, wsmux, wscons keyboard/mouse mux devices)dnl 321_mkdev(wsmux, wsmux|wsmouse|wskbd, {-M wsmouse c major_wsmux_c 0 600 322 M wskbd c major_wsmux_c 1 600-})dnl 323__devitem(pcons, console, PROM console)dnl 324__devtitle(point, Pointing devices)dnl 325__devitem(wsmouse, wsmouse*, wscons mice)dnl 326dnl XXX wsmouse[0-9]* instead of wsmouse* in case this appears before 327dnl XXX ``wsmux|wsmouse|wskbd'' in the final MAKEDEV. 328_mkdev(wsmouse, wsmouse[0-9]*, {-M wsmouse$U c major_wsmouse_c $U 600-})dnl 329__devtitle(pty, Pseudo terminals)dnl 330__devitem(ptm, ptm, pty master device)dnl 331_mkdev(ptm, ptm, {-M ptm c major_ptm_c 0 666-})dnl 332__devitem(tty, tty*, Set of 62 slave pseudo terminals)dnl 333__devitem(pty, pty*, Set of 62 master pseudo terminals)dnl 334_mkdev(pty, pty*, {-if [ $U -gt 15 ]; then 335 echo bad unit for pty in: $i 336 continue 337 fi 338 set -A letters p q r s t u v w x y z P Q R S T 339 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 \ 340 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 \ 341 Y Z 342 343 name=${letters[$U]} 344 n=0 345 while [ $n -lt 62 ] 346 do 347 nam=$name${suffixes[$n]} 348 off=Mult($U, 62) 349 M tty$nam c major_tty_c Add($off, $n) 350 M pty$nam c major_pty_c Add($off, $n) 351 n=Add($n, 1) 352 done-})dnl 353__devitem(dc, dc*, {-4 channel serial interface (keyboard{-,-} mouse{-,-}modem{-,-} printer)-})dnl 354__devitem(drm, drm*, {-Direct Rendering Manager-})dnl 355_mcdev({-drm-}, drm*, {-drm-}, {-major_drm_c-}, 660)dnl 356__devtitle(prn, Printers)dnl 357__devitem(lpt, lpt*, IEEE 1284 centronics printer)dnl 358_mkdev(lpt, lpt*|lpa*, 359{-case $i in 360 lpt*) n=lpt f=0;; 361 lpa*) n=lpa f=128;; 362 esac 363 M $n$U c major_lpt_c Add($U, $f) 600-})dnl 364__devitem(lpa, lpa*, Polled printer port,lpt)dnl 365__devitem(ppi, ppi*, HP-IB plotters)dnl 366__devtitle({-usb-}, USB devices)dnl 367__devitem({-usb-}, usb*, Bus control devices used by usbd for attach/detach)dnl 368_mkdev({-usb-}, usb*, {-[ "$i" = "usb" ] && u= || u=$U 369 M usb$u c major_usb_c $U 660-})dnl 370__devitem(uhid, uhid*, Generic HID devices)dnl 371_mcdev({-uhid-}, uhid*, {-uhid-}, {-major_uhid_c-}, 660)dnl 372__devitem(ulpt, ulpt*, Printer devices)dnl 373_mcdev({-ulpt-}, ulpt*, {-ulpt-}, {-major_ulpt_c-}, 660)dnl 374__devitem(ttyU, ttyU*, USB serial ports,ucom)dnl 375_mkdev({-ttyU-}, {-ttyU[0-9a-zA-Z]-}, {-U=${i#ttyU*} 376 o=$(alph2d $U) 377 M ttyU$U c major_ttyU_c $o 660 dialer uucp 378 M cuaU$U c major_ttyU_c Add($o, 128) 660 dialer uucp-})dnl 379__devitem(urio, urio*, Diamond Multimedia Rio 500)dnl 380_mcdev({-urio-}, urio*, {-urio-}, {-major_urio_c-}, 660)dnl 381__devitem(uscan, uscanner*, Scanners,uscanner)dnl 382_mcdev({-uscan-}, uscanner*, {-uscanner-}, {-major_uscan_c-}, 660)dnl 383__devitem(ugen, ugen*, Generic USB devices)dnl 384_mkdev(ugen, ugen*, {-n=Mult($U, 16) 385 for j in 0{0,1,2,3,4,5,6,7,8,9} 1{0,1,2,3,4,5} 386 do 387 M ugen$U.$j c major_ugen_c Add($n, 10#$j) 660 388 done-})dnl 389__devtitle(call, Call units)dnl 390__devtitle(term, Terminal ports)dnl 391__devitem(dca, dca*, HP200/300 single port serial interface)dnl 392__devitem(dcm, dcm*, HP200/300 4 port serial mux interface)dnl 393__devitem(apci, apci*, HP400 4 port serial mux interface)dnl 394__devitem({-com-}, {-tty[0-7][0-9a-f]-}, NS16x50 serial ports)dnl 395_mkdev(com, {-tty[0-7][0-9a-f]-}, {-U=${i#tty*} 396 o=$(h2d $U) 397 M tty$U c major_com_c $o 660 dialer uucp 398 M cua$U c major_com_c Add($o, 128) 660 dialer uucp-})dnl 399__devitem(ttyc, ttyc*, Cyclades serial ports,cy)dnl 400__devitem(tzs, tty[a-z]*, Zilog 8530 Serial Port,zs)dnl 401_mkdev(tzs, {-tty[a-z]-}, {-u=${i#tty*} 402 case $u in 403 a) n=0 ;; 404 b) n=1 ;; 405 c) n=4 ;; 406 d) n=5 ;; 407 *) echo unknown tty device $i ;; 408 esac 409 M tty$u c major_tzs_c $n 660 dialer uucp-})dnl 410__devitem(tth, ttyh*, Sab82532 serial devices,sab)dnl 411_mkdev(tth, ttyh*, {-M ttyh$U c major_tth_c $U 660 dialer uucp-})dnl 412__devitem(czs, cua[a-z]*, Zilog 8530 Serial Port,zs)dnl 413_mkdev(czs, cua[a-z], {-u=${i#cua*} 414 case $u in 415 a) n=0 ;; 416 b) n=1 ;; 417 c) n=4 ;; 418 d) n=5 ;; 419 *) echo unknown cua device $i ;; 420 esac 421 M cua$u c major_czs_c Add($n, 128) 660 dialer uucp-})dnl 422__devitem(tty0, tty00, Standard serial port,com)dnl 423__devitem(mac_tty0, tty00, Standard serial port,zsc)dnl 424__devitem(ttyz, tty[a-d], On-board zs serial ports,zs)dnl 425__devitem(cuaz, cua[a-d], On-board zs serial ports,zs)dnl 426__devitem(ttyB, ttyB?, DEC 3000 ZS8530 ("scc") serial ports,scc)dnl 427__devitem(scc, scc*, 82530 serial interface,scc)dnl 428__devtitle(spec, Special purpose devices)dnl 429_mkdev(apm, apm*, {-M apm c major_apm_c 0 644 430 M apmctl c major_apm_c 8 644-})dnl 431_mkdev(acpi, acpi*, {-M acpi c major_acpi_c 0 644-})dnl 432__devitem(pctr, pctr*, PC Performance Tuning Register access device)dnl 433_mkdev(pctr, pctr, {-M pctr c major_pctr_c 0 644-})dnl 434__devitem(systrace, systrace*, System call tracing device)dnl 435_mkdev(systrace, systrace, {-M systrace c major_systrace_c 0 644-})dnl 436__devitem(au, audio*, Audio devices,audio)dnl 437_mkdev(au, audio*, {-M sound$U c major_au_c $U 438 M mixer$U c major_au_c Add($U, 16) 439 M audio$U c major_au_c Add($U, 128) 440 M audioctl$U c major_au_c Add($U, 192) 441 MKlist[${#MKlist[*]}]=";[ -e audio ] || ln -s audio$U audio" 442 MKlist[${#MKlist[*]}]=";[ -e mixer ] || ln -s mixer$U mixer" 443 MKlist[${#MKlist[*]}]=";[ -e sound ] || ln -s sound$U sound" 444 MKlist[${#MKlist[*]}]=";[ -e audioctl ] || ln -s audioctl$U audioctl"-})dnl 445__devitem(vi, video*, Video V4L2 devices,video)dnl 446_mkdev(vi, video*, {-M video$U c major_vi_c $U 447 MKlist[${#MKlist[*]}]=";[ -e video ] || ln -s video$U video"-})dnl 448__devitem(asc, asc*, ASC Audio device)dnl 449_mkdev(asc, asc*, {-M asc$U major_asc_c 0-})dnl 450__devitem(bio, bio, {-ioctl tunnel pseudo-device-})dnl 451_mkdev(bio, bio, {-M bio c major_bio_c 0 600-})dnl 452__devitem(music, music*, MIDI sequencer,music)dnl 453_mkdev(music, music*, {-M music$U c major_music_c $U 454 M sequencer$U c major_music_c Add($U, 128) 455 MKlist[${#MKlist[*]}]=";[ -e music ] || ln -s music$U music" 456 MKlist[${#MKlist[*]}]=";[ -e sequencer ] || ln -s sequencer$U sequencer"-})dnl 457__devitem(radio, radio*, FM tuner devices)dnl 458_mkdev(radio, radio*, {-M radio$U c major_radio_c $U 459 MKlist[${#MKlist[*]}]=";[ -e radio ] || ln -s radio$U radio"-})dnl 460__devitem(fdesc, fd, fd/* nodes, fd)dnl 461_mkdev(fdesc, fd, {-RMlist[${#RMlist[*]}]=";mkdir -p fd;rm -f" n=0 462 while [ $n -lt 64 ];do M fd/$n c major_fdesc_c $n;n=Add($n, 1);done 463 MKlist[${#MKlist[*]}]=";chmod 555 fd"-})dnl 464__devitem(oppr, openprom,PROM settings,openprom)dnl 465_cdev(oppr, openprom, 70, 0)dnl 466__devitem(cry, crypto, Hardware crypto access driver,crypto)dnl 467_mkdev(cry, crypto, {-M crypto c major_cry_c-} 0)dnl 468__devitem(pf, pf*, Packet Filter)dnl 469_mkdev(pf, {-pf*-}, {-M pf c major_pf_c 0 600-})dnl 470__devitem(bpf, bpf*, Berkeley Packet Filter)dnl 471_mkdev(bpf, {-bpf*-}, {-M bpf$U c major_bpf_c $U 600-}, 600)dnl 472_mkdev(tun, {-tun*-}, {-M tun$U c major_tun_c $U 600-}, 600)dnl 473__devitem(speak, speaker, PC speaker,spkr)dnl 474_mkdev(speak, speaker, {-M speaker c major_speak_c 0 600-})dnl 475__devitem(lkm, lkm, Loadable kernel modules interface)dnl 476_cdev(lkm, lkm, {-major_lkm_c-}, 0, 640, _lkm)dnl 477__devitem(tun, tun*, Network tunnel driver)dnl 478__devitem(rnd, *random, In-kernel random data source,random)dnl 479_mkdev(rnd, *random, {-n=0 480 for pre in " " s u a 481 do 482 M ${pre}random c major_rnd_c $n 644 483 n=Add($n, 1) 484 done-}, 644)dnl 485__devitem(joy, joy*, Joystick driver)dnl 486_mcdev(joy, joy*, joy, {-major_joy_c-}, 666)dnl 487__devitem(mag, magma*, Magma multiport cards,magma)dnl 488__devitem(bppmag, bppmag[mno], Magma parallel port,magma)dnl 489__devitem(spif, spif*, quote(spif)multiport cards)dnl 490__devitem(bppsp, bpp[jkl], quote(spif)parallel port,spif)dnl 491_mkdev(mag, magma*, {-case $U in 492 0) offset=0 nam=m;; 493 1) offset=16 nam=n;; 494 2) offset=32 nam=o;; 495 *) echo "bad unit for $i: $U"; exit 127;; 496 esac 497 offset=Mult($U, 64) 498 n=0 499 while [ $n -lt 16 ] 500 do 501 name=${nam}`hex $n` 502 M tty$name c major_mag_c Add($offset, $n) 660 dialer uucp 503 n=Add($n, 1) 504 done 505 M bpp${nam}0 c major_bppmag_c Add($offset, 0) 600 506 M bpp${nam}1 c major_bppmag_c Add($offset, 1) 600-})dnl 507_mkdev(spif, spif*, {-case $U in 508 0) offset=0 nam=j;; 509 1) offset=16 nam=k;; 510 2) offset=32 nam=l;; 511 *) echo "bad unit for $i: $U"; exit 127;; 512 esac 513 offset=Mult($U, 64) 514 n=0 515 while [ $n -lt 8 ] 516 do 517 name=${nam}`hex $n` 518 M tty$name c major_spif_c Add($offset, $n) 660 dialer uucp 519 n=Add($n, 1) 520 done 521 M bpp${nam}0 c major_bppsp_c Add($offset, 0) 600-})dnl 522__devitem(bpp, bpp*, Parallel port)dnl 523_mkdev(bpp, {-bpp*-}, {-M bpp$U c major_bpp_c $U 600-}, 600)dnl 524__devitem(nnpfs, nnpfs*, NNPFS filesystem node, mount_nnpfs 8)dnl 525_mcdev(nnpfs, nnpfs*, nnpfs, {-major_nnpfs_c-}, 600)dnl 526__devitem(vscsi, vscsi*, Virtual SCSI controller, vscsi 8)dnl 527_mcdev(vscsi, vscsi*, vscsi, {-major_vscsi_c-}, 600)dnl 528__devitem(rmidi, rmidi*, Raw MIDI devices,midi)dnl 529_mcdev(rmidi, rmidi*, rmidi, {-major_rmidi_c-}, 666)dnl 530__devitem(diskmap, diskmap, Disk mapper, diskmap)dnl 531_mkdev(diskmap, diskmap, {-M diskmap c major_diskmap_c 0 640 operator-})dnl 532__devitem(pppx, pppx*, PPP Multiplexer, pppx 4)dnl 533_mcdev(pppx, pppx*, pppx, {-major_pppx_c-}, 600)dnl 534__devtitle(plat, Platform-specific devices)dnl 535__devitem(bktr, bktr*, Video frame grabbers)dnl 536_mcdev(bktr, bktr*, bktr, {-major_bktr_c-}, 644)dnl 537__devitem(tuner, tuner*, Tuner devices, bktr)dnl 538_mkdev(tuner, tuner*, {-M tuner$U c major_bktr_c Add(Mult($U, 2), 16) 644-}, 644)dnl 539__devitem(pci, pci*, PCI bus devices)dnl 540_mkdev(pci, pci*, {-M pci$U c major_pci_c $U 600 541 MKlist[${#MKlist[*]}]=";[ -h pci ] || ln -sf pci0 pci"-})dnl 542__devitem(pdc, pdc, PDC device)dnl 543__devitem(gpr, gpr*, GPR400 smartcard reader)dnl 544_mcdev(gpr, gpr*, gpr, {-major_gpr_c-})dnl 545__devitem(hotplug, hotplug, devices hot plugging)dnl 546_mkdev(hotplug, hotplug, {-M hotplug c major_hotplug_c $U 400-})dnl 547__devitem(gpio, gpio*, General Purpose Input/Output)dnl 548_mcdev(gpio, gpio*, gpio, {-major_gpio_c-}, 600)dnl 549_mkdev(local, local, {-test -s $T.local && sh $T.local-})dnl 550