diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2022-04-26 13:47:16 +0200 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2022-04-26 13:47:16 +0200 |
commit | be717cbb0d681e1e9d0afaf9d6321dc51e556932 (patch) | |
tree | 2ac74346b29b31021af44eb34bf446f421b06466 /vespajlib/src/main/java/com/yahoo/nativec | |
parent | cad36df5132815879cc078c3faed8ec51f13a23d (diff) |
Add mallinfo2 implementation.
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/nativec')
4 files changed, 66 insertions, 0 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/nativec/MallInfo2.java b/vespajlib/src/main/java/com/yahoo/nativec/MallInfo2.java new file mode 100644 index 00000000000..1db73710d76 --- /dev/null +++ b/vespajlib/src/main/java/com/yahoo/nativec/MallInfo2.java @@ -0,0 +1,29 @@ +package com.yahoo.nativec; + +import com.sun.jna.Structure; + +public class MallInfo2 extends NativeC { + private final static Throwable initException = loadLibrary(); + public static Throwable init() { + return initException; + } + // Equivalent JNA mapping + private static class MallInfo2Struct extends Structure { + public static class ByValue extends MallInfo2Struct implements Structure.ByValue { } + public long arena; /* Non-mmapped space allocated (bytes) */ + public long ordblks; /* Number of free chunks */ + public long smblks; /* Number of free fastbin blocks */ + public long hblks; /* Number of mmapped regions */ + public long hblkhd; /* Space allocated in mmapped regions (bytes) */ + public long usmblks; /* See below */ + public long fsmblks; /* Space in freed fastbin blocks (bytes) */ + public long uordblks; /* Total allocated space (bytes) */ + public long fordblks; /* Total free space (bytes) */ + public long keepcost; /* Top-most, releasable space (bytes) */ + } + private static native MallInfo2Struct.ByValue mallinfo2(); + public MallInfo2() { + mallinfo = mallinfo2(); + } + private final MallInfo2Struct mallinfo; +} diff --git a/vespajlib/src/main/java/com/yahoo/nativec/NativeC.java b/vespajlib/src/main/java/com/yahoo/nativec/NativeC.java new file mode 100644 index 00000000000..e86fe16d3f7 --- /dev/null +++ b/vespajlib/src/main/java/com/yahoo/nativec/NativeC.java @@ -0,0 +1,20 @@ +package com.yahoo.nativec; + +import com.sun.jna.Native; +import com.sun.jna.Platform; + +class NativeC { + protected static Throwable loadLibrary() { + if (Platform.isLinux()) { + try { + Native.register(Platform.C_LIBRARY_NAME); + } catch (Throwable e) { + return e; + } + } else { + return new RuntimeException("Platform is unsúpported. Only supported on linux."); + } + return null; + } + +} diff --git a/vespajlib/src/main/java/com/yahoo/nativec/PosixFAdvise.java b/vespajlib/src/main/java/com/yahoo/nativec/PosixFAdvise.java new file mode 100644 index 00000000000..b29ff889a25 --- /dev/null +++ b/vespajlib/src/main/java/com/yahoo/nativec/PosixFAdvise.java @@ -0,0 +1,12 @@ +package com.yahoo.nativec; + +import com.sun.jna.LastErrorException; + +public class PosixFAdvise extends NativeC { + public static final int POSIX_FADV_DONTNEED = 4; // See /usr/include/linux/fadvise.h + private final static Throwable initException = loadLibrary(); + public static Throwable init() { + return initException; + } + public static native int posix_fadvise(int fd, long offset, long len, int flag) throws LastErrorException; +} diff --git a/vespajlib/src/main/java/com/yahoo/nativec/package-info.java b/vespajlib/src/main/java/com/yahoo/nativec/package-info.java new file mode 100644 index 00000000000..cdf497ea39b --- /dev/null +++ b/vespajlib/src/main/java/com/yahoo/nativec/package-info.java @@ -0,0 +1,5 @@ +// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +@ExportPackage +package com.yahoo.nativec; + +import com.yahoo.osgi.annotation.ExportPackage; |