| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
TEST=it compiles
BUG=none
Review URL: http://codereview.chromium.org/6028009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70345 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
base namespace. This also fixes references to TLSSlot to
base::ThreadLocalStorage::Slot.
TEST=it compiles
BUG=none
Review URL: http://codereview.chromium.org/5986012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@70322 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
This reverts commit r69438. It may have broken Linux dbg-shlib.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69466 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Protect reading and writing startup_data_ to ensure intruction order and
to ensure the value is correctly read in the new thread.
Contributed by phanna (Android)
BUG=67145
TEST=none
http://codereview.chromium.org/5933002/
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@69438 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/5266001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@67011 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This temporary instrumentation has already yielded the intended data, so it is no longer necessary.
BUG=54307
Review URL: http://codereview.chromium.org/3337012
TBR=huanr@chromium.org
Review URL: http://codereview.chromium.org/3322020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@59178 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
This may not provide enough information to analyze the bug,
but it is a start with minimal impact.
BUG=54307
TEST=none
Review URL: http://codereview.chromium.org/3337012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@58786 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This makes uses of StringPrintf and friends use the base namespace and include
stringprintf.h explicitly. This also removes a bunch of unnecessary string_util
includes (which exposed a few other errors like people forgetting to include
<vector>.
TEST=it compiles
BUG=none
Review URL: http://codereview.chromium.org/3119022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@56446 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
is a class member, with stack variable and keep its value.
BUG=48772
TEST=none
Review URL: http://codereview.chromium.org/3045008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53438 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
BUG=23245
TEST=TSan bots
Review URL: http://codereview.chromium.org/2136013
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47639 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/1992005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@47252 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
used to create an implementation that targets the current thread's message loop.
BUG=None
TEST=Unit tests provided.
Review URL: http://codereview.chromium.org/1837003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@46591 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
| |
after the message loop has been destroyed.
BUG=39723
TEST=ThreadTest.CleanUp
Review URL: http://codereview.chromium.org/1593023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44532 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
crash happens because the IPC channel proxy
code relies on the listener threads message loop being around. This change destroys the message loop when it goes out
of scope leading to the crash.
Revert 44323 - Don't call Thread::CleanUp() before the MessageLoop destruction observers have run.
This is consistent with the comment for Thread::CleanUp(), which says it runs after the message loop has "stopped".
Certain consumers depend on this ordering to avoid accessing variables which are deleted by Thread::CleanUp().
BUG=39723
TEST=ThreadTest.CleanUp
Review URL: http://codereview.chromium.org/1540002
TBR=eroman@chromium.org
Review URL: http://codereview.chromium.org/1528034
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44357 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
have run.
This is consistent with the comment for Thread::CleanUp(), which says it runs after the message loop has "stopped".
Certain consumers depend on this ordering to avoid accessing variables which are deleted by Thread::CleanUp().
BUG=39723
TEST=ThreadTest.CleanUp
Review URL: http://codereview.chromium.org/1540002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@44323 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
was relying on the old ordering (BUG=39932).]
Don't call Thread::CleanUp() before the MessageLoop destruction observers have run.
This is consistent with the comment for Thread::CleanUp(), which says it runs after the message loop has "stopped".
Certain consumers depend on this ordering to avoid accessing variables which are deleted by Thread::CleanUp().
BUG=39723
TEST=ThreadTest.CleanUp
Review URL: http://codereview.chromium.org/1540002
TBR=eroman@chromium.org
Review URL: http://codereview.chromium.org/1517006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43174 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
have run.
This is consistent with the comment for Thread::CleanUp(), which says it runs after the message loop has "stopped".
Certain consumers depend on this ordering to avoid accessing variables which are deleted by Thread::CleanUp().
BUG=39723
TEST=ThreadTest.CleanUp
Review URL: http://codereview.chromium.org/1540002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@43127 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
ThreadSanitizer will print the name of the threads in data race reports.
ANNOTATE_THREAD_NAME is a no-op in Release non-valgrind build
Review URL: http://codereview.chromium.org/434009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@32821 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
| |
Currently, if StopSoon/Stop is called twice (like in ThreadTest.StopSoon) message_loop_ can be accessed simultaneously by ThreadMain():162 and in StopSoon():124.
This data race is harmless since stopping_==true, so message_loop_ value is actually un-needed.
I'd like to swap the conditions to avoid reading message_loop_ in case stopping_==true.
This way ThreadTest.StopSoon will have no race reports under ThreadSanitizer. Currently, this is the only report on base_unittests on ThreadSanitizer linux bot.
Review URL: http://codereview.chromium.org/207039
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26691 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There was a window when message_loop_ could be non-NULL and invalid. The code
assumed that when message_loop_ is non-NULL, it's valid. Added a stopping_
flag which indicates a state in which we shouldn't access the message loop
because it is not safe.
Also, reused StopSoon logic in Stop and fixed a comment which was inaccurate.
TEST=Covered by base_unittests.
BUG=15331
Review URL: http://codereview.chromium.org/201108
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@26180 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Enable database logging on history thread.
Original review: http://codereview.chromium.org/198011
BUG=16591
TEST=History UI test
Review URL: http://codereview.chromium.org/194067
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25842 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
TEST=none.
BUG=none.
Review URL: http://codereview.chromium.org/199065
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25781 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
BUG=16591
TEST=History UI test
Review URL: http://codereview.chromium.org/198011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@25770 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
change, but all of the objects are interrelated.
I am also checking in a basic unit test that creates pipeline,
and the data source hangs during initialization. The test sleeps one second and then stops the pipeline.
Andrew has already done a first pass on this, and the code has come largely from our working experimental branch.
Review URL: http://codereview.chromium.org/18546
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8805 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
classes may not be safe to use until Init() has been called. As an
example, RenderThread() creates it's IPC::SyncChannel in Init(), so it
isn't safe to call Send() method until after.
Update use of a Thread (hit with ui_tests) to no longer require Init()
be called after the startup event is signaled (required old thread
behavior).
Ran a bunch more tests on Windows to try harder to make sure I didn't break anything.
Review URL: http://codereview.chromium.org/18824
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8695 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
| |
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8506 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
not be safe to use until Init() has been called. As an example,
RenderThread() creates it's IPC::SyncChannel in Init(), so it isn't
safe to call Send() method until after.
Change tested explicitly on Mac Win Linux.
Review URL: http://codereview.chromium.org/18508
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8485 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
the observer correctly.
Review URL: http://codereview.chromium.org/12474
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6142 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/12637
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5974 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
| |
Add more DCHECKs.
Same as r5607 except that Thread.StopSoon is fixed.
Review URL: http://codereview.chromium.org/11534
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5971 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/11234
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5608 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
| |
Add more DCHECKs.
Review URL: http://codereview.chromium.org/10957
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@5607 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
Review URL: http://codereview.chromium.org/1660
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1982 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
deprecate the old ThreadLocalStorage / TLSSlot APIs.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1678 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
| |
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1364 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This CL introduces a Type enum to MessageLoop, and I also created subclasses of MessageLoop corresponding to the non-default types: MessageLoopForIO and MessageLoopForUI.
I moved all of the platform-specific MessageLoop APIs onto either MessageLoopForIO or MessageLoopForUI. MessageLoopForIO gets the Watcher API, and MessageLoopForUI gets the Observer and Dispatcher APIs. Under the hood, both are implemented in terms of MessagePumpWin, but that will change in a future CL.
The Thread class is changed to allow the consumer to specify the Type of MessageLoop they want to have setup on the created thread.
I re-organized message_loop_unittest.cc and timer_unittest.cc so that I could exercise all (or most) of the tests against each type of MessageLoop.
Note: I know that "explicit MessageLoop(Type type = TYPE_DEFAULT);" is in violation to the style-guide's restriction against default arguments. I'm working on finding a decent solution to that problem. Please ignore this issue for now.
The corresponding chrome/ changes are coming in a separate CL due to Reitveld data size limitations.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1362 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
| |
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1306 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
| |
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1287 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
PlatformThread and creating an API on PlatformThread to create a native thread
and later join with it. I also made a few other tweaks to PlatformThread, such
as eliminating the Current() method which appears to be unused. The
operator==() is also unused, so I killed it as well.
I made a few other miscellaneous cleanups and adjustments.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1146 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
uninitialized. This isn't true for the pthread_key_t type, which is unsigned on Linux and reportedly a struct on Macs. This change modifies the Slot type to be a struct containing an "initialized" flag.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1122 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
| |
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1118 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
uninitialized. This isn't true for the pthread_key_t type, which is unsigned on Linux and reportedly a struct on Macs. This change modifies the Slot type to be a struct containing an "initialized" flag.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@1113 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
MessageLoop. A MessageLoop now has a MessagePump.
This will make it possible to port the MessagePump interface to other platforms
as well as to use an IO completion port for our worker threads on Windows.
Currently, there is only MessagePumpWin, which attempts to preserve the
pre-existing behavior of the MessageLoop.
API changes to MessageLoop:
1. MessageLoop::Quit means return from Run when the MessageLoop would
otherwise wait for more work.
2. MessageLoop::Quit can no longer be called outside the context of an active Run
call. So, things like this:
MessageLoop::current()->Quit();
MessageLoop::current()->Run();
are now:
MessageLoop::current()->RunAllPending();
3. MessageLoop::Quit can no longer be called from other threads. This means that
PostTask(..., new MessageLoop::QuitTask()) must be used explicitly to Quit across
thread boundaries.
4. No protection is made to deal with nested MessageLoops involving watched
objects or APCs. In fact, an assertion is added to flag such cases. This is a
temporary measure until object watching and APC facilities are removed in favor
of a MessagePump designed around an IO completion port.
As part of this CL, I also changed the automation system to use an
IPC::ChannelProxy instead of an IPC::Channel. This moves the automation IPC
onto Chrome's IO thread where it belongs. I also fixed some abuses of
RefCounted in the AutomationProvider class. It was deleting itself in some
cases! This led to having to fix the ownership model for AutomationProvider,
which explains the changes to AutomationProviderList and so on.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@928 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
can't be implemented externally of the Thread class where NonBlockingStop() was really just
an helper function solely used in printing.
- Move two member functions access from public to protected.
- Add documentation about which thread modifies which member variable.
- Simplify ThreadStartInfo. This removes one heap allocation.
- Improve unit test coverage.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@728 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
| |
I gave the file the suffix _generic since it is implemented entirely in terms of other APIs in base.
This CL also adds a simple unit test for WaitableEvent, and I switched some code in thread.cc over to using WaitableEvent.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@648 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
compile on the Mac, though.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@532 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
|
|
|
|
|
|
| |
This greatly simplifies the implementation and API.
Now consumers can use ObjectWatcher as a "smart pointer" class, which automatically cleans-up after itself when it goes out of scope.
I also switched away from the Task based API to one that is more compatible with MessageLoop::WatchObject. That allows me to make minimal changes to existing code, and it also means that consumers do not have to allocate Task objects to use this API.
In this CL, I included changes to make a couple consumers use ObjectWatcher instead of ML::WatchObject.
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@322 0039d316-1c4b-4281-b951-d872f2087c98
|
|
|
|
|
|
| |
BUG=1282556
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@112 0039d316-1c4b-4281-b951-d872f2087c98
|
|
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@8 0039d316-1c4b-4281-b951-d872f2087c98
|