haiku/headers/private
Julian Harnath 7f64b301b1 Reduce lock contention in kernel port subsystem.
* Replace ports list mutex with R/W-lock.

* Move team port list protection to separate array of mutexes.
  Relieve contention on sPortsLock by removing Team::port_list from its
  protected items. With this, set_port_owner() only needs to acquire the
  sPortsLock for reading.

* Add another hash table holding the ports by name. Used by find_port()
  so it doesn't have to iterate over the list anymore.

* Use slab-based memory allocator for port messages. sPortQuotaLock was
  acquired on every message send or receive and was thus another point
  of contention. The lock is not necessary anymore.

* Lock for port hashes and Port::lock are no longer locked in a nested
  fashion to reduce chances of blocking other threads.

* Make operations concurrency-safe by adding an atomically accessed
  Port::state which provides linearization points to port creation and
  deletion. Both operations are now divided into logical and physical
  parts, the logical part just updating the state and the physical part
  adding/remove it to/from the port hash and team port list.

* set_port_owner() is the only remaining function which still locks
  Port::lock and one or two of sTeamListLock[] in a nested fashion.
  Since it needs to move the port from one team list to another and
  change Port::owner, there's no way around.

* Ports are now reference counted to make accesses to already-deleted
  ports safe.

* Should fix #8007.
2013-10-26 16:10:03 +02:00
..
app Add userdel 2013-09-18 16:33:17 +02:00
audio
binary_compatibility Add macro B_IF_GCC_2 2012-02-19 15:11:57 +01:00
bluetooth Adding debug file to bluetooth. 2013-01-12 20:01:28 +01:00
debug Move comment to correct function. 2013-05-01 19:52:00 -04:00
device
drivers Revert "usb_disk: retry when usb disk not ready" 2013-10-19 22:06:10 +02:00
file_systems QueryParser: Equation::Match(): Fix generic attribute case 2013-06-01 03:58:11 +02:00
firewire Fixes some occurrences of 'variable set but not used', disables Werror for problematic items. 2012-02-23 20:32:11 +01:00
fs_shell Added recursive_lock_transfer_lock() to the fs_shell. 2012-03-31 00:09:47 +02:00
graphics RadeonHD: Fix incorrect name -> chipset mapping 2013-07-16 11:20:24 -05:00
index_server
input Implemented the patch on #7963 in a different way. 2011-10-31 18:09:24 +00:00
interface BColumnListView: Enable invalidating rows, fix SetField() 2013-09-17 14:42:03 +02:00
kernel Reduce lock contention in kernel port subsystem. 2013-10-26 16:10:03 +02:00
libroot libroot: explicitly check ABI version 2013-05-22 19:31:05 +02:00
locale Fix relying on order of static object destruction in Locale Kit. 2012-11-26 01:19:27 +01:00
mail * Put ServerConnection into the BPrivate namespace as it should have been. 2011-11-02 22:56:50 +00:00
media Move SoundConsumer to libmedia in the BPrivate namespace 2012-08-07 23:38:37 +02:00
midi
mount
net Skip timeout computation in is_syscall_restarted case. 2013-05-04 11:27:04 +02:00
notification * revert '43157 as the files are actually needed. I still don't understand how I managed to build everything without them ... 2011-11-03 12:49:18 +00:00
package PackageWriterImpl::_AttributeRemoved(): Update string cache 2013-10-25 22:54:44 +02:00
print
runtime_loader libroot: make all areas executable for old binaries 2013-05-15 00:06:39 +02:00
screen_saver ScreenSaver: Timeout if window won't lock. Fixes #4260. 2013-09-02 19:44:45 -04:00
shared RangeArray::AddRange(): Fix joining with single subsequent range 2013-10-25 22:54:43 +02:00
storage Consolidate adding add-on directories 2013-10-17 01:28:31 -04:00
support BString::Private: Add IsShareable() 2013-06-27 21:57:40 +02:00
syslog_daemon
system Add symbol versioning for find_directory() 2013-10-05 01:33:26 +02:00
textencoding
tracker Fix crash when dragging files onto nav menus. 2012-09-03 16:28:47 -04:00
usb_vision
userlandfs
virtio virtio: add queue_is_full(), queue_is_empty(), queue_size() hooks. 2013-09-18 17:43:39 +02:00
vmdk