History log of /fuchsia/zircon/kernel/object/semaphore.cpp
Revision Date Author Comments
# f2aaaf4c 19-Jul-2018 Corey Tabaka <eieio@google.com>

[kernel] Lockdep instrument the vm and thread_lock.

- Instrument the locks used by the vm.
- Instrument the thread lock and remainning core kernel code.
- Leaving remaining arch/lib/driver code for a later CL.

Bug: ZX-23
Test: k ut all and system/test/* pass + manual testing.

Change-Id: Ie3f6a27e81bcd1890d63f2fafda3ee233f7969ef


# 6902df2f 06-Jun-2018 George Kulakowski <kulakowski@google.com>

[kernel][semaphore] Use WaitQueue in Semaphore

Change-Id: I114bcc3bd16b9c4ebd976ff3e7c4205a7e3a5fa5


# 77c95af7 06-Jun-2018 George Kulakowski <kulakowski@google.com>

[kernel][semaphore] Remove unused parameter to semaphore.Wait

Change-Id: Iabb0707f16e8d231dcc54888880f61b0b3549147


# 2042701f 27-Apr-2018 Mark Seaborn <mseaborn@google.com>

[kernel][port] Use resched_disable instead of tracking a wake_count

Change PortDispatcher and Semaphore to use resched_disable instead of
manually tracking whether we need to call thread_reschedule().

This shouldn't change the performance of ports. This is a cleanup in
the sense that it removes a use of "reschedule=false" and simplifies
the code.

Remove the !arch_ints_disabled() assertion from
thread_resched_disable(), because PortDispatcher::Queue() is called
with interrupts disabled via the following code path, which sends a
debug message when a thread exits as a result of being killed:

x86_iframe_process_pending_signals()/arm64_thread_process_pending_signals()
thread_process_pending_signals()
thread_do_suspend()
check_kill_signal()
thread_exit()
ThreadDispatcher::Exiting()
ExceptionPort::OnThreadExitForDebugger()
ThreadDispatcher::ExceptionHandlerExchange()
ExceptionPort::SendPacketWorker()
PortDispatcher::Queue()

The assertion was unnecessarily strict. Note that there are very few
places in the kernel that assert that interrupts are *not* disabled.

ZX-1690

Change-Id: I8142295202bfce332abb69e2b36a79bda0df20ab


# 591d66cf 25-Sep-2017 George Kulakowski <kulakowski@google.com>

[kernel][time] Prefer zx_{time,duration}_t to lk_time_t

Change-Id: Ie219c61f2ba7fd073917a6738221e2dde969fc2d


# 42abe91f 25-Sep-2017 Abdulla Kamar <abdulla@google.com>

[semaphore] Add optional was_blocked parameter to Wait.

This allows us to more cleanly handle the case where we need to take
additional action if invoking Wait caused us to block, rather than
rely on some implicit logic.

Change-Id: Ie6cbd3ffd34fde85e46f82dc4a37ac0921fc20b1


# f3e2126c 12-Sep-2017 Roland McGrath <mcgrathr@google.com>

[zx] Magenta -> Zircon

The Great Renaming is here!

Change-Id: I3229bdeb2a3d0e40fb4db6fec8ca7d971fbffb94


# c98a3f35 06-Sep-2017 Roland McGrath <mcgrathr@google.com>

[kernel] Define AutoThreadLock class and use it in C++ THREAD_LOCK cases

Like AutoLock but for the thread_lock.

Change-Id: I6ce34c58243b85d9cd527e4723b8b2ca16c1469e


# df7b87e7 01-Sep-2017 Mark Seaborn <mseaborn@google.com>

[kernel] Don't take thread_lock for wait_queue_destroy(), mutex_destroy(), etc.

The purpose of these operations is to catch bugs:
* to check that the object isn't currently in use;
* to invalidate the object to prevent later accidental use.

Taking thread_lock isn't necessary for that and adds overhead in
non-debug builds. If another thread is still using the object,
there's a race condition, and taking thread_lock in *_destroy()
doesn't prevent the race.

Change-Id: Iaab0dea517cfdfa6ce35ac7f4a402fe104e7e60d


# 388a7f68 31-Aug-2017 Dave Bort <dbort@google.com>

[lib/magenta] Rename kernel/lib/magenta to kernel/object

TODO: Rename magenta.{cpp,h} and other instances of "magenta" in this
module.

For MG-1091 "Rename kernel/lib/magenta"

Change-Id: I2abc316f543798e00d3a4d1c2c83195da26e6836