
1: /* Resource limits. 2: Copyright (C) 1994,95,97,2000 Free Software Foundation, Inc. 3: This file is part of the GNU C Library. 4: 5: The GNU C Library is free software; you can redistribute it and/or 6: modify it under the terms of the GNU Lesser General Public 7: License as published by the Free Software Foundation; either 8: version 2.1 of the License, or (at your option) any later version. 9: 10: The GNU C Library is distributed in the hope that it will be useful, 11: but WITHOUT ANY WARRANTY; without even the implied warranty of 12: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13: Lesser General Public License for more details. 14: 15: You should have received a copy of the GNU Lesser General Public 16: License along with the GNU C Library; if not, write to the Free 17: Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 18: 02111-1307 USA. */ 19: 20: #include <hurd.h> 21: #include <cthreads.h> 22: #include <hurd/resource.h> 23: 24: /* This must be given an initializer, or the a.out linking rules will 25: not include the entire file when this symbol is referenced. */ 26: struct rlimit _hurd_rlimits[RLIM_NLIMITS] = { { 0, }, }; 27: 28: /* This must be initialized data for the same reason as above, but this is 29: intentionally initialized to a bogus value to emphasize the point that 30: mutex_init is still required below just in case of unexec. */ 31: struct mutex _hurd_rlimit_lock = { SPIN_LOCK_INITIALIZER, }; 32: 33: static void 34: init_rlimit (void) 35: { 36: int i; 37: 38: __mutex_init (&_hurd_rlimit_lock); 39: 40: for (i = 0; i < RLIM_NLIMITS; ++i) 41: { 42: if (_hurd_rlimits[i].rlim_max == 0) 43: _hurd_rlimits[i].rlim_max = RLIM_INFINITY; 44: if (_hurd_rlimits[i].rlim_cur == 0) 45: #define I(lim, val) case RLIMIT_##lim: _hurd_rlimits[i].rlim_cur = (val); break 46: switch (i) 47: { 48: I (NOFILE, 1024); /* Linux 2.2.12 uses this initial value. */ 49: 50: default: 51: _hurd_rlimits[i].rlim_cur = _hurd_rlimits[i].rlim_max; 52: break; 53: } 54: #undef I 55: } 56: 57: (void) &init_rlimit; 58: } 59: text_set_element (_hurd_preinit_hook, init_rlimit);