243
|
1
|
;;; uring/types.lisp --- concrete types |
|
2
|
|
|
3
|
;; args,flags,etc |
|
4
|
|
|
5
|
;;; Code: |
|
6
|
|
|
7
|
(in-package :uring) |
|
8
|
|
247
|
9
|
(define-alien-type nil |
|
10
|
(struct sigset-t |
527
|
11
|
(val (array unsigned-long #.+sigset-nwords+)))) |
247
|
12
|
|
248
|
13
|
(define-alien-type cpu-mask-t unsigned-long) |
|
14
|
|
|
15
|
(define-alien-type nil |
|
16
|
(struct cpu-set-t |
529
|
17
|
(bits (array cpu-mask-t #.(/ +cpu-setsize+ +ncpu-bits+))))) |
248
|
18
|
|
243
|
19
|
;; statx epoll-event __kernel_rwf_t |
|
20
|
|
|
21
|
;; target fd/u32 |
|
22
|
|
|
23
|
;; sb-posix:file-descriptor - not yet allocated by uring |
|
24
|
;; uring:fixed - file-descriptor that has been registered with uring |
|
25
|
|
|
26
|
;;; Time |
|
27
|
|
|
28
|
;; Default behavior is to treat the timespec C type as a relative time |
|
29
|
;; interval. |
|
30
|
|
|
31
|
;; flags may contain ABS to indicate absolute time. When using |
|
32
|
;; absolute time, the kernel uses its monotonic clock unless flags |
|
33
|
;; contain BOOTTIME/REALTIME |
|
34
|
|
|
35
|
;; ioring-msg -- enum |
|
36
|
|
|
37
|
;; helper for parsing the result of a multishot |
|
38
|
(defstruct recv-msg-out |
260
|
39
|
(header (allocate-io-uring-recvmsg-out) :type (alien io-uring-recvmsg-out)) |
243
|
40
|
(msghdr-name-len 0 :type fixnum) |
|
41
|
(name-data #() :type octet-vector) |
|
42
|
(control-data #() :type octet-vector) |
|
43
|
(payload-data #() :type octet-vector)) |
|
44
|
|
|
45
|
;; (defun parse-recv-msg-out (buf header) msghdr..) |
|
46
|
|
|
47
|
;;; Cancel |
|
48
|
(define-alien-type async-cancel-flags int) |
|
49
|
(define-alien-type user-data unsigned-long) |
|
50
|
|
|
51
|
(defstruct cancel-builder |
260
|
52
|
(flags 0 :type (alien async-cancel-flags)) |
|
53
|
(user-data (deref (make-alien user-data)) :type (alien user-data))) |
243
|
54
|
|
|
55
|
;; any, user_data, fd, all |
|
56
|
|
|
57
|
(defstruct mmapped-region |
260
|
58
|
(addr (deref (make-alien (* t))) :type (alien (* t))) ;; (sb-impl::dynamic-space-free-pointer) ;? |
243
|
59
|
(len 0 :type fixnum)) |
|
60
|
|
|
61
|
;; do-mmap |
|
62
|
;; map len bytes starting from offset from file-descriptor in mmapped-region |
291
|
63
|
|
|
64
|
;;; CPU Affinity |
|
65
|
;; it appears this actually crashes SBCL, receiving sig6 from foreign thread |
|
66
|
;; (define-alien-routine sched-setaffinity int (pid int) (cpusetsize size-t) (set (* (struct cpu-set-t)))) |
|
67
|
;; (define-alien-routine sched-getaffinity int (pid int) (cpusetsize size-t) (set (* (struct cpu-set-t)))) |
|
68
|
;; (sched-getaffinity 0 cpu-setsize (make-alien (struct cpu-set-t))) |
|
69
|
;; (sched-setaffinity 0 cpu-setsize (make-alien (struct cpu-set-t))) |