26 |
#include <hurd/ihash.h> |
#include <hurd/ihash.h> |
27 |
#include <hurd/cap-server.h> |
#include <hurd/cap-server.h> |
28 |
|
|
29 |
|
#include <compiler.h> |
30 |
|
|
31 |
#include "table.h" |
#include "table.h" |
32 |
#include "task-death.h" |
#include "task-death.h" |
33 |
|
|
116 |
static inline void |
static inline void |
117 |
_hurd_cap_obj_drop (hurd_cap_obj_t obj) |
_hurd_cap_obj_drop (hurd_cap_obj_t obj) |
118 |
{ |
{ |
119 |
if (__builtin_expect (!atomic_decrement_and_test (&obj->refs), 1)) |
if (EXPECT_FALSE (atomic_decrement_and_test (&obj->refs))) |
120 |
hurd_cap_obj_unlock (obj); |
hurd_cap_obj_unlock (obj); |
121 |
else |
else |
122 |
_hurd_cap_obj_dealloc (obj); |
_hurd_cap_obj_dealloc (obj); |
379 |
/* The free worker threads in this bucket. */ |
/* The free worker threads in this bucket. */ |
380 |
_hurd_cap_list_item_t free_worker; |
_hurd_cap_list_item_t free_worker; |
381 |
|
|
382 |
/* A hash from l4_thread_id_t numbers to the list items in |
/* A hash from l4_thread_id_t to _hurd_cap_list_item_t (the list |
383 |
PENDING_RPCs. This is used to limit each client thread to just |
items in PENDING_RPCs). This is used to limit each client thread |
384 |
one RPC at one time. */ |
to just one RPC at one time. */ |
385 |
struct hurd_ihash senders; |
struct hurd_ihash senders; |
386 |
|
|
387 |
/* The mapping of hurd_cap_client_id_t to _hurd_cap_client_t. */ |
/* Mapping from hurd_cap_client_id_t to _hurd_cap_client_entry_t. */ |
388 |
struct hurd_table clients; |
struct hurd_table clients; |
389 |
|
|
390 |
/* Reverse lookup from hurd_task_id_t to _hurd_cap_client_t. */ |
/* Reverse lookup from hurd_task_id_t to _hurd_cap_client_t. */ |