]>
Commit | Line | Data |
---|---|---|
53e1b683 | 1 | /* SPDX-License-Identifier: LGPL-2.1+ */ |
43beb0cf YW |
2 | #pragma once |
3 | ||
d412a685 | 4 | #include <signal.h> |
28460195 | 5 | #include <stdbool.h> |
71d35b6b | 6 | #include <stdint.h> |
9e13dbae KS |
7 | |
8 | #include "libudev.h" | |
3782454c | 9 | #include "sd-device.h" |
07630cea | 10 | |
54cf0b7f | 11 | #include "macro.h" |
9e13dbae | 12 | #include "mkdir.h" |
d5a89d7d | 13 | #include "strxcpyx.h" |
07630cea | 14 | #include "util.h" |
33a5cc29 | 15 | |
6ada823a | 16 | #define READ_END 0 |
baa30fbc | 17 | #define WRITE_END 1 |
9176ac1f | 18 | |
9060b066 | 19 | /* libudev-device.c */ |
2df959ec | 20 | struct udev_device *udev_device_new_from_nulstr(struct udev *udev, char *nulstr, ssize_t buflen); |
bf0e00ec | 21 | struct udev_device *udev_device_new_from_synthetic_event(struct udev *udev, const char *syspath, const char *action); |
fa639f3a | 22 | struct udev_device *udev_device_shallow_clone(struct udev_device *old_device); |
8f0f13f0 | 23 | struct udev_device *udev_device_clone_with_db(struct udev_device *old_device); |
1cd0a770 | 24 | int udev_device_copy_properties(struct udev_device *dst, struct udev_device *src); |
3cf1a8e3 | 25 | mode_t udev_device_get_devnode_mode(struct udev_device *udev_device); |
1edefa4f KS |
26 | uid_t udev_device_get_devnode_uid(struct udev_device *udev_device); |
27 | gid_t udev_device_get_devnode_gid(struct udev_device *udev_device); | |
243d1825 | 28 | int udev_device_rename(struct udev_device *udev_device, const char *new_name); |
8a173387 | 29 | int udev_device_add_devlink(struct udev_device *udev_device, const char *devlink); |
37ed4f56 | 30 | void udev_device_cleanup_devlinks_list(struct udev_device *udev_device); |
df546eb5 | 31 | int udev_device_add_property(struct udev_device *udev_device, const char *key, const char *value); |
37ed4f56 KS |
32 | char **udev_device_get_properties_envp(struct udev_device *udev_device); |
33 | ssize_t udev_device_get_properties_monitor_buf(struct udev_device *udev_device, const char **buf); | |
37ed4f56 | 34 | const char *udev_device_get_devpath_old(struct udev_device *udev_device); |
4281da1f | 35 | const char *udev_device_get_id_filename(struct udev_device *udev_device); |
48a0170b | 36 | void udev_device_set_is_initialized(struct udev_device *udev_device); |
fbb31cd6 | 37 | int udev_device_add_tag(struct udev_device *udev_device, const char *tag); |
8e3ba377 | 38 | void udev_device_remove_tag(struct udev_device *udev_device, const char *tag); |
28460195 | 39 | void udev_device_cleanup_tags_list(struct udev_device *udev_device); |
1b14c3cf | 40 | void udev_device_ensure_usec_initialized(struct udev_device *udev_device, struct udev_device *old_device); |
37ed4f56 KS |
41 | int udev_device_get_devlink_priority(struct udev_device *udev_device); |
42 | int udev_device_set_devlink_priority(struct udev_device *udev_device, int prio); | |
37ed4f56 KS |
43 | int udev_device_get_watch_handle(struct udev_device *udev_device); |
44 | int udev_device_set_watch_handle(struct udev_device *udev_device, int handle); | |
fc416258 | 45 | int udev_device_get_ifindex(struct udev_device *udev_device); |
37ed4f56 | 46 | void udev_device_set_info_loaded(struct udev_device *device); |
9ead6627 | 47 | void udev_device_set_db_persist(struct udev_device *udev_device); |
107f2e25 | 48 | void udev_device_read_db(struct udev_device *udev_device); |
37ed4f56 KS |
49 | int udev_device_update_db(struct udev_device *udev_device); |
50 | int udev_device_delete_db(struct udev_device *udev_device); | |
c1dbe11d | 51 | int udev_device_tag_index(struct udev_device *dev, struct udev_device *dev_old, bool add); |
fc233a87 | 52 | |
9060b066 | 53 | /* libudev-monitor.c - netlink/unix socket communication */ |
1e03b754 KS |
54 | int udev_monitor_disconnect(struct udev_monitor *udev_monitor); |
55 | int udev_monitor_allow_unicast_sender(struct udev_monitor *udev_monitor, struct udev_monitor *sender); | |
56 | int udev_monitor_send_device(struct udev_monitor *udev_monitor, | |
912541b0 | 57 | struct udev_monitor *destination, struct udev_device *udev_device); |
7459bcdc | 58 | struct udev_monitor *udev_monitor_new_from_netlink_fd(struct udev *udev, const char *name, int fd); |
3782454c | 59 | int udev_monitor_receive_sd_device(struct udev_monitor *udev_monitor, sd_device **ret); |
9925ab04 | 60 | |
9060b066 | 61 | /* libudev-list.c */ |
8cd2e972 | 62 | struct udev_list_node { |
912541b0 | 63 | struct udev_list_node *next, *prev; |
e345e267 | 64 | }; |
869c9031 | 65 | struct udev_list { |
912541b0 KS |
66 | struct udev *udev; |
67 | struct udev_list_node node; | |
68 | struct udev_list_entry **entries; | |
14cb109d YW |
69 | unsigned entries_cur; |
70 | unsigned entries_max; | |
912541b0 | 71 | bool unique; |
869c9031 | 72 | }; |
869c9031 KS |
73 | void udev_list_node_init(struct udev_list_node *list); |
74 | int udev_list_node_is_empty(struct udev_list_node *list); | |
37ed4f56 KS |
75 | void udev_list_node_append(struct udev_list_node *new, struct udev_list_node *list); |
76 | void udev_list_node_remove(struct udev_list_node *entry); | |
9dcf7ec8 | 77 | #define udev_list_node_foreach(node, list) \ |
912541b0 KS |
78 | for (node = (list)->next; \ |
79 | node != list; \ | |
80 | node = (node)->next) | |
9dcf7ec8 | 81 | #define udev_list_node_foreach_safe(node, tmp, list) \ |
912541b0 KS |
82 | for (node = (list)->next, tmp = (node)->next; \ |
83 | node != list; \ | |
84 | node = tmp, tmp = (tmp)->next) | |
869c9031 KS |
85 | void udev_list_init(struct udev *udev, struct udev_list *list, bool unique); |
86 | void udev_list_cleanup(struct udev_list *list); | |
87 | struct udev_list_entry *udev_list_get_entry(struct udev_list *list); | |
88 | struct udev_list_entry *udev_list_entry_add(struct udev_list *list, const char *name, const char *value); | |
37ed4f56 | 89 | void udev_list_entry_delete(struct udev_list_entry *entry); |
8958da13 KS |
90 | int udev_list_entry_get_num(struct udev_list_entry *list_entry); |
91 | void udev_list_entry_set_num(struct udev_list_entry *list_entry, int num); | |
daa849db | 92 | #define udev_list_entry_foreach_safe(entry, tmp, first) \ |
912541b0 KS |
93 | for (entry = first, tmp = udev_list_entry_get_next(entry); \ |
94 | entry != NULL; \ | |
95 | entry = tmp, tmp = udev_list_entry_get_next(tmp)) | |
bf7ad0ea | 96 | |
44b49d37 | 97 | /* libudev-util.c */ |
2001208c KS |
98 | #define UTIL_PATH_SIZE 1024 |
99 | #define UTIL_NAME_SIZE 512 | |
100 | #define UTIL_LINE_SIZE 16384 | |
101 | #define UDEV_ALLOWED_CHARS_INPUT "/ $%?," | |
065db052 | 102 | size_t util_path_encode(const char *src, char *dest, size_t size); |
0bbe8838 KS |
103 | int util_replace_whitespace(const char *str, char *to, size_t len); |
104 | int util_replace_chars(char *str, const char *white); | |
1544d17f | 105 | uint32_t util_string_hash32(const char *key); |
28460195 | 106 | uint64_t util_string_bloom64(const char *str); |
755c3fe9 | 107 | int util_resolve_subsys_kernel(const char *string, char *result, size_t maxsize, int read_value); |
7c7be551 YW |
108 | |
109 | /* Cleanup functions */ | |
110 | DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev*, udev_unref); | |
111 | DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_device*, udev_device_unref); | |
112 | DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_enumerate*, udev_enumerate_unref); | |
113 | DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_monitor*, udev_monitor_unref); | |
114 | DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_hwdb*, udev_hwdb_unref); | |
115 | DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_queue*, udev_queue_unref); |