Module: JITBuffer::MMAP
- Includes:
- Fiddle
- Defined in:
- ext/jit_buffer/jit_buffer.c,
lib/jit_buffer.rb
Constant Summary collapse
- PROT_READ =
INT2NUM(PROT_READ)
- PROT_WRITE =
INT2NUM(PROT_WRITE)
- PROT_EXEC =
INT2NUM(PROT_EXEC)
- VM_PROT_COPY =
INT2NUM(VM_PROT_COPY)
- VM_PROT_READ =
INT2NUM(VM_PROT_READ)
- VM_PROT_EXECUTE =
INT2NUM(VM_PROT_EXECUTE)
- MAP_PRIVATE =
INT2NUM(MAP_PRIVATE)
- MAP_ANON =
INT2NUM(MAP_ANON)
- MAP_JIT =
INT2NUM(MAP_JIT)
Class Method Summary collapse
- .make_function(name, args, ret) ⇒ Object
- .mmap_buffer(size) ⇒ Object
- .pthread_jit_write_protect_np(v) ⇒ Object
- .sys_icache_invalidate(addr, len) ⇒ Object
Class Method Details
.make_function(name, args, ret) ⇒ Object
26 27 28 29 30 |
# File 'lib/jit_buffer.rb', line 26 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
45 46 47 48 49 |
# File 'lib/jit_buffer.rb', line 45 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 |
.pthread_jit_write_protect_np(v) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 |
# File 'ext/jit_buffer/jit_buffer.c', line 12 static VALUE rb_pthread_jit_write_protect_np(VALUE mod, VALUE v) { if (RTEST(v)) { pthread_jit_write_protect_np(1); } else { pthread_jit_write_protect_np(0); } return Qnil; } |
.sys_icache_invalidate(addr, len) ⇒ Object
27 28 29 30 31 32 33 |
# File 'ext/jit_buffer/jit_buffer.c', line 27 static VALUE rb_sys_icache_invalidate(VALUE mod, VALUE addr, VALUE len) { sys_icache_invalidate((void *)(NUM2ULONG(addr)), NUM2INT(len)); return Qnil; } |