summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2015-02-05 02:31:32 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-02-05 02:31:32 +0000
commitb936dfcdbf0e5677593e3c2758180beb2d7078fb (patch)
tree98c66a22d84ae25d5e361b0e1c6cdd2ff1c010fa
parent44fdd5d15a8851e4053af168e7235b30a5f4d34d (diff)
parent1dee489ceaa9dfb6b6609f97380f20b0753eb2c1 (diff)
downloadsystem_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.mk29
-rw-r--r--init/bootchart.cpp24
-rw-r--r--init/bootchart.h4
-rw-r--r--init/devices.cpp34
-rw-r--r--init/init.cpp128
-rw-r--r--init/init_parser.cpp41
-rw-r--r--init/parser.cpp55
-rw-r--r--init/parser.h2
-rw-r--r--init/property_service.cpp18
-rw-r--r--init/ueventd.cpp10
-rw-r--r--init/ueventd_parser.cpp2
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;
}