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.

528 lines
19 KiB

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