1/*
2 * Copyright (C) 2004 Ling, Xiaofeng <xiaofeng.ling@intel.com>
3 * Copyright (C) 2004-2006 Kay Sievers <kay.sievers@vrfy.org>
4 *
5 *	This program is free software; you can redistribute it and/or modify it
6 *	under the terms of the GNU General Public License as published by the
7 *	Free Software Foundation version 2 of the License.
8 *
9 *	This program is distributed in the hope that it will be useful, but
10 *	WITHOUT ANY WARRANTY; without even the implied warranty of
11 *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 *	General Public License for more details.
13 *
14 *	You should have received a copy of the GNU General Public License along
15 *	with this program; if not, write to the Free Software Foundation, Inc.,
16 *	51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
17 *
18 */
19
20#include "list.h"
21
22#define UDEVD_PRIORITY			-4
23#define UDEV_PRIORITY			-2
24
25#define EVENT_QUEUE_DIR			".udev/queue"
26#define EVENT_FAILED_DIR		".udev/failed"
27#define EVENT_SEQNUM			".udev/uevent_seqnum"
28
29/* maximum limit of forked childs */
30#define UDEVD_MAX_CHILDS		256
31/* start to throttle forking if maximum number of running childs in our session is reached */
32#define UDEVD_MAX_CHILDS_RUNNING	16
33
34/* linux/include/linux/kobject.h */
35#define UEVENT_BUFFER_SIZE		2048
36#define UEVENT_NUM_ENVP			32
37
38#define UDEVD_CTRL_SOCK_PATH		"/org/kernel/udev/udevd"
39#define UDEVD_CTRL_MAGIC		"udevd_" UDEV_VERSION
40
41enum udevd_ctrl_msg_type {
42	UDEVD_CTRL_UNKNOWN,
43	UDEVD_CTRL_STOP_EXEC_QUEUE,
44	UDEVD_CTRL_START_EXEC_QUEUE,
45	UDEVD_CTRL_SET_LOG_LEVEL,
46	UDEVD_CTRL_SET_MAX_CHILDS,
47	UDEVD_CTRL_SET_MAX_CHILDS_RUNNING,
48	UDEVD_CTRL_RELOAD_RULES,
49	UDEVD_CTRL_ENV,
50};
51
52struct udevd_ctrl_msg {
53	char magic[32];
54	enum udevd_ctrl_msg_type type;
55	char buf[256];
56};
57
58struct udevd_uevent_msg {
59	struct list_head node;
60	pid_t pid;
61	int exitstatus;
62	time_t queue_time;
63	char *action;
64	char *devpath;
65	char *subsystem;
66	char *driver;
67	dev_t devt;
68	unsigned long long seqnum;
69	char *physdevpath;
70	unsigned int timeout;
71	char *envp[UEVENT_NUM_ENVP+1];
72	char envbuf[];
73};
74