changelog shortlog graph tags branches files raw help

Mercurial > core / changeset: ffi

changeset 687: c2f4e7ee921b
parent 686: 8e16efedfd76
child 688: 517c65b51e6b
author: Richard Westhaver <ellis@rwest.io>
date: Mon, 30 Sep 2024 22:27:12 -0400
files: lisp/ffi/blake3/pkg.lisp lisp/ffi/blake3/tests.lisp lisp/ffi/ublk/aio.lisp lisp/ffi/ublk/constants.lisp lisp/ffi/ublk/srv.lisp lisp/ffi/ublk/tests.lisp lisp/ffi/uring/tests.lisp
description: ffi
     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   )