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