Adding a new getThreadScheduler() method.
bug: 30226969 Change-Id: Icbd57e99740ebf6ba744a103e6fa69a3160c9422
This commit is contained in:
@@ -29225,6 +29225,7 @@ package android.os {
|
||||
method public static final long getStartElapsedRealtime();
|
||||
method public static final long getStartUptimeMillis();
|
||||
method public static final int getThreadPriority(int) throws java.lang.IllegalArgumentException;
|
||||
method public static final int getThreadScheduler(int) throws java.lang.IllegalArgumentException;
|
||||
method public static final int getUidForName(java.lang.String);
|
||||
method public static final boolean is64Bit();
|
||||
method public static boolean isApplicationUid(int);
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package android.os;
|
||||
|
||||
import android.annotation.TestApi;
|
||||
import android.net.LocalSocket;
|
||||
import android.net.LocalSocketAddress;
|
||||
import android.system.Os;
|
||||
@@ -1067,6 +1068,24 @@ public class Process {
|
||||
public static final native int getThreadPriority(int tid)
|
||||
throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Return the current scheduling policy of a thread, based on Linux.
|
||||
*
|
||||
* @param tid The identifier of the thread/process to get the scheduling policy.
|
||||
*
|
||||
* @throws IllegalArgumentException Throws IllegalArgumentException if
|
||||
* <var>tid</var> does not exist, or if <var>priority</var> is out of range for the policy.
|
||||
* @throws SecurityException Throws SecurityException if your process does
|
||||
* not have permission to modify the given thread, or to use the given
|
||||
* scheduling policy or priority.
|
||||
*
|
||||
* {@hide}
|
||||
*/
|
||||
|
||||
@TestApi
|
||||
public static final native int getThreadScheduler(int tid)
|
||||
throws IllegalArgumentException;
|
||||
|
||||
/**
|
||||
* Set the scheduling policy and priority of a thread, based on Linux.
|
||||
*
|
||||
@@ -1082,6 +1101,7 @@ public class Process {
|
||||
*
|
||||
* {@hide}
|
||||
*/
|
||||
|
||||
public static final native void setThreadScheduler(int tid, int policy, int priority)
|
||||
throws IllegalArgumentException;
|
||||
|
||||
|
||||
@@ -440,6 +440,23 @@ static void android_os_Process_setCanSelfBackground(JNIEnv* env, jobject clazz,
|
||||
#endif
|
||||
}
|
||||
|
||||
jint android_os_Process_getThreadScheduler(JNIEnv* env, jclass clazz,
|
||||
jint tid)
|
||||
{
|
||||
int policy = 0;
|
||||
// linux has sched_getscheduler(), others don't.
|
||||
#if defined(__linux__)
|
||||
errno = 0;
|
||||
policy = sched_getscheduler(tid);
|
||||
if (errno != 0) {
|
||||
signalExceptionForPriorityError(env, errno);
|
||||
}
|
||||
#else
|
||||
signalExceptionForPriorityError(env, ENOSYS);
|
||||
#endif
|
||||
return policy;
|
||||
}
|
||||
|
||||
void android_os_Process_setThreadScheduler(JNIEnv* env, jclass clazz,
|
||||
jint tid, jint policy, jint pri)
|
||||
{
|
||||
@@ -1191,6 +1208,7 @@ static const JNINativeMethod methods[] = {
|
||||
{"setCanSelfBackground", "(Z)V", (void*)android_os_Process_setCanSelfBackground},
|
||||
{"setThreadPriority", "(I)V", (void*)android_os_Process_setCallingThreadPriority},
|
||||
{"getThreadPriority", "(I)I", (void*)android_os_Process_getThreadPriority},
|
||||
{"getThreadScheduler", "(I)I", (void*)android_os_Process_getThreadScheduler},
|
||||
{"setThreadGroup", "(II)V", (void*)android_os_Process_setThreadGroup},
|
||||
{"setProcessGroup", "(II)V", (void*)android_os_Process_setProcessGroup},
|
||||
{"getProcessGroup", "(I)I", (void*)android_os_Process_getProcessGroup},
|
||||
|
||||
Reference in New Issue
Block a user