chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[PATCH] Add 'asmlinkage' to udev-030
[elogind.git]
/
udevd.c
diff --git
a/udevd.c
b/udevd.c
index 301625fd927a58e7868cf1da31551a3d993f7e4a..79de11248ec5e8db484ce31318916d446af6353a 100644
(file)
--- a/
udevd.c
+++ b/
udevd.c
@@
-34,9
+34,7
@@
#include <sys/un.h>
#include <fcntl.h>
#include "klibc_fixups.h"
#include <sys/un.h>
#include <fcntl.h>
#include "klibc_fixups.h"
-#ifndef __KLIBC__
#include <sys/sysinfo.h>
#include <sys/sysinfo.h>
-#endif
#include "list.h"
#include "udev.h"
#include "list.h"
#include "udev.h"
@@
-60,6
+58,7
@@
static void exec_queue_manager(void);
static void msg_queue_manager(void);
static void user_sighandler(void);
static void reap_kids(void);
static void msg_queue_manager(void);
static void user_sighandler(void);
static void reap_kids(void);
+char *udev_bin;
#ifdef LOG
unsigned char logname[LOGNAME_SIZE];
#ifdef LOG
unsigned char logname[LOGNAME_SIZE];
@@
-73,6
+72,10
@@
void log_message (int level, const char *format, ...)
}
#endif
}
#endif
+#define msg_dump(msg) \
+ dbg("msg_dump: sequence %d, '%s', '%s', '%s'", \
+ msg->seqnum, msg->action, msg->devpath, msg->subsystem);
+
static void msg_dump_queue(void)
{
#ifdef DEBUG
static void msg_dump_queue(void)
{
#ifdef DEBUG
@@
-83,12
+86,6
@@
static void msg_dump_queue(void)
#endif
}
#endif
}
-static void msg_dump(struct hotplug_msg *msg)
-{
- dbg("sequence %d, '%s', '%s', '%s'",
- msg->seqnum, msg->action, msg->devpath, msg->subsystem);
-}
-
static struct hotplug_msg *msg_create(void)
{
struct hotplug_msg *new_msg;
static struct hotplug_msg *msg_create(void)
{
struct hotplug_msg *new_msg;
@@
-139,14
+136,16
@@
static void udev_run(struct hotplug_msg *msg)
char devpath[DEVPATH_SIZE];
char *env[] = { action, devpath, NULL };
char devpath[DEVPATH_SIZE];
char *env[] = { action, devpath, NULL };
- snprintf(action, sizeof(action), "ACTION=%s", msg->action);
- snprintf(devpath, sizeof(devpath), "DEVPATH=%s", msg->devpath);
+ strcpy(action, "ACTION=");
+ strfieldcat(action, msg->action);
+ strcpy(devpath, "DEVPATH=");
+ strfieldcat(devpath, msg->devpath);
pid = fork();
switch (pid) {
case 0:
/* child */
pid = fork();
switch (pid) {
case 0:
/* child */
- execle(
UDEV_BIN
, "udev", msg->subsystem, NULL, env);
+ execle(
udev_bin
, "udev", msg->subsystem, NULL, env);
dbg("exec of child failed");
exit(1);
break;
dbg("exec of child failed");
exit(1);
break;
@@
-307,9
+306,10
@@
skip:
return;
}
return;
}
-static void sig_handler(int signum)
+
asmlinkage
static void sig_handler(int signum)
{
int rc;
{
int rc;
+
switch (signum) {
case SIGINT:
case SIGTERM:
switch (signum) {
case SIGINT:
case SIGTERM:
@@
-326,7
+326,7
@@
static void sig_handler(int signum)
goto do_write;
break;
default:
goto do_write;
break;
default:
- dbg("unhandled signal
"
);
+ dbg("unhandled signal
%d", signum
);
return;
}
return;
}
@@
-458,6
+458,13
@@
int main(int argc, char *argv[])
/* enable receiving of the sender credentials */
setsockopt(ssock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
/* enable receiving of the sender credentials */
setsockopt(ssock, SOL_SOCKET, SO_PASSCRED, &on, sizeof(on));
+ /* possible override of udev binary, used for testing */
+ udev_bin = getenv("UDEV_BIN");
+ if (udev_bin != NULL)
+ dbg("udev binary is set to '%s'", udev_bin);
+ else
+ udev_bin = UDEV_BIN;
+
FD_ZERO(&readfds);
FD_SET(ssock, &readfds);
FD_SET(pipefds[0], &readfds);
FD_ZERO(&readfds);
FD_SET(ssock, &readfds);
FD_SET(pipefds[0], &readfds);