# HG changeset patch # User Richard Westhaver # Date 1727749632 14400 # Node ID c2f4e7ee921ba420687dc3bf9bf4eb6887b95d4d # Parent 8e16efedfd765ab76c4103753e20cf0f27fb8bde ffi diff -r 8e16efedfd76 -r c2f4e7ee921b lisp/ffi/blake3/pkg.lisp --- a/lisp/ffi/blake3/pkg.lisp Sun Sep 29 23:43:03 2024 -0400 +++ b/lisp/ffi/blake3/pkg.lisp Mon Sep 30 22:27:12 2024 -0400 @@ -23,7 +23,8 @@ :blake3-hasher-update :blake3-hasher-finalize :blake3-hasher-finalize-seek - :blake3-hasher-reset)) + :blake3-hasher-reset + :with-blake3-hasher)) (in-package :blake3) @@ -55,7 +56,7 @@ (define-alien-routine blake3-hasher-init-derive-key void (self (* blake3-hasher)) - (context (* char))) + (context c-string)) (define-alien-routine blake3-hasher-init-derive-key-raw void (self (* blake3-hasher)) @@ -75,7 +76,12 @@ (define-alien-routine blake3-hasher-finalize-seek void (self (* blake3-hasher)) (seek (unsigned 64)) - (out (* (unsigned 8))) + (out (* unsigned-char)) (out-len size-t)) (define-alien-routine blake3-hasher-reset void (self (* blake3-hasher))) + +(defmacro with-blake3-hasher (hvar &body body) + `(with-alien ((,hvar blake3-hasher)) + (blake3-hasher-init ,hvar) + ,@body)) diff -r 8e16efedfd76 -r c2f4e7ee921b lisp/ffi/blake3/tests.lisp --- a/lisp/ffi/blake3/tests.lisp Sun Sep 29 23:43:03 2024 -0400 +++ b/lisp/ffi/blake3/tests.lisp Mon Sep 30 22:27:12 2024 -0400 @@ -14,7 +14,7 @@ (deftest version () (is (stringp (blake3-version)))) -(deftest hasher () +(deftest common () (with-alien ((h blake3-hasher) (o (* (unsigned 8))) (olen size-t)) @@ -22,3 +22,14 @@ (blake3-hasher-update (addr h) nil 0) (blake3-hasher-finalize (addr h) o olen) (blake3-hasher-reset (addr h)))) + +(deftest less-common () + (with-alien ((h blake3-hasher) + (k (array unsigned-char 32)) + (ctx (array char 32)) + (out (array unsigned-char 32))) + (blake3-hasher-init-keyed (addr h) k) + (blake3-hasher-init-derive-key-raw (addr h) (cast ctx (* t)) 32) + (blake3-hasher-finalize-seek (addr h) 2 (cast out (* unsigned-char)) 32) + (is (null (blake3-hasher-finalize (addr h) (cast out (* unsigned-char)) 32))))) + diff -r 8e16efedfd76 -r c2f4e7ee921b lisp/ffi/ublk/aio.lisp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/ffi/ublk/aio.lisp Mon Sep 30 22:27:12 2024 -0400 @@ -0,0 +1,12 @@ +;;; aio.lisp --- Ublksrv from non-ublksrv context + +;; + +;;; Code: +(in-package :ublk) + +(define-alien-type ublksrv-aio-ctx + (struct ublksrv-aio-ctx)) + +(define-alien-type ublksrv-aio + (struct ublksrv-aio)) diff -r 8e16efedfd76 -r c2f4e7ee921b lisp/ffi/ublk/constants.lisp --- a/lisp/ffi/ublk/constants.lisp Sun Sep 29 23:43:03 2024 -0400 +++ b/lisp/ffi/ublk/constants.lisp Mon Sep 30 22:27:12 2024 -0400 @@ -11,6 +11,7 @@ (:integer +ublksrv-queue-idle+ "UBLKSRV_QUEUE_IDLE" nil t) (:integer +ublksrv-queue-ioctl-op+ "UBLKSRV_QUEUE_IOCTL_OP" nil t) (:integer +ublksrv-user-copy+ "UBLKSRV_USER_COPY" nil t) + (:integer +ublksrv-tgt-name-max-len+ "UBLKSRV_TGT_NAME_MAX_LEN" nil t) (:integer +ublksrv-tgt-max-fds+ "UBLKSRV_TGT_MAX_FDS" nil t) (:integer ublk-cmd-get-queue-affinity "UBLK_CMD_GET_QUEUE_AFFINITY" nil t) (:integer +ublk-cmd-get-dev-info+ "UBLK_CMD_GET_DEV_INFO" nil t) diff -r 8e16efedfd76 -r c2f4e7ee921b lisp/ffi/ublk/srv.lisp --- a/lisp/ffi/ublk/srv.lisp Sun Sep 29 23:43:03 2024 -0400 +++ b/lisp/ffi/ublk/srv.lisp Mon Sep 30 22:27:12 2024 -0400 @@ -84,3 +84,217 @@ (define-alien-routine ublksrv-ctrl-deinit void (dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-ctrl-init (* ublksrv-ctrl-dev) + (data (* ublksrv-dev-data))) + +(define-alien-routine ublksrv-ctrl-get-affinity int + (ctrl-dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-ctrl-add-dev int + (dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-ctrl-del-dev int + (dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-ctrl-get-info int + (dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-ctrl-stop-dev int + (dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-ctrl-dump void + (dev (* ublksrv-ctrl-dev)) + (buf (* char))) + +(define-alien-routine ublksrv-ctrl-start-dev int + (ctrl-dev (* ublksrv-ctrl-dev)) + (daemon-pid int)) + +(define-alien-routine ublksrv-ctrl-set-params int + (dev (* ublksrv-ctrl-dev)) + (params (* ublk-params))) + +(define-alien-routine ublksrv-ctrl-get-params int + (dev (* ublksrv-ctrl-dev)) + (params (* ublk-params))) + +(define-alien-routine ublksrv-ctrl-start-recovery int + (dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-ctrl-end-recovery int + (dev (* ublksrv-ctrl-dev)) + (daemon-pid int)) + +(define-alien-routine ublksrv-ctrl-get-dev-info (* ublksrv-ctrl-dev-info) + (dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-ctrl-get-features int + (dev (* ublksrv-ctrl-dev)) + (features (* unsigned-long))) + +(define-alien-routine ublksrv-ctrl-get-run-dir c-string + (dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-ctrl-prep-recovery void + (dev (* ublksrv-ctrl-dev)) + (tgt-type c-string) + (tgt-ops (* ublksrv-tgt-type)) + (recovery-jbuf c-string)) + +(define-alien-routine ublksrv-ctrl-get-recovery-jbuf c-string + (dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-is-recovering boolean + (ctrl-dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-dev-init (* ublksrv-dev) + (ctrl-dev (* ublksrv-ctrl-dev))) + +(define-alien-routine ublksrv-dev-deinit void + (dev (* ublksrv-dev))) + +(define-alien-routine ublksrv-get-ctrl-dev (* ublksrv-ctrl-dev) + (dev (* ublksrv-dev))) + +(define-alien-routine ublksrv-get-pidfile-fd int + (dev (* ublksrv-dev))) + +(define-alien-routine ublksrv-dev-set-cq-depth void + (dev (* ublksrv-dev)) + (cq-depth int)) + +(define-alien-routine ublksrv-dev-get-cq-depth int + (dev (* ublksrv-dev))) + +(define-alien-routine ublksrv-apply-oom-protection void) + +(define-alien-type ublksrv-tgt-base-json + (struct ublksrv-tgt-base-json + (name (array char #.+ublksrv-tgt-name-max-len+)) + (type int) + (pad unsigned-int) + (dev-size unsigned-long-long) + (reserved (array unsigned-long 8)))) + +(define-alien-routine ublksrv-json-write-dev-info int + (dev (* ublksrv-ctrl-dev)) + (buf (* char)) + (len int)) + +(define-alien-routine ublksrv-json-read-dev-info int + (json-buf (* char)) + (info (* ublksrv-ctrl-dev-info))) + +(define-alien-routine ublksrv-json-write-queue-info int + (dev (* ublksrv-ctrl-dev)) + (jbuf (* char)) + (len int) + (qid int) + (ubq-daemon-tid int)) + +(define-alien-routine ublksrv-json-read-queue-info int + (jbuf (* char)) + (qid int) + (tid (* unsigned)) + (affinity-buf (* char)) + (len int)) + +(define-alien-routine ublksrv-json-read-target-info int + (jbuf (* char)) + (tgt-buf (* char)) + (len int)) + +(define-alien-routine ublksrv-json-read-target-str-info int + (jbuf (* char)) + (len int) + (name (* char)) + (val (* long))) + +(define-alien-routine ublksrv-json-read-target-ulong-info int + (jbuf (* char)) + (name (* char)) + (val (* long))) + +(define-alien-routine ublksrv-json-write-target-str-info int + (jbuf (* char)) + (len int) + (name (* char)) + (val (* char))) + +(define-alien-routine ublksrv-json-write-target-long-info int + (jbuf (* char)) + (len int) + (name (* char)) + (val long)) + +(define-alien-routine ublksrv-json-write-target-ulong-info int + (jbuf (* char)) + (len int) + (name (* char)) + (val unsigned-long)) + +(define-alien-routine ublksrv-json-dump void + (jbuf (* char))) + +(define-alien-routine ublksrv-json-read-target-base-info int + (jbuf (* char)) + (tgt (* ublksrv-tgt-base-json))) + +(define-alien-routine ublksrv-json-read-params int + (p (* ublk-params)) + (jbuf (* char))) + +(define-alien-routine ublksrv-json-write-params int + (p (* ublk-params)) + (jbuf (* char)) + (len int)) + +(define-alien-routine ublksrv-json-dump-params int + (jbuf (* char))) + +(define-alien-routine ublksrv-json-get-length int (jbuf (* char))) + +(define-alien-routine ublksrv-io-private-data (* t) + (q (* ublksrv-queue)) + (tag int)) + +(define-alien-routine ublksrv-queue-get-io-data (* ublk-io-data) + (q (* ublksrv-queue)) + (tag int)) + +(define-alien-routine ublksrv-queue-get-io-buf (* t) + (q (* ublksrv-queue)) + (tag int)) + +(define-alien-routine ublksrv-queue-state unsigned-int + (q (* ublksrv-queue))) + +(define-alien-routine ublksrv-queue-init (* ublksrv-queue) + (dev (* ublksrv-dev)) + (d-id unsigned-short) + (queue-data (* t))) + +(define-alien-routine ublksrv-queue-deinit void + (q (* ublksrv-queue))) + +(define-alien-routine ublksrv-queue-unconsumed-cqes int + (q (* ublksrv-queue))) + +(define-alien-routine ublksrv-queue-handled-event int + (q (* ublksrv-queue))) + +(define-alien-routine ublksrv-queue-send-event int + (q (* ublksrv-queue))) + +(define-alien-routine ublksrv-get-queue (* ublksrv-queue) + (dev (* ublksrv-dev)) + (q-id int)) + +(define-alien-routine ublksrv-process-io int + (q (* ublksrv-queue))) + +(define-alien-routine ublksrv-complete-io int + (q (* ublksrv-queue)) + (tag unsigned) + (res int)) diff -r 8e16efedfd76 -r c2f4e7ee921b lisp/ffi/ublk/tests.lisp --- a/lisp/ffi/ublk/tests.lisp Sun Sep 29 23:43:03 2024 -0400 +++ b/lisp/ffi/ublk/tests.lisp Mon Sep 30 22:27:12 2024 -0400 @@ -1,5 +1,9 @@ ;;; ublk/tests.lisp --- ublk tests +;;; Commentary: + +;; https://github.com/ublk-org/ublksrv/tree/master/tests + ;;; Code: (defpackage :ublk/tests (:use :cl :std :rt :ublk :sb-ext :sb-alien)) @@ -12,3 +16,4 @@ (load-ublksrv) (deftest sanity ()) + diff -r 8e16efedfd76 -r c2f4e7ee921b lisp/ffi/uring/tests.lisp --- a/lisp/ffi/uring/tests.lisp Sun Sep 29 23:43:03 2024 -0400 +++ b/lisp/ffi/uring/tests.lisp Mon Sep 30 22:27:12 2024 -0400 @@ -9,9 +9,8 @@ (deftest sanity () (is (= 1 (io-uring-check-version (io-uring-major-version) (io-uring-minor-version))))) -(deftest params () +(deftest params ()) - ) (deftest setup () ;; (io-uring-setup )