/* * Dispatches signal {signum} to all active uv_signal_t watchers in all loops. * Returns 1 if the signal was dispatched to any watcher, or 0 if there were * no active signal watchers observing this signal. */ int uv__signal_dispatch(int signum) { uv_signal_t lookup; uv_signal_t* handle; int dispatched = 0; EnterCriticalSection(&uv__signal_lock); lookup.signum = signum; lookup.loop = NULL; for (handle = RB_NFIND(uv_signal_tree_s, &uv__signal_tree, &lookup); handle != NULL && handle->signum == signum; handle = RB_NEXT(uv_signal_tree_s, &uv__signal_tree, handle)) { unsigned long previous = InterlockedExchange(&handle->pending_signum, signum); if (!previous) { POST_COMPLETION_FOR_REQ(handle->loop, &handle->signal_req); } dispatched = 1; } LeaveCriticalSection(&uv__signal_lock); return dispatched; }
tud_t *tud_first(uintptr_t key) { tud_t tmp; tmp.key = key; return RB_NFIND(tudtree_s, &Head, &tmp); }
cur_t *cur_first(int id) { cur_t tmp; tmp.id = id; return RB_NFIND(curtree_s, &Head, &tmp); }
static udata_t *udata_first(uintptr_t id) { udata_t tmp; tmp.id = id; return RB_NFIND(udatatree_s, &Head, &tmp); }