]>
Commit | Line | Data |
---|---|---|
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 | ||
70068602 | 8 | #include "sd-device.h" |
07630cea LP |
9 | #include "sd-netlink.h" |
10 | ||
d838e145 | 11 | #include "hashmap.h" |
07630cea | 12 | #include "macro.h" |
25de7aa7 | 13 | #include "udev-rules.h" |
bc768f04 | 14 | #include "udev-util.h" |
02edd80d YW |
15 | #include "util.h" |
16 | ||
17 | #define READ_END 0 | |
18 | #define WRITE_END 1 | |
f0083e3d | 19 | |
2e088715 | 20 | typedef struct UdevEvent { |
cf28ad46 | 21 | sd_device *dev; |
f3d241fe | 22 | sd_device *dev_parent; |
480ecb7d | 23 | sd_device *dev_db_clone; |
912541b0 KS |
24 | char *name; |
25 | char *program_result; | |
26 | mode_t mode; | |
27 | uid_t uid; | |
28 | gid_t gid; | |
39a15c8a YW |
29 | OrderedHashmap *seclabel_list; |
30 | OrderedHashmap *run_list; | |
6b92f429 | 31 | usec_t exec_delay_usec; |
40fe8b11 | 32 | usec_t birth_usec; |
1c4baffc | 33 | sd_netlink *rtnl; |
14cb109d YW |
34 | unsigned builtin_run; |
35 | unsigned builtin_ret; | |
25de7aa7 YW |
36 | UdevRuleEscapeType esc:8; |
37 | bool inotify_watch:1; | |
38 | bool inotify_watch_final:1; | |
39 | bool group_final:1; | |
40 | bool owner_final:1; | |
41 | bool mode_final:1; | |
42 | bool name_final:1; | |
43 | bool devlink_final:1; | |
44 | bool run_final:1; | |
2e088715 | 45 | } UdevEvent; |
aa8734ff | 46 | |
2e088715 ZJS |
47 | UdevEvent *udev_event_new(sd_device *dev, usec_t exec_delay_usec, sd_netlink *rtnl); |
48 | UdevEvent *udev_event_free(UdevEvent *event); | |
25de7aa7 YW |
49 | DEFINE_TRIVIAL_CLEANUP_FUNC(UdevEvent*, udev_event_free); |
50 | ||
2e088715 | 51 | ssize_t udev_event_apply_format(UdevEvent *event, |
4cade7a1 YW |
52 | const char *src, char *dest, size_t size, |
53 | bool replace_whitespace); | |
f85cc54c | 54 | int udev_check_format(const char *value, size_t *offset, const char **hint); |
2e088715 | 55 | int udev_event_spawn(UdevEvent *event, |
dd5eddd2 | 56 | usec_t timeout_usec, |
53318514 | 57 | bool accept_failure, |
bbf35206 | 58 | const char *cmd, char *result, size_t ressize); |
2e088715 | 59 | int udev_event_execute_rules(UdevEvent *event, |
66f737b4 | 60 | usec_t timeout_usec, |
eb1f9e30 | 61 | Hashmap *properties_list, |
9a07157d | 62 | UdevRules *rules); |
2e088715 | 63 | void udev_event_execute_run(UdevEvent *event, usec_t timeout_usec); |
c7521974 | 64 | |
25de7aa7 YW |
65 | static inline usec_t udev_warn_timeout(usec_t timeout_usec) { |
66 | return DIV_ROUND_UP(timeout_usec, 3); | |
67 | } |