Mercurial > core / lisp/ffi/ublk/srv.lisp
changeset 696: |
38e9c3be2392 |
parent: |
c2f4e7ee921b
|
child: |
96958d3eb5b0 |
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Fri, 04 Oct 2024 21:11:52 -0400 |
permissions: |
-rw-r--r-- |
description: |
prep for adding zdict wrapper, change default control stack size of inferior-lisp to 8M |
1 ;;; ublk/srv.lisp --- ublksrv API 8 (define-alien-type ublksrv-ctrl-dev (struct ublksrv-ctrl-dev)) 9 (define-alien-type ublksrv-tgt-type (struct ublksrv-tgt-type)) 10 ;; TODO 2024-09-29: add all of these as callbacks :C 11 ;; (define-alien-type ublksrv-tgt-type 12 ;; (struct ublksrv-tgt-type 13 ;; (handle-io-async (function int (* ublksrv-queue) (* ublk-io-data))) 14 ;; (tgt-io-done (function void (* ublksrv-queue) (* ublk-io-data) (* io-uring-cqe))) 15 ;; (handle-event (function void (* ublksrv-queue))) 16 ;; (handle-io-background (function void (* ublksrv-queue) int)) 17 ;; (usage-for-add (function void)) 18 ;; (init-tgt (function int (* ublksrv-dev) int int (array c-string))) 19 ;; (deinit-tgt (function void (* ublksrv-dev))) 20 ;; (alloc-io-buf (function (* t) (* ublksrv-queue) (* t) int)) 21 ;; (idle-fn (function void (* ublksrv-queue) bool)) 23 ;; (ublk-flags unsigned) 24 ;; (ublksrv-flags unsigned) 27 ;; (recovery-tgt (function int (* ublksrv-dev) int)) 28 ;; (init-queue (function int (* ublksrv-queue) (* (* t)))) 29 ;; (deinit-queue (function void (* ublksrv-queue))) 30 ;; (reserved (array unsigned-long 5)))) 32 (define-alien-type ublksrv-dev-data 33 (struct ublksrv-dev-data 35 (max-io-buf-bytes unsigned) 36 (nr-hw-queues unsigned-short) 37 (queue-depth unsigned-short) 39 (tgt-ops (* ublksrv-tgt-type)) 41 (tgt-argv (* (c-string))) 44 (ublksrv-flags unsigned-long) 45 (reserved (array unsigned-long 7)))) 47 (define-alien-type ublksrv-tgt-info 48 (struct ublksrv-tgt-info 49 (dev-size unsigned-long-long) 50 (tgt-ring-depth unsigned-int) 52 (fds (array int #.+ublksrv-tgt-max-fds+)) 54 (extra-ios unsigned-int) 55 (io-data-size unsigned-int) 56 (ops (* ublksrv-tgt-type)) 57 (iowq-max-workers (array unsigned-int 2)) 58 (reserved (array unsigned-long 4)))) 60 (define-alien-type ublksrv-dev 62 (tgt ublksrv-tgt-info))) 64 (define-alien-type ublksrv-queue 68 (ring-ptr (* io-uring)) 70 (private-data (* t)))) 72 (define-alien-type ublk-io-data 76 (iod (* ublksrv-io-desc)) 77 (private-data (* t)))) 79 (define-alien-routine build-user-data (unsigned 64) 83 (is-target-io unsigned)) 85 (define-alien-routine ublksrv-ctrl-deinit void 86 (dev (* ublksrv-ctrl-dev))) 88 (define-alien-routine ublksrv-ctrl-init (* ublksrv-ctrl-dev) 89 (data (* ublksrv-dev-data))) 91 (define-alien-routine ublksrv-ctrl-get-affinity int 92 (ctrl-dev (* ublksrv-ctrl-dev))) 94 (define-alien-routine ublksrv-ctrl-add-dev int 95 (dev (* ublksrv-ctrl-dev))) 97 (define-alien-routine ublksrv-ctrl-del-dev int 98 (dev (* ublksrv-ctrl-dev))) 100 (define-alien-routine ublksrv-ctrl-get-info int 101 (dev (* ublksrv-ctrl-dev))) 103 (define-alien-routine ublksrv-ctrl-stop-dev int 104 (dev (* ublksrv-ctrl-dev))) 106 (define-alien-routine ublksrv-ctrl-dump void 107 (dev (* ublksrv-ctrl-dev)) 110 (define-alien-routine ublksrv-ctrl-start-dev int 111 (ctrl-dev (* ublksrv-ctrl-dev)) 114 (define-alien-routine ublksrv-ctrl-set-params int 115 (dev (* ublksrv-ctrl-dev)) 116 (params (* ublk-params))) 118 (define-alien-routine ublksrv-ctrl-get-params int 119 (dev (* ublksrv-ctrl-dev)) 120 (params (* ublk-params))) 122 (define-alien-routine ublksrv-ctrl-start-recovery int 123 (dev (* ublksrv-ctrl-dev))) 125 (define-alien-routine ublksrv-ctrl-end-recovery int 126 (dev (* ublksrv-ctrl-dev)) 129 (define-alien-routine ublksrv-ctrl-get-dev-info (* ublksrv-ctrl-dev-info) 130 (dev (* ublksrv-ctrl-dev))) 132 (define-alien-routine ublksrv-ctrl-get-features int 133 (dev (* ublksrv-ctrl-dev)) 134 (features (* unsigned-long))) 136 (define-alien-routine ublksrv-ctrl-get-run-dir c-string 137 (dev (* ublksrv-ctrl-dev))) 139 (define-alien-routine ublksrv-ctrl-prep-recovery void 140 (dev (* ublksrv-ctrl-dev)) 142 (tgt-ops (* ublksrv-tgt-type)) 143 (recovery-jbuf c-string)) 145 (define-alien-routine ublksrv-ctrl-get-recovery-jbuf c-string 146 (dev (* ublksrv-ctrl-dev))) 148 (define-alien-routine ublksrv-is-recovering boolean 149 (ctrl-dev (* ublksrv-ctrl-dev))) 151 (define-alien-routine ublksrv-dev-init (* ublksrv-dev) 152 (ctrl-dev (* ublksrv-ctrl-dev))) 154 (define-alien-routine ublksrv-dev-deinit void 155 (dev (* ublksrv-dev))) 157 (define-alien-routine ublksrv-get-ctrl-dev (* ublksrv-ctrl-dev) 158 (dev (* ublksrv-dev))) 160 (define-alien-routine ublksrv-get-pidfile-fd int 161 (dev (* ublksrv-dev))) 163 (define-alien-routine ublksrv-dev-set-cq-depth void 164 (dev (* ublksrv-dev)) 167 (define-alien-routine ublksrv-dev-get-cq-depth int 168 (dev (* ublksrv-dev))) 170 (define-alien-routine ublksrv-apply-oom-protection void) 172 (define-alien-type ublksrv-tgt-base-json 173 (struct ublksrv-tgt-base-json 174 (name (array char #.+ublksrv-tgt-name-max-len+)) 177 (dev-size unsigned-long-long) 178 (reserved (array unsigned-long 8)))) 180 (define-alien-routine ublksrv-json-write-dev-info int 181 (dev (* ublksrv-ctrl-dev)) 185 (define-alien-routine ublksrv-json-read-dev-info int 187 (info (* ublksrv-ctrl-dev-info))) 189 (define-alien-routine ublksrv-json-write-queue-info int 190 (dev (* ublksrv-ctrl-dev)) 194 (ubq-daemon-tid int)) 196 (define-alien-routine ublksrv-json-read-queue-info int 200 (affinity-buf (* char)) 203 (define-alien-routine ublksrv-json-read-target-info int 208 (define-alien-routine ublksrv-json-read-target-str-info int 214 (define-alien-routine ublksrv-json-read-target-ulong-info int 219 (define-alien-routine ublksrv-json-write-target-str-info int 225 (define-alien-routine ublksrv-json-write-target-long-info int 231 (define-alien-routine ublksrv-json-write-target-ulong-info int 237 (define-alien-routine ublksrv-json-dump void 240 (define-alien-routine ublksrv-json-read-target-base-info int 242 (tgt (* ublksrv-tgt-base-json))) 244 (define-alien-routine ublksrv-json-read-params int 248 (define-alien-routine ublksrv-json-write-params int 253 (define-alien-routine ublksrv-json-dump-params int 256 (define-alien-routine ublksrv-json-get-length int (jbuf (* char))) 258 (define-alien-routine ublksrv-io-private-data (* t) 259 (q (* ublksrv-queue)) 262 (define-alien-routine ublksrv-queue-get-io-data (* ublk-io-data) 263 (q (* ublksrv-queue)) 266 (define-alien-routine ublksrv-queue-get-io-buf (* t) 267 (q (* ublksrv-queue)) 270 (define-alien-routine ublksrv-queue-state unsigned-int 271 (q (* ublksrv-queue))) 273 (define-alien-routine ublksrv-queue-init (* ublksrv-queue) 274 (dev (* ublksrv-dev)) 275 (d-id unsigned-short) 278 (define-alien-routine ublksrv-queue-deinit void 279 (q (* ublksrv-queue))) 281 (define-alien-routine ublksrv-queue-unconsumed-cqes int 282 (q (* ublksrv-queue))) 284 (define-alien-routine ublksrv-queue-handled-event int 285 (q (* ublksrv-queue))) 287 (define-alien-routine ublksrv-queue-send-event int 288 (q (* ublksrv-queue))) 290 (define-alien-routine ublksrv-get-queue (* ublksrv-queue) 291 (dev (* ublksrv-dev)) 294 (define-alien-routine ublksrv-process-io int 295 (q (* ublksrv-queue))) 297 (define-alien-routine ublksrv-complete-io int 298 (q (* ublksrv-queue))