]>
Commit | Line | Data |
---|---|---|
f0083e3d | 1 | /* |
f0083e3d | 2 | * Copyright (C) 2003 Greg Kroah-Hartman <greg@kroah.com> |
0ec5b5e1 | 3 | * Copyright (C) 2003-2010 Kay Sievers <kay.sievers@vrfy.org> |
f0083e3d | 4 | * |
55e9959b KS |
5 | * This program is free software: you can redistribute it and/or modify |
6 | * it under the terms of the GNU General Public License as published by | |
7 | * the Free Software Foundation, either version 2 of the License, or | |
8 | * (at your option) any later version. | |
f0083e3d | 9 | * |
55e9959b KS |
10 | * This program is distributed in the hope that it will be useful, |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | * GNU General Public License for more details. | |
14 | * | |
15 | * You should have received a copy of the GNU General Public License | |
16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | |
f0083e3d GKH |
17 | */ |
18 | ||
c81b35c0 KS |
19 | #ifndef _UDEV_H_ |
20 | #define _UDEV_H_ | |
f0083e3d | 21 | |
c1ab0461 | 22 | #include <sys/types.h> |
c076a2bd | 23 | #include <sys/param.h> |
d412a685 | 24 | #include <signal.h> |
1aa1e248 | 25 | |
48a9b173 KS |
26 | #include "libudev.h" |
27 | #include "libudev-private.h" | |
f0083e3d | 28 | |
6133f343 | 29 | #define UDEV_CTRL_SOCK_PATH "@/org/kernel/udev/udevd" |
d59f11e1 | 30 | |
aa8734ff KS |
31 | struct udev_event { |
32 | struct udev *udev; | |
33 | struct udev_device *dev; | |
34 | struct udev_device *dev_parent; | |
0ec5b5e1 | 35 | struct udev_device *dev_db; |
b99028c9 | 36 | char *name; |
40fd3bc8 KS |
37 | char *tmp_node; |
38 | char *program_result; | |
aa8734ff | 39 | mode_t mode; |
6880b25d | 40 | uid_t uid; |
6880b25d | 41 | gid_t gid; |
869c9031 | 42 | struct udev_list run_list; |
c830e98d | 43 | int exec_delay; |
2181d30a KS |
44 | unsigned long long birth_usec; |
45 | unsigned long long timeout_usec; | |
46 | int fd_signal; | |
47 | bool sigterm; | |
3b529da4 KS |
48 | bool inotify_watch; |
49 | bool inotify_watch_final; | |
761dfddc KS |
50 | bool group_final; |
51 | bool owner_final; | |
3cf1a8e3 | 52 | bool mode_set; |
761dfddc KS |
53 | bool mode_final; |
54 | bool name_final; | |
55 | bool devlink_final; | |
56 | bool run_final; | |
aa8734ff | 57 | }; |
aa8734ff | 58 | |
bd284db1 SJR |
59 | struct udev_watch { |
60 | struct udev_list_node node; | |
61 | int handle; | |
62 | char *name; | |
63 | }; | |
64 | ||
c7521974 | 65 | /* udev-rules.c */ |
f1128767 | 66 | struct udev_rules; |
37ed4f56 KS |
67 | struct udev_rules *udev_rules_new(struct udev *udev, int resolve_names); |
68 | void udev_rules_unref(struct udev_rules *rules); | |
2181d30a | 69 | int udev_rules_apply_to_event(struct udev_rules *rules, struct udev_event *event, const sigset_t *sigmask); |
761dfddc | 70 | void udev_rules_apply_static_dev_perms(struct udev_rules *rules); |
f1128767 KS |
71 | |
72 | /* udev-event.c */ | |
37ed4f56 KS |
73 | struct udev_event *udev_event_new(struct udev_device *dev); |
74 | void udev_event_unref(struct udev_event *event); | |
065db052 | 75 | size_t udev_event_apply_format(struct udev_event *event, const char *src, char *dest, size_t size); |
37ed4f56 KS |
76 | int udev_event_apply_subsys_kernel(struct udev_event *event, const char *string, |
77 | char *result, size_t maxsize, int read_value); | |
2181d30a KS |
78 | int udev_event_spawn(struct udev_event *event, |
79 | const char *cmd, char **envp, const sigset_t *sigmask, | |
80 | char *result, size_t ressize); | |
81 | int udev_event_execute_rules(struct udev_event *event, struct udev_rules *rules, const sigset_t *sigset); | |
82 | int udev_event_execute_run(struct udev_event *event, const sigset_t *sigset); | |
c7521974 | 83 | |
bd284db1 | 84 | /* udev-watch.c */ |
1e03b754 | 85 | int udev_watch_init(struct udev *udev); |
37ed4f56 KS |
86 | void udev_watch_restore(struct udev *udev); |
87 | void udev_watch_begin(struct udev *udev, struct udev_device *dev); | |
88 | void udev_watch_end(struct udev *udev, struct udev_device *dev); | |
89 | struct udev_device *udev_watch_lookup(struct udev *udev, int wd); | |
bd284db1 | 90 | |
aa8734ff | 91 | /* udev-node.c */ |
c7cdd8b2 | 92 | int udev_node_mknod(struct udev_device *dev, const char *file, mode_t mode, uid_t uid, gid_t gid); |
37ed4f56 KS |
93 | int udev_node_add(struct udev_device *dev, mode_t mode, uid_t uid, gid_t gid); |
94 | int udev_node_remove(struct udev_device *dev); | |
95 | void udev_node_update_old_links(struct udev_device *dev, struct udev_device *dev_old); | |
aa8734ff | 96 | |
c15d02e5 KS |
97 | /* udev-ctrl.c */ |
98 | struct udev_ctrl; | |
99 | struct udev_ctrl *udev_ctrl_new_from_socket(struct udev *udev, const char *socket_path); | |
100 | struct udev_ctrl *udev_ctrl_new_from_socket_fd(struct udev *udev, const char *socket_path, int fd); | |
101 | int udev_ctrl_enable_receiving(struct udev_ctrl *uctrl); | |
102 | struct udev_ctrl *udev_ctrl_ref(struct udev_ctrl *uctrl); | |
103 | struct udev_ctrl *udev_ctrl_unref(struct udev_ctrl *uctrl); | |
104 | struct udev *udev_ctrl_get_udev(struct udev_ctrl *uctrl); | |
105 | int udev_ctrl_get_fd(struct udev_ctrl *uctrl); | |
106 | int udev_ctrl_send_set_log_level(struct udev_ctrl *uctrl, int priority, int timeout); | |
107 | int udev_ctrl_send_stop_exec_queue(struct udev_ctrl *uctrl, int timeout); | |
108 | int udev_ctrl_send_start_exec_queue(struct udev_ctrl *uctrl, int timeout); | |
109 | int udev_ctrl_send_reload_rules(struct udev_ctrl *uctrl, int timeout); | |
110 | int udev_ctrl_send_ping(struct udev_ctrl *uctrl, int timeout); | |
111 | int udev_ctrl_send_exit(struct udev_ctrl *uctrl, int timeout); | |
112 | int udev_ctrl_send_set_env(struct udev_ctrl *uctrl, const char *key, int timeout); | |
113 | int udev_ctrl_send_set_children_max(struct udev_ctrl *uctrl, int count, int timeout); | |
114 | struct udev_ctrl_connection; | |
115 | struct udev_ctrl_connection *udev_ctrl_get_connection(struct udev_ctrl *uctrl); | |
116 | struct udev_ctrl_connection *udev_ctrl_connection_ref(struct udev_ctrl_connection *conn); | |
117 | struct udev_ctrl_connection *udev_ctrl_connection_unref(struct udev_ctrl_connection *conn); | |
118 | struct udev_ctrl_msg; | |
119 | struct udev_ctrl_msg *udev_ctrl_receive_msg(struct udev_ctrl_connection *conn); | |
120 | struct udev_ctrl_msg *udev_ctrl_msg_ref(struct udev_ctrl_msg *ctrl_msg); | |
121 | struct udev_ctrl_msg *udev_ctrl_msg_unref(struct udev_ctrl_msg *ctrl_msg); | |
122 | int udev_ctrl_get_set_log_level(struct udev_ctrl_msg *ctrl_msg); | |
123 | int udev_ctrl_get_stop_exec_queue(struct udev_ctrl_msg *ctrl_msg); | |
124 | int udev_ctrl_get_start_exec_queue(struct udev_ctrl_msg *ctrl_msg); | |
125 | int udev_ctrl_get_reload_rules(struct udev_ctrl_msg *ctrl_msg); | |
126 | int udev_ctrl_get_ping(struct udev_ctrl_msg *ctrl_msg); | |
127 | int udev_ctrl_get_exit(struct udev_ctrl_msg *ctrl_msg); | |
128 | const char *udev_ctrl_get_set_env(struct udev_ctrl_msg *ctrl_msg); | |
129 | int udev_ctrl_get_set_children_max(struct udev_ctrl_msg *ctrl_msg); | |
130 | ||
32bf8399 | 131 | /* udevadm commands */ |
1985c76e KS |
132 | struct udevadm_cmd { |
133 | const char *name; | |
134 | int (*cmd)(struct udev *udev, int argc, char *argv[]); | |
135 | const char *help; | |
136 | int debug; | |
137 | }; | |
138 | extern const struct udevadm_cmd udevadm_monitor; | |
139 | extern const struct udevadm_cmd udevadm_info; | |
140 | extern const struct udevadm_cmd udevadm_control; | |
141 | extern const struct udevadm_cmd udevadm_trigger; | |
142 | extern const struct udevadm_cmd udevadm_settle; | |
143 | extern const struct udevadm_cmd udevadm_test; | |
f0083e3d | 144 | #endif |