Mercurial > core / lisp/ffi/ublk/srv.lisp
changeset 698: |
96958d3eb5b0 |
parent: |
38e9c3be2392
|
author: |
Richard Westhaver <ellis@rwest.io> |
date: |
Fri, 04 Oct 2024 22:04:59 -0400 |
permissions: |
-rw-r--r-- |
description: |
fixes |
1 ;;; ublk/srv.lisp --- ublksrv API 8 (define-alien-type ublksrv-ctrl-dev (struct ublksrv-ctrl-dev)) 10 (define-alien-type ublksrv-dev-data 11 (struct ublksrv-dev-data 13 (max-io-buf-bytes unsigned) 14 (nr-hw-queues unsigned-short) 15 (queue-depth unsigned-short) 17 (tgt-ops (* ublksrv-tgt-type)) 19 (tgt-argv (* (c-string))) 22 (ublksrv-flags unsigned-long) 23 (reserved (array unsigned-long 7)))) 26 (define-alien-type ublksrv-tgt-info 27 (struct ublksrv-tgt-info 28 (dev-size unsigned-long-long) 29 (tgt-ring-depth unsigned-int) 31 (fds (array int #.+ublksrv-tgt-max-fds+)) 33 (extra-ios unsigned-int) 34 (io-data-size unsigned-int) 35 (ops (* (struct nil))) 36 (iowq-max-workers (array unsigned-int 2)) 37 (reserved (array unsigned-long 4)))) 39 (define-alien-type ublksrv-dev 41 (tgt ublksrv-tgt-info))) 43 (define-alien-type ublksrv-queue 47 (ring-ptr (* io-uring)) 49 (private-data (* t)))) 51 (define-alien-type ublksrv-handle-io-async-function (function int (* ublksrv-queue) (* ublk-io-data))) 52 (define-alien-type ublksrv-tgt-io-done-function (function void (* ublksrv-queue) (* ublk-io-data) (* io-uring-cqe))) 53 (define-alien-type ublksrv-handle-event-function (function void (* ublksrv-queue))) 54 (define-alien-type ublksrv-handle-io-background-function (function void (* ublksrv-queue) int)) 55 (define-alien-type ublksrv-usage-for-add-function (function void)) 56 (define-alien-type ublksrv-init-tgt-function (function int (* ublksrv-dev) int int (array c-string))) 57 (define-alien-type ublksrv-deinit-tgt-function (function void (* ublksrv-dev))) 58 (define-alien-type ublksrv-alloc-io-buf-function (function (* t) (* ublksrv-queue) (* t) int)) 59 (define-alien-type ublksrv-idle-function (function void (* ublksrv-queue) boolean)) 60 (define-alien-type ublksrv-recovery-tgt-function (function int (* ublksrv-dev) int)) 61 (define-alien-type ublksrv-init-queue-function (function int (* ublksrv-dev) (* (* t)))) 62 (define-alien-type ublksrv-deinit-queue-function (function void (* ublksrv-queue))) 64 ;; TODO 2024-09-29: add all of these as callbacks :C 65 (define-alien-type ublksrv-tgt-type 66 (struct ublksrv-tgt-type 67 (handle-io-async (* ublksrv-handle-io-async-function)) 68 (tgt-io-done (* ublksrv-tgt-io-done-function)) 69 (handle-event (* ublksrv-handle-event-function)) 70 (handle-io-background (* ublksrv-handle-io-background-function)) 71 (usage-for-add (* ublksrv-usage-for-add-function)) 72 (init-tgt (* ublksrv-init-tgt-function)) 73 (deinit-tgt (* ublksrv-deinit-tgt-function)) 74 (alloc-io-buf (* ublksrv-alloc-io-buf-function)) 75 (idle-fn (* ublksrv-idle-function)) 78 (ublksrv-flags unsigned) 81 (recovery-tgt (* ublksrv-recovery-tgt-function)) 82 (init-queue (* ublksrv-init-queue-function)) 83 (deinit-queue (* ublksrv-deinit-queue-function)) 84 (reserved (array unsigned-long 5)))) 86 (define-alien-type ublk-io-data 90 (iod (* ublksrv-io-desc)) 91 (private-data (* t)))) 93 (define-alien-routine build-user-data (unsigned 64) 97 (is-target-io unsigned)) 99 (define-alien-routine ublksrv-ctrl-deinit void 100 (dev (* ublksrv-ctrl-dev))) 102 (define-alien-routine ublksrv-ctrl-init (* ublksrv-ctrl-dev) 103 (data (* ublksrv-dev-data))) 105 (define-alien-routine ublksrv-ctrl-get-affinity int 106 (ctrl-dev (* ublksrv-ctrl-dev))) 108 (define-alien-routine ublksrv-ctrl-add-dev int 109 (dev (* ublksrv-ctrl-dev))) 111 (define-alien-routine ublksrv-ctrl-del-dev int 112 (dev (* ublksrv-ctrl-dev))) 114 (define-alien-routine ublksrv-ctrl-get-info int 115 (dev (* ublksrv-ctrl-dev))) 117 (define-alien-routine ublksrv-ctrl-stop-dev int 118 (dev (* ublksrv-ctrl-dev))) 120 (define-alien-routine ublksrv-ctrl-dump void 121 (dev (* ublksrv-ctrl-dev)) 124 (define-alien-routine ublksrv-ctrl-start-dev int 125 (ctrl-dev (* ublksrv-ctrl-dev)) 128 (define-alien-routine ublksrv-ctrl-set-params int 129 (dev (* ublksrv-ctrl-dev)) 130 (params (* ublk-params))) 132 (define-alien-routine ublksrv-ctrl-get-params int 133 (dev (* ublksrv-ctrl-dev)) 134 (params (* ublk-params))) 136 (define-alien-routine ublksrv-ctrl-start-recovery int 137 (dev (* ublksrv-ctrl-dev))) 139 (define-alien-routine ublksrv-ctrl-end-recovery int 140 (dev (* ublksrv-ctrl-dev)) 143 (define-alien-routine ublksrv-ctrl-get-dev-info (* ublksrv-ctrl-dev-info) 144 (dev (* ublksrv-ctrl-dev))) 146 (define-alien-routine ublksrv-ctrl-get-features int 147 (dev (* ublksrv-ctrl-dev)) 148 (features (* unsigned-long))) 150 (define-alien-routine ublksrv-ctrl-get-run-dir c-string 151 (dev (* ublksrv-ctrl-dev))) 153 (define-alien-routine ublksrv-ctrl-prep-recovery void 154 (dev (* ublksrv-ctrl-dev)) 156 (tgt-ops (* ublksrv-tgt-type)) 157 (recovery-jbuf c-string)) 159 (define-alien-routine ublksrv-ctrl-get-recovery-jbuf c-string 160 (dev (* ublksrv-ctrl-dev))) 162 (define-alien-routine ublksrv-is-recovering boolean 163 (ctrl-dev (* ublksrv-ctrl-dev))) 165 (define-alien-routine ublksrv-dev-init (* ublksrv-dev) 166 (ctrl-dev (* ublksrv-ctrl-dev))) 168 (define-alien-routine ublksrv-dev-deinit void 169 (dev (* ublksrv-dev))) 171 (define-alien-routine ublksrv-get-ctrl-dev (* ublksrv-ctrl-dev) 172 (dev (* ublksrv-dev))) 174 (define-alien-routine ublksrv-get-pidfile-fd int 175 (dev (* ublksrv-dev))) 177 (define-alien-routine ublksrv-dev-set-cq-depth void 178 (dev (* ublksrv-dev)) 181 (define-alien-routine ublksrv-dev-get-cq-depth int 182 (dev (* ublksrv-dev))) 184 (define-alien-routine ublksrv-apply-oom-protection void) 186 (define-alien-type ublksrv-tgt-base-json 187 (struct ublksrv-tgt-base-json 188 (name (array char #.+ublksrv-tgt-name-max-len+)) 191 (dev-size unsigned-long-long) 192 (reserved (array unsigned-long 8)))) 194 (define-alien-routine ublksrv-json-write-dev-info int 195 (dev (* ublksrv-ctrl-dev)) 199 (define-alien-routine ublksrv-json-read-dev-info int 201 (info (* ublksrv-ctrl-dev-info))) 203 (define-alien-routine ublksrv-json-write-queue-info int 204 (dev (* ublksrv-ctrl-dev)) 208 (ubq-daemon-tid int)) 210 (define-alien-routine ublksrv-json-read-queue-info int 214 (affinity-buf (* char)) 217 (define-alien-routine ublksrv-json-read-target-info int 222 (define-alien-routine ublksrv-json-read-target-str-info int 228 (define-alien-routine ublksrv-json-read-target-ulong-info int 233 (define-alien-routine ublksrv-json-write-target-str-info int 239 (define-alien-routine ublksrv-json-write-target-long-info int 245 (define-alien-routine ublksrv-json-write-target-ulong-info int 251 (define-alien-routine ublksrv-json-dump void 254 (define-alien-routine ublksrv-json-read-target-base-info int 256 (tgt (* ublksrv-tgt-base-json))) 258 (define-alien-routine ublksrv-json-read-params int 262 (define-alien-routine ublksrv-json-write-params int 267 (define-alien-routine ublksrv-json-dump-params int 270 (define-alien-routine ublksrv-json-get-length int (jbuf (* char))) 272 (define-alien-routine ublksrv-io-private-data (* t) 273 (q (* ublksrv-queue)) 276 (define-alien-routine ublksrv-queue-get-io-data (* ublk-io-data) 277 (q (* ublksrv-queue)) 280 (define-alien-routine ublksrv-queue-get-io-buf (* t) 281 (q (* ublksrv-queue)) 284 (define-alien-routine ublksrv-queue-state unsigned-int 285 (q (* ublksrv-queue))) 287 (define-alien-routine ublksrv-queue-init (* ublksrv-queue) 288 (dev (* ublksrv-dev)) 289 (d-id unsigned-short) 292 (define-alien-routine ublksrv-queue-deinit void 293 (q (* ublksrv-queue))) 295 (define-alien-routine ublksrv-queue-unconsumed-cqes int 296 (q (* ublksrv-queue))) 298 (define-alien-routine ublksrv-queue-handled-event int 299 (q (* ublksrv-queue))) 301 (define-alien-routine ublksrv-queue-send-event int 302 (q (* ublksrv-queue))) 304 (define-alien-routine ublksrv-get-queue (* ublksrv-queue) 305 (dev (* ublksrv-dev)) 308 (define-alien-routine ublksrv-process-io int 309 (q (* ublksrv-queue))) 311 (define-alien-routine ublksrv-complete-io int 312 (q (* ublksrv-queue))