diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2007-04-04 15:55:32 +1000 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2007-04-04 15:55:32 +1000 |
commit | d24e0892cd09e9d41793a59e66b7f86a99b40343 (patch) | |
tree | 44493d32624c50a4d9aba6a6f68162e62c8465d6 | |
parent | 08447507ebe7a7aafdf95c734dd30ec89b1c79f8 (diff) | |
parent | f2c8c4c7197ef61c0378ffbeb4649d28bfcbba06 (diff) | |
download | talos-petitboot-d24e0892cd09e9d41793a59e66b7f86a99b40343.tar.gz talos-petitboot-d24e0892cd09e9d41793a59e66b7f86a99b40343.zip |
Merge branch 'master' of ssh://ozlabs.org/home/jk/git/petitboot
-rw-r--r-- | devices.c | 8 | ||||
-rw-r--r-- | petitboot.c | 29 | ||||
-rw-r--r-- | petitboot.h | 2 |
3 files changed, 36 insertions, 3 deletions
@@ -238,7 +238,7 @@ static twin_bool_t pboot_proc_server_sock(int sock, twin_file_op_t ops, return TWIN_TRUE; } -int pboot_start_device_discovery(void) +int pboot_start_device_discovery(int udev_trigger) { int sock; struct sockaddr_un addr; @@ -269,6 +269,12 @@ int pboot_start_device_discovery(void) twin_set_file(pboot_proc_server_sock, sock, TWIN_READ, &_ctx); + if (udev_trigger) { + int rc = system("udevtrigger"); + if (rc) + LOG("udevtrigger failed, rc %d\n", rc); + } + return TWIN_TRUE; } diff --git a/petitboot.c b/petitboot.c index b443280..416434a 100644 --- a/petitboot.c +++ b/petitboot.c @@ -993,8 +993,35 @@ static void sigint(int sig) syscall(__NR_exit); } +static void usage(const char *progname) +{ + fprintf(stderr, "Usage: %s [-u] [-h]\n", progname); +} + int main(int argc, char **argv) { + int c; + int udev_trigger = 0; + + for (;;) { + c = getopt(argc, argv, "u::h"); + if (c == -1) + break; + + switch (c) { + case 'u': + udev_trigger = 1; + break; + case 'h': + usage(argv[0]); + return EXIT_SUCCESS; + default: + fprintf(stderr, "Unknown option '%c'\n", c); + usage(argv[0]); + return EXIT_FAILURE; + } + } + atexit(exitfunc); signal(SIGINT, sigint); @@ -1035,7 +1062,7 @@ int main(int argc, char **argv) pboot_create_rpane(); pboot_create_spane(); - if (!pboot_start_device_discovery()) { + if (!pboot_start_device_discovery(udev_trigger)) { LOG("Couldn't start device discovery!\n"); return 1; } diff --git a/petitboot.h b/petitboot.h index 82251e4..a77bfef 100644 --- a/petitboot.h +++ b/petitboot.h @@ -12,6 +12,6 @@ int pboot_add_option(int devindex, const char *title, const char *subtitle, twin_pixmap_t *badge, void *data); int pboot_remove_device(const char *dev_id); -int pboot_start_device_discovery(void); +int pboot_start_device_discovery(int udev_trigger); void pboot_exec_option(void *data); void pboot_message(const char *message); |