Skip to content

Commit 874d2b6

Browse files
Martin Belangerigaw
authored andcommitted
libnvme: prep accessor annotations and generator for Python bindings redesign
Optimize !generate-accessors struct-level defaults in private.h to minimize per-member override annotations (libnvme_path → read=custom,write=none; libnvme_ctrl and libnvme_subsystem → read=generated,write=none). Extend generate-accessors.py to handle multi-word types (enum tag, unsigned int, unsigned long long) and fixed-size scalar arrays, generating memcpy-based setters and const-pointer getters with size-aware KernelDoc. Regenerate accessors.{h,c,ld}, nvme-swig-accessors.i, nvme.i accordingly. Signed-off-by: Martin Belanger <martin.belanger@dell.com> Assisted-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 9a9f4d3 commit 874d2b6

10 files changed

Lines changed: 400 additions & 260 deletions

File tree

libnvme/libnvme/nvme-swig-accessors.i

Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -66,26 +66,31 @@
6666
#define libnvme_path_grpid_set libnvme_path_set_grpid
6767

6868
/* struct libnvme_ns */
69-
#define libnvme_ns_nsid_get libnvme_ns_get_nsid
70-
#define libnvme_ns_name_get libnvme_ns_get_name
71-
#define libnvme_ns_sysfs_dir_get libnvme_ns_get_sysfs_dir
72-
#define libnvme_ns_lba_shift_get libnvme_ns_get_lba_shift
73-
#define libnvme_ns_lba_size_get libnvme_ns_get_lba_size
74-
#define libnvme_ns_meta_size_get libnvme_ns_get_meta_size
75-
#define libnvme_ns_lba_count_get libnvme_ns_get_lba_count
76-
#define libnvme_ns_lba_util_get libnvme_ns_get_lba_util
77-
#define libnvme_ns_nsid_set libnvme_ns_set_nsid
78-
#define libnvme_ns_name_set libnvme_ns_set_name
79-
#define libnvme_ns_sysfs_dir_set libnvme_ns_set_sysfs_dir
80-
#define libnvme_ns_lba_shift_set libnvme_ns_set_lba_shift
81-
#define libnvme_ns_lba_size_set libnvme_ns_set_lba_size
82-
#define libnvme_ns_meta_size_set libnvme_ns_set_meta_size
83-
#define libnvme_ns_lba_count_set libnvme_ns_set_lba_count
84-
#define libnvme_ns_lba_util_set libnvme_ns_set_lba_util
69+
#define libnvme_ns_nsid_get libnvme_ns_get_nsid
70+
#define libnvme_ns_name_get libnvme_ns_get_name
71+
#define libnvme_ns_generic_name_get libnvme_ns_get_generic_name
72+
#define libnvme_ns_sysfs_dir_get libnvme_ns_get_sysfs_dir
73+
#define libnvme_ns_lba_shift_get libnvme_ns_get_lba_shift
74+
#define libnvme_ns_lba_size_get libnvme_ns_get_lba_size
75+
#define libnvme_ns_meta_size_get libnvme_ns_get_meta_size
76+
#define libnvme_ns_lba_count_get libnvme_ns_get_lba_count
77+
#define libnvme_ns_lba_util_get libnvme_ns_get_lba_util
78+
#define libnvme_ns_eui64_get libnvme_ns_get_eui64
79+
#define libnvme_ns_nguid_get libnvme_ns_get_nguid
80+
#define libnvme_ns_csi_get libnvme_ns_get_csi
81+
#define libnvme_ns_nsid_set libnvme_ns_set_nsid
82+
#define libnvme_ns_name_set libnvme_ns_set_name
83+
#define libnvme_ns_sysfs_dir_set libnvme_ns_set_sysfs_dir
84+
#define libnvme_ns_lba_shift_set libnvme_ns_set_lba_shift
85+
#define libnvme_ns_lba_size_set libnvme_ns_set_lba_size
86+
#define libnvme_ns_meta_size_set libnvme_ns_set_meta_size
87+
#define libnvme_ns_lba_count_set libnvme_ns_set_lba_count
88+
#define libnvme_ns_lba_util_set libnvme_ns_set_lba_util
8589

