Mercurial > hg > CbC > CbC_gcc
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) |