211#define BU_SEMAPHORE_RESERVED_LIST(_entry) \
212 _entry(1, REGISTRY, "SEM_LOCK") \
213 _entry(2, GENERAL, "BU_SEM_GENERAL") \
214 _entry(3, SYSCALL, "BU_SEM_SYSCALL") \
215 _entry(4, MAPPEDFILE, "BU_SEM_MAPPEDFILE") \
216 _entry(5, THREAD, "BU_SEM_THREAD") \
217 _entry(6, MALLOC, "BU_SEM_MALLOC") \
218 _entry(7, DATETIME, "BU_SEM_DATETIME") \
219 _entry(8, DIR, "BU_SEM_DIR") \
220 _entry(9, LOG_HOOK, "BU_SEM_LOG_HOOK") \
221 _entry(16, RT_WORKER, "RT_SEM_WORKER") \
222 _entry(17, RT_RESULTS, "RT_SEM_RESULTS") \
223 _entry(18, RT_MODEL, "RT_SEM_MODEL") \
224 _entry(19, RT_TREE0, "RT_SEM_TREE0") \
225 _entry(20, RT_TREE1, "RT_SEM_TREE1") \
226 _entry(21, RT_TREE2, "RT_SEM_TREE2") \
227 _entry(22, RT_TREE3, "RT_SEM_TREE3") \
228 _entry(23, RT_DB_USES, "LIBRT_SEM_USES")
232#define BU_SEMAPHORE_RESERVED_ENUM(_id, _symbol, _name) BU_SEM_ID_ ## _symbol = _id,
234#undef BU_SEMAPHORE_RESERVED_ENUM
259#define BU_SEMAPHORE_DEFINE(x) x = bu_semaphore_register(CPP_STR(x))
288#define BU_SETJUMP setjmp((bu_setjmp_valid[bu_parallel_id()]=1, bu_jmpbuf[bu_parallel_id()]))
289#define BU_UNSETJUMP (bu_setjmp_valid[bu_parallel_id()]=0)
Header file for the BRL-CAD common definitions.
void bu_semaphore_acquire(unsigned int i)
int bu_setjmp_valid[MAX_PSW]
void bu_nice_set(int newnice)
routines for parallel processing
void bu_semaphore_free(void)
void bu_semaphore_init(unsigned int nsemaphores)
DEPRECATED int bu_is_parallel(void)
subroutine to determine if we are multi-threaded
size_t bu_avail_cpus(void)
jmp_buf bu_jmpbuf[MAX_PSW]
#define BU_SEMAPHORE_RESERVED_LIST(_entry)
semaphore implementation
void bu_parallel(void(*func)(int func_cpu_id, void *func_data), size_t ncpu, void *data)
int bu_semaphore_register(const char *name)
void bu_semaphore_release(unsigned int i)
#define BU_SEMAPHORE_RESERVED_ENUM(_id, _symbol, _name)