aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/kexecboot/kexecboot-0.4/add-reboot-option.patch
diff options
context:
space:
mode:
Diffstat (limited to 'recipes/kexecboot/kexecboot-0.4/add-reboot-option.patch')
-rw-r--r--recipes/kexecboot/kexecboot-0.4/add-reboot-option.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/recipes/kexecboot/kexecboot-0.4/add-reboot-option.patch b/recipes/kexecboot/kexecboot-0.4/add-reboot-option.patch
new file mode 100644
index 0000000000..52619229fd
--- /dev/null
+++ b/recipes/kexecboot/kexecboot-0.4/add-reboot-option.patch
@@ -0,0 +1,41 @@
+--- a/kexecboot.c
++++ b/kexecboot.c
+@@ -536,11 +536,23 @@ int main(int argc, char **argv)
+ fread(&evt, sizeof(struct input_event), 1, f);
+ while(evt.type != EV_KEY || evt.value != 0);
+
+- if(evt.code == KEY_UP && choice >0)
+- choice--;
+- if(evt.code == KEY_DOWN && choice < bl->size-1)
+- choice++;
+- // printf("%d %d\n",choice, evt.code);
++ switch (evt.code) {
++ case KEY_UP:
++ if (choice > 0) choice--;
++ break;
++ case KEY_DOWN:
++ if ( choice < (bl->size - 1) ) choice++;
++ break;
++ case KEY_R:
++ /* FIXME: Should work while no boot devices is found */
++ sync();
++ sleep(1);
++ /* if ( -1 == reboot(LINUX_REBOOT_CMD_RESTART) ) { */
++ if ( -1 == reboot(RB_AUTOBOOT) ) {
++ perror("Can't initiate reboot");
++ }
++ break;
++ }
+
+ }while(evt.code != 87 && evt.code != 63);
+ fclose(f);
+--- a/kexecboot.h
++++ b/kexecboot.h
+@@ -29,6 +29,7 @@
+ #include <sys/wait.h>
+ #include <ctype.h>
+ #include <errno.h>
++#include <sys/reboot.h>
+ #include "fb.h"
+ #include "devicescan.h"
+ #include "res/logo-img.h"