comparison libgomp/env.c @ 63:b7f97abdc517 gcc-4.6-20100522

update gcc from gcc-4.5.0 to gcc-4.6
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Mon, 24 May 2010 12:47:05 +0900
parents a06113de4d67
children f6334be47118
comparison
equal deleted inserted replaced
56:3c8a44c06a95 63:b7f97abdc517
1 /* Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. 1 /* Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
2 Free Software Foundation, Inc.
2 Contributed by Richard Henderson <rth@redhat.com>. 3 Contributed by Richard Henderson <rth@redhat.com>.
3 4
4 This file is part of the GNU OpenMP Library (libgomp). 5 This file is part of the GNU OpenMP Library (libgomp).
5 6
6 Libgomp is free software; you can redistribute it and/or modify it 7 Libgomp is free software; you can redistribute it and/or modify it
143 144
144 /* Parse an unsigned long environment variable. Return true if one was 145 /* Parse an unsigned long environment variable. Return true if one was
145 present and it was successfully parsed. */ 146 present and it was successfully parsed. */
146 147
147 static bool 148 static bool
148 parse_unsigned_long (const char *name, unsigned long *pvalue) 149 parse_unsigned_long (const char *name, unsigned long *pvalue, bool allow_zero)
149 { 150 {
150 char *env, *end; 151 char *env, *end;
151 unsigned long value; 152 unsigned long value;
152 153
153 env = getenv (name); 154 env = getenv (name);
159 if (*env == '\0') 160 if (*env == '\0')
160 goto invalid; 161 goto invalid;
161 162
162 errno = 0; 163 errno = 0;
163 value = strtoul (env, &end, 10); 164 value = strtoul (env, &end, 10);
164 if (errno || (long) value <= 0) 165 if (errno || (long) value <= 0 - allow_zero)
165 goto invalid; 166 goto invalid;
166 167
167 while (isspace ((unsigned char) *end)) 168 while (isspace ((unsigned char) *end))
168 ++end; 169 ++end;
169 if (*end != '\0') 170 if (*end != '\0')
479 omp_check_defines (); 480 omp_check_defines ();
480 481
481 parse_schedule (); 482 parse_schedule ();
482 parse_boolean ("OMP_DYNAMIC", &gomp_global_icv.dyn_var); 483 parse_boolean ("OMP_DYNAMIC", &gomp_global_icv.dyn_var);
483 parse_boolean ("OMP_NESTED", &gomp_global_icv.nest_var); 484 parse_boolean ("OMP_NESTED", &gomp_global_icv.nest_var);
484 parse_unsigned_long ("OMP_MAX_ACTIVE_LEVELS", &gomp_max_active_levels_var); 485 parse_unsigned_long ("OMP_MAX_ACTIVE_LEVELS", &gomp_max_active_levels_var,
485 parse_unsigned_long ("OMP_THREAD_LIMIT", &gomp_thread_limit_var); 486 true);
487 parse_unsigned_long ("OMP_THREAD_LIMIT", &gomp_thread_limit_var, false);
486 if (gomp_thread_limit_var != ULONG_MAX) 488 if (gomp_thread_limit_var != ULONG_MAX)
487 gomp_remaining_threads_count = gomp_thread_limit_var - 1; 489 gomp_remaining_threads_count = gomp_thread_limit_var - 1;
488 #ifndef HAVE_SYNC_BUILTINS 490 #ifndef HAVE_SYNC_BUILTINS
489 gomp_mutex_init (&gomp_remaining_threads_lock); 491 gomp_mutex_init (&gomp_remaining_threads_lock);
490 #endif 492 #endif
491 gomp_init_num_threads (); 493 gomp_init_num_threads ();
492 gomp_available_cpus = gomp_global_icv.nthreads_var; 494 gomp_available_cpus = gomp_global_icv.nthreads_var;
493 if (!parse_unsigned_long ("OMP_NUM_THREADS", &gomp_global_icv.nthreads_var)) 495 if (!parse_unsigned_long ("OMP_NUM_THREADS", &gomp_global_icv.nthreads_var,
496 false))
494 gomp_global_icv.nthreads_var = gomp_available_cpus; 497 gomp_global_icv.nthreads_var = gomp_available_cpus;
495 if (parse_affinity ()) 498 if (parse_affinity ())
496 gomp_init_affinity (); 499 gomp_init_affinity ();
497 wait_policy = parse_wait_policy (); 500 wait_policy = parse_wait_policy ();
498 if (!parse_spincount ("GOMP_SPINCOUNT", &gomp_spin_count_var)) 501 if (!parse_spincount ("GOMP_SPINCOUNT", &gomp_spin_count_var))
630 } 633 }
631 634
632 void 635 void
633 omp_set_max_active_levels (int max_levels) 636 omp_set_max_active_levels (int max_levels)
634 { 637 {
635 if (max_levels > 0) 638 if (max_levels >= 0)
636 gomp_max_active_levels_var = max_levels; 639 gomp_max_active_levels_var = max_levels;
637 } 640 }
638 641
639 int 642 int
640 omp_get_max_active_levels (void) 643 omp_get_max_active_levels (void)