Module: JITBuffer::MMAP
- Includes:
- Fiddle
- Defined in:
- lib/jit_buffer.rb
Constant Summary collapse
- PROT_READ =
0x01- PROT_WRITE =
0x02- PROT_EXEC =
0x04- MAP_SHARED =
0x01- MAP_PRIVATE =
0x02- MAP_ANON =
0x20- MAP_JIT =
0x0
Class Method Summary collapse
- .make_function(name, args, ret) ⇒ Object
- .mmap_buffer(size) ⇒ Object
- .set_executable(ptr, size) ⇒ Object
-
.set_writeable(ptr, size) ⇒ Object
Linux.
Class Method Details
.make_function(name, args, ret) ⇒ Object
40 41 42 43 44 |
# File 'lib/jit_buffer.rb', line 40 def self.make_function name, args, ret ptr = Handle::DEFAULT[name] func = Function.new ptr, args, ret, name: name define_singleton_method name, &func.to_proc end |
.mmap_buffer(size) ⇒ Object
65 66 67 68 69 |
# File 'lib/jit_buffer.rb', line 65 def self.mmap_buffer size ptr = mmap 0, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANON | MAP_JIT, -1, 0 ptr.size = size ptr end |
.set_executable(ptr, size) ⇒ Object
77 78 79 80 |
# File 'lib/jit_buffer.rb', line 77 def self.set_executable ptr, size MMAP.pthread_jit_write_protect_np 1 MMAP.sys_icache_invalidate ptr, size end |
.set_writeable(ptr, size) ⇒ Object
Linux
73 74 75 |
# File 'lib/jit_buffer.rb', line 73 def self.set_writeable ptr, _ MMAP.pthread_jit_write_protect_np 0 end |