Commit Graph

36 Commits

Author SHA1 Message Date
Glenn Kasten 2b1d4999b8 Workaround for add_tid_to_cgroup failed to write
Bug: 6467109
Change-Id: I6dff8e608d83c7a7c453c25c94ad100f113769b9
2013-07-30 13:56:59 -07:00
Glenn Kasten 77ed15a31a Scheduling group cleanup
Remove C++ APIs androidSetThreadSchedulingGroup and
androidGetThreadSchedulingGroup, and the ANDROID_TGROUP_* constants.

Former callers of these should now use the C APIs set_sched_policy and
get_sched_policy, and the SP_* constants.

Note: debug.sys.noschedgroups is not supported by the C APIs,
this needs to be discussed.

Change-Id: I32bbfc539ef4090faf9ef0320380e8cca9eae07c
2013-07-30 13:56:59 -07:00
Jeff Brown 27e6eaae87 Add a simple work queue abstraction.
Makes it easy to schedule a bunch of work to happen in parallel.

Change-Id: Id9c0e52fc8b6d78d2b9ed4c2ee47abce0a01775c
2013-07-30 13:56:59 -07:00
Glenn Kasten d731f07cc9 Thread::getTid returns pid_t gettid() after run
This is needed when the parent or any other thread besides the child
needs access to the child's kernel tid.

