354 |
bool is_managed; |
bool is_managed; |
355 |
|
|
356 |
/* If this is true, then the manager is waiting for the free worker |
/* If this is true, then the manager is waiting for the free worker |
357 |
list to become empty or filled (whatever it is not right now). |
list to become empty (at shutdown) or filled (else). The first |
358 |
The first worker thread to notice that the condition is fulfilled |
worker thread to notice that the condition is fulfilled now |
359 |
now should broadcast the condition. */ |
should broadcast the condition. */ |
360 |
bool is_manager_waiting; |
bool is_manager_waiting; |
361 |
|
|
362 |
/* The state of the bucket. */ |
/* The state of the bucket. */ |
392 |
|
|
393 |
/* Reverse lookup from hurd_task_id_t to _hurd_cap_client_t. */ |
/* Reverse lookup from hurd_task_id_t to _hurd_cap_client_t. */ |
394 |
struct hurd_ihash clients_reverse; |
struct hurd_ihash clients_reverse; |
395 |
|
|
396 |
|
/* This is true if worker threads should be allocated |
397 |
|
asynchronously. */ |
398 |
|
bool is_worker_alloc_async; |
399 |
|
|
400 |
|
/* If WORKER_ALLOC_ASYNC is true, this is the state of the worker |
401 |
|
thread allocation thread. If this is _HURD_CAP_STATE_GREEN, then |
402 |
|
a new thread should be allocated. If this is |
403 |
|
_HURD_CAP_STATE_YELLOW, the worker thread has allocated a new |
404 |
|
thread, and is currently waiting for the thread to complete its |
405 |
|
startup. If this is _HURD_CAP_STATE_RED, the new worker thread |
406 |
|
has completed its startup (if one was started) and no new thread |
407 |
|
will be allocated. */ |
408 |
|
_hurd_cap_state_t worker_alloc_state; |
409 |
|
|
410 |
|
/* If WORKER_ALLOC_ASYNC is true, this is the allocator thread. */ |
411 |
|
pthread_t worker_alloc; |
412 |
}; |
}; |
413 |
|
|
414 |
|
|