X-Git-Url: https://git.ozlabs.org/?p=petitboot;a=blobdiff_plain;f=discover%2Fudev.c;h=dd9fc7ccea6d77cd8fbb8a5fa33a9cbf01cfbedb;hp=16d050e7702aae28de901f7ed969494804c3d129;hb=1d8d12aceeb41c2cde4736fe4c9926cbc9cf38d4;hpb=1a44c3bf2503b12c78c205676d903fbb05fb7ef0 diff --git a/discover/udev.c b/discover/udev.c index 16d050e..dd9fc7c 100644 --- a/discover/udev.c +++ b/discover/udev.c @@ -10,10 +10,10 @@ #include #include +#include +#include #include "udev.h" -#include "log.h" -#include "waiter.h" #include "pb-discover.h" #include "device-handler.h" @@ -60,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; @@ -82,11 +82,11 @@ static void print_event(struct udev_event *event) action = event->action == UDEV_ACTION_ADD ? "add" : "remove"; pb_log("udev %s event:\n", action); - printf("\tdevice: %s\n", event->device); + pb_log("\tdevice: %s\n", event->device); for (i = 0; params[i]; i++) - printf("\t%-12s => %s\n", - params[i], event_param(event, params[i])); + pb_log("\t%-12s => %s\n", + params[i], udev_event_param(event, params[i])); } @@ -201,6 +201,8 @@ struct udev *udev_init(struct device_handler *handler) waiter_register(udev->socket, WAIT_IN, udev_process, udev); + pb_log("%s: waiting on %s\n", __func__, PBOOT_DEVICE_SOCKET); + return udev; out_err: @@ -208,6 +210,16 @@ out_err: return NULL; } +int udev_trigger(struct udev __attribute__((unused)) *udev) +{ + int rc = system("/sbin/udevadm trigger --subsystem-match=block"); + + if (rc) + pb_log("udev trigger failed: %d (%d)\n", rc, WEXITSTATUS(rc)); + + return WEXITSTATUS(rc); +} + void udev_destroy(struct udev *udev) { talloc_free(udev);