@Override protected final void in(final byte[] buffer, final Pointer ptr, final long ptrAddr) { final Pointer pointer = MEM_MGR.allocateDirect(buffer.length); pointer.put(0, buffer, 0, buffer.length); ptr.putLong(STRUCT_FIELD_OFFSET_SIZE, buffer.length); ptr.putAddress(STRUCT_FIELD_OFFSET_DATA, pointer.address()); }
buf.get(0, dest, 0, sz); oe.getOut().write(dest); oe.setWriteOffset(offset + size);
@Override protected final byte[] out(final byte[] buffer, final Pointer ptr, final long ptrAddr) { final long addr = ptr.getAddress(STRUCT_FIELD_OFFSET_DATA); final int size = (int) ptr.getLong(STRUCT_FIELD_OFFSET_SIZE); final Pointer pointer = MEM_MGR.newPointer(addr, size); final byte[] bytes = new byte[size]; pointer.get(0, bytes, 0, size); return bytes; } }
public ShareMemoryIO(Pointer parent, long offset) { super(parent.getRuntime(), parent.address() != 0L ? parent.address() + offset : 0L, parent.isDirect()); this.ptr = parent; this.base = offset; }
@Override protected final void in(final byte[] buffer, final Pointer ptr, final long ptrAddr) { final Pointer pointer = MEM_MGR.allocateDirect(buffer.length); pointer.put(0, buffer, 0, buffer.length); ptr.putLong(STRUCT_FIELD_OFFSET_SIZE, buffer.length); ptr.putLong(STRUCT_FIELD_OFFSET_DATA, pointer.address()); }
case SCHAR: case UCHAR: value = memory.getByte(offset); break; value = memory.getShort(offset); break; value = memory.getInt(offset); break; value = memory.getLong(offset); break; value = memory.getLongLong(offset); break; value = memory.getAddress(offset); break; value = memory.getFloat(offset); break; value = memory.getDouble(offset); break;
@Override @NotImplemented public int read_buf(String path, Pointer bufp, @size_t long size, @off_t long off, FuseFileInfo fi) { // should be implemented or null long vecmem = MemoryIO.getInstance().allocateMemory(Struct.size(new FuseBufvec(Runtime.getSystemRuntime())), false); if (vecmem == 0) { return -ErrorCodes.ENOMEM(); } Pointer src = Pointer.wrap(Runtime.getSystemRuntime(), vecmem); long memAdr = MemoryIO.getInstance().allocateMemory(size, false); if (memAdr == 0) { MemoryIO.getInstance().freeMemory(vecmem); return -ErrorCodes.ENOMEM(); } Pointer mem = Pointer.wrap(Runtime.getSystemRuntime(), memAdr); FuseBufvec buf = FuseBufvec.of(src); FuseBufvec.init(buf, size); buf.buf.mem.set(mem); bufp.putAddress(0, src.address()); int res = read(path, mem, size, off, fi); if (res >= 0) buf.buf.size.set(res); return res; }
void put(int idx, CharSequence str) { if (str == null) { memory.putAddress(idx * getRuntime().addressSize(), 0L); } else { ByteBuffer buf = charset.encode(CharBuffer.wrap(str)); Pointer ptr = Memory.allocateDirect(getRuntime(), buf.remaining() + 4, true); ptr.put(0, buf.array(), 0, buf.remaining()); stringMemory.add(idx, ptr); memory.putPointer(idx * getRuntime().addressSize(), ptr); } }
public final void set(jnr.ffi.Pointer ptr, java.lang.String value) { if (value != null) { valueHolder = getRuntime().getMemoryManager().allocateDirect(length() * 4); valueHolder.putString(0, value, length() * 4, charset); ptr.putPointer(offset(), valueHolder); } else { this.valueHolder = null; ptr.putAddress(offset(), 0); } } }
KeyVal(final BufferProxy<T> proxy) { requireNonNull(proxy); this.proxy = proxy; this.k = proxy.allocate(); this.v = proxy.allocate(); ptrKey = MEM_MGR.allocateTemporary(MDB_VAL_STRUCT_SIZE, false); ptrKeyAddr = ptrKey.address(); ptrArray = MEM_MGR.allocateTemporary(MDB_VAL_STRUCT_SIZE * 2, false); ptrVal = ptrArray.slice(0, MDB_VAL_STRUCT_SIZE); ptrValAddr = ptrVal.address(); }
@Override public Object fromNative(Pointer nativeValue, FromNativeContext context) { try { return closureConstructor.newInstance(runtime, nativeValue.address(), initFields); } catch (Throwable t) { throw new RuntimeException(t); } } }
public Pointer CMSG_DATA(Pointer cmsg) { return cmsg.slice(CMSG_ALIGN(LinuxCmsgHdr.layout.size())); } }
public java.lang.String[] getMembers() { List<java.lang.String> lst = new ArrayList<java.lang.String>(); jnr.ffi.Pointer ptr = layout.gr_mem.get(memory); Pointer member; int ptrSize = runtime.addressSize(); for (int i = 0; (member = ptr.getPointer(i)) != null; i += ptrSize) { lst.add(member.getString(0)); } return lst.toArray(new java.lang.String[lst.size()]); }
nread = 0; } else if (nread > 0) { buf.put(0, dest, 0, nread);
@Override protected final byte[] out(final byte[] buffer, final Pointer ptr, final long ptrAddr) { final long addr = ptr.getLong(STRUCT_FIELD_OFFSET_DATA); final int size = (int) ptr.getLong(STRUCT_FIELD_OFFSET_SIZE); final Pointer pointer = MEM_MGR.newPointer(addr, size); final byte[] bytes = new byte[size]; pointer.get(0, bytes, 0, size); return bytes; } }
/** * Gets the {@link jnr.ffi.Pointer} value from the native memory. * * @return a {@link jnr.ffi.Pointer}. */ public final jnr.ffi.Pointer get(jnr.ffi.Pointer ptr) { return ptr.getPointer(offset()); }
public byte[] crypt(byte[] key, byte[] salt) { Crypt crypt = crypt(); if (crypt == null) { return JavaLibCHelper.crypt(key, salt); } Pointer ptr = crypt().crypt(key, salt); if (ptr == null) return null; int end = ptr.indexOf(0, (byte)0); byte[] bytes = new byte[end + 1]; ptr.get(0, bytes, 0, end); return bytes; }
/** * Copies the integer value from native memory * * @param runtime the current runtime. * @param buffer the native memory buffer. * @param offset the memory offset. */ public void fromNative(Runtime runtime, Pointer buffer, long offset) { this.value = buffer.getInt(offset); }