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, peter.schrammel@diffblue.com 
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, peter.schrammel@diffblue.com 
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