Change-Id: Ib148505913eb78314cfd76657c30d7b20663dffd
2013-07-30 13:56:58 -07:00
Steve Block 1b781ab0e0 Rename (IF_)LOGE(_IF) to (IF_)ALOGE(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/#/c/157220

Bug: 5449033
Change-Id: Ic9c19d30693bd56755f55906127cd6bd7126096c
2013-07-30 13:56:58 -07:00
Steve Block 61d341b8d3 Rename (IF_)LOGW(_IF) to (IF_)ALOGW(_IF) DO NOT MERGE
See https://android-git.corp.google.com/g/157065

Bug: 5449033
Change-Id: I00a4b904f9449e6f93b7fd35eac28640d7929e69
2013-07-30 13:56:58 -07:00
Steve Block 8b4cf779b2 Rename (IF_)LOG() to (IF_)ALOG() DO NOT MERGE
See https://android-git.corp.google.com/g/#/c/141576

Bug: 5449033
Change-Id: I42575e7c29cf1c0f465c357a5c97ab118df6f473
2013-07-30 13:56:58 -07:00
Andreas Huber 7b4ce614cf Fix androidGetThreadPriority for non-pthread configurations.
related-to-build

Change-Id: Ic865af0865906f96fd615a56a030c8e3adaf13c4
2013-07-30 13:56:58 -07:00
Andreas Huber 8ddbed9efd A new API "androidGetThreadPriority"
Change-Id: I6baeead8c70460863343fd557250635fb1e6a170
2013-07-30 13:56:58 -07:00
Le-Chun Wu d8734d19ec Add a call to pthread_attr_destroy to avoid potential memory leaks.
Change-Id: Ib57efc3530e9793298190cc9cab19c9af54e11a7
2013-07-30 13:56:57 -07:00
Glenn Kasten 6fbe0a86a8 Add C++ thread API androidGetThreadSchedulingGroup
This API is intended for applications that need to read a thread's
scheduling group, while using the higher-level (C++) family of thread APIs.

Change-Id: I5e58017f74c3989b20b5b1cc2bc4483c95720520
2013-07-30 13:56:57 -07:00
Glenn Kasten 6839e8e9ee Add Thread::join
This new API will be used by applications that previously used the
lower-level pthread APIs (including pthread_join).  Centralizing on the
Thread class instead of pthread will permit additional functionality to
be added later in only one location.

Change-Id: I8460169ac9c61ac9f85752405ed54c94651058d7
2013-07-30 13:56:57 -07:00
Glenn Kasten 5e0243f4d6 Thread ID zero for androidSetThreadSchedulingGroup
Already implemented by androidSetThreadPriority but not documented

Change-Id: I85302b17092952065f3f3a4214d8d8abdd465dbd
2013-07-30 13:56:57 -07:00
Glenn Kasten 47f48572db Bug 4608375
Update priority and policy together for audio threads

Change-Id: Ib3b07b32586c222c4aacbf23414ae8b05db502be
2013-07-30 13:56:57 -07:00
Glenn Kasten a538e268e6 Remove redundant memory barrier
pthread_create already includes the necessary memory barriers:
 - parent at pthread_create : pthread_mutex_unlock(start_mutex)
 - child at __thread_entry : pthread_mutex_lock(start_mutex)

Add lock around uses of mThread.

Added comments:
 - uses of mThread require lock
 - androidCreateRawThreadEtc returned ID is not safe for direct use from non-parent threads.

Change-Id: I18cb296b41ddaf64cf127b57aab31154319b5970
2013-07-30 13:56:57 -07:00
Glenn Kasten 966a48f3e7 Bug 3362814 Fix SMP race in access to mRequestExit
Also fix an unlikely SMP race in access to mHoldSelf on entry to _threadLoop.

Change-Id: I6cbc0b94739c7dd5e77e8a5ba0da22cdc0b1a4db
2013-07-30 13:56:55 -07:00
Kenny Root dafff0bcc1 Clean up use of HAVE_ANDROID_OS
HAVE_ANDROID_OS was defined as "1" for targets, but never defined as "0"
for non-targets. Changing them to #ifdef should be safe and matches
all the other uses of HAVE_ANDROID_OS throughout the system.

Change-Id: I82257325a8ae5e4e4371ddfc4dbf51cea8ea0abb
2013-07-30 13:56:55 -07:00
Ritu Srivastava 741cbc3382 fix failing thread object run
A previously exited Thread object refuses to run again, if the
thread-id of the caller, conincides with the thread-id it previously
used in the worker thread. Hence reset the previously used worker
thread-id to -1 when it exits.

 Signed-off-by: Ritu Srivastava <rsrivast@sta.samsung.com>

Change-Id: I873925c312a43ec8a16392b98cc959042ff6bfd2

Signed-off-by: Madan Ankapura <mankapur@sta.samsung.com>
2013-07-30 13:56:55 -07:00
Mike Lockwood a25d2caf15 Revert "libutils: Fix race condition in Thread::requestExitAndWait()"
This change turned out to be unnecessary

This reverts commit 4a7f412e1d932f46f6adf079df4d9ee7279bd795.
2013-07-30 13:56:55 -07:00
Mike Lockwood ac61abe286 libutils: Fix race condition in Thread::requestExitAndWait()
Hold a reference to the thread in requestExitAndWait() so the
condition variable it is waiting on will not be destroyed before
its wait() call returns.

Change-Id: If8b6cf84117203926a4180f43f0224469e92a500
Signed-off-by: Mike Lockwood <lockwood@android.com>
2013-07-30 13:56:55 -07:00
Eric Laurent fe2c46327f Fix issue 3302649.
The cause of the problem is that AudioTrack::start() can fail if it is called from a newly created
thread that has the same ID as the AudioTrack callback thread that has just been stopped and not yet exited.
This is possible as the thread ID used by the Thread class is not the TID.

The fix consists in clearing the thread ID before exiting the thread loop.

Change-Id: I66e679665c384403cb3ba2c31746f5de72d5836d
2013-07-30 13:56:55 -07:00
Dianne Hackborn a78bab0359 Always set the scheduling group when starting a new thread.
Change-Id: Ia33acf13fc3752707f3819928c36315e223fa1bd
2013-07-30 13:56:54 -07:00
Dianne Hackborn 193c18ca8a Hopefully fix the build.
Change-Id: Id8cd92c0895c9939e1386ef488bd1309a3be3568
2013-07-30 13:56:54 -07:00
Dianne Hackborn 16d217efbb Add system property to turn off scheduling groups.
Do this:

adb shell setprop debug.sys.noschedgroups 1

Change-Id: I6e06a74205fd45ee1526ce71fe33944465d39984
2013-07-30 13:56:54 -07:00
Dianne Hackborn aaa7ef86c6 Maybe really fix windows build. 2013-07-30 13:56:52 -07:00
Dianne Hackborn 3432efa95e Hopefully fix Windows build 2013-07-30 13:56:52 -07:00
Dianne Hackborn 235af97deb Propagate background scheduling class across processes.
This is a very simply implementation: upon receiving an IPC, if the handling
thread is at a background priority (the driver will have taken care of
propagating this from the calling thread), then stick it in to the background
scheduling group.  Plus an API to turn this off for the process, which is
used by the system process.

This also pulls some of the code for managing scheduling classes out of
the Process JNI wrappers and in to some convenience methods in thread.h.
2013-07-30 13:56:52 -07:00
Mathias Agopian 51ce3ad760 use broadcast() instead of signal() when signaling the condition-variable Thread::RequestExitAndWait() is waiting for
we could have several thread waiting on the condition and they all need to wake-up.
also added a debug "mTid" field in the class, which contains the tid of the thread (as opposed to pthread_t), this
is useful when debugging under gdb for instance.
2013-07-30 13:56:52 -07:00
David 'Digit' Turner 9bafd12fa1 Fix Win32 libutils to get a working SDK build. 2013-07-30 13:56:51 -07:00
Mathias Agopian 1555436473 implement Mutex and Condition with pthread instead of calling futex directly.
internally pthread uses futex. the implementation consists of simple inlines
there are no implementation files anymore.
2013-07-30 13:56:51 -07:00
The Android Open Source Project 7a4c83922e auto import from //depot/cupcake/@136594 2013-07-30 13:56:49 -07:00
The Android Open Source Project cbb1011c95 auto import from //depot/cupcake/@135843 2013-07-30 13:56:49 -07:00
The Android Open Source Project cf59fa8dc7 auto import from //depot/cupcake/@135843 2013-07-30 13:56:49 -07:00
The Android Open Source Project 7aa707a5d6 auto import from //depot/cupcake/@132589 2013-07-30 13:56:49 -07:00
The Android Open Source Project c739660fb7 auto import from //depot/cupcake/@137055 2013-07-30 13:56:49 -07:00
The Android Open Source Project d245d1d097 Initial Contribution 2013-07-30 13:56:46 -07:00