Coverage report: /home/ellis/comp/core/ffi/uring/opcode.lisp

KindCoveredAll%
expression19130 14.6
branch028 0.0
Key
Not instrumented
Conditionalized out
Executed
Not executed
 
Both branches taken
One branch taken
Neither branch taken
1
 ;;; uring/opcode.lisp --- Opcodes
2
 
3
 ;; Wrapper for opcodes defined in liburing/io_uring.h. 
4
 
5
 ;;; Commentary:
6
 
7
 ;; 
8
 
9
 ;;; Code:
10
 (in-package :uring)
11
 
12
 (defun io-uring-setup-rw ())
13
 
14
 (def-io-op 0 nop ()
15
   (setf (slot sqe 'fd) -1))
16
 
17
 ;; preadv2(2)
18
 (def-io-op 1 readv
19
     ((fd -1 :type file-descriptor)
20
      (iovec #() :type (array octet-vector))
21
      (len 0 :type fixnum)
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)
33
     ))
34
 
35
 ;; pwritev2(2)
36
 (def-io-op 2 writev
37
     ((fd -1 :type file-descriptor)
38
      (iovec #() :type (array octet-vector))
39
      (len 0 :type fixnum)
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)))
47
 
48
 ;; fsync(2)     
49
 (def-io-op 3 fsync
50
     ((fd -1 :type file-descriptor)
51
      (flags 0 :type fixnum))
52
   (with-slots (fd flags) self
53
     (setf (slot sqe 'fd) fd)))
54
 
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)))
68
 
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)))
81
 
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)
126
 
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))
131
         nil
132
         (/= 0
133
             (logand
134
              (io-uring-probe-op-flags (addr (deref (io-uring-probe-ops p) op)))
135
              io-uring-op-supported)))))