diff options
Diffstat (limited to 'init.c')
-rw-r--r-- | init.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -41,6 +41,7 @@ | |||
41 | #include <linux/serial.h> /* for serial_struct */ | 41 | #include <linux/serial.h> /* for serial_struct */ |
42 | #include <sys/vt.h> /* for vt_stat */ | 42 | #include <sys/vt.h> /* for vt_stat */ |
43 | #include <sys/ioctl.h> | 43 | #include <sys/ioctl.h> |
44 | #include <linux/version.h> | ||
44 | #ifdef BB_SYSLOGD | 45 | #ifdef BB_SYSLOGD |
45 | #include <sys/syslog.h> | 46 | #include <sys/syslog.h> |
46 | #endif | 47 | #endif |
@@ -49,6 +50,10 @@ | |||
49 | #error Sorry, I depend on the /proc filesystem right now. | 50 | #error Sorry, I depend on the /proc filesystem right now. |
50 | #endif | 51 | #endif |
51 | 52 | ||
53 | #ifndef KERNEL_VERSION | ||
54 | #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) | ||
55 | #endif | ||
56 | |||
52 | 57 | ||
53 | #define VT_PRIMARY "/dev/tty1" /* Primary virtual console */ | 58 | #define VT_PRIMARY "/dev/tty1" /* Primary virtual console */ |
54 | #define VT_SECONDARY "/dev/tty2" /* Virtual console */ | 59 | #define VT_SECONDARY "/dev/tty2" /* Virtual console */ |
@@ -418,9 +423,11 @@ static void halt_signal(int sig) | |||
418 | "The system is halted. Press CTRL-ALT-DEL or turn off power\r\n"); | 423 | "The system is halted. Press CTRL-ALT-DEL or turn off power\r\n"); |
419 | sync(); | 424 | sync(); |
420 | #ifndef DEBUG_INIT | 425 | #ifndef DEBUG_INIT |
426 | #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0) | ||
421 | if (sig == SIGUSR2) | 427 | if (sig == SIGUSR2) |
422 | reboot(RB_POWER_OFF); | 428 | reboot(RB_POWER_OFF); |
423 | else | 429 | else |
430 | #endif | ||
424 | reboot(RB_HALT_SYSTEM); | 431 | reboot(RB_HALT_SYSTEM); |
425 | #endif | 432 | #endif |
426 | exit(0); | 433 | exit(0); |