Merge "Add tracing initialization to init.rc."
diff --git a/fastboot/Android.mk b/fastboot/Android.mk
index 8c130ff..089b9bb 100644
--- a/fastboot/Android.mk
+++ b/fastboot/Android.mk
@@ -50,6 +50,12 @@
LOCAL_STATIC_LIBRARIES := $(EXTRA_STATIC_LIBS) libzipfile libunz libext4_utils libz
+ifneq ($(HOST_OS),windows)
+ifeq ($(HAVE_SELINUX), true)
+LOCAL_STATIC_LIBRARIES += libselinux
+endif # HAVE_SELINUX
+endif # HOST_OS != windows
+
include $(BUILD_HOST_EXECUTABLE)
$(call dist-for-goals,dist_files,$(LOCAL_BUILT_MODULE))
diff --git a/include/system/audio.h b/include/system/audio.h
index 0276231..4cadb67 100644
--- a/include/system/audio.h
+++ b/include/system/audio.h
@@ -290,6 +290,8 @@
AUDIO_DEVICE_OUT_AUX_DIGITAL = 0x400,
AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET = 0x800,
AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET = 0x1000,
+ AUDIO_DEVICE_OUT_USB_ACCESSORY = 0x2000,
+ AUDIO_DEVICE_OUT_USB_DEVICE = 0x4000,
AUDIO_DEVICE_OUT_DEFAULT = 0x8000,
AUDIO_DEVICE_OUT_ALL = (AUDIO_DEVICE_OUT_EARPIECE |
AUDIO_DEVICE_OUT_SPEAKER |
@@ -304,6 +306,8 @@
AUDIO_DEVICE_OUT_AUX_DIGITAL |
AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET |
AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET |
+ AUDIO_DEVICE_OUT_USB_ACCESSORY |
+ AUDIO_DEVICE_OUT_USB_DEVICE |
AUDIO_DEVICE_OUT_DEFAULT),
AUDIO_DEVICE_OUT_ALL_A2DP = (AUDIO_DEVICE_OUT_BLUETOOTH_A2DP |
AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES |
@@ -311,6 +315,8 @@
AUDIO_DEVICE_OUT_ALL_SCO = (AUDIO_DEVICE_OUT_BLUETOOTH_SCO |
AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET |
AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT),
+ AUDIO_DEVICE_OUT_ALL_USB = (AUDIO_DEVICE_OUT_USB_ACCESSORY |
+ AUDIO_DEVICE_OUT_USB_DEVICE),
/* input devices */
AUDIO_DEVICE_IN_COMMUNICATION = 0x10000,
@@ -368,6 +374,14 @@
return false;
}
+static inline bool audio_is_usb_device(audio_devices_t device)
+{
+ if ((popcount(device) == 1) && (device & AUDIO_DEVICE_OUT_ALL_USB))
+ return true;
+ else
+ return false;
+}
+
static inline bool audio_is_input_channel(uint32_t channel)
{
if ((channel & ~AUDIO_CHANNEL_IN_ALL) == 0)
diff --git a/sdcard/sdcard.c b/sdcard/sdcard.c
index 689cd2a..dba5a4e 100644
--- a/sdcard/sdcard.c
+++ b/sdcard/sdcard.c
@@ -43,7 +43,7 @@
* usage: sdcard <path> <uid> <gid>
*
* It must be run as root, but will change to uid/gid as soon as it
- * mounts a filesystem on /mnt/sdcard. It will refuse to run if uid or
+ * mounts a filesystem on /storage/sdcard. It will refuse to run if uid or
* gid are zero.
*
*
@@ -70,7 +70,7 @@
#define FUSE_UNKNOWN_INO 0xffffffff
-#define MOUNT_POINT "/mnt/sdcard"
+#define MOUNT_POINT "/storage/sdcard0"
struct handle {
struct node *node;
diff --git a/toolbox/kill.c b/toolbox/kill.c
index 4d0e479..b79805f 100644
--- a/toolbox/kill.c
+++ b/toolbox/kill.c
@@ -5,16 +5,127 @@
#include <sys/types.h>
#include <signal.h>
+static struct {
+ unsigned int number;
+ char *name;
+} signals[] = {
+#define _SIG(name) {SIG##name, #name}
+ /* Single Unix Specification signals */
+ _SIG(ABRT),
+ _SIG(ALRM),
+ _SIG(FPE),
+ _SIG(HUP),
+ _SIG(ILL),
+ _SIG(INT),
+ _SIG(KILL),
+ _SIG(PIPE),
+ _SIG(QUIT),
+ _SIG(SEGV),
+ _SIG(TERM),
+ _SIG(USR1),
+ _SIG(USR2),
+ _SIG(CHLD),
+ _SIG(CONT),
+ _SIG(STOP),
+ _SIG(TSTP),
+ _SIG(TTIN),
+ _SIG(TTOU),
+ _SIG(BUS),
+ _SIG(POLL),
+ _SIG(PROF),
+ _SIG(SYS),
+ _SIG(TRAP),
+ _SIG(URG),
+ _SIG(VTALRM),
+ _SIG(XCPU),
+ _SIG(XFSZ),
+ /* non-SUS signals */
+ _SIG(IO),
+ _SIG(PWR),
+ _SIG(STKFLT),
+ _SIG(WINCH),
+#undef _SIG
+};
+
+/* To indicate a matching signal was not found */
+static const unsigned int SENTINEL = (unsigned int) -1;
+
+void list_signals()
+{
+ unsigned int sorted_signals[_NSIG];
+ unsigned int i;
+ unsigned int num;
+
+ memset(sorted_signals, SENTINEL, sizeof(sorted_signals));
+
+ // Sort the signals
+ for (i = 0; i < sizeof(signals)/sizeof(signals[0]); i++) {
+ sorted_signals[signals[i].number] = i;
+ }
+
+ num = 0;
+ for (i = 1; i < _NSIG; i++) {
+ unsigned int index = sorted_signals[i];
+ if (index == SENTINEL) {
+ continue;
+ }
+
+ fprintf(stderr, "%2d) SIG%-9s ", i, signals[index].name);
+
+ if ((num++ % 4) == 3) {
+ fprintf(stderr, "\n");
+ }
+ }
+
+ if ((num % 4) == 3) {
+ fprintf(stderr, "\n");
+ }
+}
+
+unsigned int name_to_signal(const char* name)
+{
+ unsigned int i;
+
+ for (i = 1; i < sizeof(signals) / sizeof(signals[0]); i++) {
+ if (!strcasecmp(name, signals[i].name)) {
+ return signals[i].number;
+ }
+ }
+
+ return SENTINEL;
+}
+
int kill_main(int argc, char **argv)
{
- int sig = SIGTERM;
+ unsigned int sig = SIGTERM;
int result = 0;
-
+
argc--;
argv++;
- if(argc >= 2 && argv[0][0] == '-'){
- sig = atoi(argv[0] + 1);
+ if (argc >= 1 && argv[0][0] == '-') {
+ char *endptr;
+ size_t arg_len = strlen(argv[0]);
+ if (arg_len < 2) {
+ fprintf(stderr, "invalid argument: -\n");
+ return -1;
+ }
+
+ char* arg = argv[0] + 1;
+ if (arg_len == 2 && *arg == 'l') {
+ list_signals();
+ return 0;
+ }
+
+ sig = strtol(arg, &endptr, 10);
+ if (*endptr != '\0') {
+ sig = name_to_signal(arg);
+ if (sig == SENTINEL) {
+ fprintf(stderr, "invalid signal name: %s\n", arg);
+ return -1;
+ }
+ }
+
argc--;
argv++;
}
@@ -26,10 +137,10 @@
result = err;
fprintf(stderr, "could not kill pid %d: %s\n", pid, strerror(errno));
}
-
+
argc--;
argv++;
}
-
+
return result;
}