MAKEDEV.mi revision 1.60
1include(MAKEDEV.sub)dnl 2dnl 3vers(a, {-$OpenBSD: MAKEDEV.mi,v 1.60 2003/06/18 18:08:59 todd Exp $-})dnl 4dnl 5divert(1)dnl 6{-#-} 7{-#-} Copyright (c) 2001,2002,2003 Todd T. Fries <todd@OpenBSD.org> 8{-#-} 9{-#-} Permission to use, copy, modify, and distribute this software for any 10{-#-} purpose with or without fee is hereby granted, provided that the above 11{-#-} copyright notice and this permission notice appear in all copies. 12{-#-} 13{-#-} THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 14{-#-} WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 15{-#-} MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 16{-#-} ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 17{-#-} WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 18{-#-} ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 19{-#-} OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 20{-#-} 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 HOW TO ADD A DEVICE: 32dnl 33dnl In this file, you must use at least two macros: 34dnl 35dnl Use '__devitem(uniqueid, name-pattern, description)' to create an entry 36dnl in the description at the top of the generated MAKEDEV file: 37dnl 38dnl __devitem(sca, sca*, Sugar Generic device)dnl 39dnl __devitem(cry, crypto, hardware crypto access driver)dnl 40dnl 41dnl This is ultimately shown as: 42dnl 43dnl # sca* Sugar Generic device 44dnl # crypto hardware crypto access driver 45dnl 46dnl Use '_mkdev(uniqueid, shell-pattern, {-shell-script-})dnl' to create 47dnl a shell script fragment used to 'create' the device (be sure to match 48dnl the uniqueid from above): 49dnl 50dnl _mkdev(sca, sca*, {-M sca$U c major_sca_c $U 51dnl M rsca$U b major_sca_b Add($U, 128)-})dnl 52dnl _mkdev(cry, crypto, {-M crypto c major_cry_c 0-})dnl 53dnl 54dnl This is ultimately expanded into: 55dnl 56dnl sca*) 57dnl M sca$U c 24 $U 58dnl M sca$U b 42 $(($U+128)) 59dnl ;; 60dnl 61dnl crypto) 62dnl M crypto c 47 0 63dnl ;; 64dnl 65dnl In the MAKEDEV.md file, add a '_DEV(uniqueid, charmajor, blockmajor)' 66dnl entry: 67dnl 68dnl _DEV(sca, 24, 42) 69dnl _DEV(cry, 47) 70dnl 71dnl Final step is to use the 'target/twrget' macros to have the 'all)' target 72dnl generate one or more device(s). Usage of 'target/twrget' is: 73dnl target(target_name, device_name [, append_string ] .. ) 74dnl twrget(target_name, uniqueid, device_name, [, append_string ] .. ) 75dnl 76dnl target_name a unique name that later is used as an argument to 77dnl 'show_target()' (which expands all devices for a 78dnl given 'target_name'). 79dnl uniqueid same as 'uniqueid' above 80dnl device_name string representing the device to be mknod'ed 81dnl append_string for each append_string, `device_name' is prepended 82dnl 83dnl Note: 'target(a,b,c)' is equivalent to 'twrget(a,b,b,c)' 84dnl 85dnl 86dnl For a short example: 87dnl 88dnl target(all, std)dnl 89dnl target(all, sca, 0, 1, 2, 3)dnl 90dnl twrget(all, cry, crypto)dnl 91dnl 92dnl would expand to: 93dnl 94dnl all) 95dnl R std sca0 sca1 sca2 sca3 crypto 96dnl ;; 97dnl 98dnl presuming '_DEV(sca, ?, ?)' and '_DEV(std)' were in the MAKEDEV.md file. 99dnl 100dnl 101dnl Everything is 'automatically' added to 'MAKEDEV' based on whether or 102dnl not the '_DEV()' entry has a corresponding _mkdev() and __devitem() 103dnl entry in MAKEDEV.mi (this file). 104dnl 105dnl Note: be very wary of adding whitespace, carriage returns, or not 106dnl finishing a macro with ')dnl' .. otherwise, extra blank lines show up 107dnl in the output. 108dnl 109dnl TODO: 110dnl 111dnl make a 'disktgt' macro that automatically does: 112dnl disktgt(rd, {-rd-}) 113dnl 114dnl target(all,rd,0) 115dnl target(ramd,rd,0) 116dnl disk_q(rd) 117dnl __devitem(rd, {-rd*-}, {-rd-})dnl 118dnl 119dnl Note: not all disks are generated in 'all)'. (e.g. vax has a lot of 120dnl disks that are not generated by 'all)') 121dnl 122dnl 123_mkdev(loc, local, {-test -s $T.local && sh $T.local-})dnl 124dnl 125__devtitle(make, Device "make" file. Valid arguments)dnl 126__devitem({-all-}, {-all-}, 127{-makes all known devices{-,-} including local devices. 128{-#-} Tries to make the ``standard'' number of each type.-})dnl 129dnl 130dnl 131target(all, mcd, 0)dnl 132twrget(all, fdesc, fd)dnl 133target(all, st, 0, 1)dnl 134target(all, std)dnl 135target(all, raid, 0, 1, 2, 3)dnl 136target(all, rz, 0, 1, 2, 3, 4)dnl 137target(all, hp, 0, 1, 2, 3)dnl 138target(all, ra, 0, 1, 2, 3)dnl 139target(all, rx, 0, 1)dnl 140target(all, wd, 0, 1, 2, 3)dnl 141target(all, xd, 0, 1, 2, 3)dnl 142twrget(all, aflo, fd, 0, 1, 2, 3)dnl 143target(all, systrace)dnl 144target(all, pctr)dnl 145target(all, pctr0)dnl 146target(all, pf)dnl 147twrget(all, cry, crypto)dnl 148target(all, apm)dnl 149twrget(all, tth, ttyh, 0, 1)dnl 150target(all, ttyA, 0, 1)dnl 151target(all, ttyB, 0, 1, 2, 3, 4, 5)dnl 152twrget(all, attyB, ttyB, 0, 1, 2, 3, 4)dnl 153target(all, tty0, 0, 1, 2, 3)dnl 154twrget(all, mac_tty0, tty0, 0, 1)dnl 155twrget(all, tzs, tty, a, b, c, d)dnl 156twrget(all, czs, cua, a, b, c, d)dnl 157target(all, ttyc, 0, 1, 2, 3, 4, 5, 6, 7)dnl 158twrget(all, com, tty0, 0, 1, 2, 3)dnl 159twrget(all, mac_ttye, ttye, 0)dnl 160target(all, ttye, 0, 1, 2, 3, 4, 5, 6)dnl 161target(all, lkm)dnl 162twrget(all, mmcl, mmclock)dnl 163target(all, lpt, 0, 1, 2)dnl 164twrget(all, lpt, lpa, 0, 1, 2)dnl 165target(all, joy, 0, 1)dnl 166twrget(all, rnd, random)dnl 167target(all, uk, 0)dnl 168target(all, wt, 0)dnl 169target(all, wdt, 0)dnl 170twrget(all, au, audio, 0)dnl 171twrget(all, speak, speaker)dnl 172target(all, asc, 0)dnl 173target(all, music, 0)dnl 174target(all, radio, 0)dnl 175target(all, tuner, 0)dnl 176target(all, rmidi, 0, 1, 2, 3, 4, 5, 6, 7)dnl 177target(all, usbs)dnl 178target(all, adb)dnl 179target(all, iop, 0, 1)dnl 180target(all, pci)dnl 181twrget(all, wsmouse, wscons)dnl 182twrget(all, grf_mac, grf, 0, 1, 2, 3)dnl 183target(all, par, 0)dnl 184twrget(all, amouse, mouse, 0, 1)dnl 185twrget(all, akbd, kbd)dnl 186target(all, apci, 0)dnl 187target(all, ppi, 0)dnl 188target(all, view0, 0, 1, 2, 3, 4, 5)dnl 189target(all, local)dnl 190target(all, gpr, 0)dnl 191dnl 192_mkdev(all, {-all-}, {-dnl 193show_target(all)dnl 194-})dnl 195dnl 196__devitem(ramdisk, ramdisk, devices to be put on ramdisk-based media)dnl 197__devitem(std, {-std-}, standard devices)dnl 198dnl 199dnl 200dnl 201dnl _std 202dnl 203dnl $1: tty 204dnl $2: memstuff 205dnl $3: ksyms 206dnl $4: drum 207dnl $5: klog 208dnl 209define({-_std-}, {-dnl 210std) 211 M console c 0 0 600 212 M tty c $1 0 213 M mem c $2 0 640 kmem 214 M kmem c $2 1 640 kmem 215 M null c $2 2 216 M zero c $2 12 217 M stdin c major_fdesc_c 0 218 M stdout c major_fdesc_c 1 219 M stderr c major_fdesc_c 2 220 M ksyms c $3 0 640 kmem 221 M drum c $4 0 640 kmem 222 M klog c $5 0 600-})dnl 223dnl 224target(usb, usb, 0, 1)dnl 225target(usb, urio, 0)dnl 226twrget(usb, uscan, uscanner, 0)dnl 227target(usb, uhid, 0, 1, 2, 3)dnl 228target(usb, ulpt, 0, 1)dnl 229target(usb, ugen, 0, 1)dnl 230target(usb, utty, 0, 1)dnl 231dnl 232__devitem({-usbs-}, usbs, make USB devices)dnl 233_mkdev(usbs, usbs, {-dnl 234show_target({-usb-})dnl 235-})dnl 236__devtitle(tap, Tapes)dnl 237__devitem(wt, {-wt* -}, QIC-interface (e.g. not SCSI) 3M cartridge tape)dnl 238_mkdev(wt, wt*, 239{-name=wt 240 n=Mult($U, 8) m=Add($n, 4) 241 M $name$U b major_wt_b $n 640 operator 242 M r$name$U c major_wt_c $n 640 operator 243 M n$name$U b major_wt_b $m 640 operator 244 M nr$name$U c major_wt_c $m 640 operator-})dnl 245__devitem(tz, tz*, {-SCSI tapes{-,-} DEC TK50 cartridge tape-})dnl 246__devitem(st, {-st*-}, SCSI tapes)dnl 247_mkdev(st, st*, {-n=Mult($U, 16) 248 for pre in " " n e en 249 do 250 M ${pre}st$U b major_st_b $n 660 operator 251 M ${pre}rst$U c major_st_c $n 660 operator 252 n=Add($n, 1) 253 done-})dnl 254__devitem(ct, ct*, HP300 HP-IB cartridge tape)dnl 255__devitem(mt, mt*, (Magnetic) 9-track reel tape)dnl 256__devitem(ht, ht*, massbus tm03 & tu??)dnl 257__devitem(tm, tm*, unibus tm11 & te10 emulations (e.g. Emulex tc-11))dnl 258__devitem(ts, ts*, unibus ts11)dnl 259__devitem(ut, ut*, unibus tu45 emulations (e.g.si 9700))dnl 260__devtitle(dis, Disks)dnl 261__devitem(rz, rz*, SCSI disks)dnl 262__devitem(sd, {-sd*-}, {-SCSI disks, includes flopticals-})dnl 263__devitem(hd, {-hd*-}, HP300 HP-IB disks)dnl 264__devitem(cd, {-cd*-}, SCSI cdrom drives)dnl 265__devitem(acd, acd*, ATAPI cdrom drives)dnl 266_mkdev(cd, cd*, {-dodisk2 cd $U major_cd_b major_cd_c $U 0{--}ifstep(cd)-})dnl 267__devitem(mcd, mcd*, Mitsumi cdrom drives)dnl 268_mkdev(mcd, mcd*, {-dodisk2 mcd $U major_mcd_b major_mcd_c $U 0{--}ifstep(mcd)dnl 269-})dnl 270__devitem(ch, {-ch*-}, SCSI media changer)dnl 271_mcdev(ch, ch*, ch, {-major_ch_c-}, 660, operator)dnl 272__devitem(uk, uk*, SCSI Unknown device)dnl 273_mcdev(uk, uk*, uk, {-major_uk_c-}, 640, operator)dnl 274__devitem(ss, ss*, SCSI scanners)dnl 275_mkdev(ss, ss*, {-M ss$U c major_ss_c Mult($U,16) 640 operator 276 M nss$U c major_ss_c Add(Mult($U,16),1) 640 operator 277 M enss$U c major_ss_c Add(Mult($U,16),3) 640 operator 278 RMlist="$RMlist scan$U" 279 MKlist="$MKlist;umask 77;ln -s ss$U scan$U"-})dnl 280__devitem(ses, ses*, SES/SAF-TE SCSI devices)dnl 281_mkdev(ses, ses*, {-M ses$U c major_ses_c $U 640 operator-})dnl 282__devitem(ramd, ramdisk, makes all devices for a ramdisk kernel)dnl arc 283_mkdev(ramd, ramdisk, {-dnl 284show_target(ramd)dnl 285-})dnl 286target(ramd, std)dnl 287target(ramd, random)dnl 288target(ramd, bpf, 0)dnl 289__devitem(rd, {-rd*-}, "rd" pseudo-disks)dnl 290_mkdev(rd, rd*, {-dodisk2 rd $U major_rd_b major_rd_c $U 0{--}ifstep(rd)-})dnl 291__devitem(xd, xd*, Xylogic 753/7053 disks)dnl 292__devitem(xy, xy*, {- Xylogic 450/451 disks-})dnl 293__devitem(flo, {-fd*-}, {-Floppy disk drives (3 1/2"{-,-} 5 1/4")-})dnl 294_mkdev(flo, fd*, 295{-typnam=$U${i#fd[01]*} 296 case $typnam in 297 0|1) typnum=0;; # no type specified, assume A 298 *A) typnum=0; typnam=0;; 299 *B) typnum=1;; 300 *C) typnum=2;; 301 *D) typnum=3;; 302 *E) typnum=4;; 303 *F) typnum=5;; 304 *G) typnum=6;; 305 *H) typnum=7;; 306 *) echo bad type $typnam for $i; exit 1;; 307 esac 308 case $U in 309 0|1) blk=major_flo_b; chr=major_flo_c;; 310 *) echo bad unit $U for $i; exit 1;; 311 esac 312 nam=fd${typnam} 313 n=Add(Mult($U, 128), Mult($typnum, 16)) 314 M ${nam}a b $blk $n 640 operator 315 M ${nam}b b $blk Add($n, 1) 640 operator 316 M ${nam}c b $blk Add($n, 2) 640 operator 317 M r${nam}a c $chr $n 640 operator 318 M r${nam}b c $chr Add($n, 1) 640 operator 319 M r${nam}c c $chr Add($n, 2) 640 operator-}, 664)dnl 320__devitem(aflo, ramdisk, devices needed for install floppies)dnl 321_mkdev(aflo, fd*, {-case $U in 0|1|2|3) 322 M fd${U}a b major_aflo_b Mult($U, 16) 640 operator 323 M fd${U}b b major_aflo_b Add(Mult($U, 16), 1) 640 operator 324 M rfd${U}a c major_aflo_c Mult($U, 16) 640 operator 325 M rfd${U}b c major_aflo_c Add(Mult($U, 16), 1) 640 operator;; 326 *) echo bad unit for floppy disk in: $i;; 327 esac-})dnl 328__devitem(iop, iop*, I2O controller device)dnl 329_mcdev(iop, iop*, iop, {-major_iop_c-}, 660)dnl 330__devitem(wdt, wdt0, watchdog timer)dnl 331_mcdev(wdt, wdt0, wdt, {-major_wdt_c-}, 440, operator)dnl 332__devitem(local, local, configuration specific devices)dnl 333__devitem(wd, {-wd*-}, {-"winchester" disk drives (ST506, IDE, ESDI, RLL, ...)-})dnl 334__devitem(ccd, ccd*, concatenated disk devices)dnl 335__devitem(raid, raid*, RAIDframe disk devices)dnl 336__devitem(vnd, vnd*, "file" pseudo-disks)dnl 337_mkdev(vnd, vnd*, {-dodisk vnd $U major_vnd_b major_vnd_c $U 0{--}ifstep(vnd) 338 dodisk svnd $U major_vnd_b major_vnd_c $U 128{--}ifstep(vnd)-})dnl 339__devitem(ra, ra*, {-MSCP disks (ra??, hd??)-})dnl 340__devitem(hp, hp*, {-massbuss rm??-})dnl 341__devitem(hk, hk*, {-unibus rk06 and rk07-})dnl 342__devitem(up, up*, {-other unibus devices (e.g. on Emulex sc-21v controller)-})dnl 343__devitem(rb, rb*, {-730 idc w/ rb80 and/or rb02-})dnl 344__devitem(rx, rx*, {-MSCP floppy disk (rx33/50/...)-})dnl 345__devitem(rl, rl*, {-unibus r102-})dnl 346__devitem(hd, hd*, {-HDC9224 hd disks on VS2000-})dnl 347dnl 348dnl For normal disk devices, add a disk_q entry; anything else define like 349dnl the rest (such as vnd above). 350dnl 351disk_q({-ccd-})dnl 352disk_q({-hd-})dnl 353disk_q({-hk-})dnl 354disk_q({-hp-})dnl 355disk_q({-ra-})dnl 356disk_q({-raid-})dnl 357disk_q({-rb-})dnl 358disk_q({-rl-})dnl 359disk_q({-rx-})dnl 360disk_q({-sd-})dnl 361disk_q({-xy-})dnl 362disk_q({-xd-})dnl 363disk_q({-up-})dnl 364disk_q({-wd-})dnl 365disk_q({-rz-})dnl 366dnl 367__devitem(loc, local, configuration specific devices)dnl 368_mkdev(loc, local, {-test -s $T.local && sh $T.local-})dnl 369_mkdev({-disks-}, {-undefine({-C_ase-})show_disks()undefine({-C_ase-})-}, 370{-case $i in 371show_disks2()dnl 372 esac-})dnl 373__mkdev({-disks-}){--}dnl 374dnl 375__devtitle(cons, Console ports)dnl 376__devitem(ttyv0, ttyv0, pccons or pcvt screen 0)dnl 377__devitem(ttyv, ttyv*, pcvt)dnl 378__devitem(ttye, ttye*, ite bitmapped consoles)dnl 379__devitem(mac_ttye, ttye*, ite bitmapped consoles)dnl 380__devitem(wscons, ttyC0, wscons screen 0)dnl 381twrget(wscons, wscons, ttyC, cfg, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b)dnl 382target(wscons, wsmux)dnl 383target(wscons, wskbd, 0, 1, 2, 3)dnl 384target(wscons, wsmouse, 0, 1, 2, 3)dnl 385_mkdev({-wscons-}, {-wscons-}, {-dnl 386show_target(wscons)dnl 387-})dnl 388__devitem(wsdisp, ttyC-F*, wscons virtual consoles)dnl 389_mkdev({-wsdisp-}, tty[C-F]*, {-U=${i##tty[C-F]} 390 case $i in 391 ttyC*) n=C m=expr(0*256);; 392 ttyD*) n=D m=expr(1*256);; 393 ttyE*) n=E m=expr(2*256);; 394 ttyF*) n=F m=expr(3*256);; 395 esac 396 case $U in 397 [0-9a-f]) M tty$n$U c major_wsdisp_c {-$(( 16#$U + $m ))-} 600;; 398 cfg) M tty${n}cfg c major_wsdisp_c Add(255,$m) 600;; 399 *) echo bad unit $U for $i; exit 1;; 400 esac-})dnl 401__devitem(wskbd, wskbd*, wscons keyboards)dnl 402_mkdev(wskbd, wskbd*, {-M wskbd$U c major_wskbd_c $U 600-})dnl 403__devitem(wsmux, wsmux, wscons keyboard/mouse mux devices)dnl 404_mkdev(wsmux, wsmux|wsmouse|wskbd, {-M wsmouse c major_wsmux_c 0 600 405 M wskbd c major_wsmux_c 1 600-})dnl 406__devitem(pcons, console, PROM console)dnl 407__devtitle(point, Pointing devices)dnl 408__devitem(wsmouse, wsmouse*, wscons mice)dnl 409_mkdev(wsmouse, wsmouse*, {-M wsmouse$U c major_wsmouse_c $U 600-})dnl 410__devitem(quad, quadmouse, "quadrature mouse")dnl 411__devtitle(pty, Pseudo terminals)dnl 412__devitem(tty, tty*, set of 16 slave psuedo terminals)dnl 413__devitem(pty, pty*, set of 16 master pseudo terminals)dnl 414_mkdev(pty, pty*, {-if [ $U -gt 15 ]; then 415 echo bad unit for pty in: $i 416 continue 417 fi 418 set -A tbl p q r s t u v w x y z P Q R S T 419 name=${tbl[$U]} 420 n=0 421 while [ $n -lt 16 ] 422 do 423 nam=$name$(hex $n) 424 off=Mult($U, 16) 425 M tty$nam c major_tty_c Add($off, $n) 426 M pty$nam c major_pty_c Add($off, $n) 427 n=Add($n, 1) 428 done-})dnl 429__devitem(dc, dc*, {-4 channel serial interface (keyboard{-,-} mouse{-,-}modem{-,-} printer)-})dnl 430__devtitle(prn, Printers)dnl 431__devitem(par, par*, motherboard parallel port)dnl 432__devitem(lpt, lpt*, IEEE 1284 centronics printer)dnl 433_mkdev(lpt, lpt*|lpa*, 434{-case $i in 435 lpt*) n=lpt f=0;; 436 lpa*) n=lpa f=128;; 437 esac 438 M $n$U c major_lpt_c Add($U, $f) 600-})dnl 439__devitem(lpa, lpa*, interruptless lp)dnl 440__devitem(ppi, ppi*, HP-IB plotters)dnl 441__devtitle({-usb-}, USB devices)dnl 442__devitem({-usb-}, usb*, Bus control devices used by usbd for attach/detach)dnl 443_mkdev({-usb-}, usb*, {-[ "$i" = "usb" ] && u= || u=$U 444 M usb$u c major_usb_c $U 660-})dnl 445__devitem(uhid, uhid*, Generic HID devices)dnl 446_mcdev({-uhid-}, uhid*, {-uhid-}, {-major_uhid_c-}, 660)dnl 447__devitem(ulpt, ulpt*, Printer devices)dnl 448_mcdev({-ulpt-}, ulpt*, {-ulpt-}, {-major_ulpt_c-}, 660)dnl 449__devitem(utty, utty*, Serial ports)dnl 450_mcdev({-utty-}, utty*, {-utty-}, {-major_utty_c-}, 660)dnl 451__devitem(urio, urio*, Diamond Multimedia Rio 500)dnl 452_mcdev({-urio-}, urio*, {-urio-}, {-major_urio_c-}, 660)dnl 453__devitem(uscan, uscanner*, Scanners)dnl 454_mcdev({-uscan-}, uscanner*, {-uscanner-}, {-major_uscan_c-}, 660)dnl 455__devitem(ugen, ugen*, Generic device)dnl 456_mkdev(ugen, ugen*, {-n=Mult($U, 16) 457 for j in 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 458 do 459 M ugen$U.$j c major_ugen_c Add($n, $j) 660 460 done-})dnl 461__devtitle(cpu, Cpus)dnl 462__devitem(cpu, cpu*, cpus)dnl 463__devtitle(call, Call units)dnl 464__devtitle(term, Terminal ports)dnl 465__devtitle(termp, Terminal multiplexers)dnl 466__devitem(dca, dca*, HP200/300 single port serial interface)dnl 467__devitem(dcm, dcm*, HP200/300 4 port serial mux interface)dnl 468__devitem(apci, apci*, HP400 4 port serial mux interface)dnl 469__devitem({-com-}, {-tty0*-}, NS16x50 serial ports)dnl 470_mkdev(com, {-tty0*-}, {-M tty$U c major_com_c $U 660 dialer uucp 471 M cua$U c major_com_c Add($U, 128) 660 dialer uucp-})dnl 472__devitem(ttyc, ttyc*, Cyclades serial ports)dnl 473__devitem(tzs, tty[a-z]*, Zilog 8530 Serial Port)dnl 474_mkdev(tzs, {-tty[a-z]-}, {-u=${i#tty*} 475 case $u in 476 a) n=0 ;; 477 b) n=1 ;; 478 c) n=4 ;; 479 d) n=5 ;; 480 *) echo unknown tty device $i ;; 481 esac 482 M tty$u c major_tzs_c $n 660 dialer uucp-})dnl 483__devitem(tth, ttyh*, Sab82532 serial devices)dnl 484_mkdev(tth, ttyh*, {-M ttyh$U c major_tth_c $U 660 dialer uucp-})dnl 485__devitem(czs, cua[a-z]*, Zilog 8530 Serial Port)dnl 486_mkdev(czs, cua[a-z], {-u=${i#cua*} 487 case $u in 488 a) n=0 ;; 489 b) n=1 ;; 490 c) n=4 ;; 491 d) n=5 ;; 492 *) echo unknown cua device $i ;; 493 esac 494 M cua$u c major_czs_c Add($n, 128) 660 dialer uucp-})dnl 495__devitem(arm_tty, tty*, {-alias for PC COM ports{-,-} this is what the system really wants-})dnl 496__devitem(tty0, tty00, standard serial port)dnl 497__devitem(mac_tty0, tty00, standard serial port)dnl 498__devitem(ttyA, ttyA*, mfc serial ports)dnl 499__devitem(ttyz, tty[a-d], onboard zs serial ports)dnl 500__devitem(cuaz, cua[a-d], onboard zs serial ports)dnl 501__devitem(ttyB, ttyB?, DEC 3000 ZS8530 ("scc") serial ports)dnl 502__devitem(scc, scc*, 82530 serial interface)dnl 503__devitem(arc_ttyC, ttyC0, pccons)dnl 504__devitem(i386_ttyC, ttyC*, pcvt)dnl 505__devitem(ttyC, ttyC?, {-AlphaStation NS16550 ("com serial ports")-})dnl 506__devitem(ttyE, ttyE?, Workstation console (framebuffer & keyboard) tty emulators)dnl 507__devitem(ser02, ser02, {-serial2 port (channel A on 8530)-})dnl 508__devitem(mdm02, mdm02, {-modem2 port (channel B on 8530)-})dnl 509__devtitle(spec, Special purpose devices)dnl 510__devitem(apm, apm , power management device)dnl 511_mkdev(apm, apm*, {-M apm c major_apm_c 0 644 512 M apmctl c major_apm_c 8 644-})dnl 513__devitem(pcmcia, pcmcia*, PCMCIA card drivers)dnl 514__devitem(pctr, pctr*, PC Performance Tuning Register access device)dnl 515_mkdev(pctr, pctr, {-M pctr c major_pctr_c 0 644-})dnl 516__devitem(systrace, systrace*, system call tracing device)dnl 517_mkdev(systrace, systrace, {-M systrace c major_systrace_c 0 644-})dnl 518__devitem(au, audio*, audio device)dnl 519_mkdev(au, audio*, {-M sound$U c major_au_c $U 520 M mixer$U c major_au_c Add($U, 16) 521 M audio$U c major_au_c Add($U, 128) 522 M audioctl$U c major_au_c Add($U, 192) 523 MKlist="$MKlist;[ -e audio ] || ln -s audio$U audio" 524 MKlist="$MKlist;[ -e mixer ] || ln -s mixer$U mixer" 525 MKlist="$MKlist;[ -e sound ] || ln -s sound$U sound" 526 MKlist="$MKlist;[ -e audioctl ] || ln -s audioctl$U audioctl"-})dnl 527__devitem(asc, asc*, ASC Audio device)dnl 528_mkdev(asc, asc*, {-M asc$U major_asc_c 0-})dnl 529__devitem(music, music*, midi devices)dnl 530_mkdev(music, music*, {-M music$U c major_music_c $U 531 M sequencer$U c major_music_c Add($U, 128) 532 MKlist="$MKlist;[ -e music ] || ln -s music$U music" 533 MKlist="$MKlist;[ -e sequencer ] || ln -s sequencer$U sequencer"-})dnl 534__devitem(radio, radio*, FM tuner device)dnl 535_mkdev(radio, radio*, {-M radio$U c major_radio_c $U 536 MKlist="$MKlist;[ -e radio ] || ln -s radio$U radio"-})dnl 537__devitem(fdesc, fd, makes fd/* for the fdescfs)dnl 538_mkdev(fdesc, fd, {-RMlist="mkdir -p fd;$RMlist" n=0 539 while [ $n -lt 64 ];do M fd/$n c major_fdesc_c $n;n=Add($n, 1);done 540 MKlist="$MKlist;chmod 555 fd"-})dnl 541__devtitle(graph, Graphics devices)dnl 542__devitem(grf_mac, grf*, {-custom chip (grf0){-,-} Retina Z2/Z3 (grf1/grf2){-,-} 543{-#-} Cirrus boards (grf3){-,-} A2410 (grf4) video or 544{-#-} CyberVision 64 (grf5)-})dnl 545__devitem(ite, ite*, terminal emulator interface to HP300 graphics devices)dnl 546__devitem({-hil-}, {-hil-}, HP300 HIL input devices)dnl 547__devitem(oppr, openprom)dnl 548_cdev(oppr, openprom, 70, 0)dnl 549__devitem(cry, crypto, hardware crypto access driver)dnl 550_mkdev(cry, crypto, {-M crypto c major_cry_c-} 0)dnl 551__devitem(pf, pf*, Packet Filter)dnl 552_mkdev(pf, {-pf*-}, {-M pf c major_pf_c 0 600-})dnl 553__devitem(bpf, bpf*, Berkeley Packet Filter)dnl 554_mkdev(bpf, {-bpf*-}, {-M bpf$U c major_bpf_c $U 600-}, 600)dnl 555_mkdev(tun, {-tun*-}, {-M tun$U c major_tun_c $U 600-}, 600)dnl 556__devitem(speak, speaker, pc speaker)dnl 557_mkdev(speak, speaker, {-M speaker c major_speak_c 0 600-})dnl 558__devitem(kbd, kbd, keyboard (provides events, for X11))dnl 559_cdev(kbd, kbd, {-major_kbd_c-}, 0, 600)dnl 560__devitem(kbd_atari, kbd, Atari keyboard)dnl 561__devitem(akbd, kbd, Amiga keyboard)dnl 562__devitem(rkbd, kbd, raw keyboard)dnl 563__devitem(kbdctl, kbdctl, keyboard control)dnl 564__devitem(beep, beep, riscpc speaker)dnl 565__devitem(iic, iic*, IIC bus device)dnl 566__devitem(rtc, rtc*, RTC device)dnl 567__devitem(view, view*, generic interface to graphic displays)dnl 568__devitem(aconf, aconf, {-autoconfig information (not yet)-})dnl 569__devitem(mouse-, mouse-*, "mouse link")dnl 570__devitem(mouse, mouse, mouse (provides events, for X11))dnl 571__devitem(amouse, mouse*, Amiga mice)dnl 572__devitem(lkm, lkm, loadable kernel modules interface)dnl 573_cdev(lkm, lkm, {-major_lkm_c-}, 0, 640, _lkm)dnl 574__devitem(mmcl, mmclock, memory mapped clock)dnl 575__devitem(tun, tun*, network tunnel driver)dnl 576__devitem(rnd, *random, inkernel random data source)dnl 577_mkdev(rnd, *random, {-n=0 578 for pre in " " s u p a 579 do 580 M ${pre}random c major_rnd_c $n 644 581 n=Add($n, 1) 582 done-}, 644)dnl 583__devitem(joy, joy*, joystick driver)dnl 584_mcdev(joy, joy*, joy, {-major_joy_c-}, 666)dnl 585__devitem(mag, magma*, magma card (makes 16 tty and 2 bpp))dnl 586__devitem(bppmag, bppmag[mno], magma parallel port device)dnl 587__devitem(spif, spif*, spif card (makes 8 tty and 1 bpp))dnl 588__devitem(bppsp, bpp[jkl], spif parallel port device)dnl 589_mkdev(mag, magma*, {-case $U in 590 0) offset=0 nam=m;; 591 1) offset=16 nam=n;; 592 2) offset=32 nam=o;; 593 *) echo "bad unit for $i: $U"; exit 127;; 594 esac 595 offset=Mult($U, 64) 596 n=0 597 while [ $n -lt 16 ] 598 do 599 name=${nam}`hex $n` 600 M tty$name c major_mag_c Add($offset, $n) 660 dialer uucp 601 n=Add($n, 1) 602 done 603 M bpp${nam}0 c major_bppmag_c Add($offset, 0) 600 604 M bpp${nam}1 c major_bppmag_c Add($offset, 1) 600-})dnl 605_mkdev(spif, spif*, {-case $U in 606 0) offset=0 nam=j;; 607 1) offset=16 nam=k;; 608 2) offset=32 nam=l;; 609 *) echo "bad unit for $i: $U"; exit 127;; 610 esac 611 offset=Mult($U, 64) 612 n=0 613 while [ $n -lt 8 ] 614 do 615 name=${nam}`hex $n` 616 M tty$name c major_spif_c Add($offset, $n) 660 dialer uucp 617 n=Add($n, 1) 618 done 619 M bpp${nam}0 c major_bppsp_c Add($offset, 0) 600-})dnl 620__devitem(bpp, bpp*, parallel port devices)dnl 621_mkdev(bpp, {-bpp*-}, {-M bpp$U c major_bpp_c $U 600-}, 600)dnl 622__devitem(xfs, xfs*, XFS filesystem devices)dnl 623_mcdev(xfs, xfs*, xfs, {-major_xfs_c-}, 600)dnl 624__devitem(hil, hil, HIL input devices)dnl 625__devitem(rmidi, rmidi*, raw midi devices)dnl 626_mcdev(rmidi, rmidi*, rmidi, {-major_rmidi_c-}, 666)dnl 627__devtitle(plat, Platform-specific devices)dnl 628__devitem(fb, fb*, framebuffer device)dnl 629__devitem(bktr, bktr*, video capturing)dnl 630_mcdev(bktr, bktr*, bktr, {-major_bktr_c-}, 644)dnl 631__devitem(tuner, tuner*, tuner device)dnl 632_mkdev(tuner, tuner*, {-M tuner$U c major_bktr_c Add(Mult($U, 2), 16) 644-}, 644)dnl 633__devitem(pci, pci, PCI bus device)dnl 634_mkdev(pci, pci, {-M pci c major_pci_c 0 600-}, 600)dnl 635__devitem(adb, adb, Apple Desktop bus event interface)dnl 636_mkdev(adb, adb, {-M adb c major_adb_c 0-})dnl 637__devitem(pdc, pdc, PDC device)dnl 638_mkdev(local, local, {-test -s $T.local && sh $T.local-}, 666)dnl 639__devitem(gpr, gpr*, gpr400 pcmcia device)dnl 640_mcdev(gpr, gpr*, gpr, {-major_gpr_c-})dnl 641dnl 642divert(1)dnl 643include(etc.MACHINE/MAKEDEV.md)dnl 644dnl 645dnl 646divert(0)dnl 647#!/bin/sh - 648# 649# THIS FILE AUTOMATICALLY GENERATED. DO NOT EDIT. 650# generated from: 651# 652show_vers()dnl <-- now that all files are included, show versions 653# 654dnl 655divert(2)dnl 656PATH=/sbin:/usr/sbin:/bin:/usr/bin 657T=$0 658 659# set this to echo for Echo-Only debugging 660[ "$eo" ] || eo= 661 662hex() 663{ 664 case ${--}1 in 665 [0-9]) echo -n {-$-}1;; 666 10) echo -n a;; 667 11) echo -n b;; 668 12) echo -n c;; 669 13) echo -n d;; 670 14) echo -n e;; 671 15) echo -n f;; 672 esac 673} 674 675trunc() 676{ 677 # XXX pdksh can't seem to deal with locally scoped variables 678 # in ${foo#$bar} expansions 679 arg1="{-$-}1" 680 arg2="{-$-}2" 681 case {-$-}3 in 682 l) echo ${arg2#$arg1} ;; 683 r|*) echo ${arg1#$arg2} ;; 684 esac 685} 686 687unt() 688{ 689 # XXX pdksh can't seem to deal with locally scoped variables 690 # in ${foo#$bar} expansions 691 arg="{-$-}1" 692 tmp="${arg#[a-zA-Z]*}" 693 tmp="${tmp%*[a-zA-Z]}" 694 while [ "$tmp" != "$arg" ] 695 do 696 arg=$tmp 697 tmp="${arg#[a-zA-Z]*}" 698 tmp="${tmp%*[a-zA-Z]}" 699 done 700 echo $arg 701} 702dnl 703dnl dodisk(name, unit, blkmaj, chrmaj, unit, off[, stepping]) 704dnl arg: 1 2 3 4 5 6 7 705dnl 706 707dodisk() 708{ 709 [ "$DEBUG" ] && set -x 710 n=Add(Mult(${5}, ${7:-16}), ${6}) count=0 711 RMlist="$RMlist {-$-}1{-$-}2? r{-$-}1{-$-}2?" 712 [ 0$7 -ne 8 ] && l="i j k l m n o p" 713 for d in a b c d e f g h $l 714 do 715 M {-$-}1{-$-}2$d b {-$-}3 Add($n, $count) 640 716 M r{-$-}1{-$-}2$d c {-$-}4 Add($n, $count) 640 717 let count=count+1 718 done 719 MKlist="$MKlist;chown root:operator {-$-}1{-$-}2? r{-$-}1{-$-}2?" 720} 721dnl 722dnl dodisk2(name, unit, blkmaj, chrmaj, unit, off[, stepping]) 723dnl 724dnl 1. name - prefix name of the device 725dnl 2. unit - beginning unit number for block devices 726dnl 3. blkmaj - block device major number 727dnl 4. chrmaj - character device major number 728dnl 5. unit - beginning unit number for character devices 729dnl 6. off - offset from 0 for all minor numbers (see svnd for an example) 730dnl 7. step - optional, defaults to 16, number of partitions per device 731dnl 732 733dodisk2() 734{ 735 n=Add(Mult({-$-}5, ${7:-16}), {-$-}6) 736 M {-$-}1{-$-}2a b {-$-}3 $n 640 operator 737 M r{-$-}1{-$-}2a c {-$-}4 $n 640 operator 738 n=Add($n, 2) 739 M {-$-}1{-$-}2c b {-$-}3 $n 640 operator 740 M r{-$-}1{-$-}2c c {-$-}4 $n 640 operator 741} 742 743# M name b/c major minor [mode] [group] 744RMlist="rm -f" 745MKlist=":" 746 747mkl() { 748dnl 749dnl uncomment if multi mknod happens 750dnl 751ifelse(1, 0, 752[ "${mklist[{-$-}1]}" ] && mklist[{-$-}1]="${mklist[{-$-}1]} {-$-}2 {-$-}3 {-$-}4 {-$-}5" || { 753 mklist[{-$-}1]="mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5" 754 modes="$modes {-$-}1" 755 }, 756dnl 757dnl non multi mknod 758dnl 759 [ "${mklist[{-$-}1]}" ] && { 760 mklist[{-$-}1]="${mklist[{-$-}1]};mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5" 761 } || { 762 mklist[{-$-}1]="mknod -m {-$-}1 {-$-}2 {-$-}3 {-$-}4 {-$-}5" 763 modes="$modes {-$-}1" 764 }) 765} 766 767M() { 768 RMlist="$RMlist {-$-}1" 769 mkl ${5-666} {-$-}1 {-$-}2 {-$-}3 {-$-}4 770 mklist="$mklist {-$-}1" 771 G={-$-}{6:-wheel} 772 [ "{-$-}7" ] && { 773 MKlist="$MKlist;chown {-$-}7:{-$-}G {-$-}1" 774 } || { 775 case $G in 776 wheel)g=0;;kmem)g=2;;operator)g=5;;tty)g=4;;dialer)g=117;;_lkm)g=61;; 777 esac 778 [ "${grplist[$g]}" ] && { 779 grplist[$g]="${grplist[$g]} {-$-}1" 780 } || { 781 groups="$groups $g" 782 grplist[$g]="chgrp $G {-$-}1" 783 } 784 } 785 return 0 786} 787divert(7)dnl 788dnl 789dnl there is no blank line at the end of etc.arch/MAKEDEV.md files, so add one 790dnl on the following line: 791 792show_devs()dnl 793dnl 794divert(9)dnl 795*) 796 echo $i: unknown device 797 ;; 798esac 799done 800} 801_recurse "$@" 802if [ "$os" = "SunOS" ]; then 803 eo=transform 804 transform() { 805 case $mode in 806 600) mask=077;; 807 640) mask=027;; 808 660) mask=007;; 809 644) mask=022;; 810 666) mask=0;; 811 440) mask=227;; 812 esac 813 echo `echo "$@"|sed \ 814 's/mknod -m \([0-9]*\) /umask '$mask';mknod /;s/-m [0-9]* //g;\ 815 s/operator/5/g;s/root.kmem/root.2/g;s/root\./root:/g'` 816 } 817fi 818list="$RMlist" 819for mode in $modes; do 820 list="$list;${mklist[$mode]}" 821done 822for group in $groups; do 823 list="$list;${grplist[$group]}" 824done 825list="$list;$MKlist" 826if [ "$eo" = "echo" -o "$eo" = "transform" ]; then 827 $eo "$list" 828else 829 echo "$list" | sh 830fi 831divert(3)dnl 832dnl 833 834R() { 835[ "$DEBUG" ] && set -x 836for i in "$@" 837do 838U=`unt $i` 839[ "$U" ] || U=0 840 841case $i in 842dnl 843