History log of /haiku/src/tests/add-ons/kernel/kernelland_emu/lock.cpp
Revision Date Author Comments
# 5d4501aa 20-Aug-2015 Michael Lotz <mmlr@mlotz.ch>

Assorted whitespace cleanup and typo fixes.


# ffba6606 29-Mar-2015 Michael Lotz <mmlr@mlotz.ch>

UserlandFS: Make 64 bit clean and enable build for x86_64.

I did not bother to fix the BeOS kernel emulation, so this part is
still left out of the x86_64 build.


# 893367cf 20-Oct-2014 Michael Lotz <mmlr@mlotz.ch>

libkernelland_emu: Sync _rw_lock_{read|write}_unlock API.

The threadsLocked parameter was removed from the kernel API.


# 604770b3 11-Jul-2014 Julian Harnath <julian.harnath@rwth-aachen.de>

Adapt kernelland_emu to kernel API changes

* Adapt to changes in kernel synchronization APIs.

* Makes userlandfs work again.


# 4535495d 10-Jan-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Merged the signals branch into trunk, with these changes:
* The team and thread kernel structures have been renamed to Team and Thread
respectively and moved into the new BKernel namespace.
* Several (kernel add-on) sources have been converted from C to C++ since
private kernel headers are included that are no longer C compatible.

Changes after merging:
* Fixed gcc 2 build (warnings mainly in the scary firewire bus manager).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40196 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4e08fb85 22-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added rw_lock_read_lock_with_timeout().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37680 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c4f98312 07-Jan-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added new mutex_switch_from_read_lock() for unlocking a read lock and
starting to lock a mutex in an atomic operation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34935 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ea2527f 31-Dec-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

R/W lock implementation:
* Changed the rw_lock_{read,write}_unlock() return values to void. They
returned a value != B_OK only in case of user error and no-one checked them
anyway.
* Optimized rw_lock_read_[un]lock(). They are inline now and as long as
there's no contending write locker, they will only perform an atomic_add().
* Changed the semantics of nested locking after acquiring a write lock: Read
and write locks are counted separately, so read locks no longer implicitly
become write locks. This does e.g. make degrading a write lock to a read
lock by way of read_lock + write_unlock (as used in the VM) actually work.

These changes speed up the -j8 Haiku image build on my machine by a few
percent, but more interestingly they reduce the total kernel time by 25 %.
Apparently we get more contention on other locks, now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34830 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5c20c5a5 17-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Replaced the mutex and read-write lock implementations by the kernel code,
too. It's slightly adjusted to use the thread blocking syscalls and a benaphore
style threads spinlock replacement. This solves the following problems:
* The static mutex/rwlock initializers are safe now.
* The rwlock implementation is compatible with the kernel implementation. E.g.
a write lock owner can acquire a read lock, which would dead-lock before.
* We don't use semaphores anymore. With a userland BFS one could quite easily
hit the global semaphore limit before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29579 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4a92b613 15-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

_mutex_trylock():
* The loop is unnecessary, since the call doesn't block anyway, so it can't
be interrupted.
* Set the holder, if KDEBUG is enabled. Otherwise the panic() in
recursive_lock_unlock() would be triggered.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29556 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 51ecdb00 08-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Replaced the recursive lock implementation by the kernel implementation
(slightly adjusted). It is completely based on mutexes, not needing any other
problematic features. Not sure why the previous implementation was doing it
differently.
This also adds the previously missing recursive_lock_trylock().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29462 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52c8e07f 08-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Broke kernelland_emu.cpp into several source files.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29447 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5d4501aa0187e1a8790784dc2ab3382a16660e93 20-Aug-2015 Michael Lotz <mmlr@mlotz.ch>

Assorted whitespace cleanup and typo fixes.


# ffba66060b0155c987fc2232b803b243610c6430 29-Mar-2015 Michael Lotz <mmlr@mlotz.ch>

UserlandFS: Make 64 bit clean and enable build for x86_64.

