1 /* A limited emulation of sys/resource.h. 2 3 Copyright (C) 2016-2023 Free Software Foundation, Inc. 4 5 This file is part of GNU Emacs. 6 7 GNU Emacs is free software: you can redistribute it and/or modify 8 it under the terms of the GNU General Public License as published by 9 the Free Software Foundation, either version 3 of the License, or (at 10 your option) any later version. 11 12 GNU Emacs is distributed in the hope that it will be useful, 13 but WITHOUT ANY WARRANTY; without even the implied warranty of 14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 GNU General Public License for more details. 16 17 You should have received a copy of the GNU General Public License 18 along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ 19 20 #ifndef INC_SYS_RESOURCE_H_ 21 #define INC_SYS_RESOURCE_H_ 22 23 /* We only support RLIMIT_STACK and RLIMIT_NOFILE for now. */ 24 enum rlimit_resource { 25 RLIMIT_STACK = 0, 26 #define RLIMIT_STACK RLIMIT_STACK 27 28 RLIMIT_NOFILE = 1, 29 #define RLIMIT_NOFILE RLIMIT_NOFILE 30 31 RLIMIT_NLIMITS 32 #define RLIMIT_NLIMITS RLIMIT_NLIMITS 33 }; 34 35 typedef enum rlimit_resource rlimit_resource_t; 36 37 /* We use a 64-bit data type because some values could potentially be 38 64-bit wide even in 32-bit builds. */ 39 typedef long long rlim_t; 40 41 #define RLIMIT_INFINITY ((rlim_t) -1) 42 43 struct rlimit { 44 rlim_t rlim_cur; /* current soft limit */ 45 rlim_t rlim_max; /* hard limit */ 46 }; 47 48 extern int getrlimit (rlimit_resource_t, struct rlimit *); 49 extern int setrlimit (rlimit_resource_t, const struct rlimit *); 50 51 #endif /* INC_SYS_RESOURCE_H_ */