19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* 25 * @test 26 * @modules java.base/jdk.internal.misc 27 */ 28 29 import java.io.File; 30 import java.io.FileOutputStream; 31 import java.lang.invoke.MethodHandles; 32 import java.nicl.*; 33 import java.nicl.types.*; 34 import java.nicl.metadata.*; 35 36 public class UnixSystem { 37 @NativeHeader 38 static interface system { 39 @C(file="dummy", line=1, column=1, USR="c:@F@getpid") 40 @NativeType(layout="()i", ctype="dummy", size=1) 41 @CallingConvention(value=1) 42 public abstract int getpid(); 43 44 @C(file="dummy", line=1, column=1, USR="c:@F@snprintf") 45 @NativeType(layout="(p:clp:c*)i", ctype="dummy", size=1) 46 @CallingConvention(value=1) 47 public abstract int snprintf(Pointer<Byte> buf, long size, Pointer<Byte> fmt, Object... args); 48 49 @C(file="dummy", line=1, column=1, USR="c:@F@strerror") 50 @NativeType(layout="(i)p:c", ctype="dummy", size=1) 51 @CallingConvention(value=1) 52 public abstract Pointer<Byte> strerror(int errno); 53 54 @C(file="dummy", line=1, column=1, USR="c:@errno") 55 @NativeType(layout="i", ctype="dummy", size=4) 56 public abstract int errno$get(); 57 58 @C(file="dummy", line=1, column=1, USR="c:@environ") 59 @NativeType(layout="p:p:V", ctype="dummy", size=8, name="environ") 60 public abstract Pointer<Pointer<Byte>> environ$get(); 61 62 public abstract Pointer<Pointer<Pointer<Byte>>> environ$ptr(); 63 } 64 65 @NativeHeader 66 static interface LinuxSystem { 67 @C(file="dummy", line=1, column=1, USR="c:@F@__xstat") 68 @NativeType(layout="(ip:cp:[iiiiiiiiiiiii])i", ctype="dummy", size=1) 69 @CallingConvention(value=1) 70 public abstract int __xstat(int ver, Pointer<Byte> path, Pointer<stat> buf); 71 72 @NativeType(layout="[iiiiiiiiiiiii]", ctype="dummy", size=144, isRecordType=true) 73 @C(file="dummy", line=47, column=11, USR="C:@S@MyStruct") 74 static interface stat extends Struct<stat> { 75 @Offset(offset=384l) 76 @C(file="dummy", line=47, column=11, USR="c:@SA@stat@st_size") 77 @NativeType(layout="i", ctype="off_t", size=4l) 78 int st_size$get(); 79 void st_size$set(int i); 80 } 81 } 82 83 @NativeHeader 84 static interface MacOSXSystem { 85 @C(file="dummy", line=1, column=1, USR="c:@F@stat") 86 @NativeType(layout="(p:cp:[iSSQIIi[ll][ll][ll][ll]qqiIIi2q])i", ctype="dummy", size=1) 87 @CallingConvention(value=1) 88 public abstract int stat$INODE64(Pointer<Byte> path, Pointer<stat> buf); 89 90 91 @NativeType(layout="[iSSQIIi[ll][ll][ll][ll]qqiIIi2q]", ctype="dummy", size=144, isRecordType=true) 92 @C(file="dummy", line=47, column=11, USR="C:@S@MyStruct") 93 static interface stat extends Struct<stat> { 94 @Offset(offset=768l) 95 @C(file="dummy", line=47, column=11, USR="c:@SA@stat@st_size") 96 @NativeType(layout="l", ctype="off_t", size=4l) 97 long st_size$get(); 98 void st_size$set(long i); 99 } 100 } 101 102 private static final String OS = System.getProperty("os.name"); 103 104 public void testGetpid() { 105 system i = Libraries.bind(MethodHandles.lookup(), system.class); 106 107 long actual = i.getpid(); 108 long expected = ProcessHandle.current().pid(); 109 110 if (actual != expected) { 111 throw new RuntimeException("Actual pid: " + actual + " does not match expected pid: " + expected); 112 } 113 } 114 115 private static String lowerAndSprintf(system i, String fmt, Object... args) { 116 System.err.println("lowerAndSprintf fmt=" + fmt); | 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /* 25 * @test 26 * @modules java.base/jdk.internal.misc 27 */ 28 29 import java.io.File; 30 import java.io.FileOutputStream; 31 import java.lang.invoke.MethodHandles; 32 import java.nicl.*; 33 import java.nicl.types.*; 34 import java.nicl.metadata.*; 35 36 public class UnixSystem { 37 @NativeHeader 38 static interface system { 39 @NativeLocation(file="dummy", line=1, column=1, USR="c:@F@getpid") 40 @NativeType(layout="()i", ctype="dummy") 41 public abstract int getpid(); 42 43 @NativeLocation(file="dummy", line=1, column=1, USR="c:@F@snprintf") 44 @NativeType(layout="(p:clp:c*)i", ctype="dummy") 45 public abstract int snprintf(Pointer<Byte> buf, long size, Pointer<Byte> fmt, Object... args); 46 47 @NativeLocation(file="dummy", line=1, column=1, USR="c:@F@strerror") 48 @NativeType(layout="(i)p:c", ctype="dummy") 49 public abstract Pointer<Byte> strerror(int errno); 50 51 @NativeLocation(file="dummy", line=1, column=1, USR="c:@errno") 52 @NativeType(layout="i", ctype="dummy") 53 public abstract int errno$get(); 54 55 @NativeLocation(file="dummy", line=1, column=1, USR="c:@environ") 56 @NativeType(layout="p:p:V", ctype="dummy", name="environ") 57 public abstract Pointer<Pointer<Byte>> environ$get(); 58 59 public abstract Pointer<Pointer<Pointer<Byte>>> environ$ptr(); 60 } 61 62 @NativeHeader 63 static interface LinuxSystem { 64 @NativeLocation(file="dummy", line=1, column=1, USR="c:@F@__xstat") 65 @NativeType(layout="(ip:cp:[iiiiiiiiiiiii])i", ctype="dummy") 66 public abstract int __xstat(int ver, Pointer<Byte> path, Pointer<stat> buf); 67 68 @NativeLocation(file="dummy", line=47, column=11, USR="C:@S@MyStruct") 69 @NativeStruct("[iiiiiiiiiiiii]") 70 static interface stat extends Struct<stat> { 71 @Offset(offset=384l) 72 @NativeLocation(file="dummy", line=47, column=11, USR="c:@SA@stat@st_size") 73 @NativeType(layout="i", ctype="off_t") 74 int st_size$get(); 75 void st_size$set(int i); 76 } 77 } 78 79 @NativeHeader 80 static interface MacOSXSystem { 81 @NativeLocation(file="dummy", line=1, column=1, USR="c:@F@stat") 82 @NativeType(layout="(p:cp:[iSSQIIi[ll][ll][ll][ll]qqiIIi2q])i", ctype="dummy") 83 public abstract int stat$INODE64(Pointer<Byte> path, Pointer<stat> buf); 84 85 86 @NativeLocation(file="dummy", line=47, column=11, USR="C:@S@MyStruct") 87 @NativeStruct("[iSSQIIi[ll][ll][ll][ll]qqiIIi2q]") 88 static interface stat extends Struct<stat> { 89 @Offset(offset=768l) 90 @NativeLocation(file="dummy", line=47, column=11, USR="c:@SA@stat@st_size") 91 @NativeType(layout="l", ctype="off_t") 92 long st_size$get(); 93 void st_size$set(long i); 94 } 95 } 96 97 private static final String OS = System.getProperty("os.name"); 98 99 public void testGetpid() { 100 system i = Libraries.bind(MethodHandles.lookup(), system.class); 101 102 long actual = i.getpid(); 103 long expected = ProcessHandle.current().pid(); 104 105 if (actual != expected) { 106 throw new RuntimeException("Actual pid: " + actual + " does not match expected pid: " + expected); 107 } 108 } 109 110 private static String lowerAndSprintf(system i, String fmt, Object... args) { 111 System.err.println("lowerAndSprintf fmt=" + fmt); |