123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- #ifndef ZEPHYR_INCLUDE_SYS_FDTABLE_H_
- #define ZEPHYR_INCLUDE_SYS_FDTABLE_H_
- #include <stdarg.h>
- #include <sys/types.h>
- #include <fs/fs.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- struct fd_op_vtable {
- ssize_t (*read)(void *obj, void *buf, size_t sz);
- ssize_t (*write)(void *obj, const void *buf, size_t sz);
- int (*close)(void *obj);
- int (*ioctl)(void *obj, unsigned int request, va_list args);
- };
- int z_reserve_fd(void);
- void z_finalize_fd(int fd, void *obj, const struct fd_op_vtable *vtable);
- int z_alloc_fd(void *obj, const struct fd_op_vtable *vtable);
- void z_free_fd(int fd);
- void *z_get_fd_obj(int fd, const struct fd_op_vtable *vtable, int err);
- void *z_get_fd_obj_and_vtable(int fd, const struct fd_op_vtable **vtable,
- struct k_mutex **lock);
- static inline int z_fdtable_call_ioctl(const struct fd_op_vtable *vtable, void *obj,
- unsigned long request, ...)
- {
- va_list args;
- int res;
- va_start(args, request);
- res = vtable->ioctl(obj, request, args);
- va_end(args);
- return res;
- }
- enum {
-
- ZFD_IOCTL_FSYNC = 0x100,
- ZFD_IOCTL_LSEEK,
- ZFD_IOCTL_POLL_PREPARE,
- ZFD_IOCTL_POLL_UPDATE,
- ZFD_IOCTL_POLL_OFFLOAD,
- ZFD_IOCTL_SET_LOCK,
- };
- #ifdef __cplusplus
- }
- #endif
- #endif
|