aboutsummaryrefslogtreecommitdiffstats
path: root/sys/sys.txt
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2015-10-16 18:16:10 +0200
committerDmitry Vyukov <dvyukov@google.com>2015-10-16 18:16:10 +0200
commitf8f416fb8f2ce79d0cbf980ee53ddb68fac850ca (patch)
tree16fc267a129cafde8432c62b575a9c4497054e55 /sys/sys.txt
parent587db99baa54c04e23c207aaf6a5d05d0e1bb791 (diff)
preliminary description of kdbus syscalls
Diffstat (limited to 'sys/sys.txt')
-rw-r--r--sys/sys.txt440
1 files changed, 439 insertions, 1 deletions
diff --git a/sys/sys.txt b/sys/sys.txt
index 0ec36f526..adfe4acef 100644
--- a/sys/sys.txt
+++ b/sys/sys.txt
@@ -146,7 +146,7 @@ mlock(addr vma, size len[addr])
munlock(addr vma, size len[addr])
mlockall(flags flags[mlockall_flags])
munlockall()
-memfd_create(name string, flags flags[memfd_flags])
+memfd_create(name string, flags flags[memfd_flags]) fd
unshare(flags flags[clone_flags])
kcmp(pid1 pid, pid2 pid, type flags[kcmp_flags], fd1 fd, fd2 fd)
@@ -1433,3 +1433,441 @@ define F_SEAL_WRITE 0x0008
#define __NR_sched_get_priority_max 146
#define __NR_sched_get_priority_min 147
+
+
+ioctl$kdbus_bus_make(fd fd, cmd const[KDBUS_CMD_BUS_MAKE], arg ptr[in, kdbus_cmd_bus_make])
+ioctl$kdbus_ep_make(fd fd, cmd const[KDBUS_CMD_ENDPOINT_MAKE], arg ptr[in, kdbus_cmd_ep_make])
+ioctl$kdbus_ep_update(fd fd, cmd const[KDBUS_CMD_ENDPOINT_UPDATE], arg ptr[in, kdbus_cmd_ep_update])
+ioctl$kdbus_hello(fd fd, cmd const[KDBUS_CMD_HELLO], arg ptr[in, kdbus_cmd_hello])
+ioctl$kdbus_name_acquire(fd fd, cmd const[KDBUS_CMD_NAME_ACQUIRE], arg ptr[in, kdbus_cmd_name_acquire])
+ioctl$kdbus_name_release(fd fd, cmd const[KDBUS_CMD_NAME_RELEASE], arg ptr[in, kdbus_cmd_name_release])
+ioctl$kdbus_free(fd fd, cmd const[KDBUS_CMD_FREE], arg ptr[in, kdbus_cmd_free])
+ioctl$kdbus_recv(fd fd, cmd const[KDBUS_CMD_RECV], arg ptr[in, kdbus_cmd_recv])
+ioctl$kdbus_send(fd fd, cmd const[KDBUS_CMD_SEND], arg ptr[in, kdbus_cmd_send])
+ioctl$kdbus_update(fd fd, cmd const[KDBUS_CMD_UPDATE], arg ptr[in, kdbus_cmd_update])
+ioctl$kdbus_bye(fd fd, cmd const[KDBUS_CMD_BYEBYE], arg ptr[in, kdbus_cmd_bye])
+ioctl$kdbus_conn_info(fd fd, cmd const[KDBUS_CMD_CONN_INFO], arg ptr[in, kdbus_cmd_info])
+ioctl$kdbus_bus_info(fd fd, cmd const[KDBUS_CMD_BUS_CREATOR_INFO], arg ptr[in, kdbus_cmd_info])
+ioctl$kdbus_list(fd fd, cmd const[KDBUS_CMD_LIST], arg ptr[in, kdbus_cmd_list])
+ioctl$kdbus_match_add(fd fd, cmd const[KDBUS_CMD_MATCH_ADD], arg ptr[in, kdbus_cmd_match])
+ioctl$kdbus_match_remove(fd fd, cmd const[KDBUS_CMD_MATCH_REMOVE], arg ptr[in, kdbus_cmd_match])
+
+kdbus_cmd_bus_make {
+ size len[parent, int64]
+ flags flags[kdbus_make_flags, int64]
+ rflags const[0, int64]
+ bloom kdbus_bloom_parameter
+ name kdbus_make_name_parameter
+}
+
+kdbus_cmd_ep_make {
+ size len[parent, int64]
+ flags flags[kdbus_make_flags, int64]
+ rflags const[0, int64]
+ name kdbus_make_name_parameter
+}
+
+kdbus_cmd_ep_update {
+ size len[parent, int64]
+ flags flags[kdbus_make_flags, int64]
+ rflags const[0, int64]
+
+ name kdbus_make_name_parameter
+ policy kdbus_policy_parameter
+}
+
+kdbus_cmd_hello {
+ size len[parent, int64]
+ flags flags[kdbus_hello_flags, int64]
+ rflags const[0, int64]
+
+ sflags flags[kdbus_attach_flags, int64]
+ rflags flags[kdbus_attach_flags, int64]
+ bflags int64
+ id int64
+ poolsz int64
+ off int64
+ isize int64
+ id0 int64
+ id1 int64
+
+ name kdbus_make_name_parameter
+ policy kdbus_policy_parameter
+ pids kdbus_pids_parameter
+ creds kdbus_creds_parameter
+ seclab kdbus_seclabel_parameter
+}
+
+kdbus_cmd_bye {
+ size len[parent, int64]
+ flags const[0, int64]
+ rflags const[0, int64]
+}
+
+kdbus_cmd_list {
+ size len[parent, int64]
+ flags flags[kdbus_list_flags, int64]
+ rflags const[0, int64]
+ off int64
+ lsize const[0, int64]
+}
+
+kdbus_cmd_update {
+ size len[parent, int64]
+ flags flags[kdbus_name_flags, int64]
+ rflags const[0, int64]
+
+ name kdbus_make_name_parameter
+ policy kdbus_policy_parameter
+ attach kdbus_attach_flags_parameter
+}
+
+kdbus_cmd_name_acquire {
+ size len[parent, int64]
+ flags flags[kdbus_name_flags, int64]
+ rflags const[0, int64]
+ name kdbus_make_name_parameter
+}
+
+kdbus_cmd_name_release {
+ size len[parent, int64]
+ flags const[0, int64]
+ rflags const[0, int64]
+ name kdbus_make_name_parameter
+}
+
+kdbus_cmd_match {
+ size len[parent, int64]
+ flags flags[kdbus_match_flags, int64]
+ rflags const[0, int64]
+# TODO: this needs to match between add and remove
+ cookie int64
+
+ bloom kdbus_bloom_parameter
+ name0 kdbus_name_parameter
+ name1 kdbus_name_parameter
+ name2 kdbus_name_parameter
+ name3 kdbus_name_parameter
+ idadd kdbus_id_change_parameter
+ idremov kdbus_id_change_parameter
+ id kdbus_id_parameter
+ dstid kdbus_id_parameter
+}
+
+kdbus_cmd_free {
+ size len[parent, int64]
+ flags int64
+ rflags const[0, int64]
+ off int64
+# TODO: followed by arbitrary sequence of parameters
+}
+
+kdbus_cmd_recv {
+ size len[parent, int64]
+ flags flags[kdbus_recv_flags, int64]
+ rflags const[0, int64]
+ prio int64
+ dropped int64
+ msg kdbus_msg_info
+# TODO: followed by arbitrary sequence of parameters
+}
+
+kdbus_cmd_send {
+ size len[parent, int64]
+ flags flags[kdbus_send_flags, int64]
+ rflags const[0, int64]
+ msg ptr[in, kdbus_msg]
+ reply kdbus_msg_info
+ fd kdbus_fd_parameter
+}
+
+kdbus_msg {
+ size len[parent, int64]
+ flags flags[kdbus_msg_flags, int64]
+ rflags const[0, int64]
+
+ vec0 kdbus_payload_vec
+ vec1 kdbus_payload_vec
+ memfd0 kdbus_payload_memfd
+ memfd1 kdbus_payload_memfd
+ fds kdbus_fd_parameter
+ bloom kdbus_bloom_parameter
+ dname kdbus_dst_name_parameter
+}
+
+kdbus_msg_info {
+ off int64
+ size int64
+ rflags const[0, int64]
+}
+
+kdbus_cmd_info {
+ size len[parent, int64]
+ flags const[0, int64]
+ rflags const[0, int64]
+
+# TODO: this is connection id, need to extract it from somewhere
+ id int64
+ aflags flags[kdbus_attach_flags, int64]
+# TODO: off is offset in the caller's pool buffer where the kdbus_info struct result is stored.
+# It needs to be passed to KDBUS_CMD_FREE, so it should be a resource.
+ off int64
+ isize const[0, int64]
+# TODO: name is optional if id is specified
+ name kdbus_make_name_parameter
+}
+
+kdbus_bloom_parameter {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_BLOOM_PARAMETER, int64]
+ bsize int64
+ hash int64
+}
+
+kdbus_make_name_parameter {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_MAKE_NAME, int64]
+# TODO: this is embed strz buffer of variable-length
+ name int64
+}
+
+kdbus_dst_name_parameter {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_DST_NAME, int64]
+# TODO: this is embed strz buffer of variable-length
+ name int64
+}
+
+kdbus_name_parameter {
+ size len[parent, int64]
+ type flags[kdbus_name_params, int64]
+ flags flags[kdbus_name_flags, int64]
+# TODO: this is embed var-len string
+ name int64
+}
+
+kdbus_negotiate_parameter {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_NEGOTIATE, int64]
+}
+
+kdbus_policy_parameter {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_POLICY_ACCESS, int64]
+ ptype flags[kdbus_policy_access, int64]
+ access flags[kdbus_policy_flags, int64]
+ id uid
+}
+
+kdbus_attach_flags_parameter {
+ size len[parent, int64]
+ type flags[kdbug_attach_type, int64]
+ flags flags[kdbus_attach_flags, int64]
+}
+
+kdbus_fd_parameter {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_CANCEL_FD, int64]
+# TODO: this can be embed var-len array
+ fd fd
+}
+
+kdbus_pids_parameter {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_PIDS, int64]
+ pid pid
+ pad0 int32
+ tid pid
+ pad1 int32
+ ppid pid
+ pad2 int32
+}
+
+kdbus_creds_parameter {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_CREDS, int64]
+ uid uid
+ pad0 int32
+ euid uid
+ pad1 int32
+ suid uid
+ pad2 int32
+ fsuid uid
+ pad3 int32
+ gid uid
+ pad4 int32
+ egid uid
+ pad5 int32
+ sgid uid
+ pad6 int32
+ fsgid uid
+ pad7 int32
+}
+
+kdbus_seclabel_parameter {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_SECLABEL, int64]
+# TODO: this is some var-len string of unknown nature
+ label int64
+}
+
+kdbus_payload_vec {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_PAYLOAD_VEC, int64]
+ size len[data, int64]
+ data buffer[in]
+}
+
+kdbus_payload_memfd {
+ size len[parent, int64]
+ type const[KDBUS_ITEM_PAYLOAD_MEMFD, int64]
+ start int64
+ size int64
+ fd fd
+ pad int32
+}
+
+kdbus_id_change_parameter {
+ size len[parent, int64]
+ type flags[kdbus_id_change_type, int64]
+ id const[0, int64]
+ flags const[0, int64]
+}
+
+kdbus_id_parameter {
+ size len[parent, int64]
+ type flags[kdbus_id_type, int64]
+# TODO: what is this id?
+ id int64
+}
+
+kdbus_make_flags = KDBUS_MAKE_ACCESS_GROUP, KDBUS_MAKE_ACCESS_WORLD
+kdbus_hello_flags = KDBUS_HELLO_ACCEPT_FD, KDBUS_HELLO_ACTIVATOR, KDBUS_HELLO_POLICY_HOLDER, KDBUS_HELLO_MONITOR
+kdbus_attach_flags = KDBUS_ATTACH_TIMESTAMP, KDBUS_ATTACH_CREDS, KDBUS_ATTACH_PIDS, KDBUS_ATTACH_AUXGROUPS, KDBUS_ATTACH_NAMES, KDBUS_ATTACH_TID_COMM, KDBUS_ATTACH_PID_COMM, KDBUS_ATTACH_EXE, KDBUS_ATTACH_CMDLINE, KDBUS_ATTACH_CGROUP, KDBUS_ATTACH_CAPS, KDBUS_ATTACH_SECLABEL, KDBUS_ATTACH_AUDIT, KDBUS_ATTACH_CONN_DESCRIPTION, KDBUS_ATTACH_ANY
+kdbus_name_flags = KDBUS_NAME_REPLACE_EXISTING, KDBUS_NAME_ALLOW_REPLACEMENT, KDBUS_NAME_QUEUE, KDBUS_NAME_IN_QUEUE, KDBUS_NAME_ACTIVATOR, KDBUS_NAME_PRIMARY, KDBUS_NAME_ACQUIRED
+kdbus_recv_flags = KDBUS_RECV_RETURN_INCOMPLETE_FDS, KDBUS_RECV_RETURN_DROPPED_MSGS
+kdbus_send_flags = KDBUS_SEND_SYNC_REPLY
+kdbus_policy_access = KDBUS_POLICY_ACCESS_NULL, KDBUS_POLICY_ACCESS_USER, KDBUS_POLICY_ACCESS_GROUP, KDBUS_POLICY_ACCESS_WORLD
+kdbus_policy_flags = KDBUS_POLICY_OWN, KDBUS_POLICY_TALK, KDBUS_POLICY_SEE
+kdbug_attach_type = KDBUS_ITEM_ATTACH_FLAGS_SEND, KDBUS_ITEM_ATTACH_FLAGS_RECV
+kdbus_msg_flags = KDBUS_MSG_EXPECT_REPLY, KDBUS_MSG_NO_AUTO_START, KDBUS_MSG_SIGNAL
+kdbus_list_flags = KDBUS_LIST_UNIQUE, KDBUS_LIST_NAMES, KDBUS_LIST_ACTIVATORS, KDBUS_LIST_QUEUED
+kdbus_match_flags = KDBUS_MATCH_REPLACE
+kdbus_name_params = KDBUS_ITEM_NAME, KDBUS_ITEM_NAME_ADD, KDBUS_ITEM_NAME_REMOVE, KDBUS_ITEM_NAME_CHANGE
+kdbus_id_change_type = KDBUS_ITEM_ID_ADD, KDBUS_ITEM_ID_REMOVE
+kdbus_id_type = KDBUS_ITEM_ID, KDBUS_ITEM_DST_ID
+
+define KDBUS_IOCTL_MAGIC 0x95
+define KDBUS_CMD_BUS_MAKE _IOW(KDBUS_IOCTL_MAGIC, 0x00, int)
+define KDBUS_CMD_ENDPOINT_MAKE _IOW(KDBUS_IOCTL_MAGIC, 0x10, int)
+define KDBUS_CMD_ENDPOINT_UPDATE _IOW(KDBUS_IOCTL_MAGIC, 0x11, int)
+define KDBUS_CMD_HELLO _IOWR(KDBUS_IOCTL_MAGIC, 0x80, int)
+define KDBUS_CMD_UPDATE _IOW(KDBUS_IOCTL_MAGIC, 0x81, int)
+define KDBUS_CMD_BYEBYE _IOW(KDBUS_IOCTL_MAGIC, 0x82, int)
+define KDBUS_CMD_FREE _IOW(KDBUS_IOCTL_MAGIC, 0x83, int)
+define KDBUS_CMD_CONN_INFO _IOR(KDBUS_IOCTL_MAGIC, 0x84, int)
+define KDBUS_CMD_BUS_CREATOR_INFO _IOR(KDBUS_IOCTL_MAGIC, 0x85, int)
+define KDBUS_CMD_LIST _IOR(KDBUS_IOCTL_MAGIC, 0x86, int)
+define KDBUS_CMD_SEND _IOW(KDBUS_IOCTL_MAGIC, 0x90, int)
+define KDBUS_CMD_RECV _IOR(KDBUS_IOCTL_MAGIC, 0x91, int)
+define KDBUS_CMD_NAME_ACQUIRE _IOW(KDBUS_IOCTL_MAGIC, 0xa0, int)
+define KDBUS_CMD_NAME_RELEASE _IOW(KDBUS_IOCTL_MAGIC, 0xa1, int)
+define KDBUS_CMD_MATCH_ADD _IOW(KDBUS_IOCTL_MAGIC, 0xb0, int)
+define KDBUS_CMD_MATCH_REMOVE _IOW(KDBUS_IOCTL_MAGIC, 0xb1, int)
+
+define KDBUS_MAKE_ACCESS_GROUP (1ULL << 0)
+define KDBUS_MAKE_ACCESS_WORLD (1ULL << 1)
+
+define KDBUS_HELLO_ACCEPT_FD (1ULL << 0)
+define KDBUS_HELLO_ACTIVATOR (1ULL << 1)
+define KDBUS_HELLO_POLICY_HOLDER (1ULL << 2)
+define KDBUS_HELLO_MONITOR (1ULL << 3)
+
+define KDBUS_ATTACH_TIMESTAMP 1ULL << 0
+define KDBUS_ATTACH_CREDS 1ULL << 1
+define KDBUS_ATTACH_PIDS 1ULL << 2
+define KDBUS_ATTACH_AUXGROUPS 1ULL << 3
+define KDBUS_ATTACH_NAMES 1ULL << 4
+define KDBUS_ATTACH_TID_COMM 1ULL << 5
+define KDBUS_ATTACH_PID_COMM 1ULL << 6
+define KDBUS_ATTACH_EXE 1ULL << 7
+define KDBUS_ATTACH_CMDLINE 1ULL << 8
+define KDBUS_ATTACH_CGROUP 1ULL << 9
+define KDBUS_ATTACH_CAPS 1ULL << 10
+define KDBUS_ATTACH_SECLABEL 1ULL << 11
+define KDBUS_ATTACH_AUDIT 1ULL << 12
+define KDBUS_ATTACH_CONN_DESCRIPTION 1ULL << 13
+define KDBUS_ATTACH_ANY ~0ULL
+
+define KDBUS_NAME_REPLACE_EXISTING 1ULL << 0
+define KDBUS_NAME_ALLOW_REPLACEMENT 1ULL << 1
+define KDBUS_NAME_QUEUE 1ULL << 2
+define KDBUS_NAME_IN_QUEUE 1ULL << 3
+define KDBUS_NAME_ACTIVATOR 1ULL << 4
+define KDBUS_NAME_PRIMARY 1ULL << 5
+define KDBUS_NAME_ACQUIRED 1ULL << 6
+
+define KDBUS_RECV_RETURN_INCOMPLETE_FDS 1ULL << 0
+define KDBUS_RECV_RETURN_DROPPED_MSGS 1ULL << 1
+
+define KDBUS_SEND_SYNC_REPLY 1ULL << 0
+
+define KDBUS_LIST_UNIQUE 1ULL << 0
+define KDBUS_LIST_NAMES 1ULL << 1
+define KDBUS_LIST_ACTIVATORS 1ULL << 2
+define KDBUS_LIST_QUEUED 1ULL << 3
+
+define KDBUS_POLICY_ACCESS_NULL 0
+define KDBUS_POLICY_ACCESS_USER 1
+define KDBUS_POLICY_ACCESS_GROUP 2
+define KDBUS_POLICY_ACCESS_WORLD 3
+
+define KDBUS_POLICY_SEE 0
+define KDBUS_POLICY_TALK 1
+define KDBUS_POLICY_OWN 2
+
+define KDBUS_MATCH_REPLACE 1ULL << 0
+
+define KDBUS_MSG_EXPECT_REPLY 1ULL << 0
+define KDBUS_MSG_NO_AUTO_START 1ULL << 1
+define KDBUS_MSG_SIGNAL 1ULL << 2
+
+define KDBUS_ITEM_NEGOTIATE 1
+define KDBUS_ITEM_PAYLOAD_VEC 2
+define KDBUS_ITEM_PAYLOAD_OFF 3
+define KDBUS_ITEM_PAYLOAD_MEMFD 4
+define KDBUS_ITEM_FDS 5
+define KDBUS_ITEM_CANCEL_FD 6
+define KDBUS_ITEM_BLOOM_PARAMETER 7
+define KDBUS_ITEM_BLOOM_FILTER 8
+define KDBUS_ITEM_BLOOM_MASK 9
+define KDBUS_ITEM_DST_NAME 10
+define KDBUS_ITEM_MAKE_NAME 11
+define KDBUS_ITEM_ATTACH_FLAGS_SEND 12
+define KDBUS_ITEM_ATTACH_FLAGS_RECV 13
+define KDBUS_ITEM_ID 14
+define KDBUS_ITEM_NAME 15
+define KDBUS_ITEM_DST_ID 16
+define KDBUS_ITEM_TIMESTAMP (0x1000 + 0)
+define KDBUS_ITEM_CREDS (0x1000 + 1)
+define KDBUS_ITEM_PIDS (0x1000 + 2)
+define KDBUS_ITEM_AUXGROUPS (0x1000 + 3)
+define KDBUS_ITEM_OWNED_NAME (0x1000 + 4)
+define KDBUS_ITEM_TID_COMM (0x1000 + 5)
+define KDBUS_ITEM_PID_COM (0x1000 + 6)
+define KDBUS_ITEM_EXE (0x1000 + 7)
+define KDBUS_ITEM_CMDLINE (0x1000 + 8)
+define KDBUS_ITEM_CGROUP (0x1000 + 9)
+define KDBUS_ITEM_CAPS (0x1000 + 10)
+define KDBUS_ITEM_SECLABEL (0x1000 + 11)
+define KDBUS_ITEM_AUDIT (0x1000 + 12)
+define KDBUS_ITEM_CONN_DESCRIPTION (0x1000 + 13)
+define KDBUS_ITEM_POLICY_ACCESS (0x2000 + 0)
+define KDBUS_ITEM_NAME_ADD (0x8000 + 0)
+define KDBUS_ITEM_NAME_REMOVE (0x8000 + 1)
+define KDBUS_ITEM_NAME_CHANGE (0x8000 + 2)
+define KDBUS_ITEM_ID_ADD (0x8000 + 3)
+define KDBUS_ITEM_ID_REMOVE (0x8000 + 4)
+define KDBUS_ITEM_REPLY_TIMEOUT (0x8000 + 5)
+define KDBUS_ITEM_REPLY_DEAD (0x8000 + 6)
+