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