Skip to content

Commit b06135f

Browse files
committed
Implement sysconf in PosixSupportLibrary
I've added those constants that I found with an online code search being used as arguments in various places
1 parent c5edd0f commit b06135f

File tree

13 files changed

+299
-45
lines changed

13 files changed

+299
-45
lines changed

graalpython/com.oracle.graal.python.test/src/tests/test_posix.py

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Copyright (c) 2018, 2024, Oracle and/or its affiliates. All rights reserved.
1+
# Copyright (c) 2018, 2025, Oracle and/or its affiliates. All rights reserved.
22
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
33
#
44
# The Universal Permissive License (UPL), Version 1.0
@@ -879,7 +879,6 @@ def test_sysconf_names(self):
879879
self.assertIn('SC_CLK_TCK', os.sysconf_names)
880880

881881
def test_sysconf(self):
882-
self.assertGreaterEqual(os.sysconf('SC_CLK_TCK'), 0)
883882
with self.assertRaisesRegex(TypeError, 'strings or integers'):
884883
os.sysconf(object())
885884
with self.assertRaisesRegex(ValueError, 'unrecognized'):
@@ -892,6 +891,17 @@ def test_sysconf(self):
892891
else:
893892
assert False
894893

894+
# constants taken from POSIX where defined
895+
self.assertGreaterEqual(os.sysconf('SC_ARG_MAX'), 4096)
896+
self.assertGreaterEqual(os.sysconf('SC_CHILD_MAX'), 25)
897+
self.assertGreaterEqual(os.sysconf('SC_LOGIN_NAME_MAX'), 9)
898+
self.assertGreaterEqual(os.sysconf('SC_CLK_TCK'), 0)
899+
self.assertGreaterEqual(os.sysconf('SC_OPEN_MAX'), 20)
900+
self.assertGreaterEqual(os.sysconf('SC_PAGESIZE'), 1)
901+
os.sysconf('SC_SEM_NSEMS_MAX') # returns -1 on my linux box, just check it's there
902+
self.assertGreaterEqual(os.sysconf('SC_PHYS_PAGES'), 1)
903+
self.assertGreaterEqual(os.sysconf('SC_NPROCESSORS_CONF'), 1)
904+
895905

