#ifndef _SYS_CONF_H_
#define _SYS_CONF_H_ 1
#include <sys/appleapiopts.h>
#include <sys/cdefs.h>
struct buf;
struct proc;
struct tty;
struct uio;
struct vnode;
#ifdef __APPLE_API_UNSTABLE
typedef int open_close_fcn_t __P((dev_t dev, int flags, int devtype,
struct proc *p));
typedef struct tty *d_devtotty_t __P((dev_t dev));
typedef void strategy_fcn_t __P((struct buf *bp));
typedef int ioctl_fcn_t __P((dev_t dev, u_long cmd, caddr_t data,
int fflag, struct proc *p));
typedef int dump_fcn_t ();
typedef int psize_fcn_t __P((dev_t dev));
typedef int read_write_fcn_t __P((dev_t dev, struct uio *uio, int ioflag));
typedef int stop_fcn_t __P((struct tty *tp, int rw));
typedef int reset_fcn_t __P((int uban));
typedef int select_fcn_t __P((dev_t dev, int which, void * wql, struct proc *p));
typedef int mmap_fcn_t __P(());
typedef int getc_fcn_t __P((dev_t dev));
typedef int putc_fcn_t __P((dev_t dev, char c));
typedef int d_poll_t __P((dev_t dev, int events, struct proc *p));
#define d_open_t open_close_fcn_t
#define d_close_t open_close_fcn_t
#define d_read_t read_write_fcn_t
#define d_write_t read_write_fcn_t
#define d_ioctl_t ioctl_fcn_t
#define d_stop_t stop_fcn_t
#define d_reset_t reset_fcn_t
#define d_select_t select_fcn_t
#define d_mmap_t mmap_fcn_t
#define d_strategy_t strategy_fcn_t
#define d_getc_t getc_fcn_t
#define d_putc_t putc_fcn_t
__BEGIN_DECLS
int enodev ();
void enodev_strat();
__END_DECLS
#define eno_opcl ((open_close_fcn_t *)&enodev)
#define eno_strat ((strategy_fcn_t *)&enodev_strat)
#define eno_ioctl ((ioctl_fcn_t *)&enodev)
#define eno_dump ((dump_fcn_t *)&enodev)
#define eno_psize ((psize_fcn_t *)&enodev)
#define eno_rdwrt ((read_write_fcn_t *)&enodev)
#define eno_stop ((stop_fcn_t *)&enodev)
#define eno_reset ((reset_fcn_t *)&enodev)
#define eno_mmap ((mmap_fcn_t *)&enodev)
#define eno_getc ((getc_fcn_t *)&enodev)
#define eno_putc ((putc_fcn_t *)&enodev)
#define eno_select ((select_fcn_t *)&enodev)
#define D_TAPE 1
#define D_DISK 2
#define D_TTY 3
struct bdevsw {
open_close_fcn_t *d_open;
open_close_fcn_t *d_close;
strategy_fcn_t *d_strategy;
ioctl_fcn_t *d_ioctl;
dump_fcn_t *d_dump;
psize_fcn_t *d_psize;
int d_type;
};
#ifdef KERNEL
d_devtotty_t nodevtotty;
d_write_t nowrite;
#ifdef __APPLE_API_PRIVATE
extern struct bdevsw bdevsw[];
#endif
#define NO_BDEVICE \
{ eno_opcl, eno_opcl, eno_strat, eno_ioctl, \
eno_dump, eno_psize, 0 }
#endif
struct cdevsw {
open_close_fcn_t *d_open;
open_close_fcn_t *d_close;
read_write_fcn_t *d_read;
read_write_fcn_t *d_write;
ioctl_fcn_t *d_ioctl;
stop_fcn_t *d_stop;
reset_fcn_t *d_reset;
struct tty **d_ttys;
select_fcn_t *d_select;
mmap_fcn_t *d_mmap;
strategy_fcn_t *d_strategy;
getc_fcn_t *d_getc;
putc_fcn_t *d_putc;
int d_type;
};
#ifdef KERNEL
#ifdef __APPLE_API_PRIVATE
extern struct cdevsw cdevsw[];
#endif
#define NO_CDEVICE \
{ \
eno_opcl, eno_opcl, eno_rdwrt, eno_rdwrt, \
eno_ioctl, eno_stop, eno_reset, 0, \
(select_fcn_t *)seltrue, eno_mmap, eno_strat, eno_getc, \
eno_putc, 0 \
}
#endif
struct linesw {
int (*l_open) __P((dev_t dev, struct tty *tp));
int (*l_close) __P((struct tty *tp, int flags));
int (*l_read) __P((struct tty *tp, struct uio *uio,
int flag));
int (*l_write) __P((struct tty *tp, struct uio *uio,
int flag));
int (*l_ioctl) __P((struct tty *tp, u_long cmd, caddr_t data,
int flag, struct proc *p));
int (*l_rint) __P((int c, struct tty *tp));
int (*l_start) __P((struct tty *tp));
int (*l_modem) __P((struct tty *tp, int flag));
};
#ifdef KERNEL
#ifdef __APPLE_API_PRIVATE
extern struct linesw linesw[];
extern int nlinesw;
#endif
int ldisc_register __P((int , struct linesw *));
void ldisc_deregister __P((int));
#define LDISC_LOAD -1
#endif
#ifdef __APPLE_API_OBSOLETE
struct swdevt {
dev_t sw_dev;
int sw_flags;
int sw_nblks;
struct vnode *sw_vp;
};
#define SW_FREED 0x01
#define SW_SEQUENTIAL 0x02
#define sw_freed sw_flags
#ifdef KERNEL
extern struct swdevt swdevt[];
#endif
#endif
#ifdef KERNEL
__BEGIN_DECLS
int bdevsw_isfree __P((int));
int bdevsw_add __P((int, struct bdevsw *));
int bdevsw_remove __P((int, struct bdevsw *));
int cdevsw_isfree __P((int));
int cdevsw_add __P((int, struct cdevsw *));
int cdevsw_remove __P((int, struct cdevsw *));
__END_DECLS
#endif
#endif
#endif