summaryrefslogtreecommitdiff
path: root/src/shared/vfs.h
blob: d88c424c0c8cfa228872cf9a702d22ba381dabad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// requires the user_ptr type from kernel/types.h or init/types.h
// TODO add some macro magic which prints an error when it isn't defined

#pragma once

enum vfs_op_types {
	VFSOP_OPEN,
	VFSOP_WRITE,
};

/* currently, this struct is fully created in kernelspace
 * i might add a syscall which allows a process to just pass it raw, with some
 * validation - so keep that in mind */
struct vfs_op {
	enum vfs_op_types type;
	union {
		struct {
			const char *path;
			int path_len;
		} open;
		struct {
			user_ptr buf;
			int buf_len;
			int id; // filled in by the kernel
		} rw;
	};
};