haiku/headers/private/kernel
Augustin Cavalier 37eda488be kernel/condition_variable: Granularize locking.
Before this commit, *all* ConditionVariable operations (yes, all;
even Wait, Notify, etc.) went through a single spinlock, that also
protected the sConditionVariableHash. This obviously does not scale
so well with core count, to say the least!

With this commit, we add spinlocks to each Variable and Entry.
This makes locking somewhat more complicated (and nuanced; see
inline comment), but the trade-off seems completely worth it:

(compile HaikuDepot in VMware, 2 cores)
before
real 1m20.219s
user 1m5.619s
sys  0m40.724s

after
real 1m12.667s
user 0m57.684s
sys  0m37.251s

The more cores there are, the more of an optimization this will
likely prove to be. But 10%-across-the-board is not bad to say
the least.

Change-Id: I1e40a997fff58a79e987d7cdcafa8f7358e1115a
2019-08-03 11:24:34 -04:00
..
arch arch_user_debugger: Restore the use of size_t for dr7. 2019-07-18 20:36:13 -04:00
boot sparc: fix bootloader build 2019-04-04 20:31:25 +00:00
disk_device_manager partitioning: pass along reference to parent when uninitializing. 2016-12-23 18:53:15 +13:00
fs KPath: Use an object_cache for the path buffers in the normal case. 2019-07-11 22:52:10 -04:00
platform fdt: Major over-haul of fdt 2018-08-06 15:46:49 +00:00
posix Merged the signals branch into trunk, with these changes: 2011-01-10 21:54:38 +00:00
slab Add new operator that takes an ObjectCache* and allocation flags and 2011-11-02 21:12:09 +00:00
util syscall_args: Remove R5 compatibility hack. 2019-02-17 13:06:49 -05:00
vm kernel/vm: Inline the VMArea::name string. 2019-07-13 13:42:49 -04:00
AllocationTracking.h Move AllocationTrackingInfo into a header. This way it can be re-used outside 2011-11-04 18:03:34 +00:00
block_cache.h Added block_cache_used_memory() that returns the memory allocated by all 2008-08-06 00:09:31 +00:00
boot_device.h * vfs_boot.cpp now also exports gReadOnlyBootDevice which is true when the 2009-06-05 15:52:58 +00:00
boot_item.h * Changed get_boot_item() API: it now also can retrieve the size of the boot 2008-03-30 11:01:41 +00:00
boot_splash.h * Added an explicit boot_splash_uninit(). Not really needed, but makes 2008-07-09 15:25:01 +00:00
commpage_compat.h kernel: add a compatibility commpage on x86_64. 2018-05-18 05:11:07 +00:00
commpage.h commpage: randomize position of commpage 2013-04-04 15:27:22 +02:00
condition_variable.h kernel/condition_variable: Granularize locking. 2019-08-03 11:24:34 -04:00
console.h Made the header C++ safe. 2005-05-26 09:08:54 +00:00
core_dump.h kernel: Add core dump facility 2016-04-24 18:22:14 +02:00
cpu.h kernel: fix missing SMP_MAX_CPUS on non-x86 2014-01-19 14:09:51 -06:00
debug_heap.h Add debug_calloc() to the debug_heap. 2012-07-01 06:37:25 +02:00
debug_hex_dump.h Add a hex dump utility for use in KDL commands 2013-11-25 12:45:36 +01:00
debug_paranoia.h Fixed build for paranoia disabled globally, but enabled for individual 2008-04-29 18:42:31 +00:00
debug.h Debug.h: Implement a real STATIC_ASSERT on non-GCC2. 2018-08-22 19:19:54 -04:00
debugger_keymaps.h Make US-english the default KDL keymap again. 2016-10-10 07:18:12 +02:00
DPC.h kernel: DPC: remove schedulerLocked argument 2013-11-04 23:51:18 +01:00
elf_priv.h Revert team and thread changes for COMPAT_MODE (hrev52010 & hrev52011). 2018-06-14 22:25:06 -04:00
elf.h kernel: support elf32 on x86_64. 2018-05-15 10:29:00 +00:00
file_cache.h Clean up various whitespace and fix one header guard. 2015-08-02 23:19:07 +02:00
frame_buffer_console.h * If the VESA driver remaps the frame buffer on init, it will now also make 2010-01-01 14:54:41 +00:00
generic_syscall.h * Introduced new header directory headers/private/system which is supposed 2008-05-14 03:55:16 +00:00
heap.h Allow replacing the object cache with the guarded heap. 2011-12-04 13:52:06 +01:00
int.h x86[_64]: Support assigning MSI IRQs to arbitrary CPU 2013-12-20 01:07:08 +01:00
kdevice_manager.h * Integration of the new driver architecture. 2008-05-26 16:52:27 +00:00
kdriver_settings.h * Initialize all static mutexes in the kernel through a MUTEX_INITIALIZER() 2008-06-05 23:19:27 +00:00
kernel_c++_structs.h Attempt at allowing to use C++ structures in C only code: We use the 2009-12-02 10:56:10 +00:00
kernel_daemon.h * Refactored the kernel daemon code into a class. 2008-08-22 01:13:18 +00:00
kernel.h kernel: Toggle not toogle; no functional change 2014-05-20 18:36:30 -05:00
kimage.h runtime loader: Register extended image info with kernel 2016-04-27 02:16:09 +02:00
kmodule.h * Call module_init_post_boot_device() right after the boot volume has 2008-09-26 23:59:53 +00:00
kscheduler.h kernel: Remove cpu_info::load 2014-01-03 19:44:57 +01:00
ksignal.h _user_debug_thread(): Use new signal SIGNAL_DEBUG_THREAD 2016-04-24 11:54:17 +02:00
ksyscalls.h Also include info about the syscall return type in the 2008-02-07 16:03:00 +00:00
ksystem_info.h kernel, libroot: Introduce new API for obtaining system info 2013-12-16 03:58:43 +01:00
listeners.h kernel: Remove gSchedulerLock 2013-11-08 02:41:26 +01:00
load_tracking.h kernel: Fix overflow in load tracking for very large deltas. 2018-01-05 22:48:56 +01:00
lock.h kernel/lock.h: Reorder function declarations so the comment is correct. 2019-06-15 12:14:49 -04:00
low_resource_manager.h * The kernel's address space is now also a resource that is known to the low 2009-11-27 13:03:28 +00:00
messaging.h Added _user_unregister_messaging_service(). Fixed second send_message() proto. 2005-01-24 01:19:03 +00:00
MessagingServiceDefs.h Remove remaining unnecessary 'volatile' qualifiers 2013-11-06 00:03:07 +01:00
Notifications.h More useless inclusions of khash.h 2015-01-12 18:23:45 +01:00
port.h Reduce lock contention in kernel port subsystem. 2013-10-26 16:10:03 +02:00
real_time_clock.h Merged signals-merge branch into trunk with the following changes: 2011-06-12 00:00:23 +00:00
safemode.h safemode.h: make it usable from C code. 2014-10-28 23:52:22 +01:00
scheduling_analysis.h Use B_PRId32. 2015-04-01 20:18:00 +02:00
sem.h Merged the signals branch into trunk, with these changes: 2011-01-10 21:54:38 +00:00
smp.h smp: Make {acquire|release}_read_seqlock_inline cast explicitly. 2018-12-09 23:01:42 -05:00
syscall_restart.h trim: Added is_called_via_syscall() function. 2013-11-07 19:06:13 +01:00
system_profiler.h kernel: profile system when SYSTEM_PROFILER is defined. 2015-07-22 20:39:52 +02:00
team.h kernel: Commit missing change to team.h. 2019-07-08 17:58:43 -04:00
thread_types.h kernel: Fix race condition when waiting for load of new team. 2018-12-26 23:48:41 +00:00
thread.h Assorted whitespace cleanup and typo fixes. 2015-08-20 21:54:41 +02:00
timer.h s/OpenBeOS License/MIT License/ universally, as they're the same thing. 2017-02-09 22:09:56 -05:00
tracing.h bonefish+mmlr: 2011-11-02 16:02:07 +00:00
user_atomic.h s/OpenBeOS License/MIT License/ universally, as they're the same thing. 2017-02-09 22:09:56 -05:00
user_debugger.h syscalls: Add get_stack_trace and lookup_symbol syscalls. 2015-04-10 16:00:49 +02:00
user_mutex.h Reimplement unnamed POSIX semaphores using user_mutex 2015-05-24 14:03:40 +01:00
UserEvent.h kernel: Fix missing reference release in CreateThreadEvent. 2014-11-01 16:32:04 +01:00
usergroup.h Merged signals-merge branch into trunk with the following changes: 2011-06-12 00:00:23 +00:00
UserTimer.h kernel: Workaround for double lock of spinlock in user timers. 2014-10-29 00:25:37 +01:00
vfs.h vfs: Bind flock locks to file descriptors 2018-05-22 20:29:21 +00:00
wait_for_objects.h wait_for_objects: add macros for output-only select types 2018-02-26 10:43:54 +00:00