Module: AgentJail::FFI::Setrlimit

Extended by:
FFI::Library
Defined in:
lib/agent_jail/ffi/setrlimit.rb

Defined Under Namespace

Classes: RLimit

Constant Summary collapse

RLIMIT_CPU =

POSIX resource limit constants

0
RLIMIT_AS_LINUX =

RLIMIT_AS is virtual address space (address space = memory limit) Linux: 9, macOS: 5

9
RLIMIT_AS_MACOS =
5

Class Method Summary collapse

Class Method Details

.rlimit_asObject



28
29
30
# File 'lib/agent_jail/ffi/setrlimit.rb', line 28

def self.rlimit_as
  RUBY_PLATFORM.include?("darwin") ? RLIMIT_AS_MACOS : RLIMIT_AS_LINUX
end

.set_cpu(seconds) ⇒ Object



39
40
41
42
43
44
# File 'lib/agent_jail/ffi/setrlimit.rb', line 39

def self.set_cpu(seconds)
  rlimit = RLimit.new
  rlimit[:rlim_cur] = seconds
  rlimit[:rlim_max] = seconds
  setrlimit(RLIMIT_CPU, rlimit)
end

.set_memory(bytes) ⇒ Object



32
33
34
35
36
37
# File 'lib/agent_jail/ffi/setrlimit.rb', line 32

def self.set_memory(bytes)
  rlimit = RLimit.new
  rlimit[:rlim_cur] = bytes
  rlimit[:rlim_max] = bytes
  setrlimit(rlimit_as, rlimit)
end