-
Notifications
You must be signed in to change notification settings - Fork 193
/
device_ioctl.manifest.template
72 lines (56 loc) · 3.06 KB
/
device_ioctl.manifest.template
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
loader.entrypoint = "file:{{ gramine.libos }}"
libos.entrypoint = "{{ entrypoint }}"
loader.argv0_override = "{{ entrypoint }}"
loader.env.LD_LIBRARY_PATH = "/lib"
fs.mounts = [
{ path = "/lib", uri = "file:{{ gramine.runtimedir(libc) }}" },
{ path = "/{{ entrypoint }}", uri = "file:{{ binary_dir }}/{{ entrypoint }}" },
{ path = "/dev/gramine_test_dev", uri = "dev:/dev/gramine_test_dev" },
]
sgx.nonpie_binary = true
sgx.debug = true
sgx.trusted_files = [
"file:{{ gramine.libos }}",
"file:{{ gramine.runtimedir(libc) }}/",
"file:{{ binary_dir }}/{{ entrypoint }}",
]
# for IOCTLs without an argument (or with integer argument)
sgx.ioctl_structs.gramine_test_dev_ioctl_dummy = [ ]
# three IOCTLs below test different "no struct needed" syntaxes of the `struct` key
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_REWIND.request_code = 0x8100
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_REWIND.struct = "gramine_test_dev_ioctl_dummy"
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_GETSIZE.request_code = 0x8103
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_GETSIZE.struct = ""
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_CLEAR.request_code = 0x8104
sgx.ioctl_structs.gramine_test_dev_ioctl_write = [
{ size=8, direction="out", name="buf_size" }, # buf_size
{ ptr=[ {size="buf_size", direction="out"} ] }, # buf
{ size=8, direction="inout" }, # off
{ adjust=-4, size=12, direction="in" }, # copied; adjust is just for testing
]
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_WRITE.request_code = 0xc0208101
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_WRITE.struct = "gramine_test_dev_ioctl_write"
sgx.ioctl_structs.gramine_test_dev_ioctl_read = [
{ size=8, direction="out", name="buf_size" }, # buf_size
{ ptr=[ {size="buf_size", direction="in"} ] }, # buf
{ size=8, direction="inout" }, # off
{ adjust=-4, size=12, direction="in" }, # copied; adjust is just for testing
]
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_READ.request_code = 0xc0208102
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_READ.struct = "gramine_test_dev_ioctl_read"
sgx.ioctl_structs.gramine_test_dev_ioctl_replace_arr = [
{ size=8, direction="out", name="replacements_cnt" }, # replacements_cnt
{ size="replacements_cnt", ptr=[ # replacements_arr
{ size=2, units=1, direction="out" }, # src, dst
{ size=6, units=1, direction="none" }, # pad
] },
]
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_REPLACE_ARR.request_code = 0x40108105
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_REPLACE_ARR.struct = "gramine_test_dev_ioctl_replace_arr"
sgx.ioctl_structs.gramine_test_dev_ioctl_replace_list = [
{ size=2, units=1, direction="out" }, # src, dst
{ size=6, units=1, direction="none" }, # pad
{ ptr="this" }, # next
]
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_REPLACE_LIST.request_code = 0x40108106
sgx.allowed_ioctls.GRAMINE_TEST_DEV_IOCTL_REPLACE_LIST.struct = "gramine_test_dev_ioctl_replace_list"