Contents of /tags/mkinitrd-6_1_3/busybox/include/busybox.h
Parent Directory | Revision Log
Revision 846 -
(show annotations)
(download)
Mon May 4 18:51:23 2009 UTC (15 years, 4 months ago) by niro
File MIME type: text/plain
File size: 1883 byte(s)
Mon May 4 18:51:23 2009 UTC (15 years, 4 months ago) by niro
File MIME type: text/plain
File size: 1883 byte(s)
tagged 'mkinitrd-6_1_3'
1 | /* vi: set sw=4 ts=4: */ |
2 | /* |
3 | * Busybox main internal header file |
4 | * |
5 | * Licensed under the GPL v2 or later, see the file LICENSE in this tarball. |
6 | */ |
7 | #ifndef _BB_INTERNAL_H_ |
8 | #define _BB_INTERNAL_H_ 1 |
9 | |
10 | #include "libbb.h" |
11 | |
12 | #if __GNUC_PREREQ(4,1) |
13 | # pragma GCC visibility push(hidden) |
14 | #endif |
15 | |
16 | /* order matters: used as index into "install_dir[]" in appletlib.c */ |
17 | typedef enum bb_install_loc_t { |
18 | _BB_DIR_ROOT = 0, |
19 | _BB_DIR_BIN, |
20 | _BB_DIR_SBIN, |
21 | _BB_DIR_USR_BIN, |
22 | _BB_DIR_USR_SBIN |
23 | } bb_install_loc_t; |
24 | |
25 | typedef enum bb_suid_t { |
26 | _BB_SUID_NEVER = 0, |
27 | _BB_SUID_MAYBE, |
28 | _BB_SUID_ALWAYS |
29 | } bb_suid_t; |
30 | |
31 | |
32 | /* Defined in appletlib.c (by including generated applet_tables.h) */ |
33 | /* Keep in sync with applets/applet_tables.c! */ |
34 | extern const char applet_names[]; |
35 | extern int (*const applet_main[])(int argc, char **argv); |
36 | extern const uint16_t applet_nameofs[]; |
37 | extern const uint8_t applet_install_loc[]; |
38 | |
39 | #if ENABLE_FEATURE_SUID || ENABLE_FEATURE_PREFER_APPLETS |
40 | #define APPLET_NAME(i) (applet_names + (applet_nameofs[i] & 0x0fff)) |
41 | #else |
42 | #define APPLET_NAME(i) (applet_names + applet_nameofs[i]) |
43 | #endif |
44 | |
45 | #if ENABLE_FEATURE_PREFER_APPLETS |
46 | #define APPLET_IS_NOFORK(i) (applet_nameofs[i] & (1 << 12)) |
47 | #define APPLET_IS_NOEXEC(i) (applet_nameofs[i] & (1 << 13)) |
48 | #endif |
49 | |
50 | #if ENABLE_FEATURE_SUID |
51 | #define APPLET_SUID(i) ((applet_nameofs[i] >> 14) & 0x3) |
52 | #endif |
53 | |
54 | #if ENABLE_FEATURE_INSTALLER |
55 | #define APPLET_INSTALL_LOC(i) ({ \ |
56 | unsigned v = (i); \ |
57 | if (v & 1) v = applet_install_loc[v/2] >> 4; \ |
58 | else v = applet_install_loc[v/2] & 0xf; \ |
59 | v; }) |
60 | #endif |
61 | |
62 | |
63 | /* Length of these names has effect on size of libbusybox |
64 | * and "individual" binaries. Keep them short. |
65 | */ |
66 | #if ENABLE_BUILD_LIBBUSYBOX |
67 | #if ENABLE_FEATURE_SHARED_BUSYBOX |
68 | int lbb_main(char **argv) EXTERNALLY_VISIBLE; |
69 | #else |
70 | int lbb_main(char **argv); |
71 | #endif |
72 | #endif |
73 | |
74 | #if __GNUC_PREREQ(4,1) |
75 | # pragma GCC visibility pop |
76 | #endif |
77 | |
78 | #endif /* _BB_INTERNAL_H_ */ |