diff options
author | Elliott Hughes <enh@google.com> | 2015-02-05 02:31:32 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-02-05 02:31:32 +0000 |
commit | b936dfcdbf0e5677593e3c2758180beb2d7078fb (patch) | |
tree | 98c66a22d84ae25d5e361b0e1c6cdd2ff1c010fa | |
parent | 44fdd5d15a8851e4053af168e7235b30a5f4d34d (diff) | |
parent | 1dee489ceaa9dfb6b6609f97380f20b0753eb2c1 (diff) | |
download | system_core-b936dfcdbf0e5677593e3c2758180beb2d7078fb.zip system_core-b936dfcdbf0e5677593e3c2758180beb2d7078fb.tar.gz system_core-b936dfcdbf0e5677593e3c2758180beb2d7078fb.tar.bz2 |
am 1dee489c: Merge "Stop using #if for conditional compilation."
* commit '1dee489ceaa9dfb6b6609f97380f20b0753eb2c1':
Stop using #if for conditional compilation.
-rw-r--r-- | init/Android.mk | 29 | ||||
-rw-r--r-- | init/bootchart.cpp | 24 | ||||
-rw-r--r-- | init/bootchart.h | 4 | ||||
-rw-r--r-- | init/devices.cpp | 34 | ||||
-rw-r--r-- | init/init.cpp | 128 | ||||
-rw-r--r-- | init/init_parser.cpp | 41 | ||||
-rw-r--r-- | init/parser.cpp | 55 | ||||
-rw-r--r-- | init/parser.h | 2 | ||||
-rw-r--r-- | init/property_service.cpp | 18 | ||||
-rw-r--r-- | init/ueventd.cpp | 10 | ||||
-rw-r--r-- | init/ueventd_parser.cpp | 2 |
11 files changed, 162 insertions, 185 deletions
diff --git a/init/Android.mk b/init/Android.mk index ae472bd..bf8dea5 100644 --- a/init/Android.mk +++ b/init/Android.mk @@ -3,6 +3,24 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) +# -- + +ifeq ($(strip $(INIT_BOOTCHART)),true) +LOCAL_CPPFLAGS += -DBOOTCHART=1 +else +LOCAL_CPPFLAGS += -DBOOTCHART=0 +endif + +ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) +LOCAL_CPPFLAGS += -DALLOW_LOCAL_PROP_OVERRIDE=1 -DALLOW_DISABLE_SELINUX=1 +else +LOCAL_CPPFLAGS += -DALLOW_LOCAL_PROP_OVERRIDE=0 -DALLOW_DISABLE_SELINUX=0 +endif + +LOCAL_CPPFLAGS += -DLOG_UEVENTS=0 + +# -- + LOCAL_SRC_FILES:= \ bootchart.cpp \ builtins.cpp \ @@ -25,17 +43,6 @@ LOCAL_CPPFLAGS += \ -Werror -Wno-error=deprecated-declarations \ -Wno-unused-parameter \ -ifeq ($(strip $(INIT_BOOTCHART)),true) -LOCAL_CPPFLAGS += -DBOOTCHART=1 -endif - -ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) -LOCAL_CPPFLAGS += -DALLOW_LOCAL_PROP_OVERRIDE=1 -DALLOW_DISABLE_SELINUX=1 -endif - -# Enable ueventd logging -#LOCAL_CPPFLAGS += -DLOG_UEVENTS=1 - LOCAL_MODULE:= init LOCAL_FORCE_STATIC_EXECUTABLE := true diff --git a/init/bootchart.cpp b/init/bootchart.cpp index 3d294cf..d275096 100644 --- a/init/bootchart.cpp +++ b/init/bootchart.cpp @@ -59,21 +59,21 @@ proc_read(const char* filename, char* buff, size_t buffsize) #define FILE_BUFF_SIZE 65536 -typedef struct { +struct FileBuff { int count; int fd; char data[FILE_BUFF_SIZE]; -} FileBuffRec, *FileBuff; +}; static void -file_buff_open( FileBuff buff, const char* path ) +file_buff_open( FileBuff* buff, const char* path ) { buff->count = 0; buff->fd = open(path, O_WRONLY|O_CREAT|O_TRUNC, 0755); } static void -file_buff_write( FileBuff buff, const void* src, int len ) +file_buff_write( FileBuff* buff, const void* src, int len ) { while (len > 0) { int avail = sizeof(buff->data) - buff->count; @@ -93,7 +93,7 @@ file_buff_write( FileBuff buff, const void* src, int len ) } static void -file_buff_done( FileBuff buff ) +file_buff_done( FileBuff* buff ) { if (buff->count > 0) { TEMP_FAILURE_RETRY(write(buff->fd, buff->data, buff->count)); @@ -152,7 +152,7 @@ log_header(void) } static void -do_log_uptime(FileBuff log) +do_log_uptime(FileBuff* log) { char buff[65]; int len; @@ -163,14 +163,14 @@ do_log_uptime(FileBuff log) } static void -do_log_ln(FileBuff log) +do_log_ln(FileBuff* log) { file_buff_write(log, "\n", 1); } static void -do_log_file(FileBuff log, const char* procfile) +do_log_file(FileBuff* log, const char* procfile) { char buff[1024]; int fd; @@ -196,7 +196,7 @@ do_log_file(FileBuff log, const char* procfile) } static void -do_log_procs(FileBuff log) +do_log_procs(FileBuff* log) { DIR* dir = opendir("/proc"); struct dirent* entry; @@ -248,9 +248,9 @@ do_log_procs(FileBuff log) do_log_ln(log); } -static FileBuffRec log_stat[1]; -static FileBuffRec log_procs[1]; -static FileBuffRec log_disks[1]; +static FileBuff log_stat[1]; +static FileBuff log_procs[1]; +static FileBuff log_disks[1]; /* called to setup bootcharting */ int bootchart_init( void ) diff --git a/init/bootchart.h b/init/bootchart.h index fcd20b1..9ba3c40 100644 --- a/init/bootchart.h +++ b/init/bootchart.h @@ -17,10 +17,6 @@ #ifndef _BOOTCHART_H #define _BOOTCHART_H -#ifndef BOOTCHART -# define BOOTCHART 0 -#endif - extern int bootchart_init(void); extern int bootchart_step(void); extern void bootchart_finish(void); diff --git a/init/devices.cpp b/init/devices.cpp index 28f2ec0..b55933c 100644 --- a/init/devices.cpp +++ b/init/devices.cpp @@ -366,8 +366,6 @@ static int find_pci_device_prefix(const char *path, char *buf, ssize_t buf_sz) return 0; } -#if LOG_UEVENTS - static inline suseconds_t get_usecs(void) { struct timeval tv; @@ -375,15 +373,6 @@ static inline suseconds_t get_usecs(void) return tv.tv_sec * (suseconds_t) 1000000 + tv.tv_usec; } -#define log_event_print(x...) INFO(x) - -#else - -#define log_event_print(fmt, args...) do { } while (0) -#define get_usecs() 0 - -#endif - static void parse_event(const char *msg, struct uevent *uevent) { uevent->action = ""; @@ -432,9 +421,11 @@ static void parse_event(const char *msg, struct uevent *uevent) ; } - log_event_print("event { '%s', '%s', '%s', '%s', %d, %d }\n", - uevent->action, uevent->path, uevent->subsystem, - uevent->firmware, uevent->major, uevent->minor); + if (LOG_UEVENTS) { + INFO("event { '%s', '%s', '%s', '%s', %d, %d }\n", + uevent->action, uevent->path, uevent->subsystem, + uevent->firmware, uevent->major, uevent->minor); + } } static char **get_character_device_symlinks(struct uevent *uevent) @@ -933,7 +924,7 @@ static void handle_firmware_event(struct uevent *uevent) process_firmware_event(uevent); _exit(EXIT_SUCCESS); } else if (pid < 0) { - log_event_print("could not fork to process firmware event: %s\n", strerror(errno)); + ERROR("could not fork to process firmware event: %s\n", strerror(errno)); } } @@ -972,7 +963,7 @@ void handle_device_fd() ** ** We drain any pending events from the netlink socket every time ** we poke another uevent file to make sure we don't overrun the -** socket's buffer. +** socket's buffer. */ static void do_coldboot(DIR *d) @@ -1046,12 +1037,11 @@ void device_init(void) t1 = get_usecs(); fd = open(COLDBOOT_DONE, O_WRONLY|O_CREAT|O_CLOEXEC, 0000); close(fd); - log_event_print("coldboot %ld uS\n", ((long) (t1 - t0))); - // t0 & t1 are unused if the log isn't doing anything. - (void)t0; - (void)t1; - } else { - log_event_print("skipping coldboot, already done\n"); + if (LOG_UEVENTS) { + INFO("coldboot %ld uS\n", ((long) (t1 - t0))); + } + } else if (LOG_UEVENTS) { + INFO("skipping coldboot, already done\n"); } } diff --git a/init/init.cpp b/init/init.cpp index 06a7326..da3fe96 100644 --- a/init/init.cpp +++ b/init/init.cpp @@ -63,10 +63,8 @@ struct selabel_handle *sehandle_prop; static int property_triggers_enabled = 0; -#if BOOTCHART static int bootchart_count; static long long bootchart_time = 0; -#endif static char console[32]; static char bootmode[32]; @@ -292,14 +290,14 @@ void service_start(struct service *svc, const char *dynamic_args) zap_stdio(); } -#if 0 - for (n = 0; svc->args[n]; n++) { - INFO("args[%d] = '%s'\n", n, svc->args[n]); - } - for (n = 0; ENV[n]; n++) { - INFO("env[%d] = '%s'\n", n, ENV[n]); + if (false) { + for (size_t n = 0; svc->args[n]; n++) { + INFO("args[%zu] = '%s'\n", n, svc->args[n]); + } + for (size_t n = 0; ENV[n]; n++) { + INFO("env[%zu] = '%s'\n", n, ENV[n]); + } } -#endif setpgid(0, getpid()); @@ -859,7 +857,6 @@ static int queue_property_triggers_action(int nargs, char **args) return 0; } -#if BOOTCHART static int bootchart_init_action(int nargs, char **args) { bootchart_count = bootchart_init(); @@ -873,7 +870,6 @@ static int bootchart_init_action(int nargs, char **args) return 0; } -#endif void selinux_init_all_handles(void) { @@ -884,45 +880,41 @@ void selinux_init_all_handles(void) static bool selinux_is_disabled(void) { -#ifdef ALLOW_DISABLE_SELINUX - char tmp[PROP_VALUE_MAX]; - - if (access("/sys/fs/selinux", F_OK) != 0) { - /* SELinux is not compiled into the kernel, or has been disabled - * via the kernel command line "selinux=0". - */ - return true; - } + if (ALLOW_DISABLE_SELINUX) { + if (access("/sys/fs/selinux", F_OK) != 0) { + // SELinux is not compiled into the kernel, or has been disabled + // via the kernel command line "selinux=0". + return true; + } - if ((property_get("ro.boot.selinux", tmp) != 0) && (strcmp(tmp, "disabled") == 0)) { - /* SELinux is compiled into the kernel, but we've been told to disable it. */ - return true; + char tmp[PROP_VALUE_MAX]; + if ((property_get("ro.boot.selinux", tmp) != 0) && (strcmp(tmp, "disabled") == 0)) { + // SELinux is compiled into the kernel, but we've been told to disable it. + return true; + } } -#endif return false; } static bool selinux_is_enforcing(void) { -#ifdef ALLOW_DISABLE_SELINUX - char tmp[PROP_VALUE_MAX]; - - if (property_get("ro.boot.selinux", tmp) == 0) { - /* Property is not set. Assume enforcing */ - return true; - } + if (ALLOW_DISABLE_SELINUX) { + char tmp[PROP_VALUE_MAX]; + if (property_get("ro.boot.selinux", tmp) == 0) { + // Property is not set. Assume enforcing. + return true; + } - if (strcmp(tmp, "permissive") == 0) { - /* SELinux is in the kernel, but we've been told to go into permissive mode */ - return false; - } + if (strcmp(tmp, "permissive") == 0) { + // SELinux is in the kernel, but we've been told to go into permissive mode. + return false; + } - if (strcmp(tmp, "enforcing") != 0) { - ERROR("SELinux: Unknown value of ro.boot.selinux. Got: \"%s\". Assuming enforcing.\n", tmp); + if (strcmp(tmp, "enforcing") != 0) { + ERROR("SELinux: Unknown value of ro.boot.selinux. Got: \"%s\". Assuming enforcing.\n", tmp); + } } - -#endif return true; } @@ -1097,9 +1089,9 @@ int main(int argc, char **argv) queue_builtin_action(queue_property_triggers_action, "queue_property_triggers"); -#if BOOTCHART - queue_builtin_action(bootchart_init_action, "bootchart_init"); -#endif + if (BOOTCHART) { + queue_builtin_action(bootchart_init_action, "bootchart_init"); + } for(;;) { int nr, i, timeout = -1; @@ -1135,37 +1127,39 @@ int main(int argc, char **argv) timeout = 0; } - if (!action_queue_empty() || cur_action) + if (!action_queue_empty() || cur_action) { timeout = 0; + } -#if BOOTCHART - if (bootchart_count > 0) { - long long current_time; - int elapsed_time, remaining_time; - - current_time = bootchart_gettime(); - elapsed_time = current_time - bootchart_time; - - if (elapsed_time >= BOOTCHART_POLLING_MS) { - /* count missed samples */ - while (elapsed_time >= BOOTCHART_POLLING_MS) { - elapsed_time -= BOOTCHART_POLLING_MS; - bootchart_count--; + if (BOOTCHART) { + if (bootchart_count > 0) { + long long current_time; + int elapsed_time, remaining_time; + + current_time = bootchart_gettime(); + elapsed_time = current_time - bootchart_time; + + if (elapsed_time >= BOOTCHART_POLLING_MS) { + /* count missed samples */ + while (elapsed_time >= BOOTCHART_POLLING_MS) { + elapsed_time -= BOOTCHART_POLLING_MS; + bootchart_count--; + } + /* count may be negative, take a sample anyway */ + bootchart_time = current_time; + if (bootchart_step() < 0 || bootchart_count <= 0) { + bootchart_finish(); + bootchart_count = 0; + } } - /* count may be negative, take a sample anyway */ - bootchart_time = current_time; - if (bootchart_step() < 0 || bootchart_count <= 0) { - bootchart_finish(); - bootchart_count = 0; + if (bootchart_count > 0) { + remaining_time = BOOTCHART_POLLING_MS - elapsed_time; + if (timeout < 0 || timeout > remaining_time) { + timeout = remaining_time; + } } } - if (bootchart_count > 0) { - remaining_time = BOOTCHART_POLLING_MS - elapsed_time; - if (timeout < 0 || timeout > remaining_time) - timeout = remaining_time; - } } -#endif nr = poll(ufds, fd_count, timeout); if (nr <= 0) diff --git a/init/init_parser.cpp b/init/init_parser.cpp index c8f2ea7..facb0cf 100644 --- a/init/init_parser.cpp +++ b/init/init_parser.cpp @@ -73,6 +73,45 @@ static struct { #define kw_func(kw) (keyword_info[kw].func) #define kw_nargs(kw) (keyword_info[kw].nargs) +void dump_parser_state() { + if (false) { + struct listnode* node; + list_for_each(node, &service_list) { + service* svc = node_to_item(node, struct service, slist); + INFO("service %s\n", svc->name); + INFO(" class '%s'\n", svc->classname); + INFO(" exec"); + for (int n = 0; n < svc->nargs; n++) { + INFO(" '%s'", svc->args[n]); + } + INFO("\n"); + for (socketinfo* si = svc->sockets; si; si = si->next) { + INFO(" socket %s %s 0%o\n", si->name, si->type, si->perm); + } + } + + list_for_each(node, &action_list) { + action* act = node_to_item(node, struct action, alist); + INFO("on "); + char name_str[256] = ""; + build_triggers_string(name_str, sizeof(name_str), act); + INFO("%s", name_str); + INFO("\n"); + + struct listnode* node2; + list_for_each(node2, &act->commands) { + command* cmd = node_to_item(node2, struct command, clist); + INFO(" %p", cmd->func); + for (int n = 0; n < cmd->nargs; n++) { + INFO(" %s", cmd->args[n]); + } + INFO("\n"); + } + INFO("\n"); + } + } +} + static int lookup_keyword(const char *s) { switch (*s++) { @@ -403,7 +442,7 @@ int init_parse_config_file(const char *fn) if (!data) return -1; parse_config(fn, data); - DUMP(); + dump_parser_state(); return 0; } diff --git a/init/parser.cpp b/init/parser.cpp index 80bfb09..8193729 100644 --- a/init/parser.cpp +++ b/init/parser.cpp @@ -1,64 +1,17 @@ -#include <stdio.h> +#include "parser.h" + #include <stdarg.h> +#include <stdio.h> #include <string.h> -#include "parser.h" #include "log.h" -#define RAW(x...) log_write(6, x) - -void DUMP(void) -{ -#if 0 - struct service *svc; - struct action *act; - struct command *cmd; - struct listnode *node; - struct listnode *node2; - char name_str[256] = ""; - struct socketinfo *si; - int n; - - list_for_each(node, &service_list) { - svc = node_to_item(node, struct service, slist); - RAW("service %s\n", svc->name); - RAW(" class '%s'\n", svc->classname); - RAW(" exec"); - for (n = 0; n < svc->nargs; n++) { - RAW(" '%s'", svc->args[n]); - } - RAW("\n"); - for (si = svc->sockets; si; si = si->next) { - RAW(" socket %s %s 0%o\n", si->name, si->type, si->perm); - } - } - - list_for_each(node, &action_list) { - act = node_to_item(node, struct action, alist); - RAW("on "); - build_triggers_string(name_str, sizeof(name_str), act); - RAW("%s", name_str); - RAW("\n"); - - list_for_each(node2, &act->commands) { - cmd = node_to_item(node2, struct command, clist); - RAW(" %p", cmd->func); - for (n = 0; n < cmd->nargs; n++) { - RAW(" %s", cmd->args[n]); - } - RAW("\n"); - } - RAW("\n"); - } -#endif -} - void parse_error(struct parse_state *state, const char *fmt, ...) { va_list ap; char buf[128]; int off; - + snprintf(buf, 128, "%s: %d: ", state->filename, state->line); buf[127] = 0; off = strlen(buf); diff --git a/init/parser.h b/init/parser.h index a58272a..95e1164 100644 --- a/init/parser.h +++ b/init/parser.h @@ -33,7 +33,7 @@ struct parse_state void *priv; }; -void DUMP(void); +void dump_parser_state(void); int next_token(struct parse_state *state); void parse_error(struct parse_state *state, const char *fmt, ...); diff --git a/init/property_service.cpp b/init/property_service.cpp index 4f0a46c..cc1ee34 100644 --- a/init/property_service.cpp +++ b/init/property_service.cpp @@ -56,10 +56,10 @@ static int property_area_inited = 0; static int property_set_fd = -1; -typedef struct { +struct workspace { size_t size; int fd; -} workspace; +}; static int init_workspace(workspace *w, size_t size) { @@ -503,15 +503,13 @@ int properties_inited(void) } static void load_override_properties() { -#ifdef ALLOW_LOCAL_PROP_OVERRIDE - char debuggable[PROP_VALUE_MAX]; - int ret; - - ret = property_get("ro.debuggable", debuggable); - if (ret && (strcmp(debuggable, "1") == 0)) { - load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE, NULL); + if (ALLOW_LOCAL_PROP_OVERRIDE) { + char debuggable[PROP_VALUE_MAX]; + int ret = property_get("ro.debuggable", debuggable); + if (ret && (strcmp(debuggable, "1") == 0)) { + load_properties_from_file(PROP_PATH_LOCAL_OVERRIDE, NULL); + } } -#endif /* ALLOW_LOCAL_PROP_OVERRIDE */ } diff --git a/init/ueventd.cpp b/init/ueventd.cpp index 86621cd..d56b91a 100644 --- a/init/ueventd.cpp +++ b/init/ueventd.cpp @@ -70,12 +70,12 @@ int ueventd_main(int argc, char **argv) open_devnull_stdio(); klog_init(); -#if LOG_UEVENTS - /* Ensure we're at a logging level that will show the events */ - if (klog_get_level() < KLOG_INFO_LEVEL) { - klog_set_level(KLOG_INFO_LEVEL); + if (LOG_UEVENTS) { + /* Ensure we're at a logging level that will show the events */ + if (klog_get_level() < KLOG_INFO_LEVEL) { + klog_set_level(KLOG_INFO_LEVEL); + } } -#endif union selinux_callback cb; cb.func_log = log_callback; diff --git a/init/ueventd_parser.cpp b/init/ueventd_parser.cpp index f54a90b..2ae251f 100644 --- a/init/ueventd_parser.cpp +++ b/init/ueventd_parser.cpp @@ -235,7 +235,7 @@ int ueventd_parse_config_file(const char *fn) if (!data) return -1; parse_config(fn, data); - DUMP(); + dump_parser_state(); return 0; } |