curproc = p;
dispatcher_start(CC_REGISTER_ARG struct dispatcher_proc *p){  ek_id_t id;  struct dispatcher_proc *q;   again:  do {    id = ids++;  } while(id == EK_ID_NONE);    /* Check if this ID is use. */  for(q = dispatcher_procs; q != NULL; q = q->next) {    if(id == q->id) {      goto again;    }  }  /* Put first on the procs list.*/  p->next = dispatcher_procs;  dispatcher_procs = p;      p->id = id;  dispatcher_current = id;  /* All processes must listen to the dispatcher_signal_quit signal. */  dispatcher_listen(dispatcher_signal_quit);  return id;}