Merge "Turned ENABLE_CPUSETS into runtime decision."
This commit is contained in:
@@ -252,25 +252,26 @@ void android_os_Process_setProcessGroup(JNIEnv* env, jobject clazz, int pid, jin
|
||||
if (t_pri >= ANDROID_PRIORITY_BACKGROUND) {
|
||||
// This task wants to stay at background
|
||||
// update its cpuset so it doesn't only run on bg core(s)
|
||||
#ifdef ENABLE_CPUSETS
|
||||
int err = set_cpuset_policy(t_pid, sp);
|
||||
if (err != NO_ERROR) {
|
||||
signalExceptionForGroupError(env, -err, t_pid);
|
||||
break;
|
||||
if (cpusets_enabled()) {
|
||||
int err = set_cpuset_policy(t_pid, sp);
|
||||
if (err != NO_ERROR) {
|
||||
signalExceptionForGroupError(env, -err, t_pid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
continue;
|
||||
}
|
||||
}
|
||||
int err;
|
||||
#ifdef ENABLE_CPUSETS
|
||||
// set both cpuset and cgroup for general threads
|
||||
err = set_cpuset_policy(t_pid, sp);
|
||||
if (err != NO_ERROR) {
|
||||
signalExceptionForGroupError(env, -err, t_pid);
|
||||
break;
|
||||
|
||||
if (cpusets_enabled()) {
|
||||
// set both cpuset and cgroup for general threads
|
||||
err = set_cpuset_policy(t_pid, sp);
|
||||
if (err != NO_ERROR) {
|
||||
signalExceptionForGroupError(env, -err, t_pid);
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
err = set_sched_policy(t_pid, sp);
|
||||
if (err != NO_ERROR) {
|
||||
@@ -291,7 +292,6 @@ jint android_os_Process_getProcessGroup(JNIEnv* env, jobject clazz, jint pid)
|
||||
return (int) sp;
|
||||
}
|
||||
|
||||
#ifdef ENABLE_CPUSETS
|
||||
/** Sample CPUset list format:
|
||||
* 0-3,4,6-8
|
||||
*/
|
||||
@@ -367,7 +367,6 @@ static void get_cpuset_cores_for_policy(SchedPolicy policy, cpu_set_t *cpu_set)
|
||||
}
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
@@ -376,22 +375,21 @@ static void get_cpuset_cores_for_policy(SchedPolicy policy, cpu_set_t *cpu_set)
|
||||
* them in the passed in cpu_set_t
|
||||
*/
|
||||
void get_exclusive_cpuset_cores(SchedPolicy policy, cpu_set_t *cpu_set) {
|
||||
#ifdef ENABLE_CPUSETS
|
||||
int i;
|
||||
cpu_set_t tmp_set;
|
||||
get_cpuset_cores_for_policy(policy, cpu_set);
|
||||
for (i = 0; i < SP_CNT; i++) {
|
||||
if ((SchedPolicy) i == policy) continue;
|
||||
get_cpuset_cores_for_policy((SchedPolicy)i, &tmp_set);
|
||||
// First get cores exclusive to one set or the other
|
||||
CPU_XOR(&tmp_set, cpu_set, &tmp_set);
|
||||
// Then get the ones only in cpu_set
|
||||
CPU_AND(cpu_set, cpu_set, &tmp_set);
|
||||
if (cpusets_enabled()) {
|
||||
int i;
|
||||
cpu_set_t tmp_set;
|
||||
get_cpuset_cores_for_policy(policy, cpu_set);
|
||||
for (i = 0; i < SP_CNT; i++) {
|
||||
if ((SchedPolicy) i == policy) continue;
|
||||
get_cpuset_cores_for_policy((SchedPolicy)i, &tmp_set);
|
||||
// First get cores exclusive to one set or the other
|
||||
CPU_XOR(&tmp_set, cpu_set, &tmp_set);
|
||||
// Then get the ones only in cpu_set
|
||||
CPU_AND(cpu_set, cpu_set, &tmp_set);
|
||||
}
|
||||
} else {
|
||||
CPU_ZERO(cpu_set);
|
||||
}
|
||||
#else
|
||||
(void) policy;
|
||||
CPU_ZERO(cpu_set);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user