mirror of
https://github.com/AuxXxilium/eudev.git
synced 2024-12-15 19:16:08 +07:00
1bc3362678
This rule: RUN+="socket:/org/kernel/udev/monitor" send the event to the running monitor. Running udevstart give a nice monitor output. Also the delay between the kernel uevent and the udev udev event can be investigated: pim:/home/kay/src/udev-kay # ./udevmonitor UEVENT[1122920113] add@/devices/pci0000:00/0000:00:1d.1/usb2/2-1 UEVENT[1122920113] add@/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0 UEVENT[1122920113] add@/class/scsi_host/host12 UEVENT[1122920113] add@/class/usb_device/usbdev2.99 UEVENT[1122920113] add@/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0/host12/target12:0:0/12:0:0:0 UDEV [1122920113] add@/devices/pci0000:00/0000:00:1d.1/usb2/2-1 UEVENT[1122920113] add@/block/sda UEVENT[1122920113] add@/class/scsi_generic/sg0 UEVENT[1122920113] add@/class/scsi_device/12:0:0:0 UDEV [1122920113] add@/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0 UDEV [1122920113] add@/class/scsi_host/host12 UDEV [1122920113] add@/class/usb_device/usbdev2.99 UDEV [1122920113] add@/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0/host12/target12:0:0/12:0:0:0 UDEV [1122920113] add@/block/sda UDEV [1122920113] add@/class/scsi_generic/sg0 UDEV [1122920113] add@/class/scsi_device/12:0:0:0 UEVENT[1122920115] add@/block/sda/sda1 UDEV [1122920115] add@/block/sda/sda1 pim:/home/kay/src/udev-kay # ./udevmonitor --env UDEV [1122920185] add@/block/sda/sda1 ACTION=add DEVPATH=/block/sda/sda1 SUBSYSTEM=block SEQNUM=2159 MINOR=1 MAJOR=8 PHYSDEVPATH=/devices/pci0000:00/0000:00:1d.1/usb2/2-1/2-1:1.0/host13/target13:0:0/13:0:0:0 PHYSDEVBUS=scsi PHYSDEVDRIVER=sd UDEVD_EVENT=1 UDEV_LOG=3 ID_VENDOR=IBM ID_MODEL=Memory_Key ID_REVISION=3.04 ID_SERIAL=IBM_Memory_Key_0218B301030027E8 ID_TYPE=disk ID_BUS=usb ID_PATH=usb-0218B301030027E8:0:0:0 ID_FS_USAGE=filesystem ID_FS_TYPE=vfat ID_FS_VERSION=FAT16 ID_FS_UUID=42D8-9E02 ID_FS_LABEL_SAFE=s_p_c DEVNAME=/dev/sda1 Signed-off-by: Kay Sievers <kay.sievers@suse.de>
81 lines
2.1 KiB
C
81 lines
2.1 KiB
C
/*
|
|
* udevd.h
|
|
*
|
|
* Copyright (C) 2004 Ling, Xiaofeng <xiaofeng.ling@intel.com>
|
|
* Copyright (C) 2004-2005 Kay Sievers <kay.sievers@vrfy.org>
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify it
|
|
* under the terms of the GNU General Public License as published by the
|
|
* Free Software Foundation version 2 of the License.
|
|
*
|
|
* This program is distributed in the hope that it will be useful, but
|
|
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License along
|
|
* with this program; if not, write to the Free Software Foundation, Inc.,
|
|
* 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*
|
|
*/
|
|
|
|
#include "list.h"
|
|
|
|
#define UDEV_MAGIC "udevd_" UDEV_VERSION
|
|
#define UDEVD_SOCK_PATH "/org/kernel/udev/udevd"
|
|
#define UDEVSEND_WAIT_MAX_SECONDS 3
|
|
#define UDEVSEND_WAIT_LOOP_PER_SECOND 10
|
|
|
|
#define UDEVD_PRIORITY -4
|
|
#define UDEV_PRIORITY -2
|
|
|
|
/* duration of initialization phase with shorter timeout */
|
|
#define UDEVD_INIT_TIME 5
|
|
#define UDEVD_INIT_EVENT_TIMEOUT 2
|
|
|
|
/* timeout to wait for missing events */
|
|
#define UDEVD_EVENT_TIMEOUT 5
|
|
|
|
/* maximum limit of runnig childs */
|
|
#define UDEVD_MAX_CHILDS 64
|
|
/* start to throttle forking if maximum number of running childs in our session is reached */
|
|
#define UDEVD_MAX_CHILDS_RUNNING 8
|
|
|
|
/* environment buffer, should match the kernel's size in lib/kobject_uevent.h */
|
|
#define UEVENT_BUFFER_SIZE 1024
|
|
#define UEVENT_NUM_ENVP 32
|
|
|
|
enum udevd_msg_type {
|
|
UDEVD_UNKNOWN,
|
|
UDEVD_UEVENT_UDEVSEND,
|
|
UDEVD_UEVENT_INITSEND,
|
|
UDEVD_UEVENT_NETLINK,
|
|
UDEVD_STOP_EXEC_QUEUE,
|
|
UDEVD_START_EXEC_QUEUE,
|
|
UDEVD_SET_LOG_LEVEL,
|
|
UDEVD_SET_MAX_CHILDS,
|
|
};
|
|
|
|
|
|
struct udevd_msg {
|
|
char magic[32];
|
|
enum udevd_msg_type type;
|
|
char envbuf[UEVENT_BUFFER_SIZE+512];
|
|
};
|
|
|
|
struct uevent_msg {
|
|
enum udevd_msg_type type;
|
|
struct list_head node;
|
|
pid_t pid;
|
|
long queue_time;
|
|
char *action;
|
|
char *devpath;
|
|
char *subsystem;
|
|
dev_t devt;
|
|
unsigned long long seqnum;
|
|
char *physdevpath;
|
|
unsigned int timeout;
|
|
char *envp[UEVENT_NUM_ENVP+1];
|
|
char envbuf[];
|
|
};
|