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:
commit
a98331d1ae
@ -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" },
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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.
|
||||||
|
@ -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 }
|
||||||
};
|
};
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user