OLD | NEW |
1 /* Increase stack size limit if possible. | 1 /* Increase stack size limit if possible. |
2 Copyright (C) 2011 Free Software Foundation, Inc. | 2 Copyright (C) 2011 Free Software Foundation, Inc. |
3 | 3 |
4 This file is part of the libiberty library. This library is free | 4 This file is part of the libiberty library. This library is free |
5 software; you can redistribute it and/or modify it under the | 5 software; you can redistribute it and/or modify it under the |
6 terms of the GNU General Public License as published by the | 6 terms of the GNU General Public License as published by the |
7 Free Software Foundation; either version 2, or (at your option) | 7 Free Software Foundation; either version 2, or (at your option) |
8 any later version. | 8 any later version. |
9 | 9 |
10 This library is distributed in the hope that it will be useful, | 10 This library is distributed in the hope that it will be useful, |
(...skipping 16 matching lines...) Expand all Loading... |
27 | 27 |
28 @deftypefn Extension void stack_limit_increase (unsigned long @var{pref}) | 28 @deftypefn Extension void stack_limit_increase (unsigned long @var{pref}) |
29 | 29 |
30 Attempt to increase stack size limit to @var{pref} bytes if possible. | 30 Attempt to increase stack size limit to @var{pref} bytes if possible. |
31 | 31 |
32 @end deftypefn | 32 @end deftypefn |
33 | 33 |
34 */ | 34 */ |
35 | 35 |
36 #include "config.h" | 36 #include "config.h" |
| 37 #include "ansidecl.h" |
37 | 38 |
38 #ifdef HAVE_STDINT_H | 39 #ifdef HAVE_STDINT_H |
39 #include <stdint.h> | 40 #include <stdint.h> |
40 #endif | 41 #endif |
41 #ifdef HAVE_SYS_RESOURCE_H | 42 #ifdef HAVE_SYS_RESOURCE_H |
42 #include <sys/resource.h> | 43 #include <sys/resource.h> |
43 #endif | 44 #endif |
44 | 45 |
45 void | 46 void |
46 stack_limit_increase (unsigned long pref) | 47 stack_limit_increase (unsigned long pref ATTRIBUTE_UNUSED) |
47 { | 48 { |
48 #if defined(HAVE_SETRLIMIT) && defined(HAVE_GETRLIMIT) \ | 49 #if defined(HAVE_SETRLIMIT) && defined(HAVE_GETRLIMIT) \ |
49 && defined(RLIMIT_STACK) && defined(RLIM_INFINITY) | 50 && defined(RLIMIT_STACK) && defined(RLIM_INFINITY) |
50 struct rlimit rlim; | 51 struct rlimit rlim; |
51 if (getrlimit (RLIMIT_STACK, &rlim) == 0 | 52 if (getrlimit (RLIMIT_STACK, &rlim) == 0 |
52 && rlim.rlim_cur != RLIM_INFINITY | 53 && rlim.rlim_cur != RLIM_INFINITY |
53 && rlim.rlim_cur < pref | 54 && rlim.rlim_cur < pref |
54 && (rlim.rlim_max == RLIM_INFINITY || rlim.rlim_cur < rlim.rlim_max)) | 55 && (rlim.rlim_max == RLIM_INFINITY || rlim.rlim_cur < rlim.rlim_max)) |
55 { | 56 { |
56 rlim.rlim_cur = pref; | 57 rlim.rlim_cur = pref; |
57 if (rlim.rlim_max != RLIM_INFINITY && rlim.rlim_cur > rlim.rlim_max) | 58 if (rlim.rlim_max != RLIM_INFINITY && rlim.rlim_cur > rlim.rlim_max) |
58 rlim.rlim_cur = rlim.rlim_max; | 59 rlim.rlim_cur = rlim.rlim_max; |
59 setrlimit (RLIMIT_STACK, &rlim); | 60 setrlimit (RLIMIT_STACK, &rlim); |
60 } | 61 } |
61 #endif | 62 #endif |
62 } | 63 } |
OLD | NEW |