Merge branch 'eclair-plus-aosp' of ssh://android-git.corp.google.com:29418/platform/system/core into eclair-mr2-plus-aosp
This commit is contained in:
commit
c0b1c0ac80
11 changed files with 61 additions and 19 deletions
|
|
@ -131,6 +131,18 @@ static void service_start_if_not_disabled(struct service *svc)
|
|||
}
|
||||
}
|
||||
|
||||
int do_chdir(int nargs, char **args)
|
||||
{
|
||||
chdir(args[1]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int do_chroot(int nargs, char **args)
|
||||
{
|
||||
chroot(args[1]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int do_class_start(int nargs, char **args)
|
||||
{
|
||||
/* Starting a class does not start services
|
||||
|
|
@ -206,7 +218,7 @@ int do_insmod(int nargs, char **args)
|
|||
|
||||
int do_import(int nargs, char **args)
|
||||
{
|
||||
return -1;
|
||||
return parse_config_file(args[1]);
|
||||
}
|
||||
|
||||
int do_mkdir(int nargs, char **args)
|
||||
|
|
@ -400,6 +412,8 @@ int do_restart(int nargs, char **args)
|
|||
|
||||
int do_trigger(int nargs, char **args)
|
||||
{
|
||||
action_for_each_trigger(args[1], action_add_queue_tail);
|
||||
drain_action_queue();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -125,6 +125,7 @@ static struct perms_ devperms[] = {
|
|||
{ "/dev/pmem_camera", 0660, AID_SYSTEM, AID_CAMERA, 1 },
|
||||
{ "/dev/oncrpc/", 0660, AID_ROOT, AID_SYSTEM, 1 },
|
||||
{ "/dev/adsp/", 0660, AID_SYSTEM, AID_AUDIO, 1 },
|
||||
{ "/dev/snd/", 0660, AID_SYSTEM, AID_AUDIO, 1 },
|
||||
{ "/dev/mt9t013", 0660, AID_SYSTEM, AID_SYSTEM, 0 },
|
||||
{ "/dev/msm_camera/", 0660, AID_SYSTEM, AID_SYSTEM, 1 },
|
||||
{ "/dev/akm8976_daemon",0640, AID_COMPASS, AID_SYSTEM, 0 },
|
||||
|
|
@ -312,7 +313,7 @@ static void make_device(const char *path, int block, int major, int minor)
|
|||
chown(path, uid, gid);
|
||||
}
|
||||
|
||||
#ifdef LOG_UEVENTS
|
||||
#if LOG_UEVENTS
|
||||
|
||||
static inline suseconds_t get_usecs(void)
|
||||
{
|
||||
|
|
|
|||
7
init/init.c
Normal file → Executable file
7
init/init.c
Normal file → Executable file
|
|
@ -65,8 +65,6 @@ static struct input_keychord *keychords = 0;
|
|||
static int keychords_count = 0;
|
||||
static int keychords_length = 0;
|
||||
|
||||
static void drain_action_queue(void);
|
||||
|
||||
static void notify_service_state(const char *name, const char *state)
|
||||
{
|
||||
char pname[PROP_NAME_MAX];
|
||||
|
|
@ -391,12 +389,13 @@ static int wait_for_one_process(int block)
|
|||
}
|
||||
}
|
||||
|
||||
svc->flags |= SVC_RESTARTING;
|
||||
|
||||
/* Execute all onrestart commands for this service. */
|
||||
list_for_each(node, &svc->onrestart.commands) {
|
||||
cmd = node_to_item(node, struct command, clist);
|
||||
cmd->func(cmd->nargs, cmd->args);
|
||||
}
|
||||
svc->flags |= SVC_RESTARTING;
|
||||
notify_service_state(svc->name, "restarting");
|
||||
return 0;
|
||||
}
|
||||
|
|
@ -667,7 +666,7 @@ static void get_hardware_name(void)
|
|||
}
|
||||
}
|
||||
|
||||
static void drain_action_queue(void)
|
||||
void drain_action_queue(void)
|
||||
{
|
||||
struct listnode *node;
|
||||
struct command *cmd;
|
||||
|
|
|
|||
|
|
@ -165,6 +165,7 @@ void service_stop(struct service *svc);
|
|||
void service_start(struct service *svc, const char *dynamic_args);
|
||||
void property_changed(const char *name, const char *value);
|
||||
|
||||
void drain_action_queue(void);
|
||||
struct action *action_remove_queue_head(void);
|
||||
void action_add_queue_tail(struct action *act);
|
||||
void action_for_each_trigger(const char *trigger,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,7 @@
|
|||
|
||||
#ifndef KEYWORD
|
||||
int do_chroot(int nargs, char **args);
|
||||
int do_chdir(int nargs, char **args);
|
||||
int do_class_start(int nargs, char **args);
|
||||
int do_class_stop(int nargs, char **args);
|
||||
int do_domainname(int nargs, char **args);
|
||||
|
|
@ -32,6 +34,8 @@ enum {
|
|||
K_UNKNOWN,
|
||||
#endif
|
||||
KEYWORD(capability, OPTION, 0, 0)
|
||||
KEYWORD(chdir, COMMAND, 1, do_chdir)
|
||||
KEYWORD(chroot, COMMAND, 1, do_chroot)
|
||||
KEYWORD(class, OPTION, 0, 0)
|
||||
KEYWORD(class_start, COMMAND, 1, do_class_start)
|
||||
KEYWORD(class_stop, COMMAND, 1, do_class_stop)
|
||||
|
|
|
|||
|
|
@ -129,6 +129,8 @@ int lookup_keyword(const char *s)
|
|||
case 'c':
|
||||
if (!strcmp(s, "opy")) return K_copy;
|
||||
if (!strcmp(s, "apability")) return K_capability;
|
||||
if (!strcmp(s, "hdir")) return K_chdir;
|
||||
if (!strcmp(s, "hroot")) return K_chroot;
|
||||
if (!strcmp(s, "lass")) return K_class;
|
||||
if (!strcmp(s, "lass_start")) return K_class_start;
|
||||
if (!strcmp(s, "lass_stop")) return K_class_stop;
|
||||
|
|
|
|||
|
|
@ -145,12 +145,18 @@ import <filename>
|
|||
hostname <name>
|
||||
Set the host name.
|
||||
|
||||
chdir <directory>
|
||||
Change working directory.
|
||||
|
||||
chmod <octal-mode> <path>
|
||||
Change file access permissions.
|
||||
|
||||
chown <owner> <group> <path>
|
||||
Change file owner and group.
|
||||
|
||||
chroot <directory>
|
||||
Change process root directory.
|
||||
|
||||
class_start <serviceclass>
|
||||
Start all services of the specified class if they are
|
||||
not already running.
|
||||
|
|
|
|||
|
|
@ -17,8 +17,7 @@
|
|||
#include <machine/cpu-features.h>
|
||||
|
||||
/*
|
||||
* NOTE: these atomic operations are SMP safe on all architectures,
|
||||
* except swap(), see below.
|
||||
* NOTE: these atomic operations are SMP safe on all architectures.
|
||||
*/
|
||||
|
||||
.text
|
||||
|
|
@ -213,11 +212,18 @@ android_atomic_or:
|
|||
* output: r0 = old value
|
||||
*/
|
||||
|
||||
/* FIXME: this is not safe on SMP systems
|
||||
* a general way to do it is to use kernel_cmpxchg */
|
||||
|
||||
/* replaced swp instruction with ldrex/strex for ARMv6 & ARMv7 */
|
||||
android_atomic_swap:
|
||||
#if defined (_ARM_HAVE_LDREX_STREX)
|
||||
1: ldrex r2, [r1]
|
||||
strex r3, r0, [r1]
|
||||
teq r3, #0
|
||||
bne 1b
|
||||
mov r0, r2
|
||||
mcr p15, 0, r0, c7, c10, 5 /* or, use dmb */
|
||||
#else
|
||||
swp r0, r0, [r1]
|
||||
#endif
|
||||
bx lr
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -3,16 +3,20 @@
|
|||
ifconfig eth0 10.0.2.15 netmask 255.255.255.0 up
|
||||
route add default gw 10.0.2.2 dev eth0
|
||||
|
||||
qemud=`getprop.ro.kernel.android.qemud`
|
||||
if test -z "$qemud"; then
|
||||
qemud=`getprop ro.kernel.android.qemud`
|
||||
case "$qemud" in
|
||||
"")
|
||||
radio_ril=`getprop ro.kernel.android.ril`
|
||||
if test -z "$radio_ril"; then
|
||||
case "$radio_ril" in
|
||||
"")
|
||||
# no need for the radio interface daemon
|
||||
# telephony is entirely emulated in Java
|
||||
setprop ro.radio.noril yes
|
||||
stop ril-daemon
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
||||
|
||||
num_dns=`getprop ro.kernel.android.ndns`
|
||||
case "$num_dns" in
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ int blkdev_refresh(blkdev_t *blk)
|
|||
goto out;
|
||||
}
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
for (i = 0; i < NDOSPART; i++) {
|
||||
struct dos_partition part;
|
||||
|
||||
dos_partition_dec(block + DOSPARTOFF + i * sizeof(struct dos_partition), &part);
|
||||
|
|
@ -140,7 +140,7 @@ int blkdev_refresh(blkdev_t *blk)
|
|||
else
|
||||
part_no = blk->minor -1;
|
||||
|
||||
if (part_no < 4) {
|
||||
if (part_no < NDOSPART) {
|
||||
dos_partition_dec(block + DOSPARTOFF + part_no * sizeof(struct dos_partition), &part);
|
||||
blk->part_type = part.dp_typ;
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
#include "vold.h"
|
||||
#include "mmc.h"
|
||||
#include "media.h"
|
||||
#include "diskmbr.h" /* for NDOSPART */
|
||||
|
||||
#define DEBUG_BOOTSTRAP 0
|
||||
|
||||
|
|
@ -157,6 +158,10 @@ static int mmc_bootstrap_card(char *sysfs_path)
|
|||
|
||||
sprintf(filename, "/sys%s/name", devpath);
|
||||
p = read_file(filename, &sz);
|
||||
if (!p) {
|
||||
LOGE("Unable to read MMC name: %s", filename);
|
||||
return -errno;
|
||||
}
|
||||
p[strlen(p) - 1] = '\0';
|
||||
sprintf(tmp, "MMC_NAME=%s", p);
|
||||
free(p);
|
||||
|
|
@ -233,7 +238,7 @@ static int mmc_bootstrap_mmcblk(char *devpath)
|
|||
*mmcblk_devname != '/'; mmcblk_devname--);
|
||||
mmcblk_devname++;
|
||||
|
||||
for (part_no = 0; part_no < 4; part_no++) {
|
||||
for (part_no = 1; part_no <= NDOSPART; part_no++) {
|
||||
char part_file[255];
|
||||
sprintf(part_file, "/sys%s/%sp%d", devpath, mmcblk_devname, part_no);
|
||||
if (!access(part_file, F_OK)) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue