Remove /proc/cpuinfo parsing

- Clean up the paths for ro.revision and ro.hardware parsing
- Use ro.hardwre in ueventd instead of parsing the kernel command line

(cherry-pick of 38b340a52f8e864650db8bae1eb88d5c00485db0.)

Bug: 19366018
Change-Id: I018a293f3d46e736a8b65132b5b00b0f7c20edae
This commit is contained in:
Rom Lemarchand 2015-02-27 17:20:29 -08:00 committed by Elliott Hughes
parent f1c2ba490e
commit 74b34f3cb7
4 changed files with 5 additions and 71 deletions

View file

@ -65,8 +65,6 @@ static int property_triggers_enabled = 0;
static char console[32];
static char bootmode[32];
static char hardware[32];
static unsigned revision = 0;
static char qemu[32];
static struct action *cur_action = NULL;
@ -773,6 +771,8 @@ static void export_kernel_boot_props(void)
{ "ro.boot.mode", "ro.bootmode", "unknown", },
{ "ro.boot.baseband", "ro.baseband", "unknown", },
{ "ro.boot.bootloader", "ro.bootloader", "unknown", },
{ "ro.boot.hardware", "ro.hardware", "unknown", },
{ "ro.boot.revision", "ro.revision", "0", },
};
for (i = 0; i < ARRAY_SIZE(prop_map); i++) {
@ -791,16 +791,6 @@ static void export_kernel_boot_props(void)
property_get("ro.bootmode", tmp);
strlcpy(bootmode, tmp, sizeof(bootmode));
/* if this was given on kernel command line, override what we read
* before (e.g. from /proc/cpuinfo), if anything */
ret = property_get("ro.boot.hardware", tmp);
if (ret)
strlcpy(hardware, tmp, sizeof(hardware));
property_set("ro.hardware", hardware);
snprintf(tmp, PROP_VALUE_MAX, "%d", revision);
property_set("ro.revision", tmp);
/* TODO: these are obsolete. We should delete them */
if (!strcmp(bootmode,"factory"))
property_set("ro.factorytest", "1");
@ -1012,8 +1002,6 @@ int main(int argc, char** argv) {
klog_init();
property_init();
get_hardware_name(hardware, &revision);
process_kernel_cmdline();
selinux_callback cb;

View file

@ -30,28 +30,13 @@
#include "util.h"
#include "devices.h"
#include "ueventd_parser.h"
static char hardware[32];
static unsigned revision = 0;
static void import_kernel_nv(char *name, int in_qemu)
{
if (*name != '\0') {
char *value = strchr(name, '=');
if (value != NULL) {
*value++ = 0;
if (!strcmp(name,"androidboot.hardware"))
{
strlcpy(hardware, value, sizeof(hardware));
}
}
}
}
#include "property_service.h"
int ueventd_main(int argc, char **argv)
{
struct pollfd ufd;
int nr;
char hardware[PROP_VALUE_MAX];
char tmp[32];
/*
@ -83,12 +68,7 @@ int ueventd_main(int argc, char **argv)
INFO("starting ueventd\n");
/* Respect hardware passed in through the kernel cmd line. Here we will look
* for androidboot.hardware param in kernel cmdline, and save its value in
* hardware[]. */
import_kernel_cmdline(0, import_kernel_nv);
get_hardware_name(hardware, &revision);
property_get("ro.hardware", hardware);
ueventd_parse_config_file("/ueventd.rc");

View file

@ -400,39 +400,6 @@ void open_devnull_stdio(void)
exit(1);
}
void get_hardware_name(char *hardware, unsigned int *revision) {
// Hardware string was provided on kernel command line.
if (hardware[0]) {
return;
}
FILE* fp = fopen("/proc/cpuinfo", "re");
if (fp == NULL) {
return;
}
char buf[1024];
while (fgets(buf, sizeof(buf), fp) != NULL) {
if (strncmp(buf, "Hardware", 8) == 0) {
const char* hw = strstr(buf, ": ");
if (hw) {
hw += 2;
size_t n = 0;
while (*hw) {
if (!isspace(*hw)) {
hardware[n++] = tolower(*hw);
}
hw++;
if (n == 31) break;
}
hardware[n] = 0;
}
} else if (strncmp(buf, "Revision", 8) == 0) {
sscanf(buf, "Revision : %ux", revision);
}
}
fclose(fp);
}
void import_kernel_cmdline(int in_qemu,
void (*import_kernel_nv)(char *name, int in_qemu))
{

View file

@ -42,7 +42,6 @@ void make_link(const char *oldpath, const char *newpath);
void remove_link(const char *oldpath, const char *newpath);
int wait_for_file(const char *filename, int timeout);
void open_devnull_stdio(void);
void get_hardware_name(char *hardware, unsigned int *revision);
void import_kernel_cmdline(int in_qemu, void (*import_kernel_nv)(char *name, int in_qemu));
int make_dir(const char *path, mode_t mode);
int restorecon(const char *pathname);