blob: 6fcfc080a35fb124996cc5c8e4d9648f4aa5e963 (
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
28
29
30
31
32
|
#include <kernel/mem/virt.h>
#include <kernel/panic.h>
#include <kernel/proc.h>
#include <kernel/util.h>
#include <kernel/vfs/root.h>
int vfs_root_handler(struct vfs_request *req) {
switch (req->type) {
case VFSOP_OPEN:
assert(req->input.kern);
if (req->input.len == 4
&& !memcmp(req->input.buf_kern, "/tty", 4)) {
return 0;
}
return -1;
case VFSOP_WRITE:
switch (req->id) {
// every id corresponds to a special file type
// this is a shit way to do this but :shrug:
case 0: { // tty
struct virt_iter iter;
virt_iter_new(&iter, req->input.buf, req->input.len,
req->caller->pages, true, false);
while (virt_iter_next(&iter))
tty_write(iter.frag, iter.frag_len);
return iter.prior;
}
default: panic();
}
default: panic();
}
}
|