Replaced the locking strategy (formerly a recursive lock for the depot and
one for each per CPU store): * The depot is now protected by a R/W lock combined with a spinlock. It is required to either hold read lock + spinlock or just the write lock. * When accessing the per CPU stores we only need to acquire the read lock and disable interrupts. When switching magazines with the depot we additionally get the spinlock. * When allocating a new magazine we do completely unlock. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35200 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -13,7 +13,8 @@
|
||||
struct DepotMagazine;
|
||||
|
||||
typedef struct object_depot {
|
||||
recursive_lock lock;
|
||||
rw_lock outer_lock;
|
||||
spinlock inner_lock;
|
||||
DepotMagazine* full;
|
||||
DepotMagazine* empty;
|
||||
size_t full_count;
|
||||
|
||||
Reference in New Issue
Block a user