summaryrefslogtreecommitdiffstats
path: root/discover
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2008-12-15 17:51:44 +1100
committerJeremy Kerr <jk@ozlabs.org>2008-12-15 17:51:44 +1100
commit1a44c3bf2503b12c78c205676d903fbb05fb7ef0 (patch)
treefb47fe2392320929041e15d88ed448581730465e /discover
parent898665e37e7e373f9a54ce288debbe365b28b60b (diff)
downloadtalos-petitboot-1a44c3bf2503b12c78c205676d903fbb05fb7ef0.tar.gz
talos-petitboot-1a44c3bf2503b12c78c205676d903fbb05fb7ef0.zip
Hook up udev events to device handler
Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
Diffstat (limited to 'discover')
-rw-r--r--discover/udev.c8
-rw-r--r--discover/udev.h3
2 files changed, 9 insertions, 2 deletions
diff --git a/discover/udev.c b/discover/udev.c
index 9c1b399..16d050e 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;
};
@@ -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));
diff --git a/discover/udev.h b/discover/udev.h
index c30adc9..a23eef4 100644
--- a/discover/udev.h
+++ b/discover/udev.h
@@ -18,8 +18,9 @@ struct udev_event {
};
struct udev;
+struct device_handler;
-struct udev *udev_init(void);
+struct udev *udev_init(struct device_handler *handler);
void udev_destroy(struct udev *udev);
OpenPOWER on IntegriCloud