Mercurial > core / lisp/ffi/uring/opcode.lisp
changeset 252: |
c53892c30395 |
parent: |
85571b4a3fcc
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Sat, 30 Mar 2024 19:44:30 -0400 |
permissions: |
-rw-r--r-- |
description: |
uring primitives and build-from |
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)))))