Android 6.0.1 release 22

-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iEYEABECAAYFAlbd4TYACgkQ6K0/gZqxDnjOhgCfYccuq5Zsd00z9ml+jdBXyBqa
 WQwAnRujr2d4u9bKGKGcUbAJC54CXsM9
 =YI3s
 -----END PGP SIGNATURE-----

Merge tag 'android-6.0.1_r22' of https://android.googlesource.com/platform/frameworks/native into cm-13.0

Android 6.0.1 release 22
This commit is contained in:
Steve Kondik 2016-03-10 18:17:45 -08:00
commit a98331d1ae
9 changed files with 66 additions and 27 deletions

View File

@ -93,6 +93,7 @@ static const TracingCategory k_categories[] = {
{ "sched", "CPU Scheduling", 0, { { "sched", "CPU Scheduling", 0, {
{ REQ, "/sys/kernel/debug/tracing/events/sched/sched_switch/enable" }, { REQ, "/sys/kernel/debug/tracing/events/sched/sched_switch/enable" },
{ REQ, "/sys/kernel/debug/tracing/events/sched/sched_wakeup/enable" }, { REQ, "/sys/kernel/debug/tracing/events/sched/sched_wakeup/enable" },
{ OPT, "/sys/kernel/debug/tracing/events/sched/sched_blocked_reason/enable" },
} }, } },
{ "irq", "IRQ Events", 0, { { "irq", "IRQ Events", 0, {
{ REQ, "/sys/kernel/debug/tracing/events/irq/enable" }, { REQ, "/sys/kernel/debug/tracing/events/irq/enable" },

View File

@ -47,6 +47,7 @@ static char screenshot_path[PATH_MAX] = "";
#define PSTORE_LAST_KMSG "/sys/fs/pstore/console-ramoops" #define PSTORE_LAST_KMSG "/sys/fs/pstore/console-ramoops"
#define RAFT_DIR "/data/misc/raft/"
#define TOMBSTONE_DIR "/data/tombstones" #define TOMBSTONE_DIR "/data/tombstones"
#define TOMBSTONE_FILE_PREFIX TOMBSTONE_DIR "/tombstone_" #define TOMBSTONE_FILE_PREFIX TOMBSTONE_DIR "/tombstone_"
/* Can accomodate a tombstone number up to 9999. */ /* Can accomodate a tombstone number up to 9999. */
@ -261,6 +262,8 @@ static unsigned long logcat_timeout(char *name) {
/* End copy from system/core/logd/LogBuffer.cpp */ /* End copy from system/core/logd/LogBuffer.cpp */
static const unsigned long logcat_min_timeout = 40000; /* ms */
/* dumps the current system state to stdout */ /* dumps the current system state to stdout */
static void dumpstate() { static void dumpstate() {
unsigned long timeout; unsigned long timeout;
@ -333,23 +336,25 @@ static void dumpstate() {
// dump_file("EVENT LOG TAGS", "/etc/event-log-tags"); // dump_file("EVENT LOG TAGS", "/etc/event-log-tags");
// calculate timeout // calculate timeout
timeout = logcat_timeout("main") + logcat_timeout("system") + logcat_timeout("crash"); timeout = logcat_timeout("main") + logcat_timeout("system") + logcat_timeout("crash");
if (timeout < 20000) { if (timeout < logcat_min_timeout) {
timeout = 20000; timeout = logcat_min_timeout;
} }
run_command("SYSTEM LOG", timeout / 1000, "logcat", "-v", "threadtime", "-d", "*:v", NULL); run_command("SYSTEM LOG", timeout / 1000, "logcat", "-v", "threadtime", "-d", "*:v", NULL);
timeout = logcat_timeout("events"); timeout = logcat_timeout("events");
if (timeout < 20000) { if (timeout < logcat_min_timeout) {
timeout = 20000; timeout = logcat_min_timeout;
} }
run_command("EVENT LOG", timeout / 1000, "logcat", "-b", "events", "-v", "threadtime", "-d", "*:v", NULL); run_command("EVENT LOG", timeout / 1000, "logcat", "-b", "events", "-v", "threadtime", "-d", "*:v", NULL);
timeout = logcat_timeout("radio"); timeout = logcat_timeout("radio");
if (timeout < 20000) { if (timeout < logcat_min_timeout) {
timeout = 20000; timeout = logcat_min_timeout;
} }
run_command("RADIO LOG", timeout / 1000, "logcat", "-b", "radio", "-v", "threadtime", "-d", "*:v", NULL); run_command("RADIO LOG", timeout / 1000, "logcat", "-b", "radio", "-v", "threadtime", "-d", "*:v", NULL);
run_command("LOG STATISTICS", 10, "logcat", "-b", "all", "-S", NULL); run_command("LOG STATISTICS", 10, "logcat", "-b", "all", "-S", NULL);
run_command("RAFT LOGS", 600, SU_PATH, "root", "logcompressor", "-r", RAFT_DIR, NULL);
/* show the traces we collected in main(), if that was done */ /* show the traces we collected in main(), if that was done */
if (dump_traces_path != NULL) { if (dump_traces_path != NULL) {
dump_file("VM TRACES JUST NOW", dump_traces_path); dump_file("VM TRACES JUST NOW", dump_traces_path);

View File

@ -771,24 +771,11 @@ static void run_dex2oat(int zip_fd, int oat_fd, const char* input_file_name,
dex2oat_compiler_filter_flag, NULL) > 0; dex2oat_compiler_filter_flag, NULL) > 0;
char dex2oat_threads_buf[PROPERTY_VALUE_MAX]; char dex2oat_threads_buf[PROPERTY_VALUE_MAX];
bool have_dex2oat_threads_flag = false; bool have_dex2oat_threads_flag = property_get(post_bootcomplete
if (!post_bootcomplete) { ? "dalvik.vm.dex2oat-threads"
have_dex2oat_threads_flag = property_get("dalvik.vm.boot-dex2oat-threads", : "dalvik.vm.boot-dex2oat-threads",
dex2oat_threads_buf, dex2oat_threads_buf,
NULL) > 0; NULL) > 0;
// If there's no boot property, fall back to the image property.
if (!have_dex2oat_threads_flag) {
have_dex2oat_threads_flag = property_get("dalvik.vm.image-dex2oat-threads",
dex2oat_threads_buf,
NULL) > 0;
}
// If there's neither, fall back to the default property.
}
if (!have_dex2oat_threads_flag) {
have_dex2oat_threads_flag = property_get("dalvik.vm.dex2oat-threads",
dex2oat_threads_buf,
NULL) > 0;
}
char dex2oat_threads_arg[PROPERTY_VALUE_MAX + 2]; char dex2oat_threads_arg[PROPERTY_VALUE_MAX + 2];
if (have_dex2oat_threads_flag) { if (have_dex2oat_threads_flag) {
sprintf(dex2oat_threads_arg, "-j%s", dex2oat_threads_buf); sprintf(dex2oat_threads_arg, "-j%s", dex2oat_threads_buf);

View File

@ -722,7 +722,22 @@ enum {
AKEYCODE_NAVIGATE_PREVIOUS = 260, AKEYCODE_NAVIGATE_PREVIOUS = 260,
AKEYCODE_NAVIGATE_NEXT = 261, AKEYCODE_NAVIGATE_NEXT = 261,
AKEYCODE_NAVIGATE_IN = 262, AKEYCODE_NAVIGATE_IN = 262,
AKEYCODE_NAVIGATE_OUT = 263 AKEYCODE_NAVIGATE_OUT = 263,
/** Primary stem key for Wear
* Main power/reset button on watch. */
AKEYCODE_STEM_PRIMARY = 264,
/** Generic stem key 1 for Wear */
AKEYCODE_STEM_1 = 265,
/** Generic stem key 2 for Wear */
AKEYCODE_STEM_2 = 266,
/** Generic stem key 3 for Wear */
AKEYCODE_STEM_3 = 267,
AKEYCODE_MEDIA_SKIP_FORWARD = 272,
AKEYCODE_MEDIA_SKIP_BACKWARD = 273,
AKEYCODE_MEDIA_STEP_FORWARD = 274,
AKEYCODE_MEDIA_STEP_BACKWARD = 275,
/** Put device to sleep unless a wakelock is held. */
AKEYCODE_SOFT_SLEEP = 276
// NOTE: If you add a new keycode here you must also add it to several other files. // NOTE: If you add a new keycode here you must also add it to several other files.
// Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list. // Refer to frameworks/base/core/java/android/view/KeyEvent.java for the full list.

View File

@ -303,6 +303,15 @@ static const InputEventLabel KEYCODES[] = {
DEFINE_KEYCODE(NAVIGATE_NEXT), DEFINE_KEYCODE(NAVIGATE_NEXT),
DEFINE_KEYCODE(NAVIGATE_IN), DEFINE_KEYCODE(NAVIGATE_IN),
DEFINE_KEYCODE(NAVIGATE_OUT), DEFINE_KEYCODE(NAVIGATE_OUT),
DEFINE_KEYCODE(STEM_PRIMARY),
DEFINE_KEYCODE(STEM_1),
DEFINE_KEYCODE(STEM_2),
DEFINE_KEYCODE(STEM_3),
DEFINE_KEYCODE(MEDIA_SKIP_FORWARD),
DEFINE_KEYCODE(MEDIA_SKIP_BACKWARD),
DEFINE_KEYCODE(MEDIA_STEP_FORWARD),
DEFINE_KEYCODE(MEDIA_STEP_BACKWARD),
DEFINE_KEYCODE(SOFT_SLEEP),
{ NULL, 0 } { NULL, 0 }
}; };

View File

@ -509,7 +509,7 @@ typedef enum OMX_EVENTTYPE
OMX_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */ OMX_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */ OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
/** Event when tunneled decoder has rendered an output /** Event when tunneled decoder has rendered an output or reached EOS
* nData1 must contain the number of timestamps returned * nData1 must contain the number of timestamps returned
* pEventData must point to an array of the OMX_VIDEO_RENDEREVENTTYPE structs containing the * pEventData must point to an array of the OMX_VIDEO_RENDEREVENTTYPE structs containing the
* render-timestamps of each frame. Component may batch rendered timestamps using this event, * render-timestamps of each frame. Component may batch rendered timestamps using this event,
@ -518,6 +518,10 @@ typedef enum OMX_EVENTTYPE
* *
* If component is doing frame-rate conversion, it must signal the render time of each * If component is doing frame-rate conversion, it must signal the render time of each
* converted frame, and must interpolate media timestamps for in-between frames. * converted frame, and must interpolate media timestamps for in-between frames.
*
* When the component reached EOS, it must signal an EOS timestamp using the same mechanism.
* This is in addition to the timestamp of the last rendered frame, and should follow that
* frame.
*/ */
OMX_EventOutputRendered = 0x7F000001, OMX_EventOutputRendered = 0x7F000001,
OMX_EventMax = 0x7FFFFFFF OMX_EventMax = 0x7FFFFFFF

View File

@ -203,10 +203,17 @@ typedef struct OMX_VIDEO_SLICESEGMENTSTYPE {
OMX_BOOL bEnableLoopFilterAcrossSlices; OMX_BOOL bEnableLoopFilterAcrossSlices;
} OMX_VIDEO_SLICESEGMENTSTYPE; } OMX_VIDEO_SLICESEGMENTSTYPE;
/** Structure to return timestamps of rendered output frames for tunneled components */ /** Structure to return timestamps of rendered output frames as well as EOS
* for tunneled components.
*/
typedef struct OMX_VIDEO_RENDEREVENTTYPE { typedef struct OMX_VIDEO_RENDEREVENTTYPE {
OMX_S64 nMediaTimeUs; // timestamp of rendered video frame OMX_S64 nMediaTimeUs; // timestamp of rendered video frame
OMX_S64 nSystemTimeNs; // system monotonic time at the time frame was rendered OMX_S64 nSystemTimeNs; // system monotonic time at the time frame was rendered
// Use INT64_MAX for nMediaTimeUs to signal that the EOS
// has been reached. In this case, nSystemTimeNs MUST be
// the system time when the last frame was rendered.
// This MUST be done in addition to returning (and
// following) the render information for the last frame.
} OMX_VIDEO_RENDEREVENTTYPE; } OMX_VIDEO_RENDEREVENTTYPE;
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -141,6 +141,10 @@ LOCAL_LDFLAGS := -Wl,--version-script,art/sigchainlib/version-script.txt -Wl,--e
LOCAL_CFLAGS := -DLOG_TAG=\"SurfaceFlinger\" LOCAL_CFLAGS := -DLOG_TAG=\"SurfaceFlinger\"
LOCAL_CPPFLAGS := -std=c++11 LOCAL_CPPFLAGS := -std=c++11
ifneq ($(ENABLE_CPUSETS),)
LOCAL_CFLAGS += -DENABLE_CPUSETS
endif
LOCAL_SRC_FILES := \ LOCAL_SRC_FILES := \
main_surfaceflinger.cpp main_surfaceflinger.cpp

View File

@ -42,6 +42,13 @@ int main(int, char**) {
set_sched_policy(0, SP_FOREGROUND); set_sched_policy(0, SP_FOREGROUND);
#ifdef ENABLE_CPUSETS
// Put most SurfaceFlinger threads in the system-background cpuset
// Keeps us from unnecessarily using big cores
// Do this after the binder thread pool init
set_cpuset_policy(0, SP_SYSTEM);
#endif
// initialize before clients can connect // initialize before clients can connect
flinger->init(); flinger->init();