Example #1
0
File: load.c Project: adh/dfsch
static load_thread_info_t* get_load_ti(){
  load_thread_info_t *lti;
  pthread_once(&load_thread_once, load_thread_key_alloc);
  lti = pthread_getspecific(load_thread_key);
  if (DFSCH_UNLIKELY(!lti)){
    lti = GC_MALLOC_UNCOLLECTABLE(sizeof(load_thread_info_t)); 
    lti->operation = NULL;
    pthread_setspecific(load_thread_key, lti);
  }
  return lti;
  
}
Example #2
0
File: ports.c Project: leia/dfsch
static current_ports_t* current_ports(){
  current_ports_t* cp;
  pthread_once(&current_ports_key_init, current_ports_key_alloc);
  cp = pthread_getspecific(current_ports_key);
  if (DFSCH_UNLIKELY(!cp)){
    cp = GC_NEW_UNCOLLECTABLE(current_ports_t);
    cp->output_port = (dfsch_object_t*)&null_port;
    cp->input_port = (dfsch_object_t*)&null_port;
    cp->error_port = (dfsch_object_t*)&null_port;
    pthread_setspecific(current_ports_key, cp);
  }
  return cp;
}