public ZeroCopyOutputStream(int initialSize, ByteOrder order) { buffer = new NativeBuffer(initialSize, order); memory = buffer.memory(); }
private NativeBuffer realloc0(long newLength) { if (mmapped) throw new UnsupportedOperationException(); if (newLength >= MMAP_THRESHOLD) throw new UnsupportedOperationException(); if (newLength <= 0) throw new IllegalArgumentException("length must be > 0"); final long newAddress = UNSAFE.reallocateMemory(address, newLength); if (address == 0) throw new OutOfMemoryError(); closed = true; return new NativeBuffer(newAddress, new DirectMemory(newAddress, newLength, memory.getOrder()), false); }
public static Stat fstat(FileDescriptor fd) throws IOException { NativeBuffer nativeBuffer = new NativeBuffer(92, ByteOrder.nativeOrder()); try { DirectMemory direct = nativeBuffer.memory(); try { int err = fstat(fdField.getInt(fd), direct.getAddress()); if (err == errstr.indexOf("ENOENT")) { throw new FileNotFoundException("No such file or directory"); } if (err != 0) { throw new IOException("fstat on file descriptor "+fd+" failed with error "+(err < 0 ? "unknown" : errstr.get(err))); } } catch (IllegalAccessException e) { throw Throwables.propagate(e); } return new Stat(direct); } finally { nativeBuffer.close(); } }
public static Stat stat(String file) throws IOException { NativeBuffer nativeBuffer = new NativeBuffer(92, ByteOrder.nativeOrder()); try { DirectMemory direct = nativeBuffer.memory(); int err = stat(file, direct.getAddress()); if (err != 0) { if (err == errstr.indexOf("ENOENT")) { throw new FileNotFoundException("No such file or directory: "+file); } throw new IOException("stat on path "+file+" failed with error "+(err < 0 ? "unknown" : errstr.get(err))); } return new Stat(direct); } finally { nativeBuffer.close(); } }
public static Stat lstat(String file) throws IOException { NativeBuffer nativeBuffer = new NativeBuffer(92, ByteOrder.nativeOrder()); try { DirectMemory direct = nativeBuffer.memory(); int err = lstat(file, direct.getAddress()); if (err == errstr.indexOf("ENOENT")) { throw new FileNotFoundException("No such file or directory: "+file); } if (err != 0) { throw new IOException("stat on path "+file+" failed with error "+(err < 0 ? "unknown" : errstr.get(err))); } return new Stat(direct); } finally { nativeBuffer.close(); } }
private NativeBuffer createNewAndClose(long newSize) { final NativeBuffer ret = new NativeBuffer(newSize, memory.getOrder()); ret.memory().putBytes(0, memory, 0, Math.min(memory.length(), newSize)); closeQuietly(this); return ret; }
public MemoryManager(long physicalSize, boolean mLock) { this.mLock = mLock; physicalSize = physicalSize & ADDRESS_MASK; physicalMemory = new NativeBuffer(physicalSize, ByteOrder.LITTLE_ENDIAN); if (mLock) physicalMemory.mlock(0, physicalSize); activePages = new PageTableEntry[(int)(physicalSize >>> PAGE_BITS)];
public NativeBuffer realloc(long newSize) { if (mmapped && newSize >= MMAP_THRESHOLD) { if (OS_TYPE_IS_MAC) { // MAC does not support mremap return createNewAndClose(newSize); } else { final long newAddress = MMapBuffer.mremap(address, memory.length(), newSize); if (newAddress == MMapBuffer.MAP_FAILED) { throw new RuntimeException("anonymous mremap failed with error " + MMapBuffer.errno()); } return new NativeBuffer(newAddress, new DirectMemory(newAddress, newSize, memory.getOrder()), true); } } else if (!mmapped && newSize < MMAP_THRESHOLD) { return realloc0(newSize); } else { return createNewAndClose(newSize); } }
final NativeBuffer offsets; offsets = closer.register(new NativeBuffer(4*r.getNumDocs(), ByteOrder.LITTLE_ENDIAN)); final IntArray intArray = offsets.memory().intArray(0, r.getNumDocs()); final ZeroCopyOutputStream valuesFileOut = new ZeroCopyOutputStream();