/** Get a value as unsigned int \param key key \param value value to read \returns value */ static unsigned int as_unsigned_int(const char *key, const char *value) { unsigned long ret = 0; if (!parse_unsigned_long(value, &ret)) die_bad_config(key); return ret; }
initialize_env (void) { unsigned long stacksize; /* Do a compile time check that mkomp_h.pl did good job. */ omp_check_defines (); parse_schedule (); parse_boolean ("OMP_DYNAMIC", &gomp_dyn_var); parse_boolean ("OMP_NESTED", &gomp_nest_var); if (!parse_unsigned_long ("OMP_NUM_THREADS", &gomp_nthreads_var)) gomp_init_num_threads (); /* Not strictly environment related, but ordering constructors is tricky. */ pthread_attr_init (&gomp_thread_attr); pthread_attr_setdetachstate (&gomp_thread_attr, PTHREAD_CREATE_DETACHED); if (parse_unsigned_long ("GOMP_STACKSIZE", &stacksize)) { int err; stacksize *= 1024; err = pthread_attr_setstacksize (&gomp_thread_attr, stacksize); #ifdef PTHREAD_STACK_MIN if (err == EINVAL) { if (stacksize < PTHREAD_STACK_MIN) gomp_error ("Stack size less than minimum of %luk", PTHREAD_STACK_MIN / 1024ul + (PTHREAD_STACK_MIN % 1024 != 0)); else gomp_error ("Stack size larger than system limit"); } else #endif if (err != 0) gomp_error ("Stack size change failed: %s", strerror (err)); } }