changelog shortlog graph tags branches changeset files revisions annotate raw help

Mercurial > core / lisp/ffi/ublk/pkg.lisp

changeset 434: 37e1822fa6c1
parent: 9ae13b700195
child: 8e16efedfd76
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 09 Jun 2024 22:09:18 -0400
permissions: -rw-r--r--
description: ublk constants and structs
1 ;;; ublk.lisp --- low-level bindings to libulksrv
2 
3 ;;; Commentary:
4 
5 ;;; Code:
6 (defpackage :ublk
7  (:use :cl :std :sb-alien)
8  (:export ))
9 
10 (in-package :ublk)
11 
12 (define-alien-loader "ublksrv" t)
13 
14 (define-alien-type ublksrv-ctrl-cmd
15  (struct ublksrv-ctrl-cmd
16  (dev-id (unsigned 32))
17  (queue-id (unsigned 16))
18  (len (unsigned 16))
19  (addr (unsigned 64))
20  (data (array (unsigned 64) 1))
21  (dev-path-len (unsigned 16))
22  (pad (unsigned 16))
23  (reserved (unsigned 32))))
24 
25 (define-alien-type ublksrv-ctrl-dev-info
26  (struct ublksrv-ctrl-dev-info
27  (nr-hw-queues (unsigned 16))
28  (queue-depth (unsigned 16))
29  (state (unsigned 16))
30  (pad0 (unsigned 16))
31  (max-io-buf-bytes (unsigned 32))
32  (dev-id (unsigned 32))
33  (ublksrv-pid (signed 32))
34  (pad1 (unsigned 32))
35  (flags (unsigned 64))
36  (ublksrv-flags (unsigned 64))
37  (owner-uid (unsigned 32))
38  (owner-gid (unsigned 32))
39  (reserved1 (unsigned 64))
40  (reserved2 (unsigned 64))))
41 
42 (define-alien-type ublksrv-io-cmd
43  (struct ublksrv-io-cmd
44  (q-id (unsigned 16))
45  (tag (unsigned 16))
46  (result (signed 32))
47  (addr (unsigned 64))))
48 
49 (define-alien-type ublk-param-basic
50  (struct ublk-param-basic
51  (attrs (unsigned 32))
52  (logical-bs-shift (unsigned 8))
53  (physical-bs-shift (unsigned 8))
54  (io-opt-shift (unsigned 8))
55  (io-min-shift (unsigned 8))
56  (max-sectors (unsigned 32))
57  (chunk-sectors (unsigned 32))
58  (dev-sectors (unsigned 64))
59  (virt-boundary-mask (unsigned 64))))
60 
61 (define-alien-type ublk-param-discard
62  (struct ublk-param-discard
63  (discard-alignment (unsigned 32))
64  (discard-granularity (unsigned 32))
65  (max-discard-sectors (unsigned 32))
66  (max-write-zeroes-sectors (unsigned 32))
67  (reserved0 (unsigned 16))))
68 
69 (define-alien-type ublk-param-devt
70  (struct ublk-param-devt
71  (char-major (unsigned 32))
72  (char-minor (unsigned 32))
73  (disk-major (unsigned 32))
74  (disk-minor (unsigned 32))))
75 
76 (define-alien-type ublk-params
77  (struct ublk-params
78  (len (unsigned 32))
79  (types (unsigned 32))
80  (basic (struct ublk-param-basic))
81  (discard (struct ublk-param-discard))
82  (devt (struct ublk-param-devt))))
83 
84 ;; (define-alien-type ublksrv-dev-data)