static struct udev_rules *rules;
static struct udev_ctrl *udev_ctrl;
static struct udev_monitor *kernel_monitor;
-static volatile int sigchilds_waiting;
-static volatile int udev_exit;
-static volatile int reload_config;
-static volatile int signal_received;
+static volatile sig_atomic_t sigchilds_waiting;
+static volatile sig_atomic_t udev_exit;
+static volatile sig_atomic_t reload_config;
+static volatile sig_atomic_t signal_received;
static volatile pid_t settle_pid;
static int run_exec_q;
static int stop_exec_q;
udev_event_unref(event);
}
-static void asmlinkage event_sig_handler(int signum)
+static void event_sig_handler(int signum)
{
if (signum == SIGALRM)
- exit(1);
+ _exit(1);
}
static void event_fork(struct udev_event *event)
/* set signal handlers */
memset(&act, 0x00, sizeof(act));
- act.sa_handler = (void (*)(int)) event_sig_handler;
+ act.sa_handler = event_sig_handler;
sigemptyset (&act.sa_mask);
act.sa_flags = 0;
sigaction(SIGALRM, &act, NULL);
return 0;
}
-/* lookup event for identical, parent, child, or physical device */
+/* lookup event for identical, parent, child device */
static int devpath_busy(struct udev_event *event)
{
struct udev_list_node *loop;
event->delaying_seqnum = udev_device_get_seqnum(loop_event->dev);
return 5;
}
-
- /* check physical device event (special case of parent) */
- if (udev_device_get_physdevpath(event->dev) != NULL &&
- strcmp(udev_device_get_action(event->dev), "add") == 0)
- if (compare_devpath(udev_device_get_devpath(loop_event->dev),
- udev_device_get_physdevpath(event->dev)) != 0) {
- dbg(event->udev, "%llu, physical device event still pending %llu (%s)\n",
- udev_device_get_seqnum(event->dev),
- udev_device_get_seqnum(loop_event->dev),
- udev_device_get_devpath(loop_event->dev));
- event->delaying_seqnum = udev_device_get_seqnum(loop_event->dev);
- return 6;
- }
}
return 0;
}
return 0;
}
-static void asmlinkage sig_handler(int signum)
+static void sig_handler(int signum)
{
switch (signum) {
case SIGINT:
}
}
-/* create the nodes the we depend on to properly start up */
-static void setup_initial_nodes(struct udev *udev)
-{
- struct udev_device *dev;
-
- dev = udev_device_new_from_subsystem_sysname(udev, "mem", "null");
- if (dev != NULL) {
- udev_node_mknod(dev, "null", makedev(0,0), 0666, 0, 0);
- udev_device_unref(dev);
- }
- dev = udev_device_new_from_subsystem_sysname(udev, "mem", "kmsg");
- if (dev != NULL) {
- udev_node_mknod(dev, "kmsg", makedev(0,0), 0660, 0, 0);
- udev_device_unref(dev);
- }
- dev = udev_device_new_from_subsystem_sysname(udev, "tty", "console");
- if (dev != NULL) {
- udev_node_mknod(dev, "console", makedev(0,0), 0600, 0, 0);
- udev_device_unref(dev);
- }
-}
-
static void startup_log(struct udev *udev)
{
FILE *f;
goto exit;
}
- setup_initial_nodes(udev);
-
/* make sure std{in,out,err} fd's are in a sane state */
fd = open("/dev/null", O_RDWR);
if (fd < 0) {
/* set signal handlers */
memset(&act, 0x00, sizeof(struct sigaction));
- act.sa_handler = (void (*)(int)) sig_handler;
+ act.sa_handler = sig_handler;
sigemptyset(&act.sa_mask);
act.sa_flags = SA_RESTART;
sigaction(SIGINT, &act, NULL);