Upload Tizen:Base source
[framework/base/util-linux-ng.git] / include / linux_reboot.h
1 #ifndef _LINUX_REBOOT_H
2 #define _LINUX_REBOOT_H
3
4 /*
5  * Magic values required to use _reboot() system call.
6  */
7
8 #define LINUX_REBOOT_MAGIC1     0xfee1dead
9 #define LINUX_REBOOT_MAGIC2     672274793
10 #define LINUX_REBOOT_MAGIC2A    85072278
11 #define LINUX_REBOOT_MAGIC2B    369367448
12
13
14 /*
15  * Commands accepted by the _reboot() system call.
16  *
17  * RESTART     Restart system using default command and mode.
18  * HALT        Stop OS and give system control to ROM monitor, if any.
19  * CAD_ON      Ctrl-Alt-Del sequence causes RESTART command.
20  * CAD_OFF     Ctrl-Alt-Del sequence sends SIGINT to init task.
21  * POWER_OFF   Stop OS and remove all power from system, if possible.
22  * RESTART2    Restart system using given command string.
23  */
24
25 #define LINUX_REBOOT_CMD_RESTART        0x01234567
26 #define LINUX_REBOOT_CMD_HALT           0xCDEF0123
27 #define LINUX_REBOOT_CMD_CAD_ON         0x89ABCDEF
28 #define LINUX_REBOOT_CMD_CAD_OFF        0x00000000
29 #define LINUX_REBOOT_CMD_POWER_OFF      0x4321FEDC
30 #define LINUX_REBOOT_CMD_RESTART2       0xA1B2C3D4
31
32 /* Including <unistd.h> makes sure that on a glibc system
33    <features.h> is included, which again defines __GLIBC__ */
34 #include <unistd.h>
35 #include "linux_reboot.h"
36
37 #define USE_LIBC
38
39 #ifdef USE_LIBC
40
41 /* libc version */
42 #if defined __GLIBC__ && __GLIBC__ >= 2
43 #  include <sys/reboot.h>
44 #  define REBOOT(cmd) reboot(cmd)
45 #else
46 extern int reboot(int, int, int);
47 #  define REBOOT(cmd) reboot(LINUX_REBOOT_MAGIC1,LINUX_REBOOT_MAGIC2,(cmd))
48 #endif
49 static inline int my_reboot(int cmd) {
50         return REBOOT(cmd);
51 }
52
53 #else /* no USE_LIBC */
54
55 /* direct syscall version */
56 #include <linux/unistd.h>
57
58 #ifdef _syscall3
59 _syscall3(int,  reboot,  int,  magic, int, magic_too, int, cmd);
60 #else
61 /* Let us hope we have a 3-argument reboot here */
62 extern int reboot(int, int, int);
63 #endif
64
65 static inline int my_reboot(int cmd) {
66         return reboot(LINUX_REBOOT_MAGIC1, LINUX_REBOOT_MAGIC2, cmd);
67 }
68
69 #endif
70
71
72 #endif /*  _LINUX_REBOOT_H  */