File tree Expand file tree Collapse file tree 3 files changed +67
-0
lines changed Expand file tree Collapse file tree 3 files changed +67
-0
lines changed Original file line number Diff line number Diff line change @@ -40,6 +40,7 @@ SRC = arith_tools.cpp \
4040 lispexpr.cpp \
4141 lispirep.cpp \
4242 memory_info.cpp \
43+ memory_limit.cpp \
4344 merge_irep.cpp \
4445 message.cpp \
4546 mp_arith.cpp \
Original file line number Diff line number Diff line change 1+ /* ******************************************************************\
2+
3+ Module:
4+
5+ Author: Peter Schrammel, [email protected] 6+
7+ \*******************************************************************/
8+
9+ #include " memory_limit.h"
10+
11+ #ifdef __linux__
12+ #include < sys/resource.h>
13+ #endif
14+
15+ #include < ostream>
16+
17+ // / Outputs the memory limits to the given output stream
18+ // / \param out: output stream
19+ void memory_limits (std::ostream &out)
20+ {
21+ #ifdef __linux__
22+ struct rlimit mem_limit;
23+ getrlimit (RLIMIT_AS, &mem_limit);
24+
25+ out << " soft limit: " << mem_limit.rlim_cur << ' \n ' ;
26+ out << " hard limit: " << mem_limit.rlim_max ;
27+ #else
28+ out << " not supported" ;
29+ #endif
30+ }
31+
32+ // / Sets the soft memory limit of the current process
33+ // / \param soft_limit: the soft limit in bytes
34+ // / \return: true if setting the limit succeeded
35+ bool set_memory_limit (std::size_t soft_limit)
36+ {
37+ #ifdef __linux__
38+ struct rlimit mem_limit;
39+ getrlimit (RLIMIT_AS, &mem_limit);
40+ mem_limit.rlim_cur = soft_limit;
41+ setrlimit (RLIMIT_AS, &mem_limit);
42+ getrlimit (RLIMIT_AS, &mem_limit);
43+ return mem_limit.rlim_cur == soft_limit;
44+ #else
45+ // not supported
46+ return false ;
47+ #endif
48+ }
Original file line number Diff line number Diff line change 1+ /* ******************************************************************\
2+
3+ Module:
4+
5+ Author: Peter Schrammel, [email protected] 6+
7+ \*******************************************************************/
8+
9+ #ifndef CPROVER_UTIL_MEMORY_LIMIT_H
10+ #define CPROVER_UTIL_MEMORY_LIMIT_H
11+
12+ #include < cstddef> // size_t
13+ #include < iosfwd>
14+
15+ void memory_limits (std::ostream &);
16+ bool set_memory_limit (std::size_t soft_limit);
17+
18+ #endif // CPROVER_UTIL_MEMORY_LIMIT_H
You can’t perform that action at this time.
0 commit comments