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