changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/ffi/uring/util.lisp

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