Module: JITBuffer::MMAP
- Includes:
- Fiddle
- Defined in:
- lib/jit_buffer.rb
Constant Summary collapse
- PROT_READ =
0x01
- PROT_WRITE =
0x02
- PROT_EXEC =
0x04
- 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) ⇒ Object
-
.set_writeable(ptr) ⇒ Object
Linux.
Class Method Details
.make_function(name, args, ret) ⇒ Object
39 40 41 42 43 |
# File 'lib/jit_buffer.rb', line 39 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
64 65 66 67 68 |
# File 'lib/jit_buffer.rb', line 64 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) ⇒ Object
76 77 78 79 |
# File 'lib/jit_buffer.rb', line 76 def self.set_executable ptr MMAP.pthread_jit_write_protect_np 1 MMAP.sys_icache_invalidate ptr, ptr.size end |
.set_writeable(ptr) ⇒ Object
Linux
72 73 74 |
# File 'lib/jit_buffer.rb', line 72 def self.set_writeable ptr MMAP.pthread_jit_write_protect_np 0 end |