emergency commit
[cl-cudd.git] / distr / util / datalimit.c
blobf140414d374b7125fd22e511d5ad473d3f3ff2f9
1 /* $Id: datalimit.c,v 1.5 2007/08/24 18:17:31 fabio Exp fabio $ */
3 #ifndef HAVE_SYS_RESOURCE_H
4 #define HAVE_SYS_RESOURCE_H 1
5 #endif
6 #ifndef HAVE_SYS_TIME_H
7 #define HAVE_SYS_TIME_H 1
8 #endif
9 #ifndef HAVE_GETRLIMIT
10 #define HAVE_GETRLIMIT 1
11 #endif
13 #if HAVE_SYS_RESOURCE_H == 1
14 #if HAVE_SYS_TIME_H == 1
15 #include <sys/time.h>
16 #endif
17 #include <sys/resource.h>
18 #endif
20 #ifndef RLIMIT_DATA_DEFAULT
21 #define RLIMIT_DATA_DEFAULT 67108864 /* assume 64MB by default */
22 #endif
24 #ifndef EXTERN
25 # ifdef __cplusplus
26 # define EXTERN extern "C"
27 # else
28 # define EXTERN extern
29 # endif
30 #endif
32 EXTERN unsigned long getSoftDataLimit(void);
34 unsigned long
35 getSoftDataLimit(void)
37 #if HAVE_SYS_RESOURCE_H == 1 && HAVE_GETRLIMIT == 1 && defined(RLIMIT_DATA)
38 struct rlimit rl;
39 int result;
41 result = getrlimit(RLIMIT_DATA, &rl);
42 if (result != 0 || rl.rlim_cur == RLIM_INFINITY)
43 return((unsigned long) RLIMIT_DATA_DEFAULT);
44 else
45 return((unsigned long) rl.rlim_cur);
46 #else
47 return((unsigned long) RLIMIT_DATA_DEFAULT);
48 #endif
50 } /* end of getSoftDataLimit */