diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-12-08 11:25:48 -0800 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-12-08 11:25:48 -0800 |
commit | 24eca800d4b34e7d13fbcbc1ab74c9d91ff6a4e1 (patch) | |
tree | b43006cf9c4cf66a653f9da4ca983ece722035ec /include | |
parent | 6be3bf2393030549306b438b9b17085035729135 (diff) | |
parent | 887f355f99ff83d568ef2885a4fdcaae475583df (diff) | |
download | frameworks_base-24eca800d4b34e7d13fbcbc1ab74c9d91ff6a4e1.zip frameworks_base-24eca800d4b34e7d13fbcbc1ab74c9d91ff6a4e1.tar.gz frameworks_base-24eca800d4b34e7d13fbcbc1ab74c9d91ff6a4e1.tar.bz2 |
Merge change I887f355f into eclair-mr2
* changes:
Propagate background scheduling class across processes.
Diffstat (limited to 'include')
-rw-r--r-- | include/binder/IBinder.h | 2 | ||||
-rw-r--r-- | include/binder/IPCThreadState.h | 10 | ||||
-rw-r--r-- | include/utils/threads.h | 18 |
3 files changed, 28 insertions, 2 deletions
diff --git a/include/binder/IBinder.h b/include/binder/IBinder.h index 884b5c1..749a977 100644 --- a/include/binder/IBinder.h +++ b/include/binder/IBinder.h @@ -52,7 +52,7 @@ public: DUMP_TRANSACTION = B_PACK_CHARS('_','D','M','P'), INTERFACE_TRANSACTION = B_PACK_CHARS('_', 'N', 'T', 'F'), - // Corresponds to tfOneWay -- an asynchronous call. + // Corresponds to TF_ONE_WAY -- an asynchronous call. FLAG_ONEWAY = 0x00000001 }; diff --git a/include/binder/IPCThreadState.h b/include/binder/IPCThreadState.h index 78306b2..3ab985d 100644 --- a/include/binder/IPCThreadState.h +++ b/include/binder/IPCThreadState.h @@ -68,6 +68,13 @@ public: static void shutdown(); + // Call this to disable switching threads to background scheduling when + // receiving incoming IPC calls. This is specifically here for the + // Android system process, since it expects to have background apps calling + // in to it but doesn't want to acquire locks in its services while in + // the background. + static void disableBackgroundScheduling(bool disable); + private: IPCThreadState(); ~IPCThreadState(); @@ -93,9 +100,10 @@ private: void* cookie); const sp<ProcessState> mProcess; + const pid_t mMyThreadId; Vector<BBinder*> mPendingStrongDerefs; Vector<RefBase::weakref_type*> mPendingWeakDerefs; - + Parcel mIn; Parcel mOut; status_t mLastError; diff --git a/include/utils/threads.h b/include/utils/threads.h index 0fc533f..130d83c 100644 --- a/include/utils/threads.h +++ b/include/utils/threads.h @@ -124,6 +124,24 @@ typedef int (*android_create_thread_fn)(android_thread_func_t entryFunction, extern void androidSetCreateThreadFunc(android_create_thread_fn func); +// ------------------------------------------------------------------ +// Extra functions working with raw pids. + +// Get pid for the current thread. +extern pid_t androidGetTid(); + +// Change the scheduling group of a particular thread. The group +// should be one of the ANDROID_TGROUP constants. Returns BAD_VALUE if +// grp is out of range, else another non-zero value with errno set if +// the operation failed. +extern int androidSetThreadSchedulingGroup(pid_t tid, int grp); + +// Change the priority AND scheduling group of a particular thread. The priority +// should be one of the ANDROID_PRIORITY constants. Returns INVALID_OPERATION +// if the priority set failed, else another value if just the group set failed; +// in either case errno is set. +extern int androidSetThreadPriority(pid_t tid, int prio); + #ifdef __cplusplus } #endif |