896906
if __name__ == '__main__':
897907
unittest.main()

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/PosixModuleBuiltins.java

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import java.util.ArrayList;
4646
import java.util.Arrays;
4747
import java.util.Collections;
48+
import java.util.LinkedHashMap;
4849
import java.util.List;
4950
import java.util.Map;
5051
import java.util.Map.Entry;
@@ -68,8 +69,6 @@
6869
import com.oracle.graal.python.builtins.objects.buffer.PythonBufferAcquireLibrary;
6970
import com.oracle.graal.python.builtins.objects.bytes.BytesNodes;
7071
import com.oracle.graal.python.builtins.objects.bytes.PBytes;
71-
import com.oracle.graal.python.builtins.objects.common.EconomicMapStorage;
72-
import com.oracle.graal.python.builtins.objects.common.HashingStorageNodes;
7372
import com.oracle.graal.python.builtins.objects.common.SequenceNodes.LenNode;
7473
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes;
7574
import com.oracle.graal.python.builtins.objects.common.SequenceStorageNodes.GetItemNode;
@@ -92,6 +91,8 @@
9291
import com.oracle.graal.python.lib.PyNumberIndexNode;
9392
import com.oracle.graal.python.lib.PyOSFSPathNode;
9493
import com.oracle.graal.python.lib.PyObjectAsFileDescriptor;
94+
import com.oracle.graal.python.lib.PyObjectGetAttr;
95+
import com.oracle.graal.python.lib.PyObjectGetItem;
9596
import com.oracle.graal.python.lib.PyObjectSizeNode;
9697
import com.oracle.graal.python.lib.PyUnicodeCheckNode;
9798
import com.oracle.graal.python.nodes.ErrorMessages;
@@ -101,6 +102,7 @@
101102
import com.oracle.graal.python.nodes.call.special.LookupAndCallUnaryNode;
102103
import com.oracle.graal.python.nodes.function.PythonBuiltinBaseNode;
103104
import com.oracle.graal.python.nodes.function.PythonBuiltinNode;
105+
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryBuiltinNode;
104106
import com.oracle.graal.python.nodes.function.builtins.PythonBinaryClinicBuiltinNode;
105107
import com.oracle.graal.python.nodes.function.builtins.PythonClinicBuiltinNode;
106108
import com.oracle.graal.python.nodes.function.builtins.PythonTernaryClinicBuiltinNode;
@@ -252,7 +254,21 @@ public void initialize(Python3Core core) {
252254
PythonLanguage language = core.getLanguage();
253255
addBuiltinConstant("_have_functions", PFactory.createList(language, haveFunctions.toArray()));
254256
addBuiltinConstant("environ", PFactory.createDict(language));
255-
addBuiltinConstant("sysconf_names", PFactory.createDict(language));
257+
258+
LinkedHashMap<String, Object> sysconfigNames = new LinkedHashMap<>();
259+
for (IntConstant name : PosixConstants.sysconfigNames) {
260+
if (name.defined) {
261+
// add the constant without the leading underscore
262+
String pythonName;
263+
if (name.name.startsWith("_")) {
264+
pythonName = name.name.substring(1);
265+
} else {
266+
pythonName = name.name;
267+
}
268+
sysconfigNames.put(pythonName, name.getValueIfDefined());
269+
}
270+
}
271+
addBuiltinConstant("sysconf_names", PFactory.createDictFromMap(language, sysconfigNames));
256272

257273
StructSequence.initType(core, STAT_RESULT_DESC);
258274
StructSequence.initType(core, STATVFS_RESULT_DESC);
@@ -346,9 +362,6 @@ public void postInitialize(Python3Core core) {
346362
Object environAttr = posix.getAttribute(tsLiteral("environ"));
347363
((PDict) environAttr).setDictStorage(environ.getDictStorage());
348364

349-
PDict sysconfNamesAttr = (PDict) posix.getAttribute(tsLiteral("sysconf_names"));
350-
sysconfNamesAttr.setDictStorage(HashingStorageNodes.HashingStorageCopy.executeUncached(SysconfNode.SYSCONF_NAMES));
351-
352365
if (posixLib.getBackend(posixSupport).toJavaStringUncached().equals("java")) {
353366
posix.setAttribute(toTruffleStringUncached("statvfs"), PNone.NO_VALUE);
354367
posix.setAttribute(toTruffleStringUncached("geteuid"), PNone.NO_VALUE);
@@ -2863,50 +2876,43 @@ static int getCpuCount() {
28632876
}
28642877
}
28652878

2866-
@Builtin(name = "sysconf", minNumOfPositionalArgs = 1, parameterNames = {"name"})
2879+
@Builtin(name = "sysconf", minNumOfPositionalArgs = 2, parameterNames = {"$self", "name"}, declaresExplicitSelf = true)
28672880
@GenerateNodeFactory
2868-
abstract static class SysconfNode extends PythonUnaryBuiltinNode {
2881+
abstract static class SysconfNode extends PythonBinaryBuiltinNode {
28692882

2870-
public static final TruffleString T_SC_CLK_TCK = tsLiteral("SC_CLK_TCK");
2871-
public static final TruffleString T_SC_NPROCESSORS_ONLN = tsLiteral("SC_NPROCESSORS_ONLN");
2872-
public static final int SC_CLK_TCK = 2;
2873-
public static final int SC_NPROCESSORS_ONLN = 84;
2874-
public static final EconomicMapStorage SYSCONF_NAMES = EconomicMapStorage.create();
2875-
static {
2876-
// TODO populate from constants
2877-
SYSCONF_NAMES.putUncached(T_SC_CLK_TCK, SC_CLK_TCK);
2878-
SYSCONF_NAMES.putUncached(T_SC_NPROCESSORS_ONLN, SC_NPROCESSORS_ONLN);
2879-
}
2883+
private static final TruffleString T_SYSCONF_NAMES = tsLiteral("sysconf_names");
28802884

28812885
@Specialization
2882-
static int sysconf(VirtualFrame frame, Object arg,
2886+
static long sysconf(VirtualFrame frame, PythonModule self, Object arg,
28832887
@Bind("this") Node inliningTarget,
28842888
@Cached PyLongCheckNode longCheckNode,
28852889
@Cached PyLongAsIntNode asIntNode,
28862890
@Cached PyUnicodeCheckNode unicodeCheckNode,
2887-
@Cached HashingStorageNodes.HashingStorageGetItem getItem,
2891+
@Cached PyObjectGetAttr getAttr,
2892+
@Cached PyObjectGetItem getItem,
28882893
@Cached PRaiseNode raiseNode,
2894+
@Bind PythonContext context,
2895+
@CachedLibrary("context.getPosixSupport()") PosixSupportLibrary posixLib,
28892896
@Cached PConstructAndRaiseNode.Lazy constructAndRaiseNode) {
28902897
int id;
28912898
if (longCheckNode.execute(inliningTarget, arg)) {
28922899
id = asIntNode.execute(frame, inliningTarget, arg);
28932900
} else if (unicodeCheckNode.execute(inliningTarget, arg)) {
2894-
Object idObj = getItem.execute(frame, inliningTarget, SYSCONF_NAMES, arg);
2895-
if (idObj instanceof Integer idInt) {
2896-
id = idInt;
2897-
} else {
2901+
try {
2902+
Object sysconfigNamesObject = getAttr.execute(frame, inliningTarget, self, T_SYSCONF_NAMES);
2903+
Object idObj = getItem.execute(frame, inliningTarget, sysconfigNamesObject, arg);
2904+
id = asIntNode.execute(frame, inliningTarget, idObj);
2905+
} catch (PException e) {
28982906
throw raiseNode.raise(inliningTarget, ValueError, ErrorMessages.UNRECOGNIZED_CONF_NAME);
28992907
}
29002908
} else {
29012909
throw raiseNode.raise(inliningTarget, TypeError, ErrorMessages.CONFIGURATION_NAMES_MUST_BE_STRINGS_OR_INTEGERS);
29022910
}
2903-
if (id == SC_CLK_TCK) {
2904-
return 100; // it's 100 on most default kernel configs. TODO: use real value through
2905-
// NFI
2906-
} else if (id == SC_NPROCESSORS_ONLN) {
2907-
return CpuCountNode.getCpuCount();
2911+
try {
2912+
return posixLib.sysconf(context.getPosixSupport(), id);
2913+
} catch (PosixException e) {
2914+
throw constructAndRaiseNode.get(inliningTarget).raiseOSErrorFromPosixException(frame, e);
29082915
}
2909-
throw constructAndRaiseNode.get(inliningTarget).raiseOSError(frame, OSErrorEnum.EINVAL);
29102916
}
29112917
}
29122918

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/EmulatedPosixSupport.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -997,6 +997,36 @@ public int[] getTerminalSize(int fd) throws PosixException {
997997
return new int[]{context.getOption(PythonOptions.TerminalWidth), context.getOption(PythonOptions.TerminalHeight)};
998998
}
999999

1000+
@ExportMessage
1001+
@TruffleBoundary
1002+
public long sysconf(int name) throws PosixException {
1003+
// Constants derived from POSIX specs or common kernel configs
1004+
if (name == PosixConstants._SC_ARG_MAX.value) {
1005+
return 4096;
1006+
} else if (name == PosixConstants._SC_CHILD_MAX.value) {
1007+
return 25;
1008+
} else if (name == PosixConstants._SC_LOGIN_NAME_MAX.value) {
1009+
return 255;
1010+
} else if (name == PosixConstants._SC_CLK_TCK.value) {
1011+
return 100;
1012+
} else if (name == PosixConstants._SC_OPEN_MAX.value) {
1013+
return 20;
1014+
} else if (name == PosixConstants._SC_PAGESIZE.value) {
1015+
return 4096;
1016+
} else if (name == PosixConstants._SC_PAGE_SIZE.value) {
1017+
return 4096;
1018+
} else if (name == PosixConstants._SC_SEM_NSEMS_MAX.value) {
1019+
return 32;
1020+
} else if (name == PosixConstants._SC_PHYS_PAGES.value) {
1021+
return Runtime.getRuntime().totalMemory() / 4096;
1022+
} else if (name == PosixConstants._SC_NPROCESSORS_CONF.value) {
1023+
return Runtime.getRuntime().availableProcessors();
1024+
} else if (name == PosixConstants._SC_NPROCESSORS_ONLN.value) {
1025+
return Runtime.getRuntime().availableProcessors();
1026+
}
1027+
throw posixException(OSErrorEnum.EINVAL);
1028+
}
1029+
10001030
@ExportMessage
10011031
public long[] fstatat(int dirFd, Object path, boolean followSymlinks,
10021032
@Bind("$node") Node inliningTarget,

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/LoggingPosixSupport.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -361,6 +361,17 @@ final int[] getTerminalSize(int fd,
361361
}
362362
}
363363

364+
@ExportMessage
365+
final long sysconf(int name,
366+
@CachedLibrary("this.delegate") PosixSupportLibrary lib) throws PosixException {
367+
logEnter("sysconf", "%d", name);
368+
try {
369+
return logExit("sysconf", "%s", lib.sysconf(delegate, name));
370+
} catch (PosixException e) {
371+
throw logException("sysconf", e);
372+
}
373+
}
374+
364375
@ExportMessage
365376
final long[] fstatat(int dirFd, Object pathname, boolean followSymlinks,
366377
@CachedLibrary("this.delegate") PosixSupportLibrary lib) throws PosixException {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/NFIPosixSupport.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,8 @@ private enum PosixNativeFunction {
304304
call_ioctl_bytes("(sint32, uint64, [sint8]):sint32"),
305305
call_ioctl_int("(sint32, uint64, sint32):sint32"),
306306

307+
call_sysconf("(sint32):sint64"),
308+
307309
crypt("([sint8], [sint8]):sint64");
308310

309311
private final String signature;
@@ -749,6 +751,19 @@ public int[] getTerminalSize(int fd,
749751
return size;
750752
}
751753

754+
@ExportMessage
755+
public long sysconf(int name,
756+
@Shared("invoke") @Cached InvokeNativeFunction invokeNode) throws PosixException {
757+
long result = invokeNode.callLong(this, PosixNativeFunction.call_sysconf, name);
758+
if (result == -1) {
759+
int errno = getErrno(invokeNode);
760+
if (errno != 0) {
761+
throw newPosixException(invokeNode, errno);
762+
}
763+
}
764+
return result;
765+
}
766+
752767
@ExportMessage
753768
public long[] fstatat(int dirFd, Object pathname, boolean followSymlinks,
754769
@Shared("invoke") @Cached InvokeNativeFunction invokeNode) throws PosixException {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/runtime/PosixConstants.java

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2021, 2024, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2021, 2025, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -332,6 +332,39 @@ public final class PosixConstants {
332332
public static final OptionalIntConstant IPV6_RECVPATHMTU;
333333
public static final OptionalIntConstant IPV6_TCLASS;
334334
public static final OptionalIntConstant IPV6_USE_MIN_MTU;
335+
public static final MandatoryIntConstant _SC_ARG_MAX;
336+
public static final MandatoryIntConstant _SC_CHILD_MAX;
337+
public static final OptionalIntConstant _SC_HOST_NAME_MAX;
338+
public static final MandatoryIntConstant _SC_LOGIN_NAME_MAX;
339+
public static final OptionalIntConstant _SC_NGROUPS_MAX;
340+
public static final MandatoryIntConstant _SC_CLK_TCK;
341+
public static final MandatoryIntConstant _SC_OPEN_MAX;
342+
public static final MandatoryIntConstant _SC_PAGESIZE;
343+
public static final MandatoryIntConstant _SC_PAGE_SIZE;
344+
public static final OptionalIntConstant _SC_RE_DUP_MAX;
345+
public static final OptionalIntConstant _SC_STREAM_MAX;
346+
public static final OptionalIntConstant _SC_SYMLOOP_MAX;
347+
public static final OptionalIntConstant _SC_TTY_NAME_MAX;
348+
public static final OptionalIntConstant _SC_TZNAME_MAX;
349+
public static final OptionalIntConstant _SC_VERSION;
350+
public static final OptionalIntConstant _SC_BC_BASE_MAX;
351+
public static final OptionalIntConstant _SC_BC_DIM_MAX;
352+
public static final OptionalIntConstant _SC_BC_SCALE_MAX;
353+
public static final OptionalIntConstant _SC_BC_STRING_MAX;
354+
public static final OptionalIntConstant _SC_COLL_WEIGHTS_MAX;
355+
public static final OptionalIntConstant _SC_EXPR_NEST_MAX;
356+
public static final OptionalIntConstant _SC_LINE_MAX;
357+
public static final OptionalIntConstant _SC_2_VERSION;
358+
public static final OptionalIntConstant _SC_2_C_DEV;
359+
public static final OptionalIntConstant _SC_2_FORT_DEV;
360+
public static final OptionalIntConstant _SC_2_FORT_RUN;
361+
public static final OptionalIntConstant _SC_2_LOCALEDEF;
362+
public static final OptionalIntConstant _SC_2_SW_DEV;
363+
public static final MandatoryIntConstant _SC_SEM_NSEMS_MAX;
364+
public static final MandatoryIntConstant _SC_PHYS_PAGES;
365+
public static final OptionalIntConstant _SC_AVPHYS_PAGES;
366+
public static final MandatoryIntConstant _SC_NPROCESSORS_CONF;
367+
public static final MandatoryIntConstant _SC_NPROCESSORS_ONLN;
335368

336369
public static final IntConstant[] openFlags;
337370
public static final IntConstant[] fileType;
@@ -355,6 +388,7 @@ public final class PosixConstants {
355388
public static final IntConstant[] socketOptions;
356389
public static final IntConstant[] tcpOptions;
357390
public static final IntConstant[] ipv6Options;
391+
public static final IntConstant[] sysconfigNames;
358392

359393
static {
360394
Registry reg = Registry.create();
@@ -614,6 +648,39 @@ public final class PosixConstants {
614648
IPV6_RECVPATHMTU = reg.createOptionalInt("IPV6_RECVPATHMTU");
615649
IPV6_TCLASS = reg.createOptionalInt("IPV6_TCLASS");
616650
IPV6_USE_MIN_MTU = reg.createOptionalInt("IPV6_USE_MIN_MTU");
651+
_SC_ARG_MAX = reg.createMandatoryInt("_SC_ARG_MAX");
652+
_SC_CHILD_MAX = reg.createMandatoryInt("_SC_CHILD_MAX");
653+
_SC_HOST_NAME_MAX = reg.createOptionalInt("_SC_HOST_NAME_MAX");
654+
_SC_LOGIN_NAME_MAX = reg.createMandatoryInt("_SC_LOGIN_NAME_MAX");
655+
_SC_NGROUPS_MAX = reg.createOptionalInt("_SC_NGROUPS_MAX");
656+
_SC_CLK_TCK = reg.createMandatoryInt("_SC_CLK_TCK");
657+
_SC_OPEN_MAX = reg.createMandatoryInt("_SC_OPEN_MAX");
658+
_SC_PAGESIZE = reg.createMandatoryInt("_SC_PAGESIZE");
659+
_SC_PAGE_SIZE = reg.createMandatoryInt("_SC_PAGE_SIZE");
660+
_SC_RE_DUP_MAX = reg.createOptionalInt("_SC_RE_DUP_MAX");
661+
_SC_STREAM_MAX = reg.createOptionalInt("_SC_STREAM_MAX");
662+
_SC_SYMLOOP_MAX = reg.createOptionalInt("_SC_SYMLOOP_MAX");
663+
_SC_TTY_NAME_MAX = reg.createOptionalInt("_SC_TTY_NAME_MAX");
664+
_SC_TZNAME_MAX = reg.createOptionalInt("_SC_TZNAME_MAX");
665+
_SC_VERSION = reg.createOptionalInt("_SC_VERSION");
666+
_SC_BC_BASE_MAX = reg.createOptionalInt("_SC_BC_BASE_MAX");
667+
_SC_BC_DIM_MAX = reg.createOptionalInt("_SC_BC_DIM_MAX");
668+
_SC_BC_SCALE_MAX = reg.createOptionalInt("_SC_BC_SCALE_MAX");
669+
_SC_BC_STRING_MAX = reg.createOptionalInt("_SC_BC_STRING_MAX");
670+
_SC_COLL_WEIGHTS_MAX = reg.createOptionalInt("_SC_COLL_WEIGHTS_MAX");
671+
_SC_EXPR_NEST_MAX = reg.createOptionalInt("_SC_EXPR_NEST_MAX");
672+
_SC_LINE_MAX = reg.createOptionalInt("_SC_LINE_MAX");
673+
_SC_2_VERSION = reg.createOptionalInt("_SC_2_VERSION");
674+
_SC_2_C_DEV = reg.createOptionalInt("_SC_2_C_DEV");
675+
_SC_2_FORT_DEV = reg.createOptionalInt("_SC_2_FORT_DEV");
676+
_SC_2_FORT_RUN = reg.createOptionalInt("_SC_2_FORT_RUN");
677+
_SC_2_LOCALEDEF = reg.createOptionalInt("_SC_2_LOCALEDEF");
678+
_SC_2_SW_DEV = reg.createOptionalInt("_SC_2_SW_DEV");
679+
_SC_SEM_NSEMS_MAX = reg.createMandatoryInt("_SC_SEM_NSEMS_MAX");
680+
_SC_PHYS_PAGES = reg.createMandatoryInt("_SC_PHYS_PAGES");
681+
_SC_AVPHYS_PAGES = reg.createOptionalInt("_SC_AVPHYS_PAGES");
682+
_SC_NPROCESSORS_CONF = reg.createMandatoryInt("_SC_NPROCESSORS_CONF");
683+
_SC_NPROCESSORS_ONLN = reg.createMandatoryInt("_SC_NPROCESSORS_ONLN");
617684

618685
openFlags = new IntConstant[]{O_ACCMODE, O_RDONLY, O_WRONLY, O_RDWR, O_CREAT, O_EXCL, O_TRUNC, O_APPEND, O_NONBLOCK, O_NOCTTY, O_NDELAY, O_DSYNC, O_CLOEXEC, O_SYNC, O_DIRECT, O_RSYNC,
619686
O_TMPFILE, O_TEMPORARY, O_DIRECTORY, O_BINARY, O_TEXT, O_XATTR, O_LARGEFILE, O_SHLOCK, O_EXLOCK, O_EXEC, O_SEARCH, O_PATH, O_TTY_INIT};
@@ -646,6 +713,10 @@ public final class PosixConstants {
646713
ipv6Options = new IntConstant[]{IPV6_JOIN_GROUP, IPV6_LEAVE_GROUP, IPV6_MULTICAST_HOPS, IPV6_MULTICAST_IF, IPV6_MULTICAST_LOOP, IPV6_UNICAST_HOPS, IPV6_V6ONLY, IPV6_CHECKSUM, IPV6_DONTFRAG,
647714
IPV6_DSTOPTS, IPV6_HOPLIMIT, IPV6_HOPOPTS, IPV6_NEXTHOP, IPV6_PATHMTU, IPV6_PKTINFO, IPV6_RECVDSTOPTS, IPV6_RECVHOPLIMIT, IPV6_RECVHOPOPTS, IPV6_RECVPKTINFO, IPV6_RECVRTHDR,
648715
IPV6_RECVTCLASS, IPV6_RTHDR, IPV6_RTHDRDSTOPTS, IPV6_RTHDR_TYPE_0, IPV6_RECVPATHMTU, IPV6_TCLASS, IPV6_USE_MIN_MTU};
716+
sysconfigNames = new IntConstant[]{_SC_ARG_MAX, _SC_CHILD_MAX, _SC_HOST_NAME_MAX, _SC_LOGIN_NAME_MAX, _SC_NGROUPS_MAX, _SC_CLK_TCK, _SC_OPEN_MAX, _SC_PAGESIZE, _SC_PAGE_SIZE, _SC_RE_DUP_MAX,
717+
_SC_STREAM_MAX, _SC_SYMLOOP_MAX, _SC_TTY_NAME_MAX, _SC_TZNAME_MAX, _SC_VERSION, _SC_BC_BASE_MAX, _SC_BC_DIM_MAX, _SC_BC_SCALE_MAX, _SC_BC_STRING_MAX, _SC_COLL_WEIGHTS_MAX,
718+
_SC_EXPR_NEST_MAX, _SC_LINE_MAX, _SC_2_VERSION, _SC_2_C_DEV, _SC_2_FORT_DEV, _SC_2_FORT_RUN, _SC_2_LOCALEDEF, _SC_2_SW_DEV, _SC_SEM_NSEMS_MAX, _SC_PHYS_PAGES, _SC_AVPHYS_PAGES,
719+
_SC_NPROCESSORS_CONF, _SC_NPROCESSORS_ONLN};
649720
}
650721
// end generated by gen_native_cfg.py
651722
// @formatter:on

0 commit comments

Comments
 (0)