]> git.ipfire.org Git - thirdparty/systemd.git/blob - src/libudev/libudev-private.h
Add SPDX license identifiers to source files under the LGPL
[thirdparty/systemd.git] / src / libudev / libudev-private.h
1 /* SPDX-License-Identifier: LGPL-2.1+ */
2 /***
3 This file is part of systemd.
4
5 Copyright 2008-2012 Kay Sievers <kay@vrfy.org>
6
7 systemd is free software; you can redistribute it and/or modify it
8 under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation; either version 2.1 of the License, or
10 (at your option) any later version.
11
12 systemd is distributed in the hope that it will be useful, but
13 WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public License
18 along with systemd; If not, see <http://www.gnu.org/licenses/>.
19 ***/
20
21 #ifndef _LIBUDEV_PRIVATE_H_
22 #define _LIBUDEV_PRIVATE_H_
23
24 #include <signal.h>
25 #include <stdbool.h>
26 #include <stdint.h>
27
28 #include "libudev.h"
29
30 #include "macro.h"
31 #include "mkdir.h"
32 #include "strxcpyx.h"
33 #include "util.h"
34
35 #define READ_END 0
36 #define WRITE_END 1
37
38 /* libudev.c */
39 int udev_get_rules_path(struct udev *udev, char **path[], usec_t *ts_usec[]);
40
41 /* libudev-device.c */
42 struct udev_device *udev_device_new_from_nulstr(struct udev *udev, char *nulstr, ssize_t buflen);
43 struct udev_device *udev_device_new_from_synthetic_event(struct udev *udev, const char *syspath, const char *action);
44 struct udev_device *udev_device_shallow_clone(struct udev_device *old_device);
45 struct udev_device *udev_device_clone_with_db(struct udev_device *old_device);
46 int udev_device_copy_properties(struct udev_device *dst, struct udev_device *src);
47 mode_t udev_device_get_devnode_mode(struct udev_device *udev_device);
48 uid_t udev_device_get_devnode_uid(struct udev_device *udev_device);
49 gid_t udev_device_get_devnode_gid(struct udev_device *udev_device);
50 int udev_device_rename(struct udev_device *udev_device, const char *new_name);
51 int udev_device_add_devlink(struct udev_device *udev_device, const char *devlink);
52 void udev_device_cleanup_devlinks_list(struct udev_device *udev_device);
53 int udev_device_add_property(struct udev_device *udev_device, const char *key, const char *value);
54 char **udev_device_get_properties_envp(struct udev_device *udev_device);
55 ssize_t udev_device_get_properties_monitor_buf(struct udev_device *udev_device, const char **buf);
56 const char *udev_device_get_devpath_old(struct udev_device *udev_device);
57 const char *udev_device_get_id_filename(struct udev_device *udev_device);
58 void udev_device_set_is_initialized(struct udev_device *udev_device);
59 int udev_device_add_tag(struct udev_device *udev_device, const char *tag);
60 void udev_device_remove_tag(struct udev_device *udev_device, const char *tag);
61 void udev_device_cleanup_tags_list(struct udev_device *udev_device);
62 usec_t udev_device_get_usec_initialized(struct udev_device *udev_device);
63 void udev_device_ensure_usec_initialized(struct udev_device *udev_device, struct udev_device *old_device);
64 int udev_device_get_devlink_priority(struct udev_device *udev_device);
65 int udev_device_set_devlink_priority(struct udev_device *udev_device, int prio);
66 int udev_device_get_watch_handle(struct udev_device *udev_device);
67 int udev_device_set_watch_handle(struct udev_device *udev_device, int handle);
68 int udev_device_get_ifindex(struct udev_device *udev_device);
69 void udev_device_set_info_loaded(struct udev_device *device);
70 bool udev_device_get_db_persist(struct udev_device *udev_device);
71 void udev_device_set_db_persist(struct udev_device *udev_device);
72 void udev_device_read_db(struct udev_device *udev_device);
73
74 /* libudev-device-private.c */
75 int udev_device_update_db(struct udev_device *udev_device);
76 int udev_device_delete_db(struct udev_device *udev_device);
77 int udev_device_tag_index(struct udev_device *dev, struct udev_device *dev_old, bool add);
78
79 /* libudev-monitor.c - netlink/unix socket communication */
80 int udev_monitor_disconnect(struct udev_monitor *udev_monitor);
81 int udev_monitor_allow_unicast_sender(struct udev_monitor *udev_monitor, struct udev_monitor *sender);
82 int udev_monitor_send_device(struct udev_monitor *udev_monitor,
83 struct udev_monitor *destination, struct udev_device *udev_device);
84 struct udev_monitor *udev_monitor_new_from_netlink_fd(struct udev *udev, const char *name, int fd);
85
86 /* libudev-list.c */
87 struct udev_list_node {
88 struct udev_list_node *next, *prev;
89 };
90 struct udev_list {
91 struct udev *udev;
92 struct udev_list_node node;
93 struct udev_list_entry **entries;
94 unsigned int entries_cur;
95 unsigned int entries_max;
96 bool unique;
97 };
98 void udev_list_node_init(struct udev_list_node *list);
99 int udev_list_node_is_empty(struct udev_list_node *list);
100 void udev_list_node_append(struct udev_list_node *new, struct udev_list_node *list);
101 void udev_list_node_remove(struct udev_list_node *entry);
102 #define udev_list_node_foreach(node, list) \
103 for (node = (list)->next; \
104 node != list; \
105 node = (node)->next)
106 #define udev_list_node_foreach_safe(node, tmp, list) \
107 for (node = (list)->next, tmp = (node)->next; \
108 node != list; \
109 node = tmp, tmp = (tmp)->next)
110 void udev_list_init(struct udev *udev, struct udev_list *list, bool unique);
111 void udev_list_cleanup(struct udev_list *list);
112 struct udev_list_entry *udev_list_get_entry(struct udev_list *list);
113 struct udev_list_entry *udev_list_entry_add(struct udev_list *list, const char *name, const char *value);
114 void udev_list_entry_delete(struct udev_list_entry *entry);
115 int udev_list_entry_get_num(struct udev_list_entry *list_entry);
116 void udev_list_entry_set_num(struct udev_list_entry *list_entry, int num);
117 #define udev_list_entry_foreach_safe(entry, tmp, first) \
118 for (entry = first, tmp = udev_list_entry_get_next(entry); \
119 entry != NULL; \
120 entry = tmp, tmp = udev_list_entry_get_next(tmp))
121
122 /* libudev-queue.c */
123 unsigned long long int udev_get_kernel_seqnum(struct udev *udev);
124 int udev_queue_read_seqnum(FILE *queue_file, unsigned long long int *seqnum);
125 ssize_t udev_queue_read_devpath(FILE *queue_file, char *devpath, size_t size);
126 ssize_t udev_queue_skip_devpath(FILE *queue_file);
127
128 /* libudev-queue-private.c */
129 struct udev_queue_export *udev_queue_export_new(struct udev *udev);
130 struct udev_queue_export *udev_queue_export_unref(struct udev_queue_export *udev_queue_export);
131 void udev_queue_export_cleanup(struct udev_queue_export *udev_queue_export);
132 int udev_queue_export_device_queued(struct udev_queue_export *udev_queue_export, struct udev_device *udev_device);
133 int udev_queue_export_device_finished(struct udev_queue_export *udev_queue_export, struct udev_device *udev_device);
134
135 /* libudev-util.c */
136 #define UTIL_PATH_SIZE 1024
137 #define UTIL_NAME_SIZE 512
138 #define UTIL_LINE_SIZE 16384
139 #define UDEV_ALLOWED_CHARS_INPUT "/ $%?,"
140 int util_log_priority(const char *priority);
141 size_t util_path_encode(const char *src, char *dest, size_t size);
142 int util_replace_whitespace(const char *str, char *to, size_t len);
143 int util_replace_chars(char *str, const char *white);
144 unsigned int util_string_hash32(const char *key);
145 uint64_t util_string_bloom64(const char *str);
146
147 /* libudev-util-private.c */
148 int util_resolve_subsys_kernel(struct udev *udev, const char *string, char *result, size_t maxsize, int read_value);
149
150 #endif