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