Source code pulled from OpenBSD for OpenNTPD. The place to contribute to this code is via the OpenBSD CVS tree.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

523 lines
19 KiB

10 years ago
  1. vers(a, {-$OpenBSD: MAKEDEV.common,v 1.78 2014/12/11 19:46:15 tedu Exp $-})dnl
  2. dnl
  3. dnl Copyright (c) 2001-2006 Todd T. Fries <todd@OpenBSD.org>
  4. dnl
  5. dnl Permission to use, copy, modify, and distribute this software for any
  6. dnl purpose with or without fee is hereby granted, provided that the above
  7. dnl copyright notice and this permission notice appear in all copies.
  8. dnl
  9. dnl THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
  10. dnl WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
  11. dnl MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
  12. dnl ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
  13. dnl WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
  14. dnl ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
  15. dnl OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  16. dnl
  17. dnl Common device definitions.
  18. dnl
  19. dnl This file contains the MI device definitions (as well as some MD
  20. dnl definitions not cleaned up yet...)
  21. dnl
  22. dnl Diversions: (upon termination, concatenated output queues)
  23. dnl
  24. dnl 0 - very top
  25. dnl 1 - descriptions of devices
  26. dnl 2 - init of script, function definitions, etc
  27. dnl 3 - beginning of global recursive R() function
  28. dnl 7 - body of MAKEDEV, device creations, etc
  29. dnl 9 - end
  30. dnl
  31. dnl Diversions 2, 3 and 7 are not filled when generating the manual page.
  32. dnl
  33. dnl HOW TO ADD A DEVICE:
  34. dnl
  35. dnl In this file, you must use at least two macros:
  36. dnl
  37. dnl Use '__devitem(uniqueid, name-pattern, description)' to create an entry
  38. dnl in the description at the top of the generated MAKEDEV file:
  39. dnl
  40. dnl __devitem(sca, sca*, Sugar Generic device)dnl
  41. dnl __devitem(cry, crypto, hardware crypto access driver)dnl
  42. dnl
  43. dnl This is ultimately shown as:
  44. dnl
  45. dnl # sca* Sugar Generic device
  46. dnl # crypto hardware crypto access driver
  47. dnl
  48. dnl Use '_mkdev(uniqueid, shell-pattern, {-shell-script-})dnl' to create
  49. dnl a shell script fragment used to 'create' the device (be sure to match
  50. dnl the uniqueid from above):
  51. dnl
  52. dnl _mkdev(sca, sca*, {-M sca$U c major_sca_c $U
  53. dnl M rsca$U b major_sca_b Add($U, 128)-})dnl
  54. dnl _mkdev(cry, crypto, {-M crypto c major_cry_c 0-})dnl
  55. dnl
  56. dnl This is ultimately expanded into:
  57. dnl
  58. dnl sca*)
  59. dnl M sca$U c 24 $U
  60. dnl M sca$U b 42 $(($U+128))
  61. dnl ;;
  62. dnl
  63. dnl crypto)
  64. dnl M crypto c 47 0
  65. dnl ;;
  66. dnl
  67. dnl In the MAKEDEV.md file, add a '_DEV(uniqueid, charmajor, blockmajor)'
  68. dnl entry:
  69. dnl
  70. dnl _DEV(sca, 24, 42)
  71. dnl _DEV(cry, 47)
  72. dnl
  73. dnl Final step is to use the 'target/twrget' macros to have the 'all)' target
  74. dnl generate one or more device(s). Usage of 'target/twrget' is:
  75. dnl target(target_name, device_name [, append_string ] .. )
  76. dnl twrget(target_name, uniqueid, device_name, [, append_string ] .. )
  77. dnl
  78. dnl target_name a unique name that later is used as an argument to
  79. dnl 'show_target()' (which expands all devices for a
  80. dnl given 'target_name').
  81. dnl uniqueid same as 'uniqueid' above
  82. dnl device_name string representing the device to be mknod'ed
  83. dnl append_string for each append_string, `device_name' is prepended
  84. dnl
  85. dnl Note: 'target(a,b,c)' is equivalent to 'twrget(a,b,b,c)'
  86. dnl
  87. dnl
  88. dnl For a short example:
  89. dnl
  90. dnl target(all, std)dnl
  91. dnl target(all, sca, 0, 1, 2, 3)dnl
  92. dnl twrget(all, cry, crypto)dnl
  93. dnl
  94. dnl would expand to:
  95. dnl
  96. dnl all)
  97. dnl R std sca0 sca1 sca2 sca3 crypto
  98. dnl ;;
  99. dnl
  100. dnl presuming '_DEV(sca, ?, ?)' and '_DEV(std)' were in the MAKEDEV.md file.
  101. dnl
  102. dnl
  103. dnl Everything is 'automatically' added to 'MAKEDEV' based on whether or
  104. dnl not the '_DEV()' entry has a corresponding _mkdev() and __devitem()
  105. dnl entry in MAKEDEV.mi (this file).
  106. dnl
  107. dnl Note: be very wary of adding whitespace, carriage returns, or not
  108. dnl finishing a macro with ')dnl' .. otherwise, extra blank lines show up
  109. dnl in the output.
  110. dnl
  111. dnl TODO:
  112. dnl
  113. dnl make a 'disktgt' macro that automatically does:
  114. dnl disktgt(rd, {-rd-})
  115. dnl
  116. dnl target(all,rd,0)
  117. dnl target(ramd,rd,0)
  118. dnl disk_q(rd)
  119. dnl __devitem(rd, {-rd*-}, {-rd-})dnl
  120. dnl
  121. dnl Note: not all devices are generated in 'all)' below. MAKEDEV.md contains
  122. dnl its own extra list.
  123. dnl
  124. divert(1)dnl
  125. twrget(all, fdesc, fd)dnl
  126. target(all, st, 0, 1)dnl
  127. target(all, std)dnl
  128. target(all, ra, 0, 1, 2, 3)dnl
  129. target(all, rx, 0, 1)dnl
  130. target(all, wd, 0, 1, 2, 3)dnl
  131. target(all, xd, 0, 1, 2, 3)dnl
  132. target(all, systrace)dnl
  133. target(all, pctr)dnl
  134. target(all, pctr0)dnl
  135. target(all, pf)dnl
  136. target(all, apm)dnl
  137. target(all, acpi)dnl
  138. twrget(all, tth, ttyh, 0, 1)dnl
  139. target(all, ttyA, 0, 1)dnl
  140. target(all, ttyB, 0, 1, 2, 3, 4, 5)dnl
  141. twrget(all, attyB, ttyB, 0, 1, 2, 3, 4)dnl
  142. twrget(all, mac_tty0, tty0, 0, 1)dnl
  143. twrget(all, tzs, tty, a, b, c, d)dnl
  144. twrget(all, czs, cua, a, b, c, d)dnl
  145. target(all, ttyc, 0, 1, 2, 3, 4, 5, 6, 7)dnl
  146. twrget(all, com, tty0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b)dnl
  147. twrget(all, mmcl, mmclock)dnl
  148. target(all, lpt, 0, 1, 2)dnl
  149. twrget(all, lpt, lpa, 0, 1, 2)dnl
  150. target(all, joy, 0, 1)dnl
  151. twrget(all, rnd, random)dnl
  152. target(all, uk, 0)dnl
  153. twrget(all, vi, video, 0, 1)dnl
  154. twrget(all, speak, speaker)dnl
  155. target(all, asc, 0)dnl
  156. target(all, radio, 0)dnl
  157. target(all, tuner, 0)dnl
  158. target(all, rmidi, 0, 1, 2, 3, 4, 5, 6, 7)dnl
  159. target(all, uall)dnl
  160. target(all, pci, 0, 1, 2, 3)dnl
  161. twrget(all, wsmouse, wscons)dnl
  162. target(all, par, 0)dnl
  163. target(all, apci, 0)dnl
  164. target(all, local)dnl
  165. target(all, gpr, 0)dnl
  166. target(all, ptm)dnl
  167. target(all, hotplug)dnl
  168. target(all, pppx)dnl
  169. target(all, fuse)dnl
  170. dnl
  171. _mkdev(all, {-all-}, {-dnl
  172. show_target(all)dnl
  173. -})dnl
  174. dnl
  175. dnl XXX some arches use ramd, others ramdisk - needs to be fixed eventually
  176. __devitem(ramdisk, ramdisk, Ramdisk kernel devices,nothing)dnl
  177. dnl
  178. target(usb, usb, 0, 1, 2, 3, 4, 5, 6, 7)dnl
  179. target(usb, uhid, 0, 1, 2, 3)dnl
  180. target(usb, ulpt, 0, 1)dnl
  181. target(usb, ugen, 0, 1, 2, 3, 4, 5, 6, 7)dnl
  182. target(usb, ttyU, 0, 1, 2, 3)dnl
  183. dnl
  184. __devitem({-uall-}, uall, All USB devices,usb)dnl
  185. _mkdev(uall, uall, {-dnl
  186. show_target({-usb-})dnl
  187. -})dnl
  188. __devtitle(tap, Tapes)dnl
  189. __devitem(tz, tz*, {-DEC TK50 cartridge tape drives-})dnl
  190. __devitem(st, {-st*-}, SCSI tape drives)dnl
  191. _mkdev(st, st*, {-n=Mult($U, 16)
  192. for pre in " " n e en
  193. do
  194. M ${pre}st$U b major_st_b $n 660 operator
  195. M ${pre}rst$U c major_st_c $n 660 operator
  196. n=Add($n, 1)
  197. done-})dnl
  198. __devitem(mt, mt*, (Magnetic) 9-track reel tape drives)dnl
  199. __devtitle(dis, Disks)dnl
  200. __devitem(sd, {-sd*-}, {-SCSI disks{-,-} including flopticals-})dnl
  201. __devitem(cd, {-cd*-}, ATAPI and SCSI CD-ROM drives)dnl
  202. _mkdev(cd, cd*, {-dodisk2 cd $U major_cd_b major_cd_c $U 0{--}ifstep(cd)-})dnl
  203. __devitem(fuse, fuse, Userland Filesystem, fuse 4)dnl
  204. _mcdev(fuse, fuse, fuse, {-major_fuse_c-}, 600)dnl
  205. __devitem(ch, {-ch*-}, SCSI media changers)dnl
  206. _mcdev(ch, ch*, ch, {-major_ch_c-}, 660, operator)dnl
  207. __devitem(uk, uk*, Unknown SCSI devices)dnl
  208. _mcdev(uk, uk*, uk, {-major_uk_c-}, 640, operator)dnl
  209. dnl XXX see ramdisk above
  210. __devitem(ramd, ramdisk, Ramdisk kernel devices,nothing)dnl
  211. dnl
  212. _mkdev(ramd, ramdisk, {-dnl
  213. show_target(ramd)dnl
  214. -})dnl
  215. dnl
  216. target(ramd, std)dnl
  217. target(ramd, bpf, 0)dnl
  218. twrget(ramd, com, tty0, 0, 1)dnl
  219. target(ramd, sd, 0, 1, 2, 3, 4)dnl
  220. target(ramd, wd, 0, 1, 2, 3, 4)dnl
  221. target(ramd, st, 0, 1)dnl
  222. target(ramd, cd, 0, 1)dnl
  223. target(ramd, rd, 0)dnl
  224. dnl
  225. __devitem(rd, {-rd*-}, quote(rd)pseudo-disks)dnl
  226. _mkdev(rd, rd*, {-dodisk2 rd $U major_rd_b major_rd_c $U 0{--}ifstep(rd)-})dnl
  227. __devitem(xd, xd*, Xylogic 753/7053 disks)dnl
  228. __devitem(xy, xy*, {- Xylogic 450/451 disks-})dnl
  229. __devitem(flo, {-fd*-}, {-Floppy disk drives (3 1/2"{-,-} 5 1/4")-},fd)dnl
  230. _mkdev(flo, fd*,
  231. {-typnam=$U${i#fd[01]*}
  232. case $typnam in
  233. 0|1) typnum=0;; # no type specified, assume A
  234. *A) typnum=0; typnam=0;;
  235. *B) typnum=1;;
  236. *C) typnum=2;;
  237. *D) typnum=3;;
  238. *E) typnum=4;;
  239. *F) typnum=5;;
  240. *G) typnum=6;;
  241. *H) typnum=7;;
  242. *) echo bad type $typnam for $i; exit 1;;
  243. esac
  244. case $U in
  245. 0|1) blk=major_flo_b; chr=major_flo_c;;
  246. *) echo bad unit $U for $i; exit 1;;
  247. esac
  248. nam=fd${typnam}
  249. n=Add(Mult($U, 128), Mult($typnum, 16))
  250. M ${nam}a b $blk $n 640 operator
  251. M ${nam}b b $blk Add($n, 1) 640 operator
  252. M ${nam}c b $blk Add($n, 2) 640 operator
  253. M ${nam}i b $blk Add($n, 8) 640 operator
  254. M r${nam}a c $chr $n 640 operator
  255. M r${nam}b c $chr Add($n, 1) 640 operator
  256. M r${nam}c c $chr Add($n, 2) 640 operator
  257. M r${nam}i c $chr Add($n, 8) 640 operator-}, 664)dnl
  258. __devitem(wd, {-wd*-}, {-quote(winchester)disk drives (ST506{-,-} IDE{-,-} ESDI{-,-} RLL{-,-} ...)-})dnl
  259. __devitem(vnd, vnd*, quote(file)pseudo-disk devices)dnl
  260. _mkdev(vnd, vnd*, {-dodisk vnd $U major_vnd_b major_vnd_c $U 0{--}ifstep(vnd)-})dnl
  261. __devitem(ra, ra*, {-MSCP disks-})dnl
  262. __devitem(rx, rx*, {-RX02 floppy disks-})dnl
  263. dnl
  264. dnl For normal disk devices, add a disk_q entry; anything else define like
  265. dnl the rest (such as vnd above).
  266. dnl
  267. disk_q({-hd-})dnl
  268. disk_q({-ra-})dnl
  269. disk_q({-rx-})dnl
  270. disk_q({-sd-})dnl
  271. disk_q({-xy-})dnl
  272. disk_q({-xd-})dnl
  273. disk_q({-wd-})dnl
  274. _mkdev({-disks-}, {-undefine({-C_ase-})show_disks()undefine({-C_ase-})-},
  275. {-case $i in
  276. show_disks2()dnl
  277. esac-})dnl
  278. __mkdev({-disks-}){--}dnl
  279. dnl
  280. __devtitle(cons, Console ports)dnl
  281. __devitem(wscons, wscons, Minimal wscons devices)dnl
  282. twrget(wscons, wscons, ttyC, cfg, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b)dnl
  283. target(wscons, wsmux)dnl
  284. target(wscons, wskbd, 0, 1, 2, 3)dnl
  285. target(wscons, wsmouse, 0, 1, 2, 3)dnl
  286. _mkdev({-wscons-}, {-wscons-}, {-dnl
  287. show_target(wscons)dnl
  288. -})dnl
  289. __devitem(wsdisp, ttyC-J*, wscons display devices,wsdisplay)dnl
  290. _mkdev({-wsdisp-}, tty[C-J]*, {-U=${i##tty[C-J]}
  291. case $i in
  292. ttyC*) n=C m=expr(0*256);;
  293. ttyD*) n=D m=expr(1*256);;
  294. ttyE*) n=E m=expr(2*256);;
  295. ttyF*) n=F m=expr(3*256);;
  296. ttyG*) n=G m=expr(4*256);;
  297. ttyH*) n=H m=expr(5*256);;
  298. ttyI*) n=I m=expr(6*256);;
  299. ttyJ*) n=J m=expr(7*256);;
  300. esac
  301. case $U in
  302. [0-9a-f]) M tty$n$U c major_wsdisp_c Add(16#$U, $m) 600;;
  303. cfg) M tty${n}cfg c major_wsdisp_c Add(255,$m) 600;;
  304. *) echo bad unit $U for $i; exit 1;;
  305. esac-})dnl
  306. __devitem(wskbd, wskbd*, wscons keyboards)dnl
  307. dnl XXX wskbd[0-9]* instead of wskbd* in case this appears before
  308. dnl XXX ``wsmux|wsmouse|wskbd'' in the final MAKEDEV.
  309. _mkdev(wskbd, wskbd[0-9]*, {-M wskbd$U c major_wskbd_c $U 600-})dnl
  310. __devitem(wsmux, wsmux, wscons keyboard/mouse mux devices)dnl
  311. _mkdev(wsmux, wsmux|wsmouse|wskbd, {-M wsmouse c major_wsmux_c 0 600
  312. M wskbd c major_wsmux_c 1 600-})dnl
  313. __devitem(pcons, console, PROM console)dnl
  314. __devtitle(point, Pointing devices)dnl
  315. __devitem(wsmouse, wsmouse*, wscons mice)dnl
  316. dnl XXX wsmouse[0-9]* instead of wsmouse* in case this appears before
  317. dnl XXX ``wsmux|wsmouse|wskbd'' in the final MAKEDEV.
  318. _mkdev(wsmouse, wsmouse[0-9]*, {-M wsmouse$U c major_wsmouse_c $U 600-})dnl
  319. __devtitle(pty, Pseudo terminals)dnl
  320. __devitem(ptm, ptm, pty master device)dnl
  321. _mkdev(ptm, ptm, {-M ptm c major_ptm_c 0 666-})dnl
  322. __devitem(tty, tty*, Set of 62 slave pseudo terminals)dnl
  323. __devitem(pty, pty*, Set of 62 master pseudo terminals)dnl
  324. _mkdev(pty, pty*, {-if [ $U -gt 15 ]; then
  325. echo bad unit for pty in: $i
  326. continue
  327. fi
  328. set -A letters p q r s t u v w x y z P Q R S T
  329. 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 \
  330. 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 \
  331. Y Z
  332. name=${letters[$U]}
  333. n=0
  334. while [ $n -lt 62 ]
  335. do
  336. nam=$name${suffixes[$n]}
  337. off=Mult($U, 62)
  338. M tty$nam c major_tty_c Add($off, $n)
  339. M pty$nam c major_pty_c Add($off, $n)
  340. n=Add($n, 1)
  341. done-})dnl
  342. __devitem(dc, dc*, {-4 channel serial interface (keyboard{-,-} mouse{-,-}modem{-,-} printer)-})dnl
  343. __devitem(drm, drm*, {-Direct Rendering Manager-})dnl
  344. _mcdev({-drm-}, drm*, {-drm-}, {-major_drm_c-}, 600)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 660-})dnl
  358. __devitem(uhid, uhid*, Generic HID devices)dnl
  359. _mcdev({-uhid-}, uhid*, {-uhid-}, {-major_uhid_c-}, 660)dnl
  360. __devitem(ulpt, ulpt*, Printer devices)dnl
  361. _mcdev({-ulpt-}, ulpt*, {-ulpt-}, {-major_ulpt_c-}, 660)dnl
  362. __devitem(ttyU, ttyU*, USB serial ports,ucom)dnl
  363. _mkdev({-ttyU-}, {-ttyU[0-9a-zA-Z]-}, {-U=${i#ttyU*}
  364. o=$(alph2d $U)
  365. M ttyU$U c major_ttyU_c $o 660 dialer uucp
  366. M cuaU$U c major_ttyU_c Add($o, 128) 660 dialer uucp-})dnl
  367. __devitem(ugen, ugen*, Generic USB devices)dnl
  368. _mkdev(ugen, ugen*, {-n=Mult($U, 16)
  369. for j in 0{0,1,2,3,4,5,6,7,8,9} 1{0,1,2,3,4,5}
  370. do
  371. M ugen$U.$j c major_ugen_c Add($n, 10#$j) 660
  372. done-})dnl
  373. __devtitle(call, Call units)dnl
  374. __devtitle(term, Terminal ports)dnl
  375. __devitem(dca, dca*, HP200/300 single port serial interface)dnl
  376. __devitem(dcm, dcm*, HP200/300 4 port serial mux interface)dnl
  377. __devitem(apci, apci*, HP400 4 port serial mux interface)dnl
  378. __devitem({-com-}, {-tty[0-7][0-9a-f]-}, NS16x50 serial ports)dnl
  379. _mkdev(com, {-tty[0-7][0-9a-f]-}, {-U=${i#tty*}
  380. o=$(h2d $U)
  381. M tty$U c major_com_c $o 660 dialer uucp
  382. M cua$U c major_com_c Add($o, 128) 660 dialer uucp-})dnl
  383. __devitem(ttyc, ttyc*, Cyclades serial ports,cy)dnl
  384. __devitem(tzs, tty[a-z]*, Zilog 8530 Serial Port,zs)dnl
  385. _mkdev(tzs, {-tty[a-z]-}, {-u=${i#tty*}
  386. case $u in
  387. a) n=0 ;;
  388. b) n=1 ;;
  389. c) n=4 ;;
  390. d) n=5 ;;
  391. *) echo unknown tty device $i ;;
  392. esac
  393. M tty$u c major_tzs_c $n 660 dialer uucp-})dnl
  394. __devitem(tth, ttyh*, Sab82532 serial devices,sab)dnl
  395. _mkdev(tth, ttyh*, {-M ttyh$U c major_tth_c $U 660 dialer uucp-})dnl
  396. __devitem(czs, cua[a-z]*, Zilog 8530 Serial Port,zs)dnl
  397. _mkdev(czs, cua[a-z], {-u=${i#cua*}
  398. case $u in
  399. a) n=0 ;;
  400. b) n=1 ;;
  401. c) n=4 ;;
  402. d) n=5 ;;
  403. *) echo unknown cua device $i ;;
  404. esac
  405. M cua$u c major_czs_c Add($n, 128) 660 dialer uucp-})dnl
  406. __devitem(tty0, tty00, Standard serial port,com)dnl
  407. __devitem(mac_tty0, tty00, Standard serial port,zsc)dnl
  408. __devitem(ttyz, tty[a-d], On-board zs serial ports,zs)dnl
  409. __devitem(cuaz, cua[a-d], On-board zs serial ports,zs)dnl
  410. __devitem(ttyB, ttyB?, DEC 3000 ZS8530 ("scc") serial ports,scc)dnl
  411. __devitem(scc, scc*, 82530 serial interface,scc)dnl
  412. __devtitle(spec, Special purpose devices)dnl
  413. _mkdev(apm, apm*, {-M apm c major_apm_c 0 644
  414. M apmctl c major_apm_c 8 644-})dnl
  415. _mkdev(acpi, acpi*, {-M acpi c major_acpi_c 0 644-})dnl
  416. __devitem(pctr, pctr*, PC Performance Tuning Register access device)dnl
  417. _mkdev(pctr, pctr, {-M pctr c major_pctr_c 0 644-})dnl
  418. __devitem(systrace, systrace*, System call tracing device)dnl
  419. _mkdev(systrace, systrace, {-M systrace c major_systrace_c 0 644-})dnl
  420. __devitem(au, audio*, Audio devices,audio)dnl
  421. _mkdev(au, audio*, {-M sound$U c major_au_c $U
  422. M mixer$U c major_au_c Add($U, 16)
  423. M audio$U c major_au_c Add($U, 128)
  424. M audioctl$U c major_au_c Add($U, 192)
  425. MKlist[${#MKlist[*]}]=";[ -e audio ] || ln -s audio$U audio"
  426. MKlist[${#MKlist[*]}]=";[ -e mixer ] || ln -s mixer$U mixer"
  427. MKlist[${#MKlist[*]}]=";[ -e sound ] || ln -s sound$U sound"
  428. MKlist[${#MKlist[*]}]=";[ -e audioctl ] || ln -s audioctl$U audioctl"-})dnl
  429. __devitem(vi, video*, Video V4L2 devices,video)dnl
  430. _mkdev(vi, video*, {-M video$U c major_vi_c $U
  431. MKlist[${#MKlist[*]}]=";[ -e video ] || ln -s video$U video"-})dnl
  432. __devitem(asc, asc*, ASC Audio device)dnl
  433. _mkdev(asc, asc*, {-M asc$U major_asc_c 0-})dnl
  434. __devitem(bio, bio, {-ioctl tunnel pseudo-device-})dnl
  435. _mkdev(bio, bio, {-M bio c major_bio_c 0 600-})dnl
  436. __devitem(radio, radio*, FM tuner devices)dnl
  437. _mkdev(radio, radio*, {-M radio$U c major_radio_c $U
  438. MKlist[${#MKlist[*]}]=";[ -e radio ] || ln -s radio$U radio"-})dnl
  439. __devitem(fdesc, fd, fd/* nodes, fd)dnl
  440. _mkdev(fdesc, fd, {-RMlist[${#RMlist[*]}]=";mkdir -p fd;rm -f" n=0
  441. while [ $n -lt 64 ];do M fd/$n c major_fdesc_c $n;n=Add($n, 1);done
  442. MKlist[${#MKlist[*]}]=";chmod 555 fd"-})dnl
  443. __devitem(oppr, openprom,PROM settings,openprom)dnl
  444. _cdev(oppr, openprom, 70, 0)dnl
  445. __devitem(pf, pf*, Packet Filter)dnl
  446. _mkdev(pf, {-pf*-}, {-M pf c major_pf_c 0 600-})dnl
  447. __devitem(bpf, bpf*, Berkeley Packet Filter)dnl
  448. _mkdev(bpf, {-bpf*-}, {-M bpf$U c major_bpf_c $U 600-}, 600)dnl
  449. _mkdev(tun, {-tun*-}, {-M tun$U c major_tun_c $U 600-}, 600)dnl
  450. __devitem(speak, speaker, PC speaker,spkr)dnl
  451. _mkdev(speak, speaker, {-M speaker c major_speak_c 0 600-})dnl
  452. __devitem(tun, tun*, Network tunnel driver)dnl
  453. __devitem(rnd, *random, In-kernel random data source,random)dnl
  454. _mkdev(rnd, *random, {-n=0
  455. for pre in " " s u a
  456. do
  457. M ${pre}random c major_rnd_c $n 644
  458. n=Add($n, 1)
  459. done-}, 644)dnl
  460. __devitem(joy, joy*, Joystick driver)dnl
  461. _mcdev(joy, joy*, joy, {-major_joy_c-}, 666)dnl
  462. __devitem(mag, magma*, Magma multiport cards,magma)dnl
  463. __devitem(bppmag, bppmag[mno], Magma parallel port,magma)dnl
  464. __devitem(spif, spif*, quote(spif)multiport cards)dnl
  465. __devitem(bppsp, bpp[jkl], quote(spif)parallel port,spif)dnl
  466. _mkdev(mag, magma*, {-case $U in
  467. 0) offset=0 nam=m;;
  468. 1) offset=16 nam=n;;
  469. 2) offset=32 nam=o;;
  470. *) echo "bad unit for $i: $U"; exit 127;;
  471. esac
  472. offset=Mult($U, 64)
  473. n=0
  474. while [ $n -lt 16 ]
  475. do
  476. name=${nam}`hex $n`
  477. M tty$name c major_mag_c Add($offset, $n) 660 dialer uucp
  478. n=Add($n, 1)
  479. done
  480. M bpp${nam}0 c major_bppmag_c Add($offset, 0) 600
  481. M bpp${nam}1 c major_bppmag_c Add($offset, 1) 600-})dnl
  482. _mkdev(spif, spif*, {-case $U in
  483. 0) offset=0 nam=j;;
  484. 1) offset=16 nam=k;;
  485. 2) offset=32 nam=l;;
  486. *) echo "bad unit for $i: $U"; exit 127;;
  487. esac
  488. offset=Mult($U, 64)
  489. n=0
  490. while [ $n -lt 8 ]
  491. do
  492. name=${nam}`hex $n`
  493. M tty$name c major_spif_c Add($offset, $n) 660 dialer uucp
  494. n=Add($n, 1)
  495. done
  496. M bpp${nam}0 c major_bppsp_c Add($offset, 0) 600-})dnl
  497. __devitem(bpp, bpp*, Parallel port)dnl
  498. _mkdev(bpp, {-bpp*-}, {-M bpp$U c major_bpp_c $U 600-}, 600)dnl
  499. __devitem(vscsi, vscsi*, Virtual SCSI controller, vscsi 4)dnl
  500. _mcdev(vscsi, vscsi*, vscsi, {-major_vscsi_c-}, 600)dnl
  501. __devitem(rmidi, rmidi*, Raw MIDI devices,midi)dnl
  502. _mcdev(rmidi, rmidi*, rmidi, {-major_rmidi_c-}, 666)dnl
  503. __devitem(diskmap, diskmap, Disk mapper, diskmap)dnl
  504. _mkdev(diskmap, diskmap, {-M diskmap c major_diskmap_c 0 640 operator-})dnl
  505. __devitem(pppx, pppx*, PPP Multiplexer, pppx 4)dnl
  506. _mcdev(pppx, pppx*, pppx, {-major_pppx_c-}, 600)dnl
  507. __devtitle(plat, Platform-specific devices)dnl
  508. __devitem(bktr, bktr*, Video frame grabbers)dnl
  509. _mcdev(bktr, bktr*, bktr, {-major_bktr_c-}, 644)dnl
  510. __devitem(tuner, tuner*, Tuner devices, bktr)dnl
  511. _mkdev(tuner, tuner*, {-M tuner$U c major_bktr_c Add(Mult($U, 2), 16) 644-}, 644)dnl
  512. __devitem(pci, pci*, PCI bus devices)dnl
  513. _mkdev(pci, pci*, {-M pci$U c major_pci_c $U 600
  514. MKlist[${#MKlist[*]}]=";[ -h pci ] || ln -sf pci0 pci"-})dnl
  515. __devitem(pdc, pdc, PDC device)dnl
  516. __devitem(gpr, gpr*, GPR400 smartcard reader)dnl
  517. _mcdev(gpr, gpr*, gpr, {-major_gpr_c-})dnl
  518. __devitem(hotplug, hotplug, devices hot plugging)dnl
  519. _mkdev(hotplug, hotplug, {-M hotplug c major_hotplug_c $U 400-})dnl
  520. __devitem(gpio, gpio*, General Purpose Input/Output)dnl
  521. _mcdev(gpio, gpio*, gpio, {-major_gpio_c-}, 600)dnl
  522. _mkdev(local, local, {-test -s $T.local && sh $T.local-})dnl