1.1--- a/lisp/ffi/blake3/pkg.lisp Sun Sep 29 23:43:03 2024 -0400
1.2+++ b/lisp/ffi/blake3/pkg.lisp Mon Sep 30 22:27:12 2024 -0400
1.3@@ -23,7 +23,8 @@
1.4 :blake3-hasher-update
1.5 :blake3-hasher-finalize
1.6 :blake3-hasher-finalize-seek
1.7- :blake3-hasher-reset))
1.8+ :blake3-hasher-reset
1.9+ :with-blake3-hasher))
1.10
1.11 (in-package :blake3)
1.12
1.13@@ -55,7 +56,7 @@
1.14
1.15 (define-alien-routine blake3-hasher-init-derive-key void
1.16 (self (* blake3-hasher))
1.17- (context (* char)))
1.18+ (context c-string))
1.19
1.20 (define-alien-routine blake3-hasher-init-derive-key-raw void
1.21 (self (* blake3-hasher))
1.22@@ -75,7 +76,12 @@
1.23 (define-alien-routine blake3-hasher-finalize-seek void
1.24 (self (* blake3-hasher))
1.25 (seek (unsigned 64))
1.26- (out (* (unsigned 8)))
1.27+ (out (* unsigned-char))
1.28 (out-len size-t))
1.29
1.30 (define-alien-routine blake3-hasher-reset void (self (* blake3-hasher)))
1.31+
1.32+(defmacro with-blake3-hasher (hvar &body body)
1.33+ `(with-alien ((,hvar blake3-hasher))
1.34+ (blake3-hasher-init ,hvar)
1.35+ ,@body))
2.1--- a/lisp/ffi/blake3/tests.lisp Sun Sep 29 23:43:03 2024 -0400
2.2+++ b/lisp/ffi/blake3/tests.lisp Mon Sep 30 22:27:12 2024 -0400
2.3@@ -14,7 +14,7 @@
2.4 (deftest version ()
2.5 (is (stringp (blake3-version))))
2.6
2.7-(deftest hasher ()
2.8+(deftest common ()
2.9 (with-alien ((h blake3-hasher)
2.10 (o (* (unsigned 8)))
2.11 (olen size-t))
2.12@@ -22,3 +22,14 @@
2.13 (blake3-hasher-update (addr h) nil 0)
2.14 (blake3-hasher-finalize (addr h) o olen)
2.15 (blake3-hasher-reset (addr h))))
2.16+
2.17+(deftest less-common ()
2.18+ (with-alien ((h blake3-hasher)
2.19+ (k (array unsigned-char 32))
2.20+ (ctx (array char 32))
2.21+ (out (array unsigned-char 32)))
2.22+ (blake3-hasher-init-keyed (addr h) k)
2.23+ (blake3-hasher-init-derive-key-raw (addr h) (cast ctx (* t)) 32)
2.24+ (blake3-hasher-finalize-seek (addr h) 2 (cast out (* unsigned-char)) 32)
2.25+ (is (null (blake3-hasher-finalize (addr h) (cast out (* unsigned-char)) 32)))))
2.26+
3.1--- /dev/null Thu Jan 01 00:00:00 1970 +0000
3.2+++ b/lisp/ffi/ublk/aio.lisp Mon Sep 30 22:27:12 2024 -0400
3.3@@ -0,0 +1,12 @@
3.4+;;; aio.lisp --- Ublksrv from non-ublksrv context
3.5+
3.6+;;
3.7+
3.8+;;; Code:
3.9+(in-package :ublk)
3.10+
3.11+(define-alien-type ublksrv-aio-ctx
3.12+ (struct ublksrv-aio-ctx))
3.13+
3.14+(define-alien-type ublksrv-aio
3.15+ (struct ublksrv-aio))
4.1--- a/lisp/ffi/ublk/constants.lisp Sun Sep 29 23:43:03 2024 -0400
4.2+++ b/lisp/ffi/ublk/constants.lisp Mon Sep 30 22:27:12 2024 -0400
4.3@@ -11,6 +11,7 @@
4.4 (:integer +ublksrv-queue-idle+ "UBLKSRV_QUEUE_IDLE" nil t)
4.5 (:integer +ublksrv-queue-ioctl-op+ "UBLKSRV_QUEUE_IOCTL_OP" nil t)
4.6 (:integer +ublksrv-user-copy+ "UBLKSRV_USER_COPY" nil t)
4.7+ (:integer +ublksrv-tgt-name-max-len+ "UBLKSRV_TGT_NAME_MAX_LEN" nil t)
4.8 (:integer +ublksrv-tgt-max-fds+ "UBLKSRV_TGT_MAX_FDS" nil t)
4.9 (:integer ublk-cmd-get-queue-affinity "UBLK_CMD_GET_QUEUE_AFFINITY" nil t)
4.10 (:integer +ublk-cmd-get-dev-info+ "UBLK_CMD_GET_DEV_INFO" nil t)
5.1--- a/lisp/ffi/ublk/srv.lisp Sun Sep 29 23:43:03 2024 -0400
5.2+++ b/lisp/ffi/ublk/srv.lisp Mon Sep 30 22:27:12 2024 -0400
5.3@@ -84,3 +84,217 @@
5.4
5.5 (define-alien-routine ublksrv-ctrl-deinit void
5.6 (dev (* ublksrv-ctrl-dev)))
5.7+
5.8+(define-alien-routine ublksrv-ctrl-init (* ublksrv-ctrl-dev)
5.9+ (data (* ublksrv-dev-data)))
5.10+
5.11+(define-alien-routine ublksrv-ctrl-get-affinity int
5.12+ (ctrl-dev (* ublksrv-ctrl-dev)))
5.13+
5.14+(define-alien-routine ublksrv-ctrl-add-dev int
5.15+ (dev (* ublksrv-ctrl-dev)))
5.16+
5.17+(define-alien-routine ublksrv-ctrl-del-dev int
5.18+ (dev (* ublksrv-ctrl-dev)))
5.19+
5.20+(define-alien-routine ublksrv-ctrl-get-info int
5.21+ (dev (* ublksrv-ctrl-dev)))
5.22+
5.23+(define-alien-routine ublksrv-ctrl-stop-dev int
5.24+ (dev (* ublksrv-ctrl-dev)))
5.25+
5.26+(define-alien-routine ublksrv-ctrl-dump void
5.27+ (dev (* ublksrv-ctrl-dev))
5.28+ (buf (* char)))
5.29+
5.30+(define-alien-routine ublksrv-ctrl-start-dev int
5.31+ (ctrl-dev (* ublksrv-ctrl-dev))
5.32+ (daemon-pid int))
5.33+
5.34+(define-alien-routine ublksrv-ctrl-set-params int
5.35+ (dev (* ublksrv-ctrl-dev))
5.36+ (params (* ublk-params)))
5.37+
5.38+(define-alien-routine ublksrv-ctrl-get-params int
5.39+ (dev (* ublksrv-ctrl-dev))
5.40+ (params (* ublk-params)))
5.41+
5.42+(define-alien-routine ublksrv-ctrl-start-recovery int
5.43+ (dev (* ublksrv-ctrl-dev)))
5.44+
5.45+(define-alien-routine ublksrv-ctrl-end-recovery int
5.46+ (dev (* ublksrv-ctrl-dev))
5.47+ (daemon-pid int))
5.48+
5.49+(define-alien-routine ublksrv-ctrl-get-dev-info (* ublksrv-ctrl-dev-info)
5.50+ (dev (* ublksrv-ctrl-dev)))
5.51+
5.52+(define-alien-routine ublksrv-ctrl-get-features int
5.53+ (dev (* ublksrv-ctrl-dev))
5.54+ (features (* unsigned-long)))
5.55+
5.56+(define-alien-routine ublksrv-ctrl-get-run-dir c-string
5.57+ (dev (* ublksrv-ctrl-dev)))
5.58+
5.59+(define-alien-routine ublksrv-ctrl-prep-recovery void
5.60+ (dev (* ublksrv-ctrl-dev))
5.61+ (tgt-type c-string)
5.62+ (tgt-ops (* ublksrv-tgt-type))
5.63+ (recovery-jbuf c-string))
5.64+
5.65+(define-alien-routine ublksrv-ctrl-get-recovery-jbuf c-string
5.66+ (dev (* ublksrv-ctrl-dev)))
5.67+
5.68+(define-alien-routine ublksrv-is-recovering boolean
5.69+ (ctrl-dev (* ublksrv-ctrl-dev)))
5.70+
5.71+(define-alien-routine ublksrv-dev-init (* ublksrv-dev)
5.72+ (ctrl-dev (* ublksrv-ctrl-dev)))
5.73+
5.74+(define-alien-routine ublksrv-dev-deinit void
5.75+ (dev (* ublksrv-dev)))
5.76+
5.77+(define-alien-routine ublksrv-get-ctrl-dev (* ublksrv-ctrl-dev)
5.78+ (dev (* ublksrv-dev)))
5.79+
5.80+(define-alien-routine ublksrv-get-pidfile-fd int
5.81+ (dev (* ublksrv-dev)))
5.82+
5.83+(define-alien-routine ublksrv-dev-set-cq-depth void
5.84+ (dev (* ublksrv-dev))
5.85+ (cq-depth int))
5.86+
5.87+(define-alien-routine ublksrv-dev-get-cq-depth int
5.88+ (dev (* ublksrv-dev)))
5.89+
5.90+(define-alien-routine ublksrv-apply-oom-protection void)
5.91+
5.92+(define-alien-type ublksrv-tgt-base-json
5.93+ (struct ublksrv-tgt-base-json
5.94+ (name (array char #.+ublksrv-tgt-name-max-len+))
5.95+ (type int)
5.96+ (pad unsigned-int)
5.97+ (dev-size unsigned-long-long)
5.98+ (reserved (array unsigned-long 8))))
5.99+
5.100+(define-alien-routine ublksrv-json-write-dev-info int
5.101+ (dev (* ublksrv-ctrl-dev))
5.102+ (buf (* char))
5.103+ (len int))
5.104+
5.105+(define-alien-routine ublksrv-json-read-dev-info int
5.106+ (json-buf (* char))
5.107+ (info (* ublksrv-ctrl-dev-info)))
5.108+
5.109+(define-alien-routine ublksrv-json-write-queue-info int
5.110+ (dev (* ublksrv-ctrl-dev))
5.111+ (jbuf (* char))
5.112+ (len int)
5.113+ (qid int)
5.114+ (ubq-daemon-tid int))
5.115+
5.116+(define-alien-routine ublksrv-json-read-queue-info int
5.117+ (jbuf (* char))
5.118+ (qid int)
5.119+ (tid (* unsigned))
5.120+ (affinity-buf (* char))
5.121+ (len int))
5.122+
5.123+(define-alien-routine ublksrv-json-read-target-info int
5.124+ (jbuf (* char))
5.125+ (tgt-buf (* char))
5.126+ (len int))
5.127+
5.128+(define-alien-routine ublksrv-json-read-target-str-info int
5.129+ (jbuf (* char))
5.130+ (len int)
5.131+ (name (* char))
5.132+ (val (* long)))
5.133+
5.134+(define-alien-routine ublksrv-json-read-target-ulong-info int
5.135+ (jbuf (* char))
5.136+ (name (* char))
5.137+ (val (* long)))
5.138+
5.139+(define-alien-routine ublksrv-json-write-target-str-info int
5.140+ (jbuf (* char))
5.141+ (len int)
5.142+ (name (* char))
5.143+ (val (* char)))
5.144+
5.145+(define-alien-routine ublksrv-json-write-target-long-info int
5.146+ (jbuf (* char))
5.147+ (len int)
5.148+ (name (* char))
5.149+ (val long))
5.150+
5.151+(define-alien-routine ublksrv-json-write-target-ulong-info int
5.152+ (jbuf (* char))
5.153+ (len int)
5.154+ (name (* char))
5.155+ (val unsigned-long))
5.156+
5.157+(define-alien-routine ublksrv-json-dump void
5.158+ (jbuf (* char)))
5.159+
5.160+(define-alien-routine ublksrv-json-read-target-base-info int
5.161+ (jbuf (* char))
5.162+ (tgt (* ublksrv-tgt-base-json)))
5.163+
5.164+(define-alien-routine ublksrv-json-read-params int
5.165+ (p (* ublk-params))
5.166+ (jbuf (* char)))
5.167+
5.168+(define-alien-routine ublksrv-json-write-params int
5.169+ (p (* ublk-params))
5.170+ (jbuf (* char))
5.171+ (len int))
5.172+
5.173+(define-alien-routine ublksrv-json-dump-params int
5.174+ (jbuf (* char)))
5.175+
5.176+(define-alien-routine ublksrv-json-get-length int (jbuf (* char)))
5.177+
5.178+(define-alien-routine ublksrv-io-private-data (* t)
5.179+ (q (* ublksrv-queue))
5.180+ (tag int))
5.181+
5.182+(define-alien-routine ublksrv-queue-get-io-data (* ublk-io-data)
5.183+ (q (* ublksrv-queue))
5.184+ (tag int))
5.185+
5.186+(define-alien-routine ublksrv-queue-get-io-buf (* t)
5.187+ (q (* ublksrv-queue))
5.188+ (tag int))
5.189+
5.190+(define-alien-routine ublksrv-queue-state unsigned-int
5.191+ (q (* ublksrv-queue)))
5.192+
5.193+(define-alien-routine ublksrv-queue-init (* ublksrv-queue)
5.194+ (dev (* ublksrv-dev))
5.195+ (d-id unsigned-short)
5.196+ (queue-data (* t)))
5.197+
5.198+(define-alien-routine ublksrv-queue-deinit void
5.199+ (q (* ublksrv-queue)))
5.200+
5.201+(define-alien-routine ublksrv-queue-unconsumed-cqes int
5.202+ (q (* ublksrv-queue)))
5.203+
5.204+(define-alien-routine ublksrv-queue-handled-event int
5.205+ (q (* ublksrv-queue)))
5.206+
5.207+(define-alien-routine ublksrv-queue-send-event int
5.208+ (q (* ublksrv-queue)))
5.209+
5.210+(define-alien-routine ublksrv-get-queue (* ublksrv-queue)
5.211+ (dev (* ublksrv-dev))
5.212+ (q-id int))
5.213+
5.214+(define-alien-routine ublksrv-process-io int
5.215+ (q (* ublksrv-queue)))
5.216+
5.217+(define-alien-routine ublksrv-complete-io int
5.218+ (q (* ublksrv-queue))
5.219+ (tag unsigned)
5.220+ (res int))
6.1--- a/lisp/ffi/ublk/tests.lisp Sun Sep 29 23:43:03 2024 -0400
6.2+++ b/lisp/ffi/ublk/tests.lisp Mon Sep 30 22:27:12 2024 -0400
6.3@@ -1,5 +1,9 @@
6.4 ;;; ublk/tests.lisp --- ublk tests
6.5
6.6+;;; Commentary:
6.7+
6.8+;; https://github.com/ublk-org/ublksrv/tree/master/tests
6.9+
6.10 ;;; Code:
6.11 (defpackage :ublk/tests
6.12 (:use :cl :std :rt :ublk :sb-ext :sb-alien))
6.13@@ -12,3 +16,4 @@
6.14 (load-ublksrv)
6.15
6.16 (deftest sanity ())
6.17+
7.1--- a/lisp/ffi/uring/tests.lisp Sun Sep 29 23:43:03 2024 -0400
7.2+++ b/lisp/ffi/uring/tests.lisp Mon Sep 30 22:27:12 2024 -0400
7.3@@ -9,9 +9,8 @@
7.4 (deftest sanity ()
7.5 (is (= 1 (io-uring-check-version (io-uring-major-version) (io-uring-minor-version)))))
7.6
7.7-(deftest params ()
7.8+(deftest params ())
7.9
7.10- )
7.11 (deftest setup ()
7.12 ;; (io-uring-setup
7.13 )