]>
Commit | Line | Data |
---|---|---|
33a5cc29 KS |
1 | /* |
2 | * libudev - interface to udev device information | |
3 | * | |
4 | * Copyright (C) 2008 Kay Sievers <kay.sievers@vrfy.org> | |
5 | * | |
4061ab9f KS |
6 | * This library is free software; you can redistribute it and/or |
7 | * modify it under the terms of the GNU Lesser General Public | |
8 | * License as published by the Free Software Foundation; either | |
9 | * version 2.1 of the License, or (at your option) any later version. | |
33a5cc29 KS |
10 | */ |
11 | ||
12 | #ifndef _LIBUDEV_H_ | |
13 | #define _LIBUDEV_H_ | |
14 | ||
7d563a17 | 15 | #include <stdarg.h> |
4f06aaa9 | 16 | #include <sys/types.h> |
c4f5f942 | 17 | #include <sys/stat.h> |
7d563a17 | 18 | |
a689165b | 19 | /* this will stay as long as the DeviceKit integration of udev is work in progress */ |
e407720b | 20 | #if !defined _LIBUDEV_COMPILATION && !defined LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE |
a689165b KS |
21 | #error "#define LIBUDEV_I_KNOW_THE_API_IS_SUBJECT_TO_CHANGE is needed to use this experimental library version" |
22 | #endif | |
23 | ||
c8e32461 | 24 | /* library context */ |
0de33a61 | 25 | struct udev; |
33a5cc29 KS |
26 | extern struct udev *udev_new(void); |
27 | extern struct udev *udev_ref(struct udev *udev); | |
28 | extern void udev_unref(struct udev *udev); | |
29 | extern void udev_set_log_fn(struct udev *udev, | |
30 | void (*log_fn)(struct udev *udev, | |
31 | int priority, const char *file, int line, const char *fn, | |
32 | const char *format, va_list args)); | |
7d563a17 KS |
33 | extern int udev_get_log_priority(struct udev *udev); |
34 | extern void udev_set_log_priority(struct udev *udev, int priority); | |
33a5cc29 KS |
35 | extern const char *udev_get_sys_path(struct udev *udev); |
36 | extern const char *udev_get_dev_path(struct udev *udev); | |
c8e32461 KS |
37 | extern void *udev_get_userdata(struct udev *udev); |
38 | extern void udev_set_userdata(struct udev *udev, void *userdata); | |
39 | ||
bf7ad0ea | 40 | /* list iteration */ |
0de33a61 KS |
41 | struct udev_list_entry; |
42 | extern struct udev_list_entry *udev_list_entry_get_next(struct udev_list_entry *list_entry); | |
bc8184ed | 43 | extern struct udev_list_entry *udev_list_entry_get_by_name(struct udev_list_entry *list_entry, const char *name); |
0de33a61 KS |
44 | extern const char *udev_list_entry_get_name(struct udev_list_entry *list_entry); |
45 | extern const char *udev_list_entry_get_value(struct udev_list_entry *list_entry); | |
46 | #define udev_list_entry_foreach(entry, first) \ | |
47 | for (entry = first; \ | |
48 | entry != NULL; \ | |
49 | entry = udev_list_entry_get_next(entry)) | |
bf7ad0ea | 50 | |
c8e32461 | 51 | /* sys devices */ |
0de33a61 | 52 | struct udev_device; |
8753fadf | 53 | extern struct udev_device *udev_device_new_from_syspath(struct udev *udev, const char *syspath); |
4c9dff47 | 54 | extern struct udev_device *udev_device_new_from_devnum(struct udev *udev, char type, dev_t devnum); |
90d80c2e | 55 | extern struct udev_device *udev_device_new_from_subsystem_sysname(struct udev *udev, const char *subsystem, const char *sysname); |
b2d9e4f2 | 56 | extern struct udev_device *udev_device_get_parent(struct udev_device *udev_device); |
58d882a6 | 57 | extern struct udev_device *udev_device_get_parent_with_subsystem_devtype(struct udev_device *udev_device, const char *subsystem, const char *devtype); |
33a5cc29 KS |
58 | extern struct udev_device *udev_device_ref(struct udev_device *udev_device); |
59 | extern void udev_device_unref(struct udev_device *udev_device); | |
60 | extern struct udev *udev_device_get_udev(struct udev_device *udev_device); | |
61 | extern const char *udev_device_get_devpath(struct udev_device *udev_device); | |
33a5cc29 | 62 | extern const char *udev_device_get_subsystem(struct udev_device *udev_device); |
bf8b2ae1 | 63 | extern const char *udev_device_get_devtype(struct udev_device *udev_device); |
11d543c1 | 64 | extern const char *udev_device_get_syspath(struct udev_device *udev_device); |
4ad3a37f | 65 | extern const char *udev_device_get_sysname(struct udev_device *udev_device); |
517814e7 | 66 | extern const char *udev_device_get_sysnum(struct udev_device *udev_device); |
fb762bb9 | 67 | extern const char *udev_device_get_devnode(struct udev_device *udev_device); |
0de33a61 KS |
68 | extern struct udev_list_entry *udev_device_get_devlinks_list_entry(struct udev_device *udev_device); |
69 | extern struct udev_list_entry *udev_device_get_properties_list_entry(struct udev_device *udev_device); | |
3d7b2831 | 70 | extern const char *udev_device_get_property_value(struct udev_device *udev_device, const char *key); |
c4f5f942 KS |
71 | extern const char *udev_device_get_driver(struct udev_device *udev_device); |
72 | extern dev_t udev_device_get_devnum(struct udev_device *udev_device); | |
73 | extern const char *udev_device_get_action(struct udev_device *udev_device); | |
37372bbc | 74 | extern unsigned long long int udev_device_get_seqnum(struct udev_device *udev_device); |
69239210 | 75 | extern const char *udev_device_get_sysattr_value(struct udev_device *udev_device, const char *sysattr); |
33a5cc29 | 76 | |
c8e32461 | 77 | /* udev and kernel device events */ |
0de33a61 | 78 | struct udev_monitor; |
ba6929f6 | 79 | extern struct udev_monitor *udev_monitor_new_from_socket(struct udev *udev, const char *socket_path); |
f2b93744 | 80 | extern struct udev_monitor *udev_monitor_new_from_netlink(struct udev *udev, const char *name); |
d59f11e1 | 81 | extern int udev_monitor_enable_receiving(struct udev_monitor *udev_monitor); |
ba6929f6 KS |
82 | extern struct udev_monitor *udev_monitor_ref(struct udev_monitor *udev_monitor); |
83 | extern void udev_monitor_unref(struct udev_monitor *udev_monitor); | |
84 | extern struct udev *udev_monitor_get_udev(struct udev_monitor *udev_monitor); | |
85 | extern int udev_monitor_get_fd(struct udev_monitor *udev_monitor); | |
d59f11e1 | 86 | extern struct udev_device *udev_monitor_receive_device(struct udev_monitor *udev_monitor); |
dacea9ff | 87 | extern int udev_monitor_filter_add_match_subsystem_devtype(struct udev_monitor *udev_monitor, const char *subsystem, const char *devtype); |
19d7e87c | 88 | extern int udev_monitor_filter_update(struct udev_monitor *udev_monitor); |
08a7a795 | 89 | extern int udev_monitor_filter_remove(struct udev_monitor *udev_monitor); |
ba6929f6 | 90 | |
0de33a61 KS |
91 | /* sys enumeration */ |
92 | struct udev_enumerate; | |
438d4c3c | 93 | extern struct udev_enumerate *udev_enumerate_new(struct udev *udev); |
0de33a61 KS |
94 | extern struct udev_enumerate *udev_enumerate_ref(struct udev_enumerate *udev_enumerate); |
95 | extern void udev_enumerate_unref(struct udev_enumerate *udev_enumerate); | |
64ccdf82 | 96 | extern struct udev *udev_enumerate_get_udev(struct udev_enumerate *udev_enumerate); |
c97f839e KS |
97 | extern int udev_enumerate_add_match_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem); |
98 | extern int udev_enumerate_add_nomatch_subsystem(struct udev_enumerate *udev_enumerate, const char *subsystem); | |
69239210 KS |
99 | extern int udev_enumerate_add_match_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value); |
100 | extern int udev_enumerate_add_nomatch_sysattr(struct udev_enumerate *udev_enumerate, const char *sysattr, const char *value); | |
f0893502 | 101 | extern int udev_enumerate_add_match_property(struct udev_enumerate *udev_enumerate, const char *property, const char *value); |
13ddea81 | 102 | extern int udev_enumerate_add_syspath(struct udev_enumerate *udev_enumerate, const char *syspath); |
c97f839e | 103 | extern int udev_enumerate_scan_devices(struct udev_enumerate *udev_enumerate); |
438d4c3c | 104 | extern int udev_enumerate_scan_subsystems(struct udev_enumerate *udev_enumerate); |
0de33a61 KS |
105 | extern struct udev_list_entry *udev_enumerate_get_list_entry(struct udev_enumerate *udev_enumerate); |
106 | ||
64ccdf82 KS |
107 | /* event queue */ |
108 | struct udev_queue; | |
109 | extern struct udev_queue *udev_queue_new(struct udev *udev); | |
110 | extern struct udev_queue *udev_queue_ref(struct udev_queue *udev_queue); | |
111 | extern void udev_queue_unref(struct udev_queue *udev_queue); | |
112 | extern struct udev *udev_queue_get_udev(struct udev_queue *udev_queue); | |
113 | extern unsigned long long int udev_queue_get_kernel_seqnum(struct udev_queue *udev_queue); | |
114 | extern unsigned long long int udev_queue_get_udev_seqnum(struct udev_queue *udev_queue); | |
11d5eec2 | 115 | extern int udev_queue_get_udev_is_active(struct udev_queue *udev_queue); |
64ccdf82 KS |
116 | extern int udev_queue_get_queue_is_empty(struct udev_queue *udev_queue); |
117 | extern int udev_queue_get_seqnum_is_finished(struct udev_queue *udev_queue, unsigned long long int seqnum); | |
118 | extern struct udev_list_entry *udev_queue_get_queued_list_entry(struct udev_queue *udev_queue); | |
119 | extern struct udev_list_entry *udev_queue_get_failed_list_entry(struct udev_queue *udev_queue); | |
33a5cc29 | 120 | #endif |