I did not bother to fix the BeOS kernel emulation, so this part is
still left out of the x86_64 build.


# 893367cf3096e3344bf5d1bc27f4037628eed2a3 20-Oct-2014 Michael Lotz <mmlr@mlotz.ch>

libkernelland_emu: Sync _rw_lock_{read|write}_unlock API.

The threadsLocked parameter was removed from the kernel API.


# 604770b31331951e0f9b44b368c21dc2b004d920 11-Jul-2014 Julian Harnath <julian.harnath@rwth-aachen.de>

Adapt kernelland_emu to kernel API changes

* Adapt to changes in kernel synchronization APIs.

* Makes userlandfs work again.


# 4535495d80c86e19e2610e7444a4fcefe3e0f8e6 10-Jan-2011 Ingo Weinhold <ingo_weinhold@gmx.de>

Merged the signals branch into trunk, with these changes:
* The team and thread kernel structures have been renamed to Team and Thread
respectively and moved into the new BKernel namespace.
* Several (kernel add-on) sources have been converted from C to C++ since
private kernel headers are included that are no longer C compatible.

Changes after merging:
* Fixed gcc 2 build (warnings mainly in the scary firewire bus manager).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40196 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4e08fb85894083c9e677a17405834bbb4d41d575 22-Jul-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added rw_lock_read_lock_with_timeout().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37680 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c4f983129280004a89041232f8420cac1548577c 07-Jan-2010 Ingo Weinhold <ingo_weinhold@gmx.de>

Added new mutex_switch_from_read_lock() for unlocking a read lock and
starting to lock a mutex in an atomic operation.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34935 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2ea2527fe423046558f682ebabede8f959a875e3 31-Dec-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

R/W lock implementation:
* Changed the rw_lock_{read,write}_unlock() return values to void. They
returned a value != B_OK only in case of user error and no-one checked them
anyway.
* Optimized rw_lock_read_[un]lock(). They are inline now and as long as
there's no contending write locker, they will only perform an atomic_add().
* Changed the semantics of nested locking after acquiring a write lock: Read
and write locks are counted separately, so read locks no longer implicitly
become write locks. This does e.g. make degrading a write lock to a read
lock by way of read_lock + write_unlock (as used in the VM) actually work.

These changes speed up the -j8 Haiku image build on my machine by a few
percent, but more interestingly they reduce the total kernel time by 25 %.
Apparently we get more contention on other locks, now.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34830 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 5c20c5a552015ad721deadeb23bab3f84179163c 17-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Replaced the mutex and read-write lock implementations by the kernel code,
too. It's slightly adjusted to use the thread blocking syscalls and a benaphore
style threads spinlock replacement. This solves the following problems:
* The static mutex/rwlock initializers are safe now.
* The rwlock implementation is compatible with the kernel implementation. E.g.
a write lock owner can acquire a read lock, which would dead-lock before.
* We don't use semaphores anymore. With a userland BFS one could quite easily
hit the global semaphore limit before.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29579 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4a92b6134fd71215f9e6164cbfe14ca3f38cd47e 15-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

_mutex_trylock():
* The loop is unnecessary, since the call doesn't block anyway, so it can't
be interrupted.
* Set the holder, if KDEBUG is enabled. Otherwise the panic() in
recursive_lock_unlock() would be triggered.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29556 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 51ecdb00aa92ca41400589de4f96148feb010412 08-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Replaced the recursive lock implementation by the kernel implementation
(slightly adjusted). It is completely based on mutexes, not needing any other
problematic features. Not sure why the previous implementation was doing it
differently.
This also adds the previously missing recursive_lock_trylock().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29462 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 52c8e07fde35f1bea1e53f5df1dabfc6f523b8fd 08-Mar-2009 Ingo Weinhold <ingo_weinhold@gmx.de>

Broke kernelland_emu.cpp into several source files.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29447 a95241bf-73f2-0310-859d-f6bbb57e9c96