Commit graph

22 commits

Author SHA1 Message Date
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