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