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