8690
/* struct libnvme_ctrl */
8791
#define libnvme_ctrl_name_get libnvme_ctrl_get_name
8892
#define libnvme_ctrl_sysfs_dir_get libnvme_ctrl_get_sysfs_dir
93+
#define libnvme_ctrl_address_get libnvme_ctrl_get_address
8994
#define libnvme_ctrl_firmware_get libnvme_ctrl_get_firmware
9095
#define libnvme_ctrl_model_get libnvme_ctrl_get_model
9196
#define libnvme_ctrl_numa_node_get libnvme_ctrl_get_numa_node
@@ -133,14 +138,12 @@
133138
#define libnvme_subsystem_application_set libnvme_subsystem_set_application
134139

135140
/* struct libnvme_host */
136-
#define libnvme_host_hostnqn_get libnvme_host_get_hostnqn
137-
#define libnvme_host_hostid_get libnvme_host_get_hostid
138-
#define libnvme_host_dhchap_host_key_get libnvme_host_get_dhchap_host_key
139-
#define libnvme_host_hostsymname_get libnvme_host_get_hostsymname
140-
#define libnvme_host_pdc_enabled_valid_get libnvme_host_get_pdc_enabled_valid
141-
#define libnvme_host_dhchap_host_key_set libnvme_host_set_dhchap_host_key
142-
#define libnvme_host_hostsymname_set libnvme_host_set_hostsymname
143-
#define libnvme_host_pdc_enabled_valid_set libnvme_host_set_pdc_enabled_valid
141+
#define libnvme_host_hostnqn_get libnvme_host_get_hostnqn
142+
#define libnvme_host_hostid_get libnvme_host_get_hostid
143+
#define libnvme_host_dhchap_host_key_get libnvme_host_get_dhchap_host_key
144+
#define libnvme_host_hostsymname_get libnvme_host_get_hostsymname
145+
#define libnvme_host_dhchap_host_key_set libnvme_host_set_dhchap_host_key
146+
#define libnvme_host_hostsymname_set libnvme_host_set_hostsymname
144147

145148
/* struct libnvme_fabric_options */
146149
#define libnvme_fabric_options_cntlid_get libnvme_fabric_options_get_cntlid

libnvme/libnvme/nvme.i

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ static inline PyObject *Py_NewRef(PyObject *obj)
5454
* "struct_member_[set|get]" and libnvme's API naming convention
5555
* "struct_[set|get]_member.
5656
*/
57-
#define libnvme_ctrl_address_get libnvme_ctrl_get_traddr
57+
#define libnvme_ctrl_address_get libnvme_ctrl_get_address
5858
#define libnvme_ctrl_command_error_count_get libnvme_ctrl_get_command_error_count
5959
#define libnvme_ctrl_reconnect_count_get libnvme_ctrl_get_reconnect_count
6060
#define libnvme_ctrl_reset_count_get libnvme_ctrl_get_reset_count

libnvme/src/accessors.ld

Lines changed: 131 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# SPDX-License-Identifier: LGPL-2.1-or-later
22

3-
/**
3+
/*
44
* This file is part of libnvme.
55
*
66
* Copyright (c) 2025, Dell Technologies Inc. or its subsidiaries.
@@ -10,175 +10,178 @@
1010

1111
LIBNVME_ACCESSORS_3 {
1212
global:
13-
libnvme_ctrl_get_cntlid;
14-
libnvme_ctrl_get_cntrltype;
15-
libnvme_ctrl_get_dctype;
16-
libnvme_ctrl_get_dhchap_ctrl_key;
17-
libnvme_ctrl_get_dhchap_host_key;
18-
libnvme_ctrl_get_discovered;
19-
libnvme_ctrl_get_discovery_ctrl;
13+
libnvme_fabrics_config_get_queue_size;
14+
libnvme_fabrics_config_set_queue_size;
15+
libnvme_fabrics_config_get_nr_io_queues;
16+
libnvme_fabrics_config_set_nr_io_queues;
17+
libnvme_fabrics_config_get_reconnect_delay;
18+
libnvme_fabrics_config_set_reconnect_delay;
19+
libnvme_fabrics_config_get_ctrl_loss_tmo;
20+
libnvme_fabrics_config_set_ctrl_loss_tmo;
21+
libnvme_fabrics_config_get_fast_io_fail_tmo;
22+
libnvme_fabrics_config_set_fast_io_fail_tmo;
23+
libnvme_fabrics_config_get_keep_alive_tmo;
24+
libnvme_fabrics_config_set_keep_alive_tmo;
25+
libnvme_fabrics_config_get_nr_write_queues;
26+
libnvme_fabrics_config_set_nr_write_queues;
27+
libnvme_fabrics_config_get_nr_poll_queues;
28+
libnvme_fabrics_config_set_nr_poll_queues;
29+
libnvme_fabrics_config_get_tos;
30+
libnvme_fabrics_config_set_tos;
31+
libnvme_fabrics_config_get_keyring_id;
32+
libnvme_fabrics_config_set_keyring_id;
33+
libnvme_fabrics_config_get_tls_key_id;
34+
libnvme_fabrics_config_set_tls_key_id;
35+
libnvme_fabrics_config_get_tls_configured_key_id;
36+
libnvme_fabrics_config_set_tls_configured_key_id;
37+
libnvme_fabrics_config_get_duplicate_connect;
38+
libnvme_fabrics_config_set_duplicate_connect;
39+
libnvme_fabrics_config_get_disable_sqflow;
40+
libnvme_fabrics_config_set_disable_sqflow;
41+
libnvme_fabrics_config_get_hdr_digest;
42+
libnvme_fabrics_config_set_hdr_digest;
43+
libnvme_fabrics_config_get_data_digest;
44+
libnvme_fabrics_config_set_data_digest;
45+
libnvme_fabrics_config_get_tls;
46+
libnvme_fabrics_config_set_tls;
47+
libnvme_fabrics_config_get_concat;
48+
libnvme_fabrics_config_set_concat;
49+
libnvme_path_get_name;
50+
libnvme_path_set_name;
51+
libnvme_path_get_sysfs_dir;
52+
libnvme_path_set_sysfs_dir;
53+
libnvme_path_get_grpid;
54+
libnvme_path_set_grpid;
55+
libnvme_ns_get_nsid;
56+
libnvme_ns_set_nsid;
57+
libnvme_ns_get_name;
58+
libnvme_ns_set_name;
59+
libnvme_ns_get_generic_name;
60+
libnvme_ns_get_sysfs_dir;
61+
libnvme_ns_set_sysfs_dir;
62+
libnvme_ns_get_lba_shift;
63+
libnvme_ns_set_lba_shift;
64+
libnvme_ns_get_lba_size;
65+
libnvme_ns_set_lba_size;
66+
libnvme_ns_get_meta_size;
67+
libnvme_ns_set_meta_size;
68+
libnvme_ns_get_lba_count;
69+
libnvme_ns_set_lba_count;
70+
libnvme_ns_get_lba_util;
71+
libnvme_ns_set_lba_util;
72+
libnvme_ns_get_eui64;
73+
libnvme_ns_get_nguid;
74+
libnvme_ns_get_csi;
75+
libnvme_ctrl_get_name;
76+
libnvme_ctrl_get_sysfs_dir;
77+
libnvme_ctrl_get_address;
2078
libnvme_ctrl_get_firmware;
21-
libnvme_ctrl_get_host_iface;
22-
libnvme_ctrl_get_host_traddr;
23-
libnvme_ctrl_get_keyring;
2479
libnvme_ctrl_get_model;
25-
libnvme_ctrl_get_name;
2680
libnvme_ctrl_get_numa_node;
27-
libnvme_ctrl_get_persistent;
28-
libnvme_ctrl_get_phy_slot;
2981
libnvme_ctrl_get_queue_count;
3082
libnvme_ctrl_get_serial;
3183
libnvme_ctrl_get_sqsize;
84+
libnvme_ctrl_get_transport;
3285
libnvme_ctrl_get_subsysnqn;
33-
libnvme_ctrl_get_sysfs_dir;
34-
libnvme_ctrl_get_tls_key;
35-
libnvme_ctrl_get_tls_key_identity;
3686
libnvme_ctrl_get_traddr;
37-
libnvme_ctrl_get_transport;
3887
libnvme_ctrl_get_trsvcid;
39-
libnvme_ctrl_get_unique_discovery_ctrl;
40-
libnvme_ctrl_set_dhchap_ctrl_key;
88+
libnvme_ctrl_get_dhchap_host_key;
4189
libnvme_ctrl_set_dhchap_host_key;
42-
libnvme_ctrl_set_discovered;
43-
libnvme_ctrl_set_discovery_ctrl;
90+
libnvme_ctrl_get_dhchap_ctrl_key;
91+
libnvme_ctrl_set_dhchap_ctrl_key;
92+
libnvme_ctrl_get_keyring;
4493
libnvme_ctrl_set_keyring;
45-
libnvme_ctrl_set_persistent;
46-
libnvme_ctrl_set_tls_key;
94+
libnvme_ctrl_get_tls_key_identity;
4795
libnvme_ctrl_set_tls_key_identity;
96+
libnvme_ctrl_get_tls_key;
97+
libnvme_ctrl_set_tls_key;
98+
libnvme_ctrl_get_cntrltype;
99+
libnvme_ctrl_get_cntlid;
100+
libnvme_ctrl_get_dctype;
101+
libnvme_ctrl_get_phy_slot;
102+
libnvme_ctrl_get_host_traddr;
103+
libnvme_ctrl_get_host_iface;
104+
libnvme_ctrl_get_discovery_ctrl;
105+
libnvme_ctrl_set_discovery_ctrl;
106+
libnvme_ctrl_get_unique_discovery_ctrl;
48107
libnvme_ctrl_set_unique_discovery_ctrl;
108+
libnvme_ctrl_get_discovered;
109+
libnvme_ctrl_set_discovered;
110+
libnvme_ctrl_get_persistent;
111+
libnvme_ctrl_set_persistent;
112+
libnvme_subsystem_get_name;
113+
libnvme_subsystem_get_sysfs_dir;
114+
libnvme_subsystem_get_subsysnqn;
115+
libnvme_subsystem_get_model;
116+
libnvme_subsystem_get_serial;
117+
libnvme_subsystem_get_firmware;
118+
libnvme_subsystem_get_subsystype;
119+
libnvme_subsystem_get_application;
120+
libnvme_subsystem_set_application;
121+
libnvme_host_get_hostnqn;
122+
libnvme_host_get_hostid;
123+
libnvme_host_get_dhchap_host_key;
124+
libnvme_host_set_dhchap_host_key;
125+
libnvme_host_get_hostsymname;
126+
libnvme_host_set_hostsymname;
49127
libnvme_fabric_options_get_cntlid;
50-
libnvme_fabric_options_get_concat;
51-
libnvme_fabric_options_get_ctrl_loss_tmo;
52-
libnvme_fabric_options_get_data_digest;
53-
libnvme_fabric_options_get_dhchap_ctrl_secret;
54-
libnvme_fabric_options_get_dhchap_secret;
55-
libnvme_fabric_options_get_disable_sqflow;
56-
libnvme_fabric_options_get_discovery;
57-
libnvme_fabric_options_get_duplicate_connect;
58-
libnvme_fabric_options_get_fast_io_fail_tmo;
59-
libnvme_fabric_options_get_hdr_digest;
60-
libnvme_fabric_options_get_host_iface;
61-
libnvme_fabric_options_get_host_traddr;
62-
libnvme_fabric_options_get_hostid;
63-
libnvme_fabric_options_get_hostnqn;
64-
libnvme_fabric_options_get_instance;
65-
libnvme_fabric_options_get_keep_alive_tmo;
66-
libnvme_fabric_options_get_keyring;
67-
libnvme_fabric_options_get_nqn;
68-
libnvme_fabric_options_get_nr_io_queues;
69-
libnvme_fabric_options_get_nr_poll_queues;
70-
libnvme_fabric_options_get_nr_write_queues;
71-
libnvme_fabric_options_get_queue_size;
72-
libnvme_fabric_options_get_reconnect_delay;
73-
libnvme_fabric_options_get_tls;
74-
libnvme_fabric_options_get_tls_key;
75-
libnvme_fabric_options_get_tos;
76-
libnvme_fabric_options_get_traddr;
77-
libnvme_fabric_options_get_transport;
78-
libnvme_fabric_options_get_trsvcid;
79128
libnvme_fabric_options_set_cntlid;
129+
libnvme_fabric_options_get_concat;
80130
libnvme_fabric_options_set_concat;
131+
libnvme_fabric_options_get_ctrl_loss_tmo;
81132
libnvme_fabric_options_set_ctrl_loss_tmo;
133+
libnvme_fabric_options_get_data_digest;
82134
libnvme_fabric_options_set_data_digest;
135+
libnvme_fabric_options_get_dhchap_ctrl_secret;
83136
libnvme_fabric_options_set_dhchap_ctrl_secret;
137+
libnvme_fabric_options_get_dhchap_secret;
84138
libnvme_fabric_options_set_dhchap_secret;
139+
libnvme_fabric_options_get_disable_sqflow;
85140
libnvme_fabric_options_set_disable_sqflow;
141+
libnvme_fabric_options_get_discovery;
86142
libnvme_fabric_options_set_discovery;
143+
libnvme_fabric_options_get_duplicate_connect;
87144
libnvme_fabric_options_set_duplicate_connect;
145+
libnvme_fabric_options_get_fast_io_fail_tmo;
88146
libnvme_fabric_options_set_fast_io_fail_tmo;
147+
libnvme_fabric_options_get_hdr_digest;
89148
libnvme_fabric_options_set_hdr_digest;
149+
libnvme_fabric_options_get_host_iface;
90150
libnvme_fabric_options_set_host_iface;
151+
libnvme_fabric_options_get_host_traddr;
91152
libnvme_fabric_options_set_host_traddr;
153+
libnvme_fabric_options_get_hostid;
92154
libnvme_fabric_options_set_hostid;
155+
libnvme_fabric_options_get_hostnqn;
93156
libnvme_fabric_options_set_hostnqn;
157+
libnvme_fabric_options_get_instance;
94158
libnvme_fabric_options_set_instance;
159+
libnvme_fabric_options_get_keep_alive_tmo;
95160
libnvme_fabric_options_set_keep_alive_tmo;
161+
libnvme_fabric_options_get_keyring;
96162
libnvme_fabric_options_set_keyring;
163+
libnvme_fabric_options_get_nqn;
97164
libnvme_fabric_options_set_nqn;
165+
libnvme_fabric_options_get_nr_io_queues;
98166
libnvme_fabric_options_set_nr_io_queues;
167+
libnvme_fabric_options_get_nr_poll_queues;
99168
libnvme_fabric_options_set_nr_poll_queues;
169+
libnvme_fabric_options_get_nr_write_queues;
100170
libnvme_fabric_options_set_nr_write_queues;
171+
libnvme_fabric_options_get_queue_size;
101172
libnvme_fabric_options_set_queue_size;
173+
libnvme_fabric_options_get_reconnect_delay;
102174
libnvme_fabric_options_set_reconnect_delay;
175+
libnvme_fabric_options_get_tls;
103176
libnvme_fabric_options_set_tls;
177+
libnvme_fabric_options_get_tls_key;
104178
libnvme_fabric_options_set_tls_key;
179+
libnvme_fabric_options_get_tos;
105180
libnvme_fabric_options_set_tos;
181+
libnvme_fabric_options_get_traddr;
106182
libnvme_fabric_options_set_traddr;
183+
libnvme_fabric_options_get_transport;
107184
libnvme_fabric_options_set_transport;
185+
libnvme_fabric_options_get_trsvcid;
108186
libnvme_fabric_options_set_trsvcid;
109-
libnvme_fabrics_config_get_concat;
110-
libnvme_fabrics_config_get_ctrl_loss_tmo;
111-
libnvme_fabrics_config_get_data_digest;
112-
libnvme_fabrics_config_get_disable_sqflow;
113-
libnvme_fabrics_config_get_duplicate_connect;
114-
libnvme_fabrics_config_get_fast_io_fail_tmo;
115-
libnvme_fabrics_config_get_hdr_digest;
116-
libnvme_fabrics_config_get_keep_alive_tmo;
117-
libnvme_fabrics_config_get_keyring_id;
118-
libnvme_fabrics_config_get_nr_io_queues;
119-
libnvme_fabrics_config_get_nr_poll_queues;
120-
libnvme_fabrics_config_get_nr_write_queues;
121-
libnvme_fabrics_config_get_queue_size;
122-
libnvme_fabrics_config_get_reconnect_delay;
123-
libnvme_fabrics_config_get_tls;
124-
libnvme_fabrics_config_get_tls_configured_key_id;
125-
libnvme_fabrics_config_get_tls_key_id;
126-
libnvme_fabrics_config_get_tos;
127-
libnvme_fabrics_config_set_concat;
128-
libnvme_fabrics_config_set_ctrl_loss_tmo;
129-
libnvme_fabrics_config_set_data_digest;
130-
libnvme_fabrics_config_set_disable_sqflow;
131-
libnvme_fabrics_config_set_duplicate_connect;
132-
libnvme_fabrics_config_set_fast_io_fail_tmo;
133-
libnvme_fabrics_config_set_hdr_digest;
134-
libnvme_fabrics_config_set_keep_alive_tmo;
135-
libnvme_fabrics_config_set_keyring_id;
136-
libnvme_fabrics_config_set_nr_io_queues;
137-
libnvme_fabrics_config_set_nr_poll_queues;
138-
libnvme_fabrics_config_set_nr_write_queues;
139-
libnvme_fabrics_config_set_queue_size;
140-
libnvme_fabrics_config_set_reconnect_delay;
141-
libnvme_fabrics_config_set_tls;
142-
libnvme_fabrics_config_set_tls_configured_key_id;
143-
libnvme_fabrics_config_set_tls_key_id;
144-
libnvme_fabrics_config_set_tos;
145-
libnvme_host_get_dhchap_host_key;
146-
libnvme_host_get_hostid;
147-
libnvme_host_get_hostnqn;
148-
libnvme_host_get_hostsymname;
149-
libnvme_host_get_pdc_enabled_valid;
150-
libnvme_host_set_dhchap_host_key;
151-
libnvme_host_set_hostsymname;
152-
libnvme_host_set_pdc_enabled_valid;
153-
libnvme_ns_get_lba_count;
154-
libnvme_ns_get_lba_shift;
155-
libnvme_ns_get_lba_size;
156-
libnvme_ns_get_lba_util;
157-
libnvme_ns_get_meta_size;
158-
libnvme_ns_get_name;
159-
libnvme_ns_get_nsid;
160-
libnvme_ns_get_sysfs_dir;
161-
libnvme_ns_set_lba_count;
162-
libnvme_ns_set_lba_shift;
163-
libnvme_ns_set_lba_size;
164-
libnvme_ns_set_lba_util;
165-
libnvme_ns_set_meta_size;
166-
libnvme_ns_set_name;
167-
libnvme_ns_set_nsid;
168-
libnvme_ns_set_sysfs_dir;
169-
libnvme_path_get_grpid;
170-
libnvme_path_get_name;
171-
libnvme_path_get_sysfs_dir;
172-
libnvme_path_set_grpid;
173-
libnvme_path_set_name;
174-
libnvme_path_set_sysfs_dir;
175-
libnvme_subsystem_get_application;
176-
libnvme_subsystem_get_firmware;
177-
libnvme_subsystem_get_model;
178-
libnvme_subsystem_get_name;
179-
libnvme_subsystem_get_serial;
180-
libnvme_subsystem_get_subsysnqn;
181-
libnvme_subsystem_get_subsystype;
182-
libnvme_subsystem_get_sysfs_dir;
183-
libnvme_subsystem_set_application;
184187
};

libnvme/src/nvme/accessors-fabrics.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
#include <stdint.h>
2727

2828
#include <nvme/types.h>
29+
#include <nvme/nvme-types.h>
2930

3031
/* Forward declarations. These are internal (opaque) structs. */
3132
struct libnvmf_discovery_args;

0 commit comments

Comments
 (0)