|
|
- #ifndef __KERN_FS_DEVS_DEV_H__
- #define __KERN_FS_DEVS_DEV_H__
-
- #include <defs.h>
-
- struct inode;
- struct iobuf;
-
- /*
- * Filesystem-namespace-accessible device.
- * d_io is for both reads and writes; the iobuf will indicates the direction.
- */
- struct device {
- size_t d_blocks;
- size_t d_blocksize;
- int (*d_open)(struct device *dev, uint32_t open_flags);
- int (*d_close)(struct device *dev);
- int (*d_io)(struct device *dev, struct iobuf *iob, bool write);
- int (*d_ioctl)(struct device *dev, int op, void *data);
- };
-
- #define dop_open(dev, open_flags) ((dev)->d_open(dev, open_flags))
- #define dop_close(dev) ((dev)->d_close(dev))
- #define dop_io(dev, iob, write) ((dev)->d_io(dev, iob, write))
- #define dop_ioctl(dev, op, data) ((dev)->d_ioctl(dev, op, data))
-
- void dev_init(void);
- struct inode *dev_create_inode(void);
-
- #endif /* !__KERN_FS_DEVS_DEV_H__ */
-
|