changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/ffi/uring/alien.lisp

changeset 698: 96958d3eb5b0
parent: c53892c30395
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
1 ;;; uring/alien.lisp --- supplementary alien types
2 
3 ;;
4 
5 ;;; Code:
6 (in-package :uring)
7 
8 ;;; barrier.h
9 ;; (defun io-uring-write-once (var val))
10 ;; (defun io-uring-read-once (var))
11 ;; (defun io-uring-smp-store-release (p v))
12 ;; (defun io-uring-smp-load-acquire (p))
13 ;; (defun io-uring-smp-mb ())
14 
15 ;;; liburing.h
16 (defalien-int io-uring-major-version)
17 (defalien-int io-uring-minor-version)
18 (defalien-int io-uring-check-version (major int) (minor int))
19 
20 (define-alien-routine io-uring-get-probe-ring (* io-uring-probe) (ring (* (struct io-uring))))
21 (define-alien-routine io-uring-get-probe (* io-uring-probe))
22 (define-alien-routine io-uring-free-probe void (p (* (struct io-uring-probe))))
23 
24 ;; (defalien-int io-uring-opcode-supported (p (* (struct io-uring-probe))) (op int))
25 (defalien-int io-uring-queue-init-mem
26  (entries unsigned)
27  (ring (* (struct io-uring)))
28  (p (* (struct io-uring-params)))
29  (buf (* t)) (buf-size size-t))
30 (defalien-int io-uring-queue-init-params
31  (entries unsigned)
32  (ring (* (struct io-uring)))
33  (p (* (struct io-uring-params))))
34 (defalien-int io-uring-queue-init (entries int) (ring (* (struct io-uring))) (flags unsigned))
35 (defalien-int io-uring-queue-mmap (fd int) (p (* (struct io-uring-params))) (ring (* (struct io-uring))))
36 (def-with-ring io-uring-ring-dontfork)
37 (def-with-ring io-uring-queue-exit)
38 (def-with-ring io-uring-peek-batch-cqe (cqes (array (* (struct io-uring-cqe)))) (count unsigned))
39 (def-with-ring io-uring-wait-cqes
40  (cqe-ptr (* (* (struct io-uring-cqe))))
41  (wait-nr unsigned)
42  (ts (* (struct kernel-timespec)))
43  (sigmask (* (struct sigset-t)))) ;; maybe should be (* t)?
44 (def-with-ring io-uring-wait-cqe-timeout
45  (cqe-ptr (* (* (struct io-uring-cqe))))
46  (ts (* (struct kernel-timespec))))
47 (def-with-ring io-uring-submit)
48 (def-with-ring io-uring-submit-and-wait
49  (wait-nr unsigned))
50 (def-with-ring io-uring-submit-and-wait-timeout
51  (cqe-ptr (* (* (struct io-uring-cqe))))
52  (ts (* (struct kernel-timespec))))
53 (def-with-ring io-uring-register-buffers
54  (iovecs (* (struct iovec)))
55  (nr-iovecs unsigned))
56 (def-with-ring io-uring-register-buffer-tags
57  (iovecs (* (struct iovec)))
58  (tags (array unsigned-long))
59  (nr unsigned))
60 (def-with-ring io-uring-register-buffer-sparse
61  (nr unsigned))
62 (def-with-ring io-uring-register-buffer-update-tag
63  (off unsigned)
64  (iovecs (* (struct iovec)))
65  (tags (array unsigned-long))
66  (nr unsigned))
67 (def-with-ring io-uring-unregister-buffers)
68 (def-with-ring io-uring-register-files
69  (files (array int))
70  (nr-files unsigned))
71 (def-with-ring io-uring-register-files-tags
72  (files (array int))
73  (tags (array unsigned-long))
74  (nr unsigned))
75 (def-with-ring io-uring-register-files-sparse
76  (nr unsigned))
77 (def-with-ring io-uring-register-files-update-tag
78  (off unsigned)
79  (files (array int))
80  (tags (array unsigned-long))
81  (nr-files unsigned))
82 (def-with-ring io-uring-unregister-files)
83 (def-with-ring io-uring-register-files-update
84  (off unsigned)
85  (files (array int))
86  (tags (array unsigned-long))
87  (nr-files unsigned))
88 (def-with-ring io-uring-register-eventfd (fd int))
89 (def-with-ring io-uring-register-eventfd-async (fd int))
90 (def-with-ring io-uring-unregister-eventfd)
91 (def-with-ring io-uring-register-probe
92  (p (* (struct io-uring-probe)))
93  (nr unsigned))
94 (def-with-ring io-uring-register-personality)
95 (def-with-ring io-uring-unregister-personality (fd int))
96 (def-with-ring io-uring-register-restrictions (res (array (struct io-uring-restriction))) (nr-res unsigned-int))
97 ;; (defalien-int io-uring-register
98 ;; (fd int)
99 ;; (opcode unsigned-int)
100 ;; (args (* t))
101 ;; (nr-args unsigned-int))
102 (def-with-ring io-uring-enable-rings)
103 (def-with-ring __io-uring-sqring-wait) ;;fixme
104 (def-with-ring io-uring-register-iowq-aff (cpusz size-t) (mask (* (struct cpu-set-t))))
105 (def-with-ring io-uring-unregister-iowq-aff)
106 (def-with-ring io-uring-register-iowq-max-workers (values (array unsigned-int)))
107 (def-with-ring io-uring-register-ring-fd)
108 (def-with-ring io-uring-unregister-ring-fd)
109 (def-with-ring io-uring-close-ring-fd)
110 (def-with-ring io-uring-register-buf-ring
111  (reg (* (struct io-uring-buf-reg))) (flags unsigned-int))
112 (def-with-ring io-uring-unregister-buf-ring (bgid int))
113 (def-with-ring io-uring-register-sync-cancel (reg (* (struct io-uring-sync-cancel-reg))))
114 (def-with-ring io-uring-register-file-alloc-range (off unsigned) (len unsigned))
115 (def-with-ring io-uring-get-events)
116 (def-with-ring io-uring-submit-and-get-events)
117 
118 ;;; Syscalls
119 (defalien-int io-uring-enter
120  (fd int)
121  (to-submit unsigned-int)
122  (min-complete unsigned-int)
123  (flags unsigned-int)
124  (sig (* (struct sigset-t))))
125 
126 (defalien-int io-uring-enter2
127  (fd int)
128  (to-submit unsigned-int)
129  (min-complete unsigned-int)
130  (flags unsigned-int)
131  (sig (* (struct sigset-t)))
132  (sz size-t))
133 (defalien-int io-uring-setup
134  (entries unsigned-int)
135  (p (* (struct io-uring-params))))
136 (defalien-int io-uring-register (fd unsigned-int) (opcode unsigned-int) (arg (* t)) (nr-args unsigned-int))
137 
138 (define-alien-routine io-uring-setup-buf-ring (* (struct io-uring-buf-ring))
139  (ring (* (struct io-uring)))
140  (nentries unsigned-int)
141  (bgid int)
142  (flags unsigned-int)
143  (ret (* int)))
144 (defalien-int io-uring-free-buf-ring
145  (ring (* (struct io-uring)))
146  (br (* (struct io-uring-buf-ring)))
147  (nentries unsigned-int)
148  (bgid int))
149 
150 ;;..
151 (define-alien-routine io-uring-mlock-size ssize-t (entries unsigned) (flags unsigned))
152 (define-alien-routine io-uring-mlock-size-params ssize-t (entries unsigned) (p (* (struct io-uring-params))))