]> git.ipfire.org Git - thirdparty/systemd.git/blame - src/udev/udev.h
udev: move ResolveNameTiming definition and parsers to udev-util.h
[thirdparty/systemd.git] / src / udev / udev.h
CommitLineData
e7145211 1/* SPDX-License-Identifier: GPL-2.0+ */
0ef6f454
LP
2#pragma once
3
f0083e3d 4/*
810adae9 5 * Copyright © 2003 Greg Kroah-Hartman <greg@kroah.com>
f0083e3d
GKH
6 */
7
c076a2bd 8#include <sys/param.h>
27d13af7 9#include <sys/sysmacros.h>
07630cea 10#include <sys/types.h>
1aa1e248 11
70068602 12#include "sd-device.h"
07630cea
LP
13#include "sd-netlink.h"
14
d838e145 15#include "hashmap.h"
e9a5ef7c 16#include "label.h"
07630cea
LP
17#include "libudev-private.h"
18#include "macro.h"
775f8b3c 19#include "strv.h"
07630cea 20#include "util.h"
bc768f04 21#include "udev-util.h"
f0083e3d 22
aa8734ff 23struct udev_event {
cf28ad46 24 sd_device *dev;
f3d241fe 25 sd_device *dev_parent;
480ecb7d 26 sd_device *dev_db_clone;
912541b0
KS
27 char *name;
28 char *program_result;
29 mode_t mode;
30 uid_t uid;
31 gid_t gid;
d838e145 32 Hashmap *seclabel_list;
29448498 33 Hashmap *run_list;
6b92f429 34 usec_t exec_delay_usec;
40fe8b11 35 usec_t birth_usec;
1c4baffc 36 sd_netlink *rtnl;
14cb109d
YW
37 unsigned builtin_run;
38 unsigned builtin_ret;
912541b0
KS
39 bool inotify_watch;
40 bool inotify_watch_final;
1edefa4f 41 bool group_set;
912541b0 42 bool group_final;
1edefa4f 43 bool owner_set;
912541b0
KS
44 bool owner_final;
45 bool mode_set;
46 bool mode_final;
47 bool name_final;
48 bool devlink_final;
49 bool run_final;
aa8734ff 50};
aa8734ff 51
c7521974 52/* udev-rules.c */
f1128767 53struct udev_rules;
c4d44cba 54struct udev_rules *udev_rules_new(ResolveNameTiming resolve_name_timing);
7c85d636 55struct udev_rules *udev_rules_unref(struct udev_rules *rules);
6ada823a 56bool udev_rules_check_timestamp(struct udev_rules *rules);
d838e145 57int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event,
66f737b4 58 usec_t timeout_usec,
9b5150b6 59 Hashmap *properties_list);
84b6ad70 60int udev_rules_apply_static_dev_perms(struct udev_rules *rules);
f1128767 61
66f737b4
ZJS
62static inline usec_t udev_warn_timeout(usec_t timeout_usec) {
63 return DIV_ROUND_UP(timeout_usec, 3);
64}
65
f1128767 66/* udev-event.c */
6b92f429 67struct udev_event *udev_event_new(sd_device *dev, usec_t exec_delay_usec, sd_netlink *rtnl);
c1118ceb 68struct udev_event *udev_event_free(struct udev_event *event);
4cade7a1
YW
69ssize_t udev_event_apply_format(struct udev_event *event,
70 const char *src, char *dest, size_t size,
71 bool replace_whitespace);
2181d30a 72int udev_event_spawn(struct udev_event *event,
dd5eddd2 73 usec_t timeout_usec,
53318514 74 bool accept_failure,
bbf35206 75 const char *cmd, char *result, size_t ressize);
eb1f9e30 76int udev_event_execute_rules(struct udev_event *event,
66f737b4 77 usec_t timeout_usec,
eb1f9e30
YW
78 Hashmap *properties_list,
79 struct udev_rules *rules);
66f737b4 80void udev_event_execute_run(struct udev_event *event, usec_t timeout_usec);
c7521974 81
152d0efa 82/* Cleanup functions */
c1118ceb 83DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_event*, udev_event_free);
152d0efa 84DEFINE_TRIVIAL_CLEANUP_FUNC(struct udev_rules*, udev_rules_unref);