X-Git-Url: http://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fudev.c;h=6747e78a8064f7a04a5b377b3535a6a412658a71;hp=9c1b399cd7857a9d59c6bb1b4884a26bbd315c8a;hb=5b71bc5697e403b586ec313148e652406b5426b6;hpb=32e6a41f33e5576716b351bd473a27939fe94fa1 diff --git a/discover/udev.c b/discover/udev.c index 9c1b399..6747e78 100644 --- a/discover/udev.c +++ b/discover/udev.c @@ -15,12 +15,14 @@ #include "log.h" #include "waiter.h" #include "pb-discover.h" +#include "device-handler.h" #define PBOOT_DEVICE_SOCKET "/tmp/petitboot.udev" #define max(a, b) ((a) > (b) ? (a) : (b)) struct udev { + struct device_handler *handler; int socket; }; @@ -58,7 +60,7 @@ static void parse_event_params(struct udev_event *event, char *buf, int len) } } -static const char *event_param(struct udev_event *event, const char *name) +const char *udev_event_param(struct udev_event *event, const char *name) { int i; @@ -84,7 +86,7 @@ static void print_event(struct udev_event *event) for (i = 0; params[i]; i++) printf("\t%-12s => %s\n", - params[i], event_param(event, params[i])); + params[i], udev_event_param(event, params[i])); } @@ -132,6 +134,8 @@ static void handle_udev_message(struct udev *udev, char *buf, int len) print_event(event); + device_handler_event(udev->handler, event); + talloc_free(event); return; @@ -168,7 +172,7 @@ static int udev_destructor(void *p) return 0; } -struct udev *udev_init(void) +struct udev *udev_init(struct device_handler *handler) { struct sockaddr_un addr; struct udev *udev; @@ -177,6 +181,8 @@ struct udev *udev_init(void) udev = talloc(NULL, struct udev); + udev->handler = handler; + udev->socket = socket(PF_UNIX, SOCK_DGRAM, 0); if (udev->socket < 0) { pb_log("Error creating udev socket: %s\n", strerror(errno));