XenevaOS
Loading...
Searching...
No Matches
uio.h
Go to the documentation of this file.
1#ifndef __LINUX_UIO_H__
2#define __LINUX_UIO_H__
3
4/*
5 * DCL <linux/uio.h> -- iterator + kiocb bits mem.c's read_iter/write_iter
6 * arms touch (read_iter_zero peeks at iocb->ki_flags, write_iter_null walks
7 * the iov_iter).
8 *
9 * mainline defines struct kiocb in include/linux/fs.h; DCL's fs.h is a
10 * frozen ABI pin file (it only forward-declares kiocb), so the layout this
11 * target compiles against lives here instead -- same rule: never edit the
12 * pinned file, add beside it.
13 */
14
15#include <stddef.h>
16#include <stdint.h>
17#include <linux/fs.h>
18
19#define IOCB_NOWAIT 0x00000001
20
21struct kiocb {
22 struct file* ki_filp;
23 long long ki_pos;
24 void* private;
26 unsigned int ki_hint;
27 unsigned int ki_ioprio;
28};
29
30/*
31 * DCL's iov_iter: a single buffer. mainline's is a tagged union over
32 * iovec/bvec/kvec/xarray iterators; none of the drivers/char code mem.c
33 * brings up inspects the fields -- it only calls iov_iter_count() /
34 * iov_iter_advance() / iov_iter_zero() -- so the union collapses to
35 * {buf, off, count} here. Implementations live in DCL/linux_mm_shim.c.
36 */
37#define ITER_DEST 0
38#define ITER_SOURCE 1
39
40struct iov_iter {
41 void* buf;
42 size_t off;
43 size_t count;
44 int dir;
45};
46
47static inline struct iov_iter iov_iter_init(int dir, void* buf, size_t len) {
48 struct iov_iter i;
49 i.buf = buf;
50 i.off = 0;
51 i.count = len;
52 i.dir = dir;
53 return i;
54}
55
56size_t iov_iter_count(const struct iov_iter* i);
57void iov_iter_advance(struct iov_iter* i, size_t bytes);
58size_t iov_iter_zero(size_t bytes, struct iov_iter* i);
59
60#endif /* __LINUX_UIO_H__ */
size_t len
Definition initial.c:23
Definition fs.h:142
Definition uio.h:40
size_t off
Definition uio.h:42
void * buf
Definition uio.h:41
size_t count
Definition uio.h:43
int dir
Definition uio.h:44
Definition uio.h:21
struct file * ki_filp
Definition uio.h:22
int ki_flags
Definition uio.h:25
unsigned int ki_ioprio
Definition uio.h:27
long long ki_pos
Definition uio.h:23
unsigned int ki_hint
Definition uio.h:26
void iov_iter_advance(struct iov_iter *i, size_t bytes)
size_t iov_iter_zero(size_t bytes, struct iov_iter *i)
size_t iov_iter_count(const struct iov_iter *i)