void init_jobs(void) { jobs_free=0; jobs_size=100; job=do_alloc(jobs_size, sizeof(JOB)); jobs_submitted=0; jobs_done=0; next_job_to_do=0; thread_mutex_init(&jobs_mutex); thread_cond_init(&wait_for_more_jobs_condition); thread_cond_init(&all_done_condition); }
void connection_initialize(void) { if (_initialized) return; thread_spin_create (&_connection_lock); thread_mutex_create(&move_clients_mutex); thread_rwlock_create(&_source_shutdown_rwlock); thread_cond_init(&global.shutdown_cond); _con_queue = NULL; _con_queue_tail = &_con_queue; banned_ip.contents = NULL; banned_ip.file_mtime = 0; allowed_ip.contents = NULL; allowed_ip.file_mtime = 0; _connection_running = 1; /* (XXX)xaiki: need a way to make it go away on shutdown, ok for now */ _connection_thread_id = thread_create ("Connection Thread", _connection_thread, NULL, THREAD_DETACHED); _connection_cond = thread_cond_create (); _initialized = 1; }
cond_t *thread_cond_create(void) { cond_t *cond = acalloc (1, sizeof(cond_t)); thread_cond_init(cond); return cond; }
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr) { cond_t *cn; (void) attr; pthread_initialize(); if (cond == NULL) return_errno(EINVAL, EINVAL); if ((cn = (cond_t *)malloc(sizeof(cond_t))) == NULL) return errno; if (!thread_cond_init(cn)) return errno; (*cond) = (pthread_cond_t)cn; return OK; }
void init_threads(int mt) { max_threads=mt-1; if(max_threads<0) { max_threads=cpu_count()-1; } if(max_threads<0) max_threads=0; thread_id=do_alloc(max_threads, sizeof(*thread_id)); num_threads=0; threads_started=0; thread_cond_init(&thread_not_needed); thread_mutex_init(&thread_num_mutex); set_concurrency(1); fprintf(stderr, "maximum threads: %d\n", max_threads+1); fprintf(LOG, "maximum threads: %d\n", max_threads+1); }