Coverage report: /home/ellis/comp/core/ffi/uring/opcode.lisp
Kind | Covered | All | % |
expression | 19 | 130 | 14.6 |
branch | 0 | 28 | 0.0 |
Key
Not instrumented
Conditionalized out
Executed
Not executed
Both branches taken
One branch taken
Neither branch taken
1
;;; uring/opcode.lisp --- Opcodes
3
;; Wrapper for opcodes defined in liburing/io_uring.h.
12
(defun io-uring-setup-rw ())
15
(setf (slot sqe 'fd) -1))
19
((fd -1 :type file-descriptor)
20
(iovec #() :type (array octet-vector))
22
(ioprio 0 :type (unsigned-byte 16))
23
(offset 0 :type (unsigned-byte 64))
24
(rw-flags 0 :type fixnum)
25
(buf-group 0 :type (unsigned-byte 16)))
26
(with-slots (fd iovec len ioprio offset rw-flags buf-group) self
27
(setf (slot sqe 'fd) fd)
28
(setf (slot sqe 'ioprio) ioprio)
29
(setf (slot sqe 'len) len)
30
;; (setf slot s 'iovecs) iovecs)
31
;; (setf (slot s 'rw-flags) rw-flags)
32
;; (setf (slot s 'buf-group) buf-group)
37
((fd -1 :type file-descriptor)
38
(iovec #() :type (array octet-vector))
40
(ioprio 0 :type (unsigned-byte 16))
41
(offset 0 :type (unsigned-byte 64))
42
(rw-flags 0 :type fixnum))
43
(with-slots (fd iovec len ioprio offset rw-flags) self
44
(setf (slot sqe 'fd) fd)
45
(setf (slot sqe 'ioprio) ioprio)
46
(setf (slot sqe 'len) len)))
50
((fd -1 :type file-descriptor)
51
(flags 0 :type fixnum))
52
(with-slots (fd flags) self
53
(setf (slot sqe 'fd) fd)))
55
;; read from pre-registered buffers
56
(def-io-op 4 read-fixed
57
((fd -1 :type file-descriptor)
58
(buf #() :type octet-vector)
59
(len 0 :type (unsigned-byte 32))
60
(buf-index 0 :type (unsigned-byte 16))
61
(offset 0 :type (unsigned-byte 64))
62
(ioprio 0 :type (unsigned-byte 16))
63
(rw-flags 0 :type fixnum))
64
(with-slots (fd buf len buf-index offset ioprio rw-flags) self
65
(setf (slot sqe 'fd) fd)
66
(setf (slot sqe 'ioprio) ioprio)
67
(setf (slot sqe 'len) len)))
69
(def-io-op 5 write-fixed
70
((fd -1 :type file-descriptor)
71
(buf #() :type octet-vector)
72
(len 0 :type (unsigned-byte 32))
73
(buf-index 0 :type (unsigned-byte 16))
74
(ioprio 0 :type (unsigned-byte 16))
75
(offset 0 :type (unsigned-byte 64))
76
(rw-flags 0 :type fixnum))
77
(with-slots (fd buf len buf-index ioprio offset rw-flags) self
78
(setf (slot sqe 'fd) fd)
79
(setf (slot sqe 'ioprio) ioprio)
80
(setf (slot sqe 'len) len)))
82
;; poll the specified fd
83
(def-io-op 6 poll-add nil)
84
(def-io-op 7 poll-remove nil)
85
(def-io-op 8 sync-file-range nil)
86
(def-io-op 9 sendmsg nil)
87
(def-io-op 10 recvmsg nil)
88
(def-io-op 11 timeout nil)
89
(def-io-op 12 timeout-remove nil)
90
(def-io-op 13 accept nil)
91
(def-io-op 14 async-cancel nil)
92
(def-io-op 15 link-timeout nil)
93
(def-io-op 16 connect nil)
94
(def-io-op 17 fallocate nil)
95
(def-io-op 18 openat nil)
96
(def-io-op 19 close nil)
97
(def-io-op 20 files-update nil)
98
(def-io-op 21 statx nil)
99
(def-io-op 22 read nil)
100
(def-io-op 23 write nil)
101
(def-io-op 24 fadvise nil)
102
(def-io-op 25 madvise nil)
103
(def-io-op 26 send nil)
104
(def-io-op 27 recv nil)
105
(def-io-op 28 openat2 nil)
106
(def-io-op 29 epoll-ctl nil)
107
(def-io-op 30 splice nil)
108
(def-io-op 31 provide-buffers nil)
109
(def-io-op 32 remove-buffers nil)
110
(def-io-op 33 tee nil)
111
(def-io-op 34 shutdown nil)
112
(def-io-op 35 renameat nil)
113
(def-io-op 36 unlinkat nil)
114
(def-io-op 37 mkdirat nil)
115
(def-io-op 38 symlinkat nil)
116
(def-io-op 39 msg-ring nil)
117
(def-io-op 40 fsetxattr nil)
118
(def-io-op 41 setxattr nil)
119
(def-io-op 42 fgetxattr nil)
120
(def-io-op 43 getxattr nil)
121
(def-io-op 44 socket nil)
122
(def-io-op 45 uring-cmd nil)
123
(def-io-op 46 send-zc nil)
124
(def-io-op 47 sendmsg-zc nil)
125
(def-io-op 48 last nil)
127
(defun opcode-supported-p (op &optional probe)
128
(declare (type octet op))
129
(let ((p (or probe (io-uring-get-probe))))
130
(if (> op (io-uring-probe-last-op p))
134
(io-uring-probe-op-flags (addr (deref (io-uring-probe-ops p) op)))
135
io-uring-op-supported)))))