xref: /minix3/minix/include/minix/bdev.h (revision 63ce03db6646a88deff65bad27b873bbfe71a4e1)
1 #ifndef _MINIX_BDEV_H
2 #define _MINIX_BDEV_H
3 
4 /* Common API. */
5 extern void bdev_driver(dev_t dev, char *label);
6 
7 /* Synchronous API. */
8 extern int bdev_open(dev_t dev, int access);
9 extern int bdev_close(dev_t dev);
10 
11 extern ssize_t bdev_read(dev_t dev, u64_t pos, char *buf, size_t count,
12 	int flags);
13 extern ssize_t bdev_write(dev_t dev, u64_t pos, char *buf, size_t count,
14 	int flags);
15 extern ssize_t bdev_gather(dev_t dev, u64_t pos, iovec_t *vec, int count,
16 	int flags);
17 extern ssize_t bdev_scatter(dev_t dev, u64_t pos, iovec_t *vec, int count,
18 	int flags);
19 extern int bdev_ioctl(dev_t dev, unsigned long request, void *buf,
20 	endpoint_t user_endpt);
21 
22 /* Asynchronous API. */
23 typedef int bdev_id_t;
24 typedef void *bdev_param_t;
25 
26 typedef void (*bdev_callback_t)(dev_t dev, bdev_id_t id, bdev_param_t param,
27 	int result);
28 
29 extern void bdev_flush_asyn(dev_t dev);
30 
31 extern bdev_id_t bdev_read_asyn(dev_t dev, u64_t pos, char *buf, size_t count,
32 	int flags, bdev_callback_t callback, bdev_param_t param);
33 extern bdev_id_t bdev_write_asyn(dev_t dev, u64_t pos, char *buf, size_t count,
34 	int flags, bdev_callback_t callback, bdev_param_t param);
35 extern bdev_id_t bdev_gather_asyn(dev_t dev, u64_t pos, iovec_t *vec,
36 	int count, int flags, bdev_callback_t callback, bdev_param_t param);
37 extern bdev_id_t bdev_scatter_asyn(dev_t dev, u64_t pos, iovec_t *vec,
38 	int count, int flags, bdev_callback_t callback, bdev_param_t param);
39 extern bdev_id_t bdev_ioctl_asyn(dev_t dev, unsigned long request, void *buf,
40 	endpoint_t user_endpt, bdev_callback_t callback, bdev_param_t param);
41 
42 extern int bdev_wait_asyn(bdev_id_t id);
43 
44 extern void bdev_reply_asyn(message *m);
45 
46 #endif /* _MINIX_BDEV_H */
47