Exemple #1
0
/*
 * 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;
}
Exemple #2
0
tud_t *tud_first(uintptr_t key) 
	{ tud_t tmp; tmp.key = key; return RB_NFIND(tudtree_s, &Head, &tmp); }
Exemple #3
0
cur_t *cur_first(int id) 
    { cur_t tmp; tmp.id = id; return RB_NFIND(curtree_s, &Head, &tmp); }
Exemple #4
0
static udata_t *udata_first(uintptr_t id) 
    { udata_t tmp; tmp.id = id; return RB_NFIND(udatatree_s, &Head, &tmp); }