123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602 |
- /* $OpenBSD: conf.h,v 1.133 2015/06/25 06:43:46 ratchov Exp $ */
- /* $NetBSD: conf.h,v 1.33 1996/05/03 20:03:32 christos Exp $ */
- /*-
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- * (c) UNIX System Laboratories, Inc.
- * All or some portions of this file are derived from material licensed
- * to the University of California by American Telephone and Telegraph
- * Co. or Unix System Laboratories, Inc. and are reproduced herein with
- * the permission of UNIX System Laboratories, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)conf.h 8.3 (Berkeley) 1/21/94
- */
- #ifndef _SYS_CONF_H_
- #define _SYS_CONF_H_
- /*
- * Definitions of device driver entry switches
- */
- struct buf;
- struct proc;
- struct tty;
- struct uio;
- struct vnode;
- struct knote;
- /*
- * Types for d_type
- */
- #define D_TAPE 1
- #define D_DISK 2
- #define D_TTY 3
- /*
- * Flags for d_flags
- */
- #define D_CLONE 0x0001 /* clone upon open */
- #ifdef _KERNEL
- #define dev_type_open(n) int n(dev_t, int, int, struct proc *)
- #define dev_type_close(n) int n(dev_t, int, int, struct proc *)
- #define dev_type_strategy(n) void n(struct buf *)
- #define dev_type_ioctl(n) \
- int n(dev_t, u_long, caddr_t, int, struct proc *)
- #define dev_decl(n,t) __CONCAT(dev_type_,t)(__CONCAT(n,t))
- #define dev_init(c,n,t) \
- ((c) > 0 ? __CONCAT(n,t) : (__CONCAT(dev_type_,t)((*))) enxio)
- #endif /* _KERNEL */
- /*
- * Block device switch table
- */
- struct bdevsw {
- int (*d_open)(dev_t dev, int oflags, int devtype,
- struct proc *p);
- int (*d_close)(dev_t dev, int fflag, int devtype,
- struct proc *p);
- void (*d_strategy)(struct buf *bp);
- int (*d_ioctl)(dev_t dev, u_long cmd, caddr_t data,
- int fflag, struct proc *p);
- int (*d_dump)(dev_t dev, daddr_t blkno, caddr_t va,
- size_t size);
- daddr_t (*d_psize)(dev_t dev);
- u_int d_type;
- /* u_int d_flags; */
- };
- #ifdef _KERNEL
- extern struct bdevsw bdevsw[];
- /* bdevsw-specific types */
- #define dev_type_dump(n) int n(dev_t, daddr_t, caddr_t, size_t)
- #define dev_type_size(n) daddr_t n(dev_t)
- /* bdevsw-specific initializations */
- #define dev_size_init(c,n) (c > 0 ? __CONCAT(n,size) : 0)
- #define bdev_decl(n) \
- dev_decl(n,open); dev_decl(n,close); dev_decl(n,strategy); \
- dev_decl(n,ioctl); dev_decl(n,dump); dev_decl(n,size)
- #define bdev_disk_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), \
- dev_init(c,n,strategy), dev_init(c,n,ioctl), \
- dev_init(c,n,dump), dev_size_init(c,n), D_DISK }
- #define bdev_tape_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), \
- dev_init(c,n,strategy), dev_init(c,n,ioctl), \
- dev_init(c,n,dump), 0, D_TAPE }
- #define bdev_swap_init(c,n) { \
- (dev_type_open((*))) enodev, (dev_type_close((*))) enodev, \
- dev_init(c,n,strategy), (dev_type_ioctl((*))) enodev, \
- (dev_type_dump((*))) enodev, 0 }
- #define bdev_notdef() { \
- (dev_type_open((*))) enodev, (dev_type_close((*))) enodev, \
- (dev_type_strategy((*))) enodev, (dev_type_ioctl((*))) enodev, \
- (dev_type_dump((*))) enodev, 0 }
- #endif
- /*
- * Character device switch table
- */
- struct cdevsw {
- int (*d_open)(dev_t dev, int oflags, int devtype,
- struct proc *p);
- int (*d_close)(dev_t dev, int fflag, int devtype,
- struct proc *);
- int (*d_read)(dev_t dev, struct uio *uio, int ioflag);
- int (*d_write)(dev_t dev, struct uio *uio, int ioflag);
- int (*d_ioctl)(dev_t dev, u_long cmd, caddr_t data,
- int fflag, struct proc *p);
- int (*d_stop)(struct tty *tp, int rw);
- struct tty *
- (*d_tty)(dev_t dev);
- int (*d_poll)(dev_t dev, int events, struct proc *p);
- paddr_t (*d_mmap)(dev_t, off_t, int);
- u_int d_type;
- u_int d_flags;
- int (*d_kqfilter)(dev_t dev, struct knote *kn);
- };
- #ifdef _KERNEL
- extern struct cdevsw cdevsw[];
- /* cdevsw-specific types */
- #define dev_type_read(n) int n(dev_t, struct uio *, int)
- #define dev_type_write(n) int n(dev_t, struct uio *, int)
- #define dev_type_stop(n) int n(struct tty *, int)
- #define dev_type_tty(n) struct tty *n(dev_t)
- #define dev_type_poll(n) int n(dev_t, int, struct proc *)
- #define dev_type_mmap(n) paddr_t n(dev_t, off_t, int)
- #define dev_type_kqfilter(n) int n(dev_t, struct knote *)
- #define cdev_decl(n) \
- dev_decl(n,open); dev_decl(n,close); dev_decl(n,read); \
- dev_decl(n,write); dev_decl(n,ioctl); dev_decl(n,stop); \
- dev_decl(n,tty); dev_decl(n,poll); dev_decl(n,mmap); \
- dev_decl(n,kqfilter)
- /* open, close, read, write, ioctl */
- #define cdev_disk_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
- 0, seltrue, (dev_type_mmap((*))) enodev, \
- D_DISK, 0, seltrue_kqfilter }
- /* open, close, read, write, ioctl */
- #define cdev_tape_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
- 0, seltrue, (dev_type_mmap((*))) enodev, \
- D_TAPE, 0, seltrue_kqfilter }
- /* open, close, read, write, ioctl, stop, tty */
- #define cdev_tty_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), dev_init(c,n,stop), \
- dev_init(c,n,tty), ttpoll, (dev_type_mmap((*))) enodev, \
- D_TTY, 0, ttkqfilter }
- /* open, close, read, ioctl, poll, nokqfilter */
- #define cdev_mouse_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- (dev_type_mmap((*))) enodev }
- /* open, close, read, write, ioctl, poll, nokqfilter */
- #define cdev_mousewr_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- (dev_type_mmap((*))) enodev }
- #define cdev_notdef() { \
- (dev_type_open((*))) enodev, (dev_type_close((*))) enodev, \
- (dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \
- (dev_type_ioctl((*))) enodev, (dev_type_stop((*))) enodev, \
- 0, seltrue, (dev_type_mmap((*))) enodev }
- /* open, close, read, write, ioctl, poll, kqfilter -- XXX should be a tty */
- #define cdev_cn_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), dev_init(c,n,stop), \
- 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
- D_TTY, 0, dev_init(c,n,kqfilter) }
- /* open, read, write, ioctl, poll, kqfilter -- XXX should be a tty */
- #define cdev_ctty_init(c,n) { \
- dev_init(c,n,open), (dev_type_close((*))) nullop, dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) nullop, \
- 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
- D_TTY, 0, dev_init(c,n,kqfilter) }
- /* open, close, read, write, ioctl, mmap */
- #define cdev_mm_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, seltrue, dev_init(c,n,mmap), \
- 0, 0, seltrue_kqfilter }
- /* open, close, read, write, ioctl */
- #define cdev_systrace_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
- 0, selfalse, (dev_type_mmap((*))) enodev }
- /* open, close, read, write, ioctl, tty, poll, kqfilter */
- #define cdev_ptc_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) nullop, \
- dev_init(c,n,tty), dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
- D_TTY, 0, dev_init(c,n,kqfilter) }
- /* open, close, read, write, ioctl, mmap */
- #define cdev_ptm_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, (dev_type_mmap((*))) enodev }
- /* open, close, read, ioctl, poll, kqfilter XXX should be a generic device */
- #define cdev_log_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,n,kqfilter) }
- /* open */
- #define cdev_fd_init(c,n) { \
- dev_init(c,n,open), (dev_type_close((*))) enodev, \
- (dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \
- (dev_type_ioctl((*))) enodev, (dev_type_stop((*))) enodev, \
- 0, selfalse, (dev_type_mmap((*))) enodev }
- /* open, close, read, write, ioctl, poll, kqfilter -- XXX should be generic device */
- #define cdev_tun_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
- 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
- 0, 0, dev_init(c,n,kqfilter) }
- /* open, close, ioctl, poll, kqfilter -- XXX should be generic device */
- #define cdev_vscsi_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), \
- (dev_type_read((*))) enodev, (dev_type_write((*))) enodev, \
- dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
- 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
- 0, 0, dev_init(c,n,kqfilter) }
- /* open, close, read, write, ioctl, poll, kqfilter -- XXX should be generic device */
- #define cdev_pppx_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
- 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
- 0, 0, dev_init(c,n,kqfilter) }
- /* open, close, read, write, ioctl, poll, kqfilter, cloning -- XXX should be generic device */
- #define cdev_bpf_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
- 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, \
- 0, 0, dev_init(c,n,kqfilter) }
- /* open, close, ioctl */
- #define cdev_ch_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, \
- (dev_type_mmap((*))) enodev }
- /* open, close, ioctl */
- #define cdev_uk_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, \
- (dev_type_mmap((*))) enodev }
- /* open, close, ioctl, mmap */
- #define cdev_fb_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, \
- dev_init(c,n,mmap) }
- /* open, close, read, write, ioctl, poll, kqfilter */
- #define cdev_audio_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- (dev_type_mmap((*))) enodev }
- /* open, close, read, write, ioctl, poll, kqfilter */
- #define cdev_midi_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,n,kqfilter) }
- /* open, close, read */
- #define cdev_ksyms_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- (dev_type_write((*))) enodev, (dev_type_ioctl((*))) enodev, \
- (dev_type_stop((*))) enodev, 0, seltrue, \
- (dev_type_mmap((*))) enodev, 0, 0, seltrue_kqfilter }
- /* open, close, read, write, ioctl, stop, tty, poll, mmap, kqfilter */
- #define cdev_wsdisplay_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), dev_init(c,n,stop), \
- dev_init(c,n,tty), dev_init(c,n,poll), dev_init(c,n,mmap), \
- D_TTY, 0, dev_init(c,n,kqfilter) }
- /* open, close, read, write, ioctl, poll, kqfilter */
- #define cdev_random_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
- 0, seltrue, (dev_type_mmap((*))) enodev, \
- 0, 0, dev_init(c,n,kqfilter) }
- /* open, close, ioctl, poll, nokqfilter */
- #define cdev_usb_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, \
- (dev_type_mmap((*))) enodev }
- /* open, close, write */
- #define cdev_ulpt_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- dev_init(c,n,write), (dev_type_ioctl((*))) enodev, \
- (dev_type_stop((*))) enodev, 0, selfalse, (dev_type_mmap((*))) enodev }
- /* open, close, ioctl */
- #define cdev_pf_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, \
- (dev_type_mmap((*))) enodev }
- /* open, close, read, write, ioctl, poll, kqfilter */
- #define cdev_usbdev_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
- 0, dev_init(c,n,poll), (dev_type_mmap((*))) enodev, 0, 0, \
- dev_init(c,n,kqfilter) }
- /* open, close, init */
- #define cdev_pci_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, \
- (dev_type_mmap((*))) enodev }
- /* open, close, ioctl */
- #define cdev_radio_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, \
- (dev_type_mmap((*))) enodev }
- /* open, close, ioctl, read, mmap, poll */
- #define cdev_video_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- dev_init(c,n,mmap) }
- /* open, close, write, ioctl */
- #define cdev_spkr_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- dev_init(c,n,write), dev_init(c,n,ioctl), (dev_type_stop((*))) enodev, \
- 0, seltrue, (dev_type_mmap((*))) enodev, \
- 0, 0, seltrue_kqfilter }
- /* open, close, write */
- #define cdev_lpt_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- dev_init(c,n,write), (dev_type_ioctl((*))) enodev, \
- (dev_type_stop((*))) enodev, 0, seltrue, (dev_type_mmap((*))) enodev, \
- 0, 0, seltrue_kqfilter }
- /* open, close, read, ioctl, mmap */
- #define cdev_bktr_init(c, n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, seltrue, dev_init(c,n,mmap), \
- 0, 0, seltrue_kqfilter }
- /* open, close, read, ioctl, poll, kqfilter */
- #define cdev_hotplug_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- (dev_type_mmap((*))) enodev, 0, 0, dev_init(c,n,kqfilter) }
- /* open, close, ioctl */
- #define cdev_gpio_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, \
- (dev_type_mmap((*))) enodev }
- /* open, close, ioctl */
- #define cdev_bio_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, \
- (dev_type_mmap((*))) enodev }
- /* open, close, read, ioctl, poll, mmap, nokqfilter */
- #define cdev_drm_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c, n, read), \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- dev_init(c,n,mmap), 0, D_CLONE }
- /* open, close, ioctl */
- #define cdev_amdmsr_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), (dev_type_read((*))) enodev, \
- (dev_type_write((*))) enodev, dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, selfalse, \
- (dev_type_mmap((*))) enodev }
- /* open, close, read, write, poll, ioctl */
- #define cdev_fuse_init(c,n) { \
- dev_init(c,n,open), dev_init(c,n,close), dev_init(c,n,read), \
- dev_init(c,n,write), dev_init(c,n,ioctl), \
- (dev_type_stop((*))) enodev, 0, dev_init(c,n,poll), \
- (dev_type_mmap((*))) enodev, 0, D_CLONE, dev_init(c,n,kqfilter) }
- #endif
- /*
- * Line discipline switch table
- */
- struct linesw {
- int (*l_open)(dev_t dev, struct tty *tp, struct proc *p);
- int (*l_close)(struct tty *tp, int flags, struct proc *p);
- int (*l_read)(struct tty *tp, struct uio *uio,
- int flag);
- int (*l_write)(struct tty *tp, struct uio *uio,
- int flag);
- int (*l_ioctl)(struct tty *tp, u_long cmd, caddr_t data,
- int flag, struct proc *p);
- int (*l_rint)(int c, struct tty *tp);
- int (*l_start)(struct tty *tp);
- int (*l_modem)(struct tty *tp, int flag);
- };
- #ifdef _KERNEL
- extern struct linesw linesw[];
- #endif
- /*
- * Swap device table
- */
- struct swdevt {
- dev_t sw_dev;
- int sw_flags;
- };
- #define SW_FREED 0x01
- #define SW_SEQUENTIAL 0x02
- #define sw_freed sw_flags /* XXX compat */
- #ifdef _KERNEL
- extern struct swdevt swdevt[];
- extern int chrtoblktbl[];
- extern int nchrtoblktbl;
- struct bdevsw *bdevsw_lookup(dev_t);
- struct cdevsw *cdevsw_lookup(dev_t);
- dev_t chrtoblk(dev_t);
- dev_t blktochr(dev_t);
- int iskmemdev(dev_t);
- int iszerodev(dev_t);
- dev_t getnulldev(void);
- cdev_decl(filedesc);
- cdev_decl(log);
- #define ptstty ptytty
- #define ptsioctl ptyioctl
- cdev_decl(pts);
- #define ptctty ptytty
- #define ptcioctl ptyioctl
- cdev_decl(ptc);
- cdev_decl(ptm);
- cdev_decl(ctty);
- cdev_decl(audio);
- cdev_decl(midi);
- cdev_decl(radio);
- cdev_decl(video);
- cdev_decl(cn);
- bdev_decl(sw);
- bdev_decl(vnd);
- cdev_decl(vnd);
- cdev_decl(ch);
- bdev_decl(sd);
- cdev_decl(sd);
- cdev_decl(ses);
- bdev_decl(st);
- cdev_decl(st);
- bdev_decl(cd);
- cdev_decl(cd);
- bdev_decl(rd);
- cdev_decl(rd);
- bdev_decl(uk);
- cdev_decl(uk);
- cdev_decl(diskmap);
- cdev_decl(bpf);
- cdev_decl(pf);
- cdev_decl(tun);
- cdev_decl(pppx);
- cdev_decl(random);
- cdev_decl(wsdisplay);
- cdev_decl(wskbd);
- cdev_decl(wsmouse);
- cdev_decl(wsmux);
- cdev_decl(ksyms);
- cdev_decl(systrace);
- cdev_decl(bio);
- cdev_decl(vscsi);
- cdev_decl(gpr);
- cdev_decl(bktr);
- cdev_decl(usb);
- cdev_decl(ugen);
- cdev_decl(uhid);
- cdev_decl(ucom);
- cdev_decl(ulpt);
- cdev_decl(urio);
- cdev_decl(hotplug);
- cdev_decl(gpio);
- cdev_decl(amdmsr);
- cdev_decl(fuse);
- #endif
- #endif /* _SYS_CONF_H_ */
|