1#![allow(non_camel_case_types)]
2
3extern crate libc;
4
5use libc::{c_char, c_int, c_void, dev_t, size_t};
6
7pub const EINVAL: c_int = 22;
9
10#[repr(C)]
11#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
12pub struct sd_device;
13
14#[repr(C)]
15#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
16pub struct sd_device_enumerator;
17
18#[repr(C)]
19#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
20pub struct sd_device_monitor;
21
22#[repr(C)]
23#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
24pub struct sd_event;
25
26#[repr(C)]
27#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
28pub struct sd_event_source;
29
30#[repr(C)]
31#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
32pub struct sd_id128_t;
33
34#[repr(i64)]
35#[derive(Copy, Clone, Debug, Eq, PartialEq, Hash)]
36pub enum sd_device_action_t {
37 SD_DEVICE_ADD = 0,
38 SD_DEVICE_REMOVE = 1,
39 SD_DEVICE_CHANGE = 2,
40 SD_DEVICE_MOVE = 3,
41 SD_DEVICE_ONLINE = 4,
42 SD_DEVICE_OFFLINE = 5,
43 SD_DEVICE_BIND = 6,
44 SD_DEVICE_UNBIND = 7,
45 _SD_DEVICE_ACTION_MAX = 8,
46 _SD_DEVICE_ACTION_INVALID = -(EINVAL as i64),
47 _SD_ENUM_FORCE_S64_DEVICE_ACTION = i64::MAX,
49}
50
51pub type sd_device_monitor_handler_t = Option<
52 unsafe extern "C" fn(
53 m: *mut sd_device_monitor,
54 device: *mut sd_device,
55 userdata: *mut c_void,
56 ) -> c_int,
57>;
58
59unsafe extern "C" {
60 pub fn sd_device_ref(device: *mut sd_device) -> *mut sd_device;
61 pub fn sd_device_unref(device: *mut sd_device) -> *mut sd_device;
62
63 pub fn sd_device_new_from_syspath(ret: *mut *mut sd_device, syspath: *const c_char) -> c_int;
64 pub fn sd_device_new_from_devnum(
65 ret: *mut *mut sd_device,
66 type_: c_char,
67 devnum: dev_t,
68 ) -> c_int;
69 pub fn sd_device_new_from_subsystem_sysname(
70 ret: *mut *mut sd_device,
71 subsystem: *const c_char,
72 sysname: *const c_char,
73 ) -> c_int;
74 pub fn sd_device_new_from_device_id(ret: *mut *mut sd_device, id: *const c_char) -> c_int;
75 pub fn sd_device_new_from_stat_rdev(ret: *mut *mut sd_device, st: *const libc::stat) -> c_int;
76 pub fn sd_device_new_from_devname(ret: *mut *mut sd_device, devname: *const c_char) -> c_int;
77 pub fn sd_device_new_from_path(ret: *mut *mut sd_device, path: *const c_char) -> c_int;
78 pub fn sd_device_new_from_ifname(ret: *mut *mut sd_device, ifname: *const c_char) -> c_int;
79 pub fn sd_device_new_from_ifindex(ret: *mut *mut sd_device, ifindex: c_int) -> c_int;
80
81 pub fn sd_device_new_child(
82 ret: *mut *mut sd_device,
83 device: *mut sd_device,
84 suffix: *const c_char,
85 ) -> c_int;
86
87 pub fn sd_device_get_parent(device: *mut sd_device, ret: *mut *mut sd_device) -> c_int;
89 pub fn sd_device_get_parent_with_subsystem_devtype(
90 device: *mut sd_device,
91 subsystem: *const c_char,
92 devtype: *const c_char,
93 ret: *mut *mut sd_device,
94 ) -> c_int;
95
96 pub fn sd_device_get_syspath(device: *mut sd_device, ret: *mut *const c_char) -> c_int;
98 pub fn sd_device_get_subsystem(device: *mut sd_device, ret: *mut *const c_char) -> c_int;
99 pub fn sd_device_get_driver_subsystem(device: *mut sd_device, ret: *mut *const c_char)
100 -> c_int;
101 pub fn sd_device_get_devtype(device: *mut sd_device, ret: *mut *const c_char) -> c_int;
102 pub fn sd_device_get_devnum(device: *mut sd_device, devnum: *mut dev_t) -> c_int;
103 pub fn sd_device_get_ifindex(device: *mut sd_device, ifindex: *mut c_int) -> c_int;
104 pub fn sd_device_get_driver(device: *mut sd_device, ret: *mut *const c_char) -> c_int;
105 pub fn sd_device_get_devpath(device: *mut sd_device, ret: *mut *const c_char) -> c_int;
106 pub fn sd_device_get_devname(device: *mut sd_device, ret: *mut *const c_char) -> c_int;
107 pub fn sd_device_get_sysname(device: *mut sd_device, ret: *mut *const c_char) -> c_int;
108 pub fn sd_device_get_sysnum(device: *mut sd_device, ret: *mut *const c_char) -> c_int;
109 pub fn sd_device_get_action(device: *mut sd_device, ret: *mut sd_device_action_t) -> c_int;
110 pub fn sd_device_get_seqnum(device: *mut sd_device, ret: *mut u64) -> c_int;
111 pub fn sd_device_get_diskseq(device: *mut sd_device, ret: *mut u64) -> c_int;
112 pub fn sd_device_get_device_id(device: *mut sd_device, ret: *mut *const c_char) -> c_int;
113
114 pub fn sd_device_get_is_initialized(device: *mut sd_device) -> c_int;
115 pub fn sd_device_get_usec_initialized(device: *mut sd_device, ret: *mut u64) -> c_int;
116 pub fn sd_device_get_usec_since_initialized(device: *mut sd_device, ret: *mut u64) -> c_int;
117
118 pub fn sd_device_get_tag_first(device: *mut sd_device) -> *const c_char;
120 pub fn sd_device_get_tag_next(device: *mut sd_device) -> *const c_char;
121 pub fn sd_device_get_current_tag_first(device: *mut sd_device) -> *const c_char;
122 pub fn sd_device_get_current_tag_next(device: *mut sd_device) -> *const c_char;
123 pub fn sd_device_get_devlink_first(device: *mut sd_device) -> *const c_char;
124 pub fn sd_device_get_devlink_next(device: *mut sd_device) -> *const c_char;
125 pub fn sd_device_get_property_first(
126 device: *mut sd_device,
127 value: *mut *const c_char,
128 ) -> *const c_char;
129 pub fn sd_device_get_property_next(
130 device: *mut sd_device,
131 value: *mut *const c_char,
132 ) -> *const c_char;
133 pub fn sd_device_get_sysattr_first(device: *mut sd_device) -> *const c_char;
134 pub fn sd_device_get_sysattr_next(device: *mut sd_device) -> *const c_char;
135
136 pub fn sd_device_get_child_first(
137 device: *mut sd_device,
138 ret_suffix: *mut *const c_char,
139 ) -> *mut sd_device;
140 pub fn sd_device_get_child_next(
141 device: *mut sd_device,
142 ret_suffix: *mut *const c_char,
143 ) -> *mut sd_device;
144
145 pub fn sd_device_has_tag(device: *mut sd_device, tag: *const c_char) -> c_int;
147 pub fn sd_device_has_current_tag(device: *mut sd_device, tag: *const c_char) -> c_int;
148 pub fn sd_device_get_property_value(
149 device: *mut sd_device,
150 key: *const c_char,
151 value: *mut *const c_char,
152 ) -> c_int;
153
154 pub fn sd_device_get_trigger_uuid(device: *mut sd_device, ret: *mut sd_id128_t) -> c_int;
155
156 pub fn sd_device_get_sysattr_value_with_size(
157 device: *mut sd_device,
158 sysattr: *const c_char,
159 ret_value: *mut *const c_char,
160 ret_size: *mut size_t,
161 ) -> c_int;
162
163 pub fn sd_device_get_sysattr_value(
164 device: *mut sd_device,
165 sysattr: *const c_char,
166 ret_value: *mut *const c_char,
167 ) -> c_int;
168
169 pub fn sd_device_set_sysattr_value(
170 device: *mut sd_device,
171 sysattr: *const c_char,
172 value: *const c_char,
173 ) -> c_int;
174
175 pub fn sd_device_set_sysattr_valuef(
176 device: *mut sd_device,
177 sysattr: *const c_char,
178 format: *const c_char,
179 ...
180 ) -> c_int;
181
182 pub fn sd_device_trigger(device: *mut sd_device, action: sd_device_action_t) -> c_int;
183 pub fn sd_device_trigger_with_uuid(
184 device: *mut sd_device,
185 action: sd_device_action_t,
186 ret_uuid: *mut sd_id128_t,
187 ) -> c_int;
188
189 pub fn sd_device_open(device: *mut sd_device, flags: c_int) -> c_int;
190
191 pub fn sd_device_enumerator_new(ret: *mut *mut sd_device_enumerator) -> c_int;
193 pub fn sd_device_enumerator_ref(e: *mut sd_device_enumerator) -> *mut sd_device_enumerator;
194 pub fn sd_device_enumerator_unref(e: *mut sd_device_enumerator) -> *mut sd_device_enumerator;
195
196 pub fn sd_device_enumerator_get_device_first(e: *mut sd_device_enumerator) -> *mut sd_device;
197 pub fn sd_device_enumerator_get_device_next(e: *mut sd_device_enumerator) -> *mut sd_device;
198 pub fn sd_device_enumerator_get_subsystem_first(e: *mut sd_device_enumerator)
199 -> *mut sd_device;
200 pub fn sd_device_enumerator_get_subsystem_next(e: *mut sd_device_enumerator) -> *mut sd_device;
201
202 pub fn sd_device_enumerator_add_match_subsystem(
203 e: *mut sd_device_enumerator,
204 subsystem: *const c_char,
205 match_: c_int,
206 ) -> c_int;
207
208 pub fn sd_device_enumerator_add_match_sysattr(
209 e: *mut sd_device_enumerator,
210 sysattr: *const c_char,
211 value: *const c_char,
212 match_: c_int,
213 ) -> c_int;
214
215 pub fn sd_device_enumerator_add_match_property(
216 e: *mut sd_device_enumerator,
217 property: *const c_char,
218 value: *const c_char,
219 ) -> c_int;
220
221 pub fn sd_device_enumerator_add_match_property_required(
222 e: *mut sd_device_enumerator,
223 property: *const c_char,
224 value: *const c_char,
225 ) -> c_int;
226
227 pub fn sd_device_enumerator_add_match_sysname(
228 e: *mut sd_device_enumerator,
229 sysname: *const c_char,
230 ) -> c_int;
231 pub fn sd_device_enumerator_add_nomatch_sysname(
232 e: *mut sd_device_enumerator,
233 sysname: *const c_char,
234 ) -> c_int;
235 pub fn sd_device_enumerator_add_match_tag(
236 e: *mut sd_device_enumerator,
237 tag: *const c_char,
238 ) -> c_int;
239 pub fn sd_device_enumerator_add_match_parent(
240 e: *mut sd_device_enumerator,
241 parent: *mut sd_device,
242 ) -> c_int;
243 pub fn sd_device_enumerator_allow_uninitialized(e: *mut sd_device_enumerator) -> c_int;
244 pub fn sd_device_enumerator_add_all_parents(e: *mut sd_device_enumerator) -> c_int;
245
246 pub fn sd_device_monitor_new(ret: *mut *mut sd_device_monitor) -> c_int;
248 pub fn sd_device_monitor_ref(m: *mut sd_device_monitor) -> *mut sd_device_monitor;
249 pub fn sd_device_monitor_unref(m: *mut sd_device_monitor) -> *mut sd_device_monitor;
250
251 pub fn sd_device_monitor_get_fd(m: *mut sd_device_monitor) -> c_int;
252 pub fn sd_device_monitor_get_events(m: *mut sd_device_monitor) -> c_int;
253 pub fn sd_device_monitor_get_timeout(m: *mut sd_device_monitor, ret: *mut u64) -> c_int;
254 pub fn sd_device_monitor_set_receive_buffer_size(
255 m: *mut sd_device_monitor,
256 size: size_t,
257 ) -> c_int;
258
259 pub fn sd_device_monitor_attach_event(m: *mut sd_device_monitor, event: *mut sd_event)
260 -> c_int;
261 pub fn sd_device_monitor_detach_event(m: *mut sd_device_monitor) -> c_int;
262 pub fn sd_device_monitor_get_event(m: *mut sd_device_monitor) -> *mut sd_event;
263 pub fn sd_device_monitor_get_event_source(m: *mut sd_device_monitor) -> *mut sd_event_source;
264
265 pub fn sd_device_monitor_set_description(
266 m: *mut sd_device_monitor,
267 description: *const c_char,
268 ) -> c_int;
269 pub fn sd_device_monitor_get_description(
270 m: *mut sd_device_monitor,
271 ret: *mut *const c_char,
272 ) -> c_int;
273
274 pub fn sd_device_monitor_is_running(m: *mut sd_device_monitor) -> c_int;
275
276 pub fn sd_device_monitor_start(
277 m: *mut sd_device_monitor,
278 callback: sd_device_monitor_handler_t,
279 userdata: *mut c_void,
280 ) -> c_int;
281
282 pub fn sd_device_monitor_stop(m: *mut sd_device_monitor) -> c_int;
283 pub fn sd_device_monitor_receive(m: *mut sd_device_monitor, ret: *mut *mut sd_device) -> c_int;
284
285 pub fn sd_device_monitor_filter_add_match_subsystem_devtype(
286 m: *mut sd_device_monitor,
287 subsystem: *const c_char,
288 devtype: *const c_char,
289 ) -> c_int;
290
291 pub fn sd_device_monitor_filter_add_match_tag(
292 m: *mut sd_device_monitor,
293 tag: *const c_char,
294 ) -> c_int;
295
296 pub fn sd_device_monitor_filter_add_match_sysattr(
297 m: *mut sd_device_monitor,
298 sysattr: *const c_char,
299 value: *const c_char,
300 match_: c_int,
301 ) -> c_int;
302
303 pub fn sd_device_monitor_filter_add_match_parent(
304 m: *mut sd_device_monitor,
305 device: *mut sd_device,
306 match_: c_int,
307 ) -> c_int;
308
309 pub fn sd_device_monitor_filter_update(m: *mut sd_device_monitor) -> c_int;
310 pub fn sd_device_monitor_filter_remove(m: *mut sd_device_monitor) -> c_int;
311}