summary refs log tree commit diff stats
path: root/lib/posix
diff options
context:
space:
mode:
Diffstat (limited to 'lib/posix')
-rw-r--r--lib/posix/detect.nim824
-rw-r--r--lib/posix/linux_amd64_consts.nim620
-rw-r--r--lib/posix/linux_consts.nim620
3 files changed, 2064 insertions, 0 deletions
diff --git a/lib/posix/detect.nim b/lib/posix/detect.nim
new file mode 100644
index 000000000..d92269707
--- /dev/null
+++ b/lib/posix/detect.nim
@@ -0,0 +1,824 @@
+# Posix detect program
+# (c) 2009 Andreas Rumpf
+
+# This program produces a C program that produces a Nimrod include file.
+# The Nimrod include file lists the values of each POSIX constant.
+# This is needed because POSIX is brain-dead: It only cares for C, any other
+# language is ignored. It would have been easier had they specified the
+# concrete values of the constants. Sigh.
+
+import os, strutils
+
+const
+  cc = "gcc -o $1 $1.c"
+
+  cfile = """
+/* Generated by detect.nim */
+
+#include <stdlib.h>
+#include <stdio.h>
+$1
+
+int main() {
+  FILE* f;
+  f = fopen("$3_$4_consts.nim", "w+");
+  fputs("# Generated by detect.nim\nconst\n", f);
+  $2
+  fclose(f);
+}
+"""
+
+type
+  TTypeKind = enum 
+    cint, cshort, clong, cstring, pointer
+
+var
+  hd = ""
+  tl = ""
+
+proc myExec(cmd: string): bool = 
+  return executeShellCommand(cmd) == 0
+
+proc header(s: string): bool = 
+  const testh = "testh"
+  var f: TFile
+  if openFile(f, appendFileExt(testh, "c"), fmWrite):
+    f.write("#include $1\n" % s)
+    f.write("int main() { return 0; }\n")
+    closeFile(f)
+    result = myExec(cc % testh)
+    removeFile(appendFileExt(testh, "c"))
+  if result:
+    addf(hd, "#include $1\n", s)
+    echo("Found: ", s)
+  else:
+    echo("Not found: ", s)
+
+proc main = 
+  const gen = "genconsts"
+  var f: TFile
+  if openFile(f, appendFileExt(gen, "c"), fmWrite): 
+    f.write(cfile % [hd, tl, system.hostOS, system.hostCPU])
+    closeFile(f)
+  if not myExec(cc % gen): quit(1)
+  if not myExec("./" & gen): quit(1)
+  removeFile(appendFileExt(gen, "c"))
+  echo("Success")
+
+proc v(name: string, typ: TTypeKind=cint) = 
+  var n = if name[0] == '_': copy(name, 1) else: name
+  var t = $typ
+  case typ
+  of pointer: 
+    addf(tl, 
+      "#ifdef $3\n  fprintf(f, \"  $1* = cast[$2](%p)\\n\", $3);\n#endif\n", 
+      n, t, name)
+  
+  of cstring:
+    addf(tl, 
+      "#ifdef $3\n  fprintf(f, \"  $1* = $2(\\\"%s\\\")\\n\", $3);\n#endif\n",
+      n, t, name)
+  of clong:
+    addf(tl, 
+      "#ifdef $3\n  fprintf(f, \"  $1* = $2(%ld)\\n\", $3);\n#endif\n", 
+      n, t, name)  
+  else:  
+    addf(tl, 
+      "#ifdef $3\n  fprintf(f, \"  $1* = $2(%d)\\n\", $3);\n#endif\n", 
+      n, t, name)
+
+if header("<aio.h>"):
+  v("AIO_ALLDONE")
+  v("AIO_CANCELED")
+  v("AIO_NOTCANCELED")
+  v("LIO_NOP")
+  v("LIO_NOWAIT")
+  v("LIO_READ")
+  v("LIO_WAIT")
+  v("LIO_WRITE")
+
+if header("<dlfcn.h>"):
+  v("RTLD_LAZY")
+  v("RTLD_NOW")

+  v("RTLD_GLOBAL")

+  v("RTLD_LOCAL")

+
+if header("<errno.h>"):

+  v("E2BIG")

+  v("EACCES")

+  v("EADDRINUSE")

+  v("EADDRNOTAVAIL")

+  v("EAFNOSUPPORT")

+  v("EAGAIN")

+  v("EALREADY")

+  v("EBADF")

+  v("EBADMSG")

+  v("EBUSY")

+  v("ECANCELED")

+  v("ECHILD")

+  v("ECONNABORTED")

+  v("ECONNREFUSED")

+  v("ECONNRESET")

+  v("EDEADLK")

+  v("EDESTADDRREQ")

+  v("EDOM")

+  v("EDQUOT")

+  v("EEXIST")

+  v("EFAULT")

+  v("EFBIG")

+  v("EHOSTUNREACH")

+  v("EIDRM")

+  v("EILSEQ")

+  v("EINPROGRESS")

+  v("EINTR")

+  v("EINVAL")

+  v("EIO")

+  v("EISCONN")

+  v("EISDIR")

+  v("ELOOP")

+  v("EMFILE")

+  v("EMLINK")

+  v("EMSGSIZE")

+  v("EMULTIHOP")

+  v("ENAMETOOLONG")

+  v("ENETDOWN")

+  v("ENETRESET")

+  v("ENETUNREACH")

+  v("ENFILE")

+  v("ENOBUFS")

+  v("ENODATA")

+  v("ENODEV")

+  v("ENOENT")

+  v("ENOEXEC")

+  v("ENOLCK")

+  v("ENOLINK")

+  v("ENOMEM")

+  v("ENOMSG")

+  v("ENOPROTOOPT")

+  v("ENOSPC")

+  v("ENOSR")

+  v("ENOSTR")

+  v("ENOSYS")

+  v("ENOTCONN")

+  v("ENOTDIR")

+  v("ENOTEMPTY")

+  v("ENOTSOCK")

+  v("ENOTSUP")

+  v("ENOTTY")

+  v("ENXIO")

+  v("EOPNOTSUPP")

+  v("EOVERFLOW")

+  v("EPERM")

+  v("EPIPE")

+  v("EPROTO")

+  v("EPROTONOSUPPORT")

+  v("EPROTOTYPE")

+  v("ERANGE")

+  v("EROFS")

+  v("ESPIPE")

+  v("ESRCH")

+  v("ESTALE")

+  v("ETIME")

+  v("ETIMEDOUT")

+  v("ETXTBSY")

+  v("EWOULDBLOCK")

+  v("EXDEV")

+  
+if header("<fcntl.h>"):
+  v("F_DUPFD")

+  v("F_GETFD")

+  v("F_SETFD")

+  v("F_GETFL")

+  v("F_SETFL")

+  v("F_GETLK")

+  v("F_SETLK")

+  v("F_SETLKW")

+  v("F_GETOWN")

+  v("F_SETOWN")

+  v("FD_CLOEXEC")

+  v("F_RDLCK")

+  v("F_UNLCK")

+  v("F_WRLCK")

+  v("O_CREAT")

+  v("O_EXCL")

+  v("O_NOCTTY")

+  v("O_TRUNC")

+  v("O_APPEND")

+  v("O_DSYNC")

+  v("O_NONBLOCK")

+  v("O_RSYNC")

+  v("O_SYNC")

+  v("O_ACCMODE")

+  v("O_RDONLY")

+  v("O_RDWR")

+  v("O_WRONLY")

+  v("POSIX_FADV_NORMAL")

+  v("POSIX_FADV_SEQUENTIAL")

+  v("POSIX_FADV_RANDOM")

+  v("POSIX_FADV_WILLNEED")

+  v("POSIX_FADV_DONTNEED")

+  v("POSIX_FADV_NOREUSE")

+
+if header("<fenv.h>"):

+  v("FE_DIVBYZERO")

+  v("FE_INEXACT")

+  v("FE_INVALID")

+  v("FE_OVERFLOW")

+  v("FE_UNDERFLOW")

+  v("FE_ALL_EXCEPT")

+  v("FE_DOWNWARD")

+  v("FE_TONEAREST")

+  v("FE_TOWARDZERO")

+  v("FE_UPWARD")

+  v("FE_DFL_ENV", pointer)

+
+if header("<fmtmsg.h>"):

+  v("MM_HARD")

+  v("MM_SOFT")

+  v("MM_FIRM")

+  v("MM_APPL")

+  v("MM_UTIL")

+  v("MM_OPSYS")

+  v("MM_RECOVER")

+  v("MM_NRECOV")

+  v("MM_HALT")

+  v("MM_ERROR")

+  v("MM_WARNING")

+  v("MM_INFO")

+  v("MM_NOSEV")

+  v("MM_PRINT")

+  v("MM_CONSOLE")

+  v("MM_OK")

+  v("MM_NOTOK")

+  v("MM_NOMSG")

+  v("MM_NOCON")

+
+if header("<fnmatch.h>"):

+  v("FNM_NOMATCH")

+  v("FNM_PATHNAME")

+  v("FNM_PERIOD")

+  v("FNM_NOESCAPE")

+  v("FNM_NOSYS")

+
+if header("<ftw.h>"):

+  v("FTW_F")

+  v("FTW_D")

+  v("FTW_DNR")

+  v("FTW_DP")

+  v("FTW_NS")

+  v("FTW_SL")

+  v("FTW_SLN")

+  v("FTW_PHYS")

+  v("FTW_MOUNT")

+  v("FTW_DEPTH")

+  v("FTW_CHDIR")

+
+if header("<glob.h>"):
+  v("GLOB_APPEND")

+  v("GLOB_DOOFFS")

+  v("GLOB_ERR")

+  v("GLOB_MARK")

+  v("GLOB_NOCHECK")

+  v("GLOB_NOESCAPE")

+  v("GLOB_NOSORT")

+  v("GLOB_ABORTED")

+  v("GLOB_NOMATCH")

+  v("GLOB_NOSPACE")

+  v("GLOB_NOSYS")

+

+if header("<langinfo.h>"):
+  v("CODESET")

+  v("D_T_FMT")

+  v("D_FMT")

+  v("T_FMT")

+  v("T_FMT_AMPM")

+  v("AM_STR")

+  v("PM_STR")

+  v("DAY_1")

+  v("DAY_2")

+  v("DAY_3")

+  v("DAY_4")

+  v("DAY_5")

+  v("DAY_6")

+  v("DAY_7")

+  v("ABDAY_1")

+  v("ABDAY_2")

+  v("ABDAY_3")

+  v("ABDAY_4")

+  v("ABDAY_5")

+  v("ABDAY_6")

+  v("ABDAY_7")

+  v("MON_1")

+  v("MON_2")

+  v("MON_3")

+  v("MON_4")

+  v("MON_5")

+  v("MON_6")

+  v("MON_7")

+  v("MON_8")

+  v("MON_9")

+  v("MON_10")

+  v("MON_11")

+  v("MON_12")

+  v("ABMON_1")

+  v("ABMON_2")

+  v("ABMON_3")

+  v("ABMON_4")

+  v("ABMON_5")

+  v("ABMON_6")

+  v("ABMON_7")

+  v("ABMON_8")

+  v("ABMON_9")

+  v("ABMON_10")

+  v("ABMON_11")

+  v("ABMON_12")

+  v("ERA")

+  v("ERA_D_FMT")

+  v("ERA_D_T_FMT")

+  v("ERA_T_FMT")

+  v("ALT_DIGITS")

+  v("RADIXCHAR")

+  v("THOUSEP")

+  v("YESEXPR")

+  v("NOEXPR")

+  v("CRNCYSTR")

+    
+if header("<locale.h>"):

+  v("LC_ALL") #{.importc, header: .}: cint

+  v("LC_COLLATE") #{.importc, header: "<locale.h>".}: cint

+  v("LC_CTYPE") #{.importc, header: "<locale.h>".}: cint

+  v("LC_MESSAGES") #{.importc, header: "<locale.h>".}: cint

+  v("LC_MONETARY") #{.importc, header: "<locale.h>".}: cint

+  v("LC_NUMERIC") #{.importc, header: "<locale.h>".}: cint

+  v("LC_TIME") #{.importc, header: "<locale.h>".}: cint

+
+if header("<pthread.h>"):

+  v("PTHREAD_BARRIER_SERIAL_THREAD")

+  v("PTHREAD_CANCEL_ASYNCHRONOUS") 

+  v("PTHREAD_CANCEL_ENABLE") 

+  v("PTHREAD_CANCEL_DEFERRED")

+  v("PTHREAD_CANCEL_DISABLE") 

+  #v("PTHREAD_CANCELED")

+  #v("PTHREAD_COND_INITIALIZER") 

+  v("PTHREAD_CREATE_DETACHED")

+  v("PTHREAD_CREATE_JOINABLE")

+  v("PTHREAD_EXPLICIT_SCHED")

+  v("PTHREAD_INHERIT_SCHED") 

+  v("PTHREAD_MUTEX_DEFAULT") 

+  v("PTHREAD_MUTEX_ERRORCHECK")

+  #v("PTHREAD_MUTEX_INITIALIZER") 

+  v("PTHREAD_MUTEX_NORMAL") 

+  v("PTHREAD_MUTEX_RECURSIVE") #{.importc, header: "<pthread.h>".}: cint

+  v("PTHREAD_ONCE_INIT") #{.importc, header: "<pthread.h>".}: cint

+  v("PTHREAD_PRIO_INHERIT") #{.importc, header: "<pthread.h>".}: cint

+  v("PTHREAD_PRIO_NONE") #{.importc, header: "<pthread.h>".}: cint

+  v("PTHREAD_PRIO_PROTECT") #{.importc, header: "<pthread.h>".}: cint

+  v("PTHREAD_PROCESS_SHARED") #{.importc, header: "<pthread.h>".}: cint

+  v("PTHREAD_PROCESS_PRIVATE") #{.importc, header: "<pthread.h>".}: cint

+  v("PTHREAD_SCOPE_PROCESS") #{.importc, header: "<pthread.h>".}: cint

+  v("PTHREAD_SCOPE_SYSTEM") #{.importc, header: "<pthread.h>".}: cint

+
+if header("<unistd.h>"):

+  v("_POSIX_ASYNC_IO")

+  v("_POSIX_PRIO_IO")

+  v("_POSIX_SYNC_IO")

+  v("F_OK")

+  v("R_OK")

+  v("W_OK")

+  v("X_OK")

+

+  v("_CS_PATH")

+  v("_CS_POSIX_V6_ILP32_OFF32_CFLAGS") 

+  v("_CS_POSIX_V6_ILP32_OFF32_LDFLAGS") 

+  v("_CS_POSIX_V6_ILP32_OFF32_LIBS") 

+  v("_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS") 

+  v("_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS") 

+  v("_CS_POSIX_V6_ILP32_OFFBIG_LIBS") 

+  v("_CS_POSIX_V6_LP64_OFF64_CFLAGS") 

+  v("_CS_POSIX_V6_LP64_OFF64_LDFLAGS")

+  v("_CS_POSIX_V6_LP64_OFF64_LIBS") 

+  v("_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS") 

+  v("_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS") 

+  v("_CS_POSIX_V6_LPBIG_OFFBIG_LIBS") 

+  v("_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS")
+
+  v("F_LOCK") 

+  v("F_TEST") #{.importc: "F_TEST", header: "<unistd.h>".}: cint

+  v("F_TLOCK") #{.importc: "F_TLOCK", header: "<unistd.h>".}: cint

+  v("F_ULOCK") #{.importc: "F_ULOCK", header: "<unistd.h>".}: cint

+  v("_PC_2_SYMLINKS") #{.importc: "_PC_2_SYMLINKS", header: "<unistd.h>".}: cint

+  v("_PC_ALLOC_SIZE_MIN") 

+  v("_PC_ASYNC_IO") #{.importc: "_PC_ASYNC_IO", header: "<unistd.h>".}: cint

+  v("_PC_CHOWN_RESTRICTED") 

+  v("_PC_FILESIZEBITS") #{.importc: "_PC_FILESIZEBITS", header: "<unistd.h>".}: cint

+  v("_PC_LINK_MAX") #{.importc: "_PC_LINK_MAX", header: "<unistd.h>".}: cint

+  v("_PC_MAX_CANON") #{.importc: "_PC_MAX_CANON", header: "<unistd.h>".}: cint

+  v("_PC_MAX_INPUT") #{.importc: "_PC_MAX_INPUT", header: "<unistd.h>".}: cint

+  v("_PC_NAME_MAX") #{.importc: "_PC_NAME_MAX", header: "<unistd.h>".}: cint

+  v("_PC_NO_TRUNC") #{.importc: "_PC_NO_TRUNC", header: "<unistd.h>".}: cint

+  v("_PC_PATH_MAX") #{.importc: "_PC_PATH_MAX", header: "<unistd.h>".}: cint

+  v("_PC_PIPE_BUF") #{.importc: "_PC_PIPE_BUF", header: "<unistd.h>".}: cint

+  v("_PC_PRIO_IO") #{.importc: "_PC_PRIO_IO", header: "<unistd.h>".}: cint

+  v("_PC_REC_INCR_XFER_SIZE") 

+  v("_PC_REC_MIN_XFER_SIZE") 

+  v("_PC_REC_XFER_ALIGN") 

+  v("_PC_SYMLINK_MAX") #{.importc: "_PC_SYMLINK_MAX", header: "<unistd.h>".}: cint

+  v("_PC_SYNC_IO") #{.importc: "_PC_SYNC_IO", header: "<unistd.h>".}: cint

+  v("_PC_VDISABLE") #{.importc: "_PC_VDISABLE", header: "<unistd.h>".}: cint

+  v("_SC_2_C_BIND") #{.importc: "_SC_2_C_BIND", header: "<unistd.h>".}: cint

+  v("_SC_2_C_DEV") #{.importc: "_SC_2_C_DEV", header: "<unistd.h>".}: cint

+  v("_SC_2_CHAR_TERM") #{.importc: "_SC_2_CHAR_TERM", header: "<unistd.h>".}: cint

+  v("_SC_2_FORT_DEV") #{.importc: "_SC_2_FORT_DEV", header: "<unistd.h>".}: cint

+  v("_SC_2_FORT_RUN") #{.importc: "_SC_2_FORT_RUN", header: "<unistd.h>".}: cint

+  v("_SC_2_LOCALEDEF") #{.importc: "_SC_2_LOCALEDEF", header: "<unistd.h>".}: cint

+  v("_SC_2_PBS") #{.importc: "_SC_2_PBS", header: "<unistd.h>".}: cint

+  v("_SC_2_PBS_ACCOUNTING") 

+  v("_SC_2_PBS_CHECKPOINT") 

+  v("_SC_2_PBS_LOCATE") #{.importc: "_SC_2_PBS_LOCATE", header: "<unistd.h>".}: cint

+  v("_SC_2_PBS_MESSAGE") #{.importc: "_SC_2_PBS_MESSAGE", header: "<unistd.h>".}: cint

+  v("_SC_2_PBS_TRACK") #{.importc: "_SC_2_PBS_TRACK", header: "<unistd.h>".}: cint

+  v("_SC_2_SW_DEV") #{.importc: "_SC_2_SW_DEV", header: "<unistd.h>".}: cint

+  v("_SC_2_UPE") #{.importc: "_SC_2_UPE", header: "<unistd.h>".}: cint

+  v("_SC_2_VERSION") #{.importc: "_SC_2_VERSION", header: "<unistd.h>".}: cint

+  v("_SC_ADVISORY_INFO") #{.importc: "_SC_ADVISORY_INFO", header: "<unistd.h>".}: cint

+  v("_SC_AIO_LISTIO_MAX") 

+  v("_SC_AIO_MAX") #{.importc: "_SC_AIO_MAX", header: "<unistd.h>".}: cint

+  v("_SC_AIO_PRIO_DELTA_MAX") 

+  v("_SC_ARG_MAX") #{.importc: "_SC_ARG_MAX", header: "<unistd.h>".}: cint

+  v("_SC_ASYNCHRONOUS_IO") 

+  v("_SC_ATEXIT_MAX") #{.importc: "_SC_ATEXIT_MAX", header: "<unistd.h>".}: cint

+  v("_SC_BARRIERS") #{.importc: "_SC_BARRIERS", header: "<unistd.h>".}: cint

+  v("_SC_BC_BASE_MAX") #{.importc: "_SC_BC_BASE_MAX", header: "<unistd.h>".}: cint

+  v("_SC_BC_DIM_MAX") #{.importc: "_SC_BC_DIM_MAX", header: "<unistd.h>".}: cint

+  v("_SC_BC_SCALE_MAX") #{.importc: "_SC_BC_SCALE_MAX", header: "<unistd.h>".}: cint

+  v("_SC_BC_STRING_MAX") #{.importc: "_SC_BC_STRING_MAX", header: "<unistd.h>".}: cint

+  v("_SC_CHILD_MAX") #{.importc: "_SC_CHILD_MAX", header: "<unistd.h>".}: cint

+  v("_SC_CLK_TCK") #{.importc: "_SC_CLK_TCK", header: "<unistd.h>".}: cint

+  v("_SC_CLOCK_SELECTION") 

+  v("_SC_COLL_WEIGHTS_MAX")

+  v("_SC_CPUTIME") #{.importc: "_SC_CPUTIME", header: "<unistd.h>".}: cint

+  v("_SC_DELAYTIMER_MAX") 

+  v("_SC_EXPR_NEST_MAX") #{.importc: "_SC_EXPR_NEST_MAX", header: "<unistd.h>".}: cint

+  v("_SC_FSYNC") #{.importc: "_SC_FSYNC", header: "<unistd.h>".}: cint

+  v("_SC_GETGR_R_SIZE_MAX")

+  v("_SC_GETPW_R_SIZE_MAX")

+  v("_SC_HOST_NAME_MAX") #{.importc: "_SC_HOST_NAME_MAX", header: "<unistd.h>".}: cint

+  v("_SC_IOV_MAX") #{.importc: "_SC_IOV_MAX", header: "<unistd.h>".}: cint

+  v("_SC_IPV6") #{.importc: "_SC_IPV6", header: "<unistd.h>".}: cint

+  v("_SC_JOB_CONTROL") #{.importc: "_SC_JOB_CONTROL", header: "<unistd.h>".}: cint

+  v("_SC_LINE_MAX") #{.importc: "_SC_LINE_MAX", header: "<unistd.h>".}: cint

+  v("_SC_LOGIN_NAME_MAX") 

+  v("_SC_MAPPED_FILES") #{.importc: "_SC_MAPPED_FILES", header: "<unistd.h>".}: cint

+  v("_SC_MEMLOCK") #{.importc: "_SC_MEMLOCK", header: "<unistd.h>".}: cint

+  v("_SC_MEMLOCK_RANGE") #{.importc: "_SC_MEMLOCK_RANGE", header: "<unistd.h>".}: cint

+  v("_SC_MEMORY_PROTECTION")

+  v("_SC_MESSAGE_PASSING") 

+  v("_SC_MONOTONIC_CLOCK") 

+  v("_SC_MQ_OPEN_MAX") #{.importc: "_SC_MQ_OPEN_MAX", header: "<unistd.h>".}: cint

+  v("_SC_MQ_PRIO_MAX") #{.importc: "_SC_MQ_PRIO_MAX", header: "<unistd.h>".}: cint

+  v("_SC_NGROUPS_MAX") #{.importc: "_SC_NGROUPS_MAX", header: "<unistd.h>".}: cint

+  v("_SC_OPEN_MAX") #{.importc: "_SC_OPEN_MAX", header: "<unistd.h>".}: cint

+  v("_SC_PAGE_SIZE") #{.importc: "_SC_PAGE_SIZE", header: "<unistd.h>".}: cint

+  v("_SC_PRIORITIZED_IO") 

+  v("_SC_PRIORITY_SCHEDULING") 

+  v("_SC_RAW_SOCKETS") #{.importc: "_SC_RAW_SOCKETS", header: "<unistd.h>".}: cint

+  v("_SC_RE_DUP_MAX") #{.importc: "_SC_RE_DUP_MAX", header: "<unistd.h>".}: cint

+  v("_SC_READER_WRITER_LOCKS") 

+  v("_SC_REALTIME_SIGNALS") 

+  v("_SC_REGEXP") #{.importc: "_SC_REGEXP", header: "<unistd.h>".}: cint

+  v("_SC_RTSIG_MAX") #{.importc: "_SC_RTSIG_MAX", header: "<unistd.h>".}: cint

+  v("_SC_SAVED_IDS") #{.importc: "_SC_SAVED_IDS", header: "<unistd.h>".}: cint

+  v("_SC_SEM_NSEMS_MAX") #{.importc: "_SC_SEM_NSEMS_MAX", header: "<unistd.h>".}: cint

+  v("_SC_SEM_VALUE_MAX") #{.importc: "_SC_SEM_VALUE_MAX", header: "<unistd.h>".}: cint

+  v("_SC_SEMAPHORES") #{.importc: "_SC_SEMAPHORES", header: "<unistd.h>".}: cint

+  v("_SC_SHARED_MEMORY_OBJECTS") 

+  v("_SC_SHELL") #{.importc: "_SC_SHELL", header: "<unistd.h>".}: cint

+  v("_SC_SIGQUEUE_MAX") #{.importc: "_SC_SIGQUEUE_MAX", header: "<unistd.h>".}: cint

+  v("_SC_SPAWN") #{.importc: "_SC_SPAWN", header: "<unistd.h>".}: cint

+  v("_SC_SPIN_LOCKS") #{.importc: "_SC_SPIN_LOCKS", header: "<unistd.h>".}: cint

+  v("_SC_SPORADIC_SERVER") 

+  v("_SC_SS_REPL_MAX") #{.importc: "_SC_SS_REPL_MAX", header: "<unistd.h>".}: cint

+  v("_SC_STREAM_MAX") #{.importc: "_SC_STREAM_MAX", header: "<unistd.h>".}: cint

+  v("_SC_SYMLOOP_MAX") #{.importc: "_SC_SYMLOOP_MAX", header: "<unistd.h>".}: cint

+  v("_SC_SYNCHRONIZED_IO") 

+  v("_SC_THREAD_ATTR_STACKADDR") 

+  v("_SC_THREAD_ATTR_STACKSIZE") 

+  v("_SC_THREAD_CPUTIME") 

+  v("_SC_THREAD_DESTRUCTOR_ITERATIONS") 

+  v("_SC_THREAD_KEYS_MAX") 

+  v("_SC_THREAD_PRIO_INHERIT") 

+  v("_SC_THREAD_PRIO_PROTECT") 

+  v("_SC_THREAD_PRIORITY_SCHEDULING") 

+  v("_SC_THREAD_PROCESS_SHARED") 

+  v("_SC_THREAD_SAFE_FUNCTIONS") 

+  v("_SC_THREAD_SPORADIC_SERVER")

+  v("_SC_THREAD_STACK_MIN") 

+  v("_SC_THREAD_THREADS_MAX") 

+  v("_SC_THREADS") #{.importc: "_SC_THREADS", header: "<unistd.h>".}: cint

+  v("_SC_TIMEOUTS") #{.importc: "_SC_TIMEOUTS", header: "<unistd.h>".}: cint

+  v("_SC_TIMER_MAX") #{.importc: "_SC_TIMER_MAX", header: "<unistd.h>".}: cint

+  v("_SC_TIMERS") #{.importc: "_SC_TIMERS", header: "<unistd.h>".}: cint

+  v("_SC_TRACE") #{.importc: "_SC_TRACE", header: "<unistd.h>".}: cint

+  v("_SC_TRACE_EVENT_FILTER") 

+  v("_SC_TRACE_EVENT_NAME_MAX")

+  v("_SC_TRACE_INHERIT") #{.importc: "_SC_TRACE_INHERIT", header: "<unistd.h>".}: cint

+  v("_SC_TRACE_LOG") #{.importc: "_SC_TRACE_LOG", header: "<unistd.h>".}: cint

+  v("_SC_TRACE_NAME_MAX") 

+  v("_SC_TRACE_SYS_MAX") #{.importc: "_SC_TRACE_SYS_MAX", header: "<unistd.h>".}: cint

+  v("_SC_TRACE_USER_EVENT_MAX") 

+  v("_SC_TTY_NAME_MAX") #{.importc: "_SC_TTY_NAME_MAX", header: "<unistd.h>".}: cint

+  v("_SC_TYPED_MEMORY_OBJECTS") 

+  v("_SC_TZNAME_MAX") #{.importc: "_SC_TZNAME_MAX", header: "<unistd.h>".}: cint

+  v("_SC_V6_ILP32_OFF32") 

+  v("_SC_V6_ILP32_OFFBIG") 

+  v("_SC_V6_LP64_OFF64") #{.importc: "_SC_V6_LP64_OFF64", header: "<unistd.h>".}: cint

+  v("_SC_V6_LPBIG_OFFBIG") 

+  v("_SC_VERSION") #{.importc: "_SC_VERSION", header: "<unistd.h>".}: cint

+  v("_SC_XBS5_ILP32_OFF32") 

+  v("_SC_XBS5_ILP32_OFFBIG") 

+  v("_SC_XBS5_LP64_OFF64") 

+  v("_SC_XBS5_LPBIG_OFFBIG") 

+  v("_SC_XOPEN_CRYPT") #{.importc: "_SC_XOPEN_CRYPT", header: "<unistd.h>".}: cint

+  v("_SC_XOPEN_ENH_I18N") 

+  v("_SC_XOPEN_LEGACY") #{.importc: "_SC_XOPEN_LEGACY", header: "<unistd.h>".}: cint

+  v("_SC_XOPEN_REALTIME") 

+  v("_SC_XOPEN_REALTIME_THREADS") 

+  v("_SC_XOPEN_SHM") #{.importc: "_SC_XOPEN_SHM", header: "<unistd.h>".}: cint

+  v("_SC_XOPEN_STREAMS") #{.importc: "_SC_XOPEN_STREAMS", header: "<unistd.h>".}: cint

+  v("_SC_XOPEN_UNIX") #{.importc: "_SC_XOPEN_UNIX", header: "<unistd.h>".}: cint

+  v("_SC_XOPEN_VERSION") #{.importc: "_SC_XOPEN_VERSION", header: "<unistd.h>".}: cint

+
+  v("SEEK_SET") #{.importc, header: "<unistd.h>".}: cint

+  v("SEEK_CUR") #{.importc, header: "<unistd.h>".}: cint

+  v("SEEK_END") #{.importc, header: "<unistd.h>".}: cint

+
+
+if header("<semaphore.h>"):

+  v("SEM_FAILED", pointer)
+
+if header("<sys/ipc.h>"):

+  v("IPC_CREAT") #{.importc, header: .}: cint

+  v("IPC_EXCL") #{.importc, header: "<sys/ipc.h>".}: cint

+  v("IPC_NOWAIT") #{.importc, header: "<sys/ipc.h>".}: cint

+  v("IPC_PRIVATE") #{.importc, header: "<sys/ipc.h>".}: cint

+  v("IPC_RMID") #{.importc, header: "<sys/ipc.h>".}: cint

+  v("IPC_SET") #{.importc, header: "<sys/ipc.h>".}: cint

+  v("IPC_STAT") #{.importc, header: "<sys/ipc.h>".}: cint
+
+if header("<sys/stat.h>"):

+  v("S_IFMT") #{.importc, header: .}: cint

+  v("S_IFBLK") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IFCHR") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IFIFO") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IFREG") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IFDIR") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IFLNK") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IFSOCK") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IRWXU") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IRUSR") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IWUSR") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IXUSR") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IRWXG") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IRGRP") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IWGRP") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IXGRP") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IRWXO") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IROTH") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IWOTH") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_IXOTH") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_ISUID") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_ISGID") #{.importc, header: "<sys/stat.h>".}: cint

+  v("S_ISVTX") #{.importc, header: "<sys/stat.h>".}: cint

+
+if header("<sys/statvfs.h>"):

+  v("ST_RDONLY") #{.importc, header: .}: cint

+  v("ST_NOSUID") #{.importc, header: "<sys/statvfs.h>".}: cint

+       
+if header("<sys/mman.h>"):

+  v("PROT_READ") #{.importc, header: .}: cint

+  v("PROT_WRITE") #{.importc, header: "<sys/mman.h>".}: cint

+  v("PROT_EXEC") #{.importc, header: "<sys/mman.h>".}: cint

+  v("PROT_NONE") #{.importc, header: "<sys/mman.h>".}: cint

+  v("MAP_SHARED") #{.importc, header: "<sys/mman.h>".}: cint

+  v("MAP_PRIVATE") #{.importc, header: "<sys/mman.h>".}: cint

+  v("MAP_FIXED") #{.importc, header: "<sys/mman.h>".}: cint

+  v("MS_ASYNC") #{.importc, header: "<sys/mman.h>".}: cint

+  v("MS_SYNC") #{.importc, header: "<sys/mman.h>".}: cint

+  v("MS_INVALIDATE") #{.importc, header: "<sys/mman.h>".}: cint

+  v("MCL_CURRENT") #{.importc, header: "<sys/mman.h>".}: cint

+  v("MCL_FUTURE") #{.importc, header: "<sys/mman.h>".}: cint

+
+  v("MAP_FAILED", pointer)

+  v("POSIX_MADV_NORMAL") #{.importc, header: "<sys/mman.h>".}: cint

+  v("POSIX_MADV_SEQUENTIAL") #{.importc, header: "<sys/mman.h>".}: cint

+  v("POSIX_MADV_RANDOM") #{.importc, header: "<sys/mman.h>".}: cint

+  v("POSIX_MADV_WILLNEED") #{.importc, header: "<sys/mman.h>".}: cint

+  v("POSIX_MADV_DONTNEED") #{.importc, header: "<sys/mman.h>".}: cint

+  v("POSIX_TYPED_MEM_ALLOCATE") #{.importc, header: "<sys/mman.h>".}: cint

+  v("POSIX_TYPED_MEM_ALLOCATE_CONTIG") #{.importc, header: "<sys/mman.h>".}: cint

+  v("POSIX_TYPED_MEM_MAP_ALLOCATABLE") #{.importc, header: "<sys/mman.h>".}: cint

+

+if header("<time.h>"):

+  v("CLOCKS_PER_SEC", clong) 

+  v("CLOCK_PROCESS_CPUTIME_ID")

+  v("CLOCK_THREAD_CPUTIME_ID")

+  v("CLOCK_REALTIME")

+  v("TIMER_ABSTIME") 

+  v("CLOCK_MONOTONIC") 

+
+if header("<sys/wait.h>"):

+  v("WNOHANG") #{.importc, header: .}: cint

+  v("WUNTRACED") #{.importc, header: "<sys/wait.h>".}: cint

+  #v("WEXITSTATUS") 

+  #v("WIFCONTINUED") 

+  #v("WIFEXITED") 

+  #v("WIFSIGNALED")

+  #v("WIFSTOPPED") 

+  #v("WSTOPSIG") 

+  #v("WTERMSIG") 

+  v("WEXITED") #{.importc, header: "<sys/wait.h>".}: cint

+  v("WSTOPPED") #{.importc, header: "<sys/wait.h>".}: cint

+  v("WCONTINUED") #{.importc, header: "<sys/wait.h>".}: cint

+  v("WNOWAIT") #{.importc, header: "<sys/wait.h>".}: cint

+  v("P_ALL") #{.importc, header: "<sys/wait.h>".}: cint 

+  v("P_PID") #{.importc, header: "<sys/wait.h>".}: cint 

+  v("P_PGID") #{.importc, header: "<sys/wait.h>".}: cint

+         
+if header("<signal.h>"):

+  v("SIGEV_NONE") #{.importc, header: "<signal.h>".}: cint

+  v("SIGEV_SIGNAL") #{.importc, header: "<signal.h>".}: cint

+  v("SIGEV_THREAD") #{.importc, header: "<signal.h>".}: cint

+  v("SIGABRT") #{.importc, header: "<signal.h>".}: cint

+  v("SIGALRM") #{.importc, header: "<signal.h>".}: cint

+  v("SIGBUS") #{.importc, header: "<signal.h>".}: cint

+  v("SIGCHLD") #{.importc, header: "<signal.h>".}: cint

+  v("SIGCONT") #{.importc, header: "<signal.h>".}: cint

+  v("SIGFPE") #{.importc, header: "<signal.h>".}: cint

+  v("SIGHUP") #{.importc, header: "<signal.h>".}: cint

+  v("SIGILL") #{.importc, header: "<signal.h>".}: cint

+  v("SIGINT") #{.importc, header: "<signal.h>".}: cint

+  v("SIGKILL") #{.importc, header: "<signal.h>".}: cint

+  v("SIGPIPE") #{.importc, header: "<signal.h>".}: cint

+  v("SIGQUIT") #{.importc, header: "<signal.h>".}: cint

+  v("SIGSEGV") #{.importc, header: "<signal.h>".}: cint

+  v("SIGSTOP") #{.importc, header: "<signal.h>".}: cint

+  v("SIGTERM") #{.importc, header: "<signal.h>".}: cint

+  v("SIGTSTP") #{.importc, header: "<signal.h>".}: cint

+  v("SIGTTIN") #{.importc, header: "<signal.h>".}: cint

+  v("SIGTTOU") #{.importc, header: "<signal.h>".}: cint

+  v("SIGUSR1") #{.importc, header: "<signal.h>".}: cint

+  v("SIGUSR2") #{.importc, header: "<signal.h>".}: cint

+  v("SIGPOLL") #{.importc, header: "<signal.h>".}: cint

+  v("SIGPROF") #{.importc, header: "<signal.h>".}: cint

+  v("SIGSYS") #{.importc, header: "<signal.h>".}: cint

+  v("SIGTRAP") #{.importc, header: "<signal.h>".}: cint

+  v("SIGURG") #{.importc, header: "<signal.h>".}: cint

+  v("SIGVTALRM") #{.importc, header: "<signal.h>".}: cint

+  v("SIGXCPU") #{.importc, header: "<signal.h>".}: cint

+  v("SIGXFSZ") #{.importc, header: "<signal.h>".}: cint

+  v("SA_NOCLDSTOP") #{.importc, header: "<signal.h>".}: cint

+  v("SIG_BLOCK") #{.importc, header: "<signal.h>".}: cint

+  v("SIG_UNBLOCK") #{.importc, header: "<signal.h>".}: cint

+  v("SIG_SETMASK") #{.importc, header: "<signal.h>".}: cint

+  v("SA_ONSTACK") #{.importc, header: "<signal.h>".}: cint

+  v("SA_RESETHAND") #{.importc, header: "<signal.h>".}: cint

+  v("SA_RESTART") #{.importc, header: "<signal.h>".}: cint

+  v("SA_SIGINFO") #{.importc, header: "<signal.h>".}: cint

+  v("SA_NOCLDWAIT") #{.importc, header: "<signal.h>".}: cint

+  v("SA_NODEFER") #{.importc, header: "<signal.h>".}: cint

+  v("SS_ONSTACK") #{.importc, header: "<signal.h>".}: cint

+  v("SS_DISABLE") #{.importc, header: "<signal.h>".}: cint

+  v("MINSIGSTKSZ") #{.importc, header: "<signal.h>".}: cint

+  v("SIGSTKSZ") #{.importc, header: "<signal.h>".}: cint

+
+if header("<nl_types.h>"):

+  v("NL_SETD") #{.importc, header: .}: cint

+  v("NL_CAT_LOCALE") #{.importc, header: "<nl_types.h>".}: cint

+
+if header("<sched.h>"):

+  v("SCHED_FIFO")

+  v("SCHED_RR")

+  v("SCHED_SPORADIC")

+  v("SCHED_OTHER")

+
+if header("<sys/select.h>"):
+  v("FD_SETSIZE")

+

+if header("<net/if.h>"):
+  v("IF_NAMESIZE")
+
+if header("<sys/socket.h>"):
+  v("SCM_RIGHTS") #{.importc, header: .}: cint
+  v("SOCK_DGRAM") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SOCK_RAW") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SOCK_SEQPACKET") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SOCK_STREAM") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SOL_SOCKET") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_ACCEPTCONN") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_BROADCAST") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_DEBUG") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_DONTROUTE") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_ERROR") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_KEEPALIVE") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_LINGER") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_OOBINLINE") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_RCVBUF") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_RCVLOWAT") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_RCVTIMEO") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_REUSEADDR") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_SNDBUF") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_SNDLOWAT") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_SNDTIMEO") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SO_TYPE") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SOMAXCONN") #{.importc, header: "<sys/socket.h>".}: cint
+  v("MSG_CTRUNC") #{.importc, header: "<sys/socket.h>".}: cint
+  v("MSG_DONTROUTE") #{.importc, header: "<sys/socket.h>".}: cint
+  v("MSG_EOR") #{.importc, header: "<sys/socket.h>".}: cint
+  v("MSG_OOB") #{.importc, header: "<sys/socket.h>".}: cint
+  v("MSG_PEEK") #{.importc, header: "<sys/socket.h>".}: cint
+  v("MSG_TRUNC") #{.importc, header: "<sys/socket.h>".}: cint
+  v("MSG_WAITALL") #{.importc, header: "<sys/socket.h>".}: cint
+  v("AF_INET") #{.importc, header: "<sys/socket.h>".}: cint
+  v("AF_INET6") #{.importc, header: "<sys/socket.h>".}: cint
+  v("AF_UNIX") #{.importc, header: "<sys/socket.h>".}: cint
+  v("AF_UNSPEC") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SHUT_RD") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SHUT_RDWR") #{.importc, header: "<sys/socket.h>".}: cint
+  v("SHUT_WR") #{.importc, header: "<sys/socket.h>".}: cint
+
+if header("<netinet/in.h>"):
+  v("IPPROTO_IP") #{.importc, header: .}: cint
+  v("IPPROTO_IPV6") #{.importc, header: "<netinet/in.h>".}: cint
+  v("IPPROTO_ICMP") #{.importc, header: "<netinet/in.h>".}: cint
+  v("IPPROTO_RAW") #{.importc, header: "<netinet/in.h>".}: cint
+  v("IPPROTO_TCP") #{.importc, header: "<netinet/in.h>".}: cint
+  v("IPPROTO_UDP") #{.importc, header: "<netinet/in.h>".}: cint
+  v("INADDR_ANY") #{.importc, header: "<netinet/in.h>".}: TinAddrScalar
+  v("INADDR_BROADCAST") #{.importc, header: "<netinet/in.h>".}: TinAddrScalar
+  v("INET_ADDRSTRLEN") #{.importc, header: "<netinet/in.h>".}: cint
+
+  v("IPV6_JOIN_GROUP") #{.importc, header: "<netinet/in.h>".}: cint
+  v("IPV6_LEAVE_GROUP") #{.importc, header: "<netinet/in.h>".}: cint
+  v("IPV6_MULTICAST_HOPS") #{.importc, header: "<netinet/in.h>".}: cint
+  v("IPV6_MULTICAST_IF") #{.importc, header: "<netinet/in.h>".}: cint
+  v("IPV6_MULTICAST_LOOP") #{.importc, header: "<netinet/in.h>".}: cint
+  v("IPV6_UNICAST_HOPS") #{.importc, header: "<netinet/in.h>".}: cint
+  v("IPV6_V6ONLY") #{.importc, header: "<netinet/in.h>".}: cint
+
+  v("TCP_NODELAY") #{.importc, header: "<netinet/tcp.h>".}: cint
+
+if header("<netdb.h>"):
+  v("IPPORT_RESERVED")
+
+  v("HOST_NOT_FOUND")
+  v("NO_DATA")
+  v("NO_RECOVERY") 
+  v("TRY_AGAIN") 
+
+  v("AI_PASSIVE") 
+  v("AI_CANONNAME") 
+  v("AI_NUMERICHOST") 
+  v("AI_NUMERICSERV") 
+  v("AI_V4MAPPED") 
+  v("AI_ALL") 
+  v("AI_ADDRCONFIG") 
+
+  v("NI_NOFQDN") 
+  v("NI_NUMERICHOST") 
+  v("NI_NAMEREQD") 
+  v("NI_NUMERICSERV") 
+  v("NI_NUMERICSCOPE") 
+  v("NI_DGRAM") 
+  v("EAI_AGAIN")
+  v("EAI_BADFLAGS")
+  v("EAI_FAIL")
+  v("EAI_FAMILY")
+  v("EAI_MEMORY")
+  v("EAI_NONAME")
+  v("EAI_SERVICE")
+  v("EAI_SOCKTYPE")
+  v("EAI_SYSTEM")
+  v("EAI_OVERFLOW")
+
+if header("<poll.h>"):
+  v("POLLIN", cshort)
+  v("POLLRDNORM", cshort)
+  v("POLLRDBAND", cshort)
+  v("POLLPRI", cshort)
+  v("POLLOUT", cshort)
+  v("POLLWRNORM", cshort)
+  v("POLLWRBAND", cshort)
+  v("POLLERR", cshort)
+  v("POLLHUP", cshort)
+  v("POLLNVAL", cshort)
+
+if header("<spawn.h>"):
+  v("POSIX_SPAWN_RESETIDS")

+  v("POSIX_SPAWN_SETPGROUP")

+  v("POSIX_SPAWN_SETSCHEDPARAM")

+  v("POSIX_SPAWN_SETSCHEDULER")

+  v("POSIX_SPAWN_SETSIGDEF")

+  v("POSIX_SPAWN_SETSIGMASK")

+
+main()
+
diff --git a/lib/posix/linux_amd64_consts.nim b/lib/posix/linux_amd64_consts.nim
new file mode 100644
index 000000000..2fadcd83b
--- /dev/null
+++ b/lib/posix/linux_amd64_consts.nim
@@ -0,0 +1,620 @@
+# Generated by detect.nim
+const
+  AIO_ALLDONE* = cint(2)
+  AIO_CANCELED* = cint(0)
+  AIO_NOTCANCELED* = cint(1)
+  LIO_NOP* = cint(2)
+  LIO_NOWAIT* = cint(1)
+  LIO_READ* = cint(0)
+  LIO_WAIT* = cint(0)
+  LIO_WRITE* = cint(1)
+  RTLD_LAZY* = cint(1)
+  RTLD_NOW* = cint(2)
+  RTLD_GLOBAL* = cint(256)
+  RTLD_LOCAL* = cint(0)
+  E2BIG* = cint(7)
+  EACCES* = cint(13)
+  EADDRINUSE* = cint(98)
+  EADDRNOTAVAIL* = cint(99)
+  EAFNOSUPPORT* = cint(97)
+  EAGAIN* = cint(11)
+  EALREADY* = cint(114)
+  EBADF* = cint(9)
+  EBADMSG* = cint(74)
+  EBUSY* = cint(16)
+  ECANCELED* = cint(125)
+  ECHILD* = cint(10)
+  ECONNABORTED* = cint(103)
+  ECONNREFUSED* = cint(111)
+  ECONNRESET* = cint(104)
+  EDEADLK* = cint(35)
+  EDESTADDRREQ* = cint(89)
+  EDOM* = cint(33)
+  EDQUOT* = cint(122)
+  EEXIST* = cint(17)
+  EFAULT* = cint(14)
+  EFBIG* = cint(27)
+  EHOSTUNREACH* = cint(113)
+  EIDRM* = cint(43)
+  EILSEQ* = cint(84)
+  EINPROGRESS* = cint(115)
+  EINTR* = cint(4)
+  EINVAL* = cint(22)
+  EIO* = cint(5)
+  EISCONN* = cint(106)
+  EISDIR* = cint(21)
+  ELOOP* = cint(40)
+  EMFILE* = cint(24)
+  EMLINK* = cint(31)
+  EMSGSIZE* = cint(90)
+  EMULTIHOP* = cint(72)
+  ENAMETOOLONG* = cint(36)
+  ENETDOWN* = cint(100)
+  ENETRESET* = cint(102)
+  ENETUNREACH* = cint(101)
+  ENFILE* = cint(23)
+  ENOBUFS* = cint(105)
+  ENODATA* = cint(61)
+  ENODEV* = cint(19)
+  ENOENT* = cint(2)
+  ENOEXEC* = cint(8)
+  ENOLCK* = cint(37)
+  ENOLINK* = cint(67)
+  ENOMEM* = cint(12)
+  ENOMSG* = cint(42)
+  ENOPROTOOPT* = cint(92)
+  ENOSPC* = cint(28)
+  ENOSR* = cint(63)
+  ENOSTR* = cint(60)
+  ENOSYS* = cint(38)
+  ENOTCONN* = cint(107)
+  ENOTDIR* = cint(20)
+  ENOTEMPTY* = cint(39)
+  ENOTSOCK* = cint(88)
+  ENOTSUP* = cint(95)
+  ENOTTY* = cint(25)
+  ENXIO* = cint(6)
+  EOPNOTSUPP* = cint(95)
+  EOVERFLOW* = cint(75)
+  EPERM* = cint(1)
+  EPIPE* = cint(32)
+  EPROTO* = cint(71)
+  EPROTONOSUPPORT* = cint(93)
+  EPROTOTYPE* = cint(91)
+  ERANGE* = cint(34)
+  EROFS* = cint(30)
+  ESPIPE* = cint(29)
+  ESRCH* = cint(3)
+  ESTALE* = cint(116)
+  ETIME* = cint(62)
+  ETIMEDOUT* = cint(110)
+  ETXTBSY* = cint(26)
+  EWOULDBLOCK* = cint(11)
+  EXDEV* = cint(18)
+  F_DUPFD* = cint(0)
+  F_GETFD* = cint(1)
+  F_SETFD* = cint(2)
+  F_GETFL* = cint(3)
+  F_SETFL* = cint(4)
+  F_GETLK* = cint(5)
+  F_SETLK* = cint(6)
+  F_SETLKW* = cint(7)
+  F_GETOWN* = cint(9)
+  F_SETOWN* = cint(8)
+  FD_CLOEXEC* = cint(1)
+  F_RDLCK* = cint(0)
+  F_UNLCK* = cint(2)
+  F_WRLCK* = cint(1)
+  O_CREAT* = cint(64)
+  O_EXCL* = cint(128)
+  O_NOCTTY* = cint(256)
+  O_TRUNC* = cint(512)
+  O_APPEND* = cint(1024)
+  O_DSYNC* = cint(4096)
+  O_NONBLOCK* = cint(2048)
+  O_RSYNC* = cint(4096)
+  O_SYNC* = cint(4096)
+  O_ACCMODE* = cint(3)
+  O_RDONLY* = cint(0)
+  O_RDWR* = cint(2)
+  O_WRONLY* = cint(1)
+  POSIX_FADV_NORMAL* = cint(0)
+  POSIX_FADV_SEQUENTIAL* = cint(2)
+  POSIX_FADV_RANDOM* = cint(1)
+  POSIX_FADV_WILLNEED* = cint(3)
+  POSIX_FADV_DONTNEED* = cint(4)
+  POSIX_FADV_NOREUSE* = cint(5)
+  FE_DIVBYZERO* = cint(4)
+  FE_INEXACT* = cint(32)
+  FE_INVALID* = cint(1)
+  FE_OVERFLOW* = cint(8)
+  FE_UNDERFLOW* = cint(16)
+  FE_ALL_EXCEPT* = cint(61)
+  FE_DOWNWARD* = cint(1024)
+  FE_TONEAREST* = cint(0)
+  FE_TOWARDZERO* = cint(3072)
+  FE_UPWARD* = cint(2048)
+  FE_DFL_ENV* = cast[pointer](0xffffffffffffffff)
+  MM_HARD* = cint(1)
+  MM_SOFT* = cint(2)
+  MM_FIRM* = cint(4)
+  MM_APPL* = cint(8)
+  MM_UTIL* = cint(16)
+  MM_OPSYS* = cint(32)
+  MM_RECOVER* = cint(64)
+  MM_NRECOV* = cint(128)
+  MM_HALT* = cint(1)
+  MM_ERROR* = cint(2)
+  MM_WARNING* = cint(3)
+  MM_INFO* = cint(4)
+  MM_NOSEV* = cint(0)
+  MM_PRINT* = cint(256)
+  MM_CONSOLE* = cint(512)
+  MM_OK* = cint(0)
+  MM_NOTOK* = cint(-1)
+  MM_NOMSG* = cint(1)
+  MM_NOCON* = cint(4)
+  FNM_NOMATCH* = cint(1)
+  FNM_PATHNAME* = cint(1)
+  FNM_PERIOD* = cint(4)
+  FNM_NOESCAPE* = cint(2)
+  FTW_F* = cint(0)
+  FTW_D* = cint(1)
+  FTW_DNR* = cint(2)
+  FTW_NS* = cint(3)
+  FTW_SL* = cint(4)
+  GLOB_APPEND* = cint(32)
+  GLOB_DOOFFS* = cint(8)
+  GLOB_ERR* = cint(1)
+  GLOB_MARK* = cint(2)
+  GLOB_NOCHECK* = cint(16)
+  GLOB_NOESCAPE* = cint(64)
+  GLOB_NOSORT* = cint(4)
+  GLOB_ABORTED* = cint(2)
+  GLOB_NOMATCH* = cint(3)
+  GLOB_NOSPACE* = cint(1)
+  GLOB_NOSYS* = cint(4)
+  CODESET* = cint(14)
+  D_T_FMT* = cint(131112)
+  D_FMT* = cint(131113)
+  T_FMT* = cint(131114)
+  T_FMT_AMPM* = cint(131115)
+  AM_STR* = cint(131110)
+  PM_STR* = cint(131111)
+  DAY_1* = cint(131079)
+  DAY_2* = cint(131080)
+  DAY_3* = cint(131081)
+  DAY_4* = cint(131082)
+  DAY_5* = cint(131083)
+  DAY_6* = cint(131084)
+  DAY_7* = cint(131085)
+  ABDAY_1* = cint(131072)
+  ABDAY_2* = cint(131073)
+  ABDAY_3* = cint(131074)
+  ABDAY_4* = cint(131075)
+  ABDAY_5* = cint(131076)
+  ABDAY_6* = cint(131077)
+  ABDAY_7* = cint(131078)
+  MON_1* = cint(131098)
+  MON_2* = cint(131099)
+  MON_3* = cint(131100)
+  MON_4* = cint(131101)
+  MON_5* = cint(131102)
+  MON_6* = cint(131103)
+  MON_7* = cint(131104)
+  MON_8* = cint(131105)
+  MON_9* = cint(131106)
+  MON_10* = cint(131107)
+  MON_11* = cint(131108)
+  MON_12* = cint(131109)
+  ABMON_1* = cint(131086)
+  ABMON_2* = cint(131087)
+  ABMON_3* = cint(131088)
+  ABMON_4* = cint(131089)
+  ABMON_5* = cint(131090)
+  ABMON_6* = cint(131091)
+  ABMON_7* = cint(131092)
+  ABMON_8* = cint(131093)
+  ABMON_9* = cint(131094)
+  ABMON_10* = cint(131095)
+  ABMON_11* = cint(131096)
+  ABMON_12* = cint(131097)
+  ERA* = cint(131116)
+  ERA_D_FMT* = cint(131118)
+  ERA_D_T_FMT* = cint(131120)
+  ERA_T_FMT* = cint(131121)
+  ALT_DIGITS* = cint(131119)
+  RADIXCHAR* = cint(65536)
+  THOUSEP* = cint(65537)
+  YESEXPR* = cint(327680)
+  NOEXPR* = cint(327681)
+  CRNCYSTR* = cint(262159)
+  LC_ALL* = cint(6)
+  LC_COLLATE* = cint(3)
+  LC_CTYPE* = cint(0)
+  LC_MESSAGES* = cint(5)
+  LC_MONETARY* = cint(4)
+  LC_NUMERIC* = cint(1)
+  LC_TIME* = cint(2)
+  PTHREAD_BARRIER_SERIAL_THREAD* = cint(-1)
+  PTHREAD_CANCEL_ASYNCHRONOUS* = cint(1)
+  PTHREAD_CANCEL_ENABLE* = cint(0)
+  PTHREAD_CANCEL_DEFERRED* = cint(0)
+  PTHREAD_CANCEL_DISABLE* = cint(1)
+  PTHREAD_CREATE_DETACHED* = cint(1)
+  PTHREAD_CREATE_JOINABLE* = cint(0)
+  PTHREAD_EXPLICIT_SCHED* = cint(1)
+  PTHREAD_INHERIT_SCHED* = cint(0)
+  PTHREAD_ONCE_INIT* = cint(0)
+  PTHREAD_PROCESS_SHARED* = cint(1)
+  PTHREAD_PROCESS_PRIVATE* = cint(0)
+  PTHREAD_SCOPE_PROCESS* = cint(1)
+  PTHREAD_SCOPE_SYSTEM* = cint(0)
+  POSIX_ASYNC_IO* = cint(1)
+  F_OK* = cint(0)
+  R_OK* = cint(4)
+  W_OK* = cint(2)
+  X_OK* = cint(1)
+  CS_PATH* = cint(0)
+  CS_POSIX_V6_ILP32_OFF32_CFLAGS* = cint(1116)
+  CS_POSIX_V6_ILP32_OFF32_LDFLAGS* = cint(1117)
+  CS_POSIX_V6_ILP32_OFF32_LIBS* = cint(1118)
+  CS_POSIX_V6_ILP32_OFFBIG_CFLAGS* = cint(1120)
+  CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS* = cint(1121)
+  CS_POSIX_V6_ILP32_OFFBIG_LIBS* = cint(1122)
+  CS_POSIX_V6_LP64_OFF64_CFLAGS* = cint(1124)
+  CS_POSIX_V6_LP64_OFF64_LDFLAGS* = cint(1125)
+  CS_POSIX_V6_LP64_OFF64_LIBS* = cint(1126)
+  CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS* = cint(1128)
+  CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS* = cint(1129)
+  CS_POSIX_V6_LPBIG_OFFBIG_LIBS* = cint(1130)
+  CS_POSIX_V6_WIDTH_RESTRICTED_ENVS* = cint(1)
+  F_LOCK* = cint(1)
+  F_TEST* = cint(3)
+  F_TLOCK* = cint(2)
+  F_ULOCK* = cint(0)
+  PC_2_SYMLINKS* = cint(20)
+  PC_ALLOC_SIZE_MIN* = cint(18)
+  PC_ASYNC_IO* = cint(10)
+  PC_CHOWN_RESTRICTED* = cint(6)
+  PC_FILESIZEBITS* = cint(13)
+  PC_LINK_MAX* = cint(0)
+  PC_MAX_CANON* = cint(1)
+  PC_MAX_INPUT* = cint(2)
+  PC_NAME_MAX* = cint(3)
+  PC_NO_TRUNC* = cint(7)
+  PC_PATH_MAX* = cint(4)
+  PC_PIPE_BUF* = cint(5)
+  PC_PRIO_IO* = cint(11)
+  PC_REC_INCR_XFER_SIZE* = cint(14)
+  PC_REC_MIN_XFER_SIZE* = cint(16)
+  PC_REC_XFER_ALIGN* = cint(17)
+  PC_SYMLINK_MAX* = cint(19)
+  PC_SYNC_IO* = cint(9)
+  PC_VDISABLE* = cint(8)
+  SC_2_C_BIND* = cint(47)
+  SC_2_C_DEV* = cint(48)
+  SC_2_CHAR_TERM* = cint(95)
+  SC_2_FORT_DEV* = cint(49)
+  SC_2_FORT_RUN* = cint(50)
+  SC_2_LOCALEDEF* = cint(52)
+  SC_2_PBS* = cint(168)
+  SC_2_PBS_ACCOUNTING* = cint(169)
+  SC_2_PBS_CHECKPOINT* = cint(175)
+  SC_2_PBS_LOCATE* = cint(170)
+  SC_2_PBS_MESSAGE* = cint(171)
+  SC_2_PBS_TRACK* = cint(172)
+  SC_2_SW_DEV* = cint(51)
+  SC_2_UPE* = cint(97)
+  SC_2_VERSION* = cint(46)
+  SC_ADVISORY_INFO* = cint(132)
+  SC_AIO_LISTIO_MAX* = cint(23)
+  SC_AIO_MAX* = cint(24)
+  SC_AIO_PRIO_DELTA_MAX* = cint(25)
+  SC_ARG_MAX* = cint(0)
+  SC_ASYNCHRONOUS_IO* = cint(12)
+  SC_ATEXIT_MAX* = cint(87)
+  SC_BARRIERS* = cint(133)
+  SC_BC_BASE_MAX* = cint(36)
+  SC_BC_DIM_MAX* = cint(37)
+  SC_BC_SCALE_MAX* = cint(38)
+  SC_BC_STRING_MAX* = cint(39)
+  SC_CHILD_MAX* = cint(1)
+  SC_CLK_TCK* = cint(2)
+  SC_CLOCK_SELECTION* = cint(137)
+  SC_COLL_WEIGHTS_MAX* = cint(40)
+  SC_CPUTIME* = cint(138)
+  SC_DELAYTIMER_MAX* = cint(26)
+  SC_EXPR_NEST_MAX* = cint(42)
+  SC_FSYNC* = cint(15)
+  SC_GETGR_R_SIZE_MAX* = cint(69)
+  SC_GETPW_R_SIZE_MAX* = cint(70)
+  SC_HOST_NAME_MAX* = cint(180)
+  SC_IOV_MAX* = cint(60)
+  SC_IPV6* = cint(235)
+  SC_JOB_CONTROL* = cint(7)
+  SC_LINE_MAX* = cint(43)
+  SC_LOGIN_NAME_MAX* = cint(71)
+  SC_MAPPED_FILES* = cint(16)
+  SC_MEMLOCK* = cint(17)
+  SC_MEMLOCK_RANGE* = cint(18)
+  SC_MEMORY_PROTECTION* = cint(19)
+  SC_MESSAGE_PASSING* = cint(20)
+  SC_MONOTONIC_CLOCK* = cint(149)
+  SC_MQ_OPEN_MAX* = cint(27)
+  SC_MQ_PRIO_MAX* = cint(28)
+  SC_NGROUPS_MAX* = cint(3)
+  SC_OPEN_MAX* = cint(4)
+  SC_PAGE_SIZE* = cint(30)
+  SC_PRIORITIZED_IO* = cint(13)
+  SC_PRIORITY_SCHEDULING* = cint(10)
+  SC_RAW_SOCKETS* = cint(236)
+  SC_RE_DUP_MAX* = cint(44)
+  SC_READER_WRITER_LOCKS* = cint(153)
+  SC_REALTIME_SIGNALS* = cint(9)
+  SC_REGEXP* = cint(155)
+  SC_RTSIG_MAX* = cint(31)
+  SC_SAVED_IDS* = cint(8)
+  SC_SEM_NSEMS_MAX* = cint(32)
+  SC_SEM_VALUE_MAX* = cint(33)
+  SC_SEMAPHORES* = cint(21)
+  SC_SHARED_MEMORY_OBJECTS* = cint(22)
+  SC_SHELL* = cint(157)
+  SC_SIGQUEUE_MAX* = cint(34)
+  SC_SPAWN* = cint(159)
+  SC_SPIN_LOCKS* = cint(154)
+  SC_SPORADIC_SERVER* = cint(160)
+  SC_STREAM_MAX* = cint(5)
+  SC_SYMLOOP_MAX* = cint(173)
+  SC_SYNCHRONIZED_IO* = cint(14)
+  SC_THREAD_ATTR_STACKADDR* = cint(77)
+  SC_THREAD_ATTR_STACKSIZE* = cint(78)
+  SC_THREAD_CPUTIME* = cint(139)
+  SC_THREAD_DESTRUCTOR_ITERATIONS* = cint(73)
+  SC_THREAD_KEYS_MAX* = cint(74)
+  SC_THREAD_PRIO_INHERIT* = cint(80)
+  SC_THREAD_PRIO_PROTECT* = cint(81)
+  SC_THREAD_PRIORITY_SCHEDULING* = cint(79)
+  SC_THREAD_PROCESS_SHARED* = cint(82)
+  SC_THREAD_SAFE_FUNCTIONS* = cint(68)
+  SC_THREAD_SPORADIC_SERVER* = cint(161)
+  SC_THREAD_STACK_MIN* = cint(75)
+  SC_THREAD_THREADS_MAX* = cint(76)
+  SC_THREADS* = cint(67)
+  SC_TIMEOUTS* = cint(164)
+  SC_TIMER_MAX* = cint(35)
+  SC_TIMERS* = cint(11)
+  SC_TRACE* = cint(181)
+  SC_TRACE_EVENT_FILTER* = cint(182)
+  SC_TRACE_INHERIT* = cint(183)
+  SC_TRACE_LOG* = cint(184)
+  SC_TTY_NAME_MAX* = cint(72)
+  SC_TYPED_MEMORY_OBJECTS* = cint(165)
+  SC_TZNAME_MAX* = cint(6)
+  SC_V6_ILP32_OFF32* = cint(176)
+  SC_V6_ILP32_OFFBIG* = cint(177)
+  SC_V6_LP64_OFF64* = cint(178)
+  SC_V6_LPBIG_OFFBIG* = cint(179)
+  SC_VERSION* = cint(29)
+  SC_XBS5_ILP32_OFF32* = cint(125)
+  SC_XBS5_ILP32_OFFBIG* = cint(126)
+  SC_XBS5_LP64_OFF64* = cint(127)
+  SC_XBS5_LPBIG_OFFBIG* = cint(128)
+  SC_XOPEN_CRYPT* = cint(92)
+  SC_XOPEN_ENH_I18N* = cint(93)
+  SC_XOPEN_LEGACY* = cint(129)
+  SC_XOPEN_REALTIME* = cint(130)
+  SC_XOPEN_REALTIME_THREADS* = cint(131)
+  SC_XOPEN_SHM* = cint(94)
+  SC_XOPEN_UNIX* = cint(91)
+  SC_XOPEN_VERSION* = cint(89)
+  SEEK_SET* = cint(0)
+  SEEK_CUR* = cint(1)
+  SEEK_END* = cint(2)
+  SEM_FAILED* = cast[pointer]((nil))
+  IPC_CREAT* = cint(512)
+  IPC_EXCL* = cint(1024)
+  IPC_NOWAIT* = cint(2048)
+  IPC_PRIVATE* = cint(0)
+  IPC_RMID* = cint(0)
+  IPC_SET* = cint(1)
+  IPC_STAT* = cint(2)
+  S_IFMT* = cint(61440)
+  S_IFBLK* = cint(24576)
+  S_IFCHR* = cint(8192)
+  S_IFIFO* = cint(4096)
+  S_IFREG* = cint(32768)
+  S_IFDIR* = cint(16384)
+  S_IFLNK* = cint(40960)
+  S_IFSOCK* = cint(49152)
+  S_IRWXU* = cint(448)
+  S_IRUSR* = cint(256)
+  S_IWUSR* = cint(128)
+  S_IXUSR* = cint(64)
+  S_IRWXG* = cint(56)
+  S_IRGRP* = cint(32)
+  S_IWGRP* = cint(16)
+  S_IXGRP* = cint(8)
+  S_IRWXO* = cint(7)
+  S_IROTH* = cint(4)
+  S_IWOTH* = cint(2)
+  S_IXOTH* = cint(1)
+  S_ISUID* = cint(2048)
+  S_ISGID* = cint(1024)
+  S_ISVTX* = cint(512)
+  ST_RDONLY* = cint(1)
+  ST_NOSUID* = cint(2)
+  PROT_READ* = cint(1)
+  PROT_WRITE* = cint(2)
+  PROT_EXEC* = cint(4)
+  PROT_NONE* = cint(0)
+  MAP_SHARED* = cint(1)
+  MAP_PRIVATE* = cint(2)
+  MAP_FIXED* = cint(16)
+  MS_ASYNC* = cint(1)
+  MS_SYNC* = cint(4)
+  MS_INVALIDATE* = cint(2)
+  MCL_CURRENT* = cint(1)
+  MCL_FUTURE* = cint(2)
+  MAP_FAILED* = cast[pointer](0xffffffffffffffff)
+  POSIX_MADV_NORMAL* = cint(0)
+  POSIX_MADV_SEQUENTIAL* = cint(2)
+  POSIX_MADV_RANDOM* = cint(1)
+  POSIX_MADV_WILLNEED* = cint(3)
+  POSIX_MADV_DONTNEED* = cint(4)
+  CLOCKS_PER_SEC* = clong(1000000)
+  CLOCK_PROCESS_CPUTIME_ID* = cint(2)
+  CLOCK_THREAD_CPUTIME_ID* = cint(3)
+  CLOCK_REALTIME* = cint(0)
+  TIMER_ABSTIME* = cint(1)
+  CLOCK_MONOTONIC* = cint(1)
+  WNOHANG* = cint(1)
+  WUNTRACED* = cint(2)
+  WEXITED* = cint(4)
+  WSTOPPED* = cint(2)
+  WCONTINUED* = cint(8)
+  WNOWAIT* = cint(16777216)
+  SIGEV_NONE* = cint(1)
+  SIGEV_SIGNAL* = cint(0)
+  SIGEV_THREAD* = cint(2)
+  SIGABRT* = cint(6)
+  SIGALRM* = cint(14)
+  SIGBUS* = cint(7)
+  SIGCHLD* = cint(17)
+  SIGCONT* = cint(18)
+  SIGFPE* = cint(8)
+  SIGHUP* = cint(1)
+  SIGILL* = cint(4)
+  SIGINT* = cint(2)
+  SIGKILL* = cint(9)
+  SIGPIPE* = cint(13)
+  SIGQUIT* = cint(3)
+  SIGSEGV* = cint(11)
+  SIGSTOP* = cint(19)
+  SIGTERM* = cint(15)
+  SIGTSTP* = cint(20)
+  SIGTTIN* = cint(21)
+  SIGTTOU* = cint(22)
+  SIGUSR1* = cint(10)
+  SIGUSR2* = cint(12)
+  SIGPOLL* = cint(29)
+  SIGPROF* = cint(27)
+  SIGSYS* = cint(31)
+  SIGTRAP* = cint(5)
+  SIGURG* = cint(23)
+  SIGVTALRM* = cint(26)
+  SIGXCPU* = cint(24)
+  SIGXFSZ* = cint(25)
+  SA_NOCLDSTOP* = cint(1)
+  SIG_BLOCK* = cint(0)
+  SIG_UNBLOCK* = cint(1)
+  SIG_SETMASK* = cint(2)
+  SA_ONSTACK* = cint(134217728)
+  SA_RESETHAND* = cint(-2147483648)
+  SA_RESTART* = cint(268435456)
+  SA_SIGINFO* = cint(4)
+  SA_NOCLDWAIT* = cint(2)
+  SA_NODEFER* = cint(1073741824)
+  SS_ONSTACK* = cint(1)
+  SS_DISABLE* = cint(2)
+  MINSIGSTKSZ* = cint(2048)
+  SIGSTKSZ* = cint(8192)
+  NL_SETD* = cint(1)
+  NL_CAT_LOCALE* = cint(1)
+  SCHED_FIFO* = cint(1)
+  SCHED_RR* = cint(2)
+  SCHED_OTHER* = cint(0)
+  FD_SETSIZE* = cint(1024)
+  IF_NAMESIZE* = cint(16)
+  SCM_RIGHTS* = cint(1)
+  SOCK_DGRAM* = cint(2)
+  SOCK_RAW* = cint(3)
+  SOCK_SEQPACKET* = cint(5)
+  SOCK_STREAM* = cint(1)
+  SOL_SOCKET* = cint(1)
+  SO_ACCEPTCONN* = cint(30)
+  SO_BROADCAST* = cint(6)
+  SO_DEBUG* = cint(1)
+  SO_DONTROUTE* = cint(5)
+  SO_ERROR* = cint(4)
+  SO_KEEPALIVE* = cint(9)
+  SO_LINGER* = cint(13)
+  SO_OOBINLINE* = cint(10)
+  SO_RCVBUF* = cint(8)
+  SO_RCVLOWAT* = cint(18)
+  SO_RCVTIMEO* = cint(20)
+  SO_REUSEADDR* = cint(2)
+  SO_SNDBUF* = cint(7)
+  SO_SNDLOWAT* = cint(19)
+  SO_SNDTIMEO* = cint(21)
+  SO_TYPE* = cint(3)
+  SOMAXCONN* = cint(128)
+  MSG_CTRUNC* = cint(8)
+  MSG_DONTROUTE* = cint(4)
+  MSG_EOR* = cint(128)
+  MSG_OOB* = cint(1)
+  MSG_PEEK* = cint(2)
+  MSG_TRUNC* = cint(32)
+  MSG_WAITALL* = cint(256)
+  AF_INET* = cint(2)
+  AF_INET6* = cint(10)
+  AF_UNIX* = cint(1)
+  AF_UNSPEC* = cint(0)
+  SHUT_RD* = cint(0)
+  SHUT_RDWR* = cint(2)
+  SHUT_WR* = cint(1)
+  IPPROTO_IP* = cint(0)
+  IPPROTO_IPV6* = cint(41)
+  IPPROTO_ICMP* = cint(1)
+  IPPROTO_RAW* = cint(255)
+  IPPROTO_TCP* = cint(6)
+  IPPROTO_UDP* = cint(17)
+  INADDR_ANY* = cint(0)
+  INADDR_BROADCAST* = cint(-1)
+  INET_ADDRSTRLEN* = cint(16)
+  IPV6_JOIN_GROUP* = cint(20)
+  IPV6_LEAVE_GROUP* = cint(21)
+  IPV6_MULTICAST_HOPS* = cint(18)
+  IPV6_MULTICAST_IF* = cint(17)
+  IPV6_MULTICAST_LOOP* = cint(19)
+  IPV6_UNICAST_HOPS* = cint(16)
+  IPV6_V6ONLY* = cint(26)
+  IPPORT_RESERVED* = cint(1024)
+  HOST_NOT_FOUND* = cint(1)
+  NO_DATA* = cint(4)
+  NO_RECOVERY* = cint(3)
+  TRY_AGAIN* = cint(2)
+  AI_PASSIVE* = cint(1)
+  AI_CANONNAME* = cint(2)
+  AI_NUMERICHOST* = cint(4)
+  AI_NUMERICSERV* = cint(1024)
+  AI_V4MAPPED* = cint(8)
+  AI_ALL* = cint(16)
+  AI_ADDRCONFIG* = cint(32)
+  NI_NOFQDN* = cint(4)
+  NI_NUMERICHOST* = cint(1)
+  NI_NAMEREQD* = cint(8)
+  NI_NUMERICSERV* = cint(2)
+  NI_DGRAM* = cint(16)
+  EAI_AGAIN* = cint(-3)
+  EAI_BADFLAGS* = cint(-1)
+  EAI_FAIL* = cint(-4)
+  EAI_FAMILY* = cint(-6)
+  EAI_MEMORY* = cint(-10)
+  EAI_NONAME* = cint(-2)
+  EAI_SERVICE* = cint(-8)
+  EAI_SOCKTYPE* = cint(-7)
+  EAI_SYSTEM* = cint(-11)
+  EAI_OVERFLOW* = cint(-12)
+  POLLIN* = cshort(1)
+  POLLPRI* = cshort(2)
+  POLLOUT* = cshort(4)
+  POLLERR* = cshort(8)
+  POLLHUP* = cshort(16)
+  POLLNVAL* = cshort(32)
+  POSIX_SPAWN_RESETIDS* = cint(1)
+  POSIX_SPAWN_SETPGROUP* = cint(2)
+  POSIX_SPAWN_SETSCHEDPARAM* = cint(16)
+  POSIX_SPAWN_SETSCHEDULER* = cint(32)
+  POSIX_SPAWN_SETSIGDEF* = cint(4)
+  POSIX_SPAWN_SETSIGMASK* = cint(8)
diff --git a/lib/posix/linux_consts.nim b/lib/posix/linux_consts.nim
new file mode 100644
index 000000000..2fadcd83b
--- /dev/null
+++ b/lib/posix/linux_consts.nim
@@ -0,0 +1,620 @@
+# Generated by detect.nim
+const
+  AIO_ALLDONE* = cint(2)
+  AIO_CANCELED* = cint(0)
+  AIO_NOTCANCELED* = cint(1)
+  LIO_NOP* = cint(2)
+  LIO_NOWAIT* = cint(1)
+  LIO_READ* = cint(0)
+  LIO_WAIT* = cint(0)
+  LIO_WRITE* = cint(1)
+  RTLD_LAZY* = cint(1)
+  RTLD_NOW* = cint(2)
+  RTLD_GLOBAL* = cint(256)
+  RTLD_LOCAL* = cint(0)
+  E2BIG* = cint(7)
+  EACCES* = cint(13)
+  EADDRINUSE* = cint(98)
+  EADDRNOTAVAIL* = cint(99)
+  EAFNOSUPPORT* = cint(97)
+  EAGAIN* = cint(11)
+  EALREADY* = cint(114)
+  EBADF* = cint(9)
+  EBADMSG* = cint(74)
+  EBUSY* = cint(16)
+  ECANCELED* = cint(125)
+  ECHILD* = cint(10)
+  ECONNABORTED* = cint(103)
+  ECONNREFUSED* = cint(111)
+  ECONNRESET* = cint(104)
+  EDEADLK* = cint(35)
+  EDESTADDRREQ* = cint(89)
+  EDOM* = cint(33)
+  EDQUOT* = cint(122)
+  EEXIST* = cint(17)
+  EFAULT* = cint(14)
+  EFBIG* = cint(27)
+  EHOSTUNREACH* = cint(113)
+  EIDRM* = cint(43)
+  EILSEQ* = cint(84)
+  EINPROGRESS* = cint(115)
+  EINTR* = cint(4)
+  EINVAL* = cint(22)
+  EIO* = cint(5)
+  EISCONN* = cint(106)
+  EISDIR* = cint(21)
+  ELOOP* = cint(40)
+  EMFILE* = cint(24)
+  EMLINK* = cint(31)
+  EMSGSIZE* = cint(90)
+  EMULTIHOP* = cint(72)
+  ENAMETOOLONG* = cint(36)
+  ENETDOWN* = cint(100)
+  ENETRESET* = cint(102)
+  ENETUNREACH* = cint(101)
+  ENFILE* = cint(23)
+  ENOBUFS* = cint(105)
+  ENODATA* = cint(61)
+  ENODEV* = cint(19)
+  ENOENT* = cint(2)
+  ENOEXEC* = cint(8)
+  ENOLCK* = cint(37)
+  ENOLINK* = cint(67)
+  ENOMEM* = cint(12)
+  ENOMSG* = cint(42)
+  ENOPROTOOPT* = cint(92)
+  ENOSPC* = cint(28)
+  ENOSR* = cint(63)
+  ENOSTR* = cint(60)
+  ENOSYS* = cint(38)
+  ENOTCONN* = cint(107)
+  ENOTDIR* = cint(20)
+  ENOTEMPTY* = cint(39)
+  ENOTSOCK* = cint(88)
+  ENOTSUP* = cint(95)
+  ENOTTY* = cint(25)
+  ENXIO* = cint(6)
+  EOPNOTSUPP* = cint(95)
+  EOVERFLOW* = cint(75)
+  EPERM* = cint(1)
+  EPIPE* = cint(32)
+  EPROTO* = cint(71)
+  EPROTONOSUPPORT* = cint(93)
+  EPROTOTYPE* = cint(91)
+  ERANGE* = cint(34)
+  EROFS* = cint(30)
+  ESPIPE* = cint(29)
+  ESRCH* = cint(3)
+  ESTALE* = cint(116)
+  ETIME* = cint(62)
+  ETIMEDOUT* = cint(110)
+  ETXTBSY* = cint(26)
+  EWOULDBLOCK* = cint(11)
+  EXDEV* = cint(18)
+  F_DUPFD* = cint(0)
+  F_GETFD* = cint(1)
+  F_SETFD* = cint(2)
+  F_GETFL* = cint(3)
+  F_SETFL* = cint(4)
+  F_GETLK* = cint(5)
+  F_SETLK* = cint(6)
+  F_SETLKW* = cint(7)
+  F_GETOWN* = cint(9)
+  F_SETOWN* = cint(8)
+  FD_CLOEXEC* = cint(1)
+  F_RDLCK* = cint(0)
+  F_UNLCK* = cint(2)
+  F_WRLCK* = cint(1)
+  O_CREAT* = cint(64)
+  O_EXCL* = cint(128)
+  O_NOCTTY* = cint(256)
+  O_TRUNC* = cint(512)
+  O_APPEND* = cint(1024)
+  O_DSYNC* = cint(4096)
+  O_NONBLOCK* = cint(2048)
+  O_RSYNC* = cint(4096)
+  O_SYNC* = cint(4096)
+  O_ACCMODE* = cint(3)
+  O_RDONLY* = cint(0)
+  O_RDWR* = cint(2)
+  O_WRONLY* = cint(1)
+  POSIX_FADV_NORMAL* = cint(0)
+  POSIX_FADV_SEQUENTIAL* = cint(2)
+  POSIX_FADV_RANDOM* = cint(1)
+  POSIX_FADV_WILLNEED* = cint(3)
+  POSIX_FADV_DONTNEED* = cint(4)
+  POSIX_FADV_NOREUSE* = cint(5)
+  FE_DIVBYZERO* = cint(4)
+  FE_INEXACT* = cint(32)
+  FE_INVALID* = cint(1)
+  FE_OVERFLOW* = cint(8)
+  FE_UNDERFLOW* = cint(16)
+  FE_ALL_EXCEPT* = cint(61)
+  FE_DOWNWARD* = cint(1024)
+  FE_TONEAREST* = cint(0)
+  FE_TOWARDZERO* = cint(3072)
+  FE_UPWARD* = cint(2048)
+  FE_DFL_ENV* = cast[pointer](0xffffffffffffffff)
+  MM_HARD* = cint(1)
+  MM_SOFT* = cint(2)
+  MM_FIRM* = cint(4)
+  MM_APPL* = cint(8)
+  MM_UTIL* = cint(16)
+  MM_OPSYS* = cint(32)
+  MM_RECOVER* = cint(64)
+  MM_NRECOV* = cint(128)
+  MM_HALT* = cint(1)
+  MM_ERROR* = cint(2)
+  MM_WARNING* = cint(3)
+  MM_INFO* = cint(4)
+  MM_NOSEV* = cint(0)
+  MM_PRINT* = cint(256)
+  MM_CONSOLE* = cint(512)
+  MM_OK* = cint(0)
+  MM_NOTOK* = cint(-1)
+  MM_NOMSG* = cint(1)
+  MM_NOCON* = cint(4)
+  FNM_NOMATCH* = cint(1)
+  FNM_PATHNAME* = cint(1)
+  FNM_PERIOD* = cint(4)
+  FNM_NOESCAPE* = cint(2)
+  FTW_F* = cint(0)
+  FTW_D* = cint(1)
+  FTW_DNR* = cint(2)
+  FTW_NS* = cint(3)
+  FTW_SL* = cint(4)
+  GLOB_APPEND* = cint(32)
+  GLOB_DOOFFS* = cint(8)
+  GLOB_ERR* = cint(1)
+  GLOB_MARK* = cint(2)
+  GLOB_NOCHECK* = cint(16)
+  GLOB_NOESCAPE* = cint(64)
+  GLOB_NOSORT* = cint(4)
+  GLOB_ABORTED* = cint(2)
+  GLOB_NOMATCH* = cint(3)
+  GLOB_NOSPACE* = cint(1)
+  GLOB_NOSYS* = cint(4)
+  CODESET* = cint(14)
+  D_T_FMT* = cint(131112)
+  D_FMT* = cint(131113)
+  T_FMT* = cint(131114)
+  T_FMT_AMPM* = cint(131115)
+  AM_STR* = cint(131110)
+  PM_STR* = cint(131111)
+  DAY_1* = cint(131079)
+  DAY_2* = cint(131080)
+  DAY_3* = cint(131081)
+  DAY_4* = cint(131082)
+  DAY_5* = cint(131083)
+  DAY_6* = cint(131084)
+  DAY_7* = cint(131085)
+  ABDAY_1* = cint(131072)
+  ABDAY_2* = cint(131073)
+  ABDAY_3* = cint(131074)
+  ABDAY_4* = cint(131075)
+  ABDAY_5* = cint(131076)
+  ABDAY_6* = cint(131077)
+  ABDAY_7* = cint(131078)
+  MON_1* = cint(131098)
+  MON_2* = cint(131099)
+  MON_3* = cint(131100)
+  MON_4* = cint(131101)
+  MON_5* = cint(131102)
+  MON_6* = cint(131103)
+  MON_7* = cint(131104)
+  MON_8* = cint(131105)
+  MON_9* = cint(131106)
+  MON_10* = cint(131107)
+  MON_11* = cint(131108)
+  MON_12* = cint(131109)
+  ABMON_1* = cint(131086)
+  ABMON_2* = cint(131087)
+  ABMON_3* = cint(131088)
+  ABMON_4* = cint(131089)
+  ABMON_5* = cint(131090)
+  ABMON_6* = cint(131091)
+  ABMON_7* = cint(131092)
+  ABMON_8* = cint(131093)
+  ABMON_9* = cint(131094)
+  ABMON_10* = cint(131095)
+  ABMON_11* = cint(131096)
+  ABMON_12* = cint(131097)
+  ERA* = cint(131116)
+  ERA_D_FMT* = cint(131118)
+  ERA_D_T_FMT* = cint(131120)
+  ERA_T_FMT* = cint(131121)
+  ALT_DIGITS* = cint(131119)
+  RADIXCHAR* = cint(65536)
+  THOUSEP* = cint(65537)
+  YESEXPR* = cint(327680)
+  NOEXPR* = cint(327681)
+  CRNCYSTR* = cint(262159)
+  LC_ALL* = cint(6)
+  LC_COLLATE* = cint(3)
+  LC_CTYPE* = cint(0)
+  LC_MESSAGES* = cint(5)
+  LC_MONETARY* = cint(4)
+  LC_NUMERIC* = cint(1)
+  LC_TIME* = cint(2)
+  PTHREAD_BARRIER_SERIAL_THREAD* = cint(-1)
+  PTHREAD_CANCEL_ASYNCHRONOUS* = cint(1)
+  PTHREAD_CANCEL_ENABLE* = cint(0)
+  PTHREAD_CANCEL_DEFERRED* = cint(0)
+  PTHREAD_CANCEL_DISABLE* = cint(1)
+  PTHREAD_CREATE_DETACHED* = cint(1)
+  PTHREAD_CREATE_JOINABLE* = cint(0)
+  PTHREAD_EXPLICIT_SCHED* = cint(1)
+  PTHREAD_INHERIT_SCHED* = cint(0)
+  PTHREAD_ONCE_INIT* = cint(0)
+  PTHREAD_PROCESS_SHARED* = cint(1)
+  PTHREAD_PROCESS_PRIVATE* = cint(0)
+  PTHREAD_SCOPE_PROCESS* = cint(1)
+  PTHREAD_SCOPE_SYSTEM* = cint(0)
+  POSIX_ASYNC_IO* = cint(1)
+  F_OK* = cint(0)
+  R_OK* = cint(4)
+  W_OK* = cint(2)
+  X_OK* = cint(1)
+  CS_PATH* = cint(0)
+  CS_POSIX_V6_ILP32_OFF32_CFLAGS* = cint(1116)
+  CS_POSIX_V6_ILP32_OFF32_LDFLAGS* = cint(1117)
+  CS_POSIX_V6_ILP32_OFF32_LIBS* = cint(1118)
+  CS_POSIX_V6_ILP32_OFFBIG_CFLAGS* = cint(1120)
+  CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS* = cint(1121)
+  CS_POSIX_V6_ILP32_OFFBIG_LIBS* = cint(1122)
+  CS_POSIX_V6_LP64_OFF64_CFLAGS* = cint(1124)
+  CS_POSIX_V6_LP64_OFF64_LDFLAGS* = cint(1125)
+  CS_POSIX_V6_LP64_OFF64_LIBS* = cint(1126)
+  CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS* = cint(1128)
+  CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS* = cint(1129)
+  CS_POSIX_V6_LPBIG_OFFBIG_LIBS* = cint(1130)
+  CS_POSIX_V6_WIDTH_RESTRICTED_ENVS* = cint(1)
+  F_LOCK* = cint(1)
+  F_TEST* = cint(3)
+  F_TLOCK* = cint(2)
+  F_ULOCK* = cint(0)
+  PC_2_SYMLINKS* = cint(20)
+  PC_ALLOC_SIZE_MIN* = cint(18)
+  PC_ASYNC_IO* = cint(10)
+  PC_CHOWN_RESTRICTED* = cint(6)
+  PC_FILESIZEBITS* = cint(13)
+  PC_LINK_MAX* = cint(0)
+  PC_MAX_CANON* = cint(1)
+  PC_MAX_INPUT* = cint(2)
+  PC_NAME_MAX* = cint(3)
+  PC_NO_TRUNC* = cint(7)
+  PC_PATH_MAX* = cint(4)
+  PC_PIPE_BUF* = cint(5)
+  PC_PRIO_IO* = cint(11)
+  PC_REC_INCR_XFER_SIZE* = cint(14)
+  PC_REC_MIN_XFER_SIZE* = cint(16)
+  PC_REC_XFER_ALIGN* = cint(17)
+  PC_SYMLINK_MAX* = cint(19)
+  PC_SYNC_IO* = cint(9)
+  PC_VDISABLE* = cint(8)
+  SC_2_C_BIND* = cint(47)
+  SC_2_C_DEV* = cint(48)
+  SC_2_CHAR_TERM* = cint(95)
+  SC_2_FORT_DEV* = cint(49)
+  SC_2_FORT_RUN* = cint(50)
+  SC_2_LOCALEDEF* = cint(52)
+  SC_2_PBS* = cint(168)
+  SC_2_PBS_ACCOUNTING* = cint(169)
+  SC_2_PBS_CHECKPOINT* = cint(175)
+  SC_2_PBS_LOCATE* = cint(170)
+  SC_2_PBS_MESSAGE* = cint(171)
+  SC_2_PBS_TRACK* = cint(172)
+  SC_2_SW_DEV* = cint(51)
+  SC_2_UPE* = cint(97)
+  SC_2_VERSION* = cint(46)
+  SC_ADVISORY_INFO* = cint(132)
+  SC_AIO_LISTIO_MAX* = cint(23)
+  SC_AIO_MAX* = cint(24)
+  SC_AIO_PRIO_DELTA_MAX* = cint(25)
+  SC_ARG_MAX* = cint(0)
+  SC_ASYNCHRONOUS_IO* = cint(12)
+  SC_ATEXIT_MAX* = cint(87)
+  SC_BARRIERS* = cint(133)
+  SC_BC_BASE_MAX* = cint(36)
+  SC_BC_DIM_MAX* = cint(37)
+  SC_BC_SCALE_MAX* = cint(38)
+  SC_BC_STRING_MAX* = cint(39)
+  SC_CHILD_MAX* = cint(1)
+  SC_CLK_TCK* = cint(2)
+  SC_CLOCK_SELECTION* = cint(137)
+  SC_COLL_WEIGHTS_MAX* = cint(40)
+  SC_CPUTIME* = cint(138)
+  SC_DELAYTIMER_MAX* = cint(26)
+  SC_EXPR_NEST_MAX* = cint(42)
+  SC_FSYNC* = cint(15)
+  SC_GETGR_R_SIZE_MAX* = cint(69)
+  SC_GETPW_R_SIZE_MAX* = cint(70)
+  SC_HOST_NAME_MAX* = cint(180)
+  SC_IOV_MAX* = cint(60)
+  SC_IPV6* = cint(235)
+  SC_JOB_CONTROL* = cint(7)
+  SC_LINE_MAX* = cint(43)
+  SC_LOGIN_NAME_MAX* = cint(71)
+  SC_MAPPED_FILES* = cint(16)
+  SC_MEMLOCK* = cint(17)
+  SC_MEMLOCK_RANGE* = cint(18)
+  SC_MEMORY_PROTECTION* = cint(19)
+  SC_MESSAGE_PASSING* = cint(20)
+  SC_MONOTONIC_CLOCK* = cint(149)
+  SC_MQ_OPEN_MAX* = cint(27)
+  SC_MQ_PRIO_MAX* = cint(28)
+  SC_NGROUPS_MAX* = cint(3)
+  SC_OPEN_MAX* = cint(4)
+  SC_PAGE_SIZE* = cint(30)
+  SC_PRIORITIZED_IO* = cint(13)
+  SC_PRIORITY_SCHEDULING* = cint(10)
+  SC_RAW_SOCKETS* = cint(236)
+  SC_RE_DUP_MAX* = cint(44)
+  SC_READER_WRITER_LOCKS* = cint(153)
+  SC_REALTIME_SIGNALS* = cint(9)
+  SC_REGEXP* = cint(155)
+  SC_RTSIG_MAX* = cint(31)
+  SC_SAVED_IDS* = cint(8)
+  SC_SEM_NSEMS_MAX* = cint(32)
+  SC_SEM_VALUE_MAX* = cint(33)
+  SC_SEMAPHORES* = cint(21)
+  SC_SHARED_MEMORY_OBJECTS* = cint(22)
+  SC_SHELL* = cint(157)
+  SC_SIGQUEUE_MAX* = cint(34)
+  SC_SPAWN* = cint(159)
+  SC_SPIN_LOCKS* = cint(154)
+  SC_SPORADIC_SERVER* = cint(160)
+  SC_STREAM_MAX* = cint(5)
+  SC_SYMLOOP_MAX* = cint(173)
+  SC_SYNCHRONIZED_IO* = cint(14)
+  SC_THREAD_ATTR_STACKADDR* = cint(77)
+  SC_THREAD_ATTR_STACKSIZE* = cint(78)
+  SC_THREAD_CPUTIME* = cint(139)
+  SC_THREAD_DESTRUCTOR_ITERATIONS* = cint(73)
+  SC_THREAD_KEYS_MAX* = cint(74)
+  SC_THREAD_PRIO_INHERIT* = cint(80)
+  SC_THREAD_PRIO_PROTECT* = cint(81)
+  SC_THREAD_PRIORITY_SCHEDULING* = cint(79)
+  SC_THREAD_PROCESS_SHARED* = cint(82)
+  SC_THREAD_SAFE_FUNCTIONS* = cint(68)
+  SC_THREAD_SPORADIC_SERVER* = cint(161)
+  SC_THREAD_STACK_MIN* = cint(75)
+  SC_THREAD_THREADS_MAX* = cint(76)
+  SC_THREADS* = cint(67)
+  SC_TIMEOUTS* = cint(164)
+  SC_TIMER_MAX* = cint(35)
+  SC_TIMERS* = cint(11)
+  SC_TRACE* = cint(181)
+  SC_TRACE_EVENT_FILTER* = cint(182)
+  SC_TRACE_INHERIT* = cint(183)
+  SC_TRACE_LOG* = cint(184)
+  SC_TTY_NAME_MAX* = cint(72)
+  SC_TYPED_MEMORY_OBJECTS* = cint(165)
+  SC_TZNAME_MAX* = cint(6)
+  SC_V6_ILP32_OFF32* = cint(176)
+  SC_V6_ILP32_OFFBIG* = cint(177)
+  SC_V6_LP64_OFF64* = cint(178)
+  SC_V6_LPBIG_OFFBIG* = cint(179)
+  SC_VERSION* = cint(29)
+  SC_XBS5_ILP32_OFF32* = cint(125)
+  SC_XBS5_ILP32_OFFBIG* = cint(126)
+  SC_XBS5_LP64_OFF64* = cint(127)
+  SC_XBS5_LPBIG_OFFBIG* = cint(128)
+  SC_XOPEN_CRYPT* = cint(92)
+  SC_XOPEN_ENH_I18N* = cint(93)
+  SC_XOPEN_LEGACY* = cint(129)
+  SC_XOPEN_REALTIME* = cint(130)
+  SC_XOPEN_REALTIME_THREADS* = cint(131)
+  SC_XOPEN_SHM* = cint(94)
+  SC_XOPEN_UNIX* = cint(91)
+  SC_XOPEN_VERSION* = cint(89)
+  SEEK_SET* = cint(0)
+  SEEK_CUR* = cint(1)
+  SEEK_END* = cint(2)
+  SEM_FAILED* = cast[pointer]((nil))
+  IPC_CREAT* = cint(512)
+  IPC_EXCL* = cint(1024)
+  IPC_NOWAIT* = cint(2048)
+  IPC_PRIVATE* = cint(0)
+  IPC_RMID* = cint(0)
+  IPC_SET* = cint(1)
+  IPC_STAT* = cint(2)
+  S_IFMT* = cint(61440)
+  S_IFBLK* = cint(24576)
+  S_IFCHR* = cint(8192)
+  S_IFIFO* = cint(4096)
+  S_IFREG* = cint(32768)
+  S_IFDIR* = cint(16384)
+  S_IFLNK* = cint(40960)
+  S_IFSOCK* = cint(49152)
+  S_IRWXU* = cint(448)
+  S_IRUSR* = cint(256)
+  S_IWUSR* = cint(128)
+  S_IXUSR* = cint(64)
+  S_IRWXG* = cint(56)
+  S_IRGRP* = cint(32)
+  S_IWGRP* = cint(16)
+  S_IXGRP* = cint(8)
+  S_IRWXO* = cint(7)
+  S_IROTH* = cint(4)
+  S_IWOTH* = cint(2)
+  S_IXOTH* = cint(1)
+  S_ISUID* = cint(2048)
+  S_ISGID* = cint(1024)
+  S_ISVTX* = cint(512)
+  ST_RDONLY* = cint(1)
+  ST_NOSUID* = cint(2)
+  PROT_READ* = cint(1)
+  PROT_WRITE* = cint(2)
+  PROT_EXEC* = cint(4)
+  PROT_NONE* = cint(0)
+  MAP_SHARED* = cint(1)
+  MAP_PRIVATE* = cint(2)
+  MAP_FIXED* = cint(16)
+  MS_ASYNC* = cint(1)
+  MS_SYNC* = cint(4)
+  MS_INVALIDATE* = cint(2)
+  MCL_CURRENT* = cint(1)
+  MCL_FUTURE* = cint(2)
+  MAP_FAILED* = cast[pointer](0xffffffffffffffff)
+  POSIX_MADV_NORMAL* = cint(0)
+  POSIX_MADV_SEQUENTIAL* = cint(2)
+  POSIX_MADV_RANDOM* = cint(1)
+  POSIX_MADV_WILLNEED* = cint(3)
+  POSIX_MADV_DONTNEED* = cint(4)
+  CLOCKS_PER_SEC* = clong(1000000)
+  CLOCK_PROCESS_CPUTIME_ID* = cint(2)
+  CLOCK_THREAD_CPUTIME_ID* = cint(3)
+  CLOCK_REALTIME* = cint(0)
+  TIMER_ABSTIME* = cint(1)
+  CLOCK_MONOTONIC* = cint(1)
+  WNOHANG* = cint(1)
+  WUNTRACED* = cint(2)
+  WEXITED* = cint(4)
+  WSTOPPED* = cint(2)
+  WCONTINUED* = cint(8)
+  WNOWAIT* = cint(16777216)
+  SIGEV_NONE* = cint(1)
+  SIGEV_SIGNAL* = cint(0)
+  SIGEV_THREAD* = cint(2)
+  SIGABRT* = cint(6)
+  SIGALRM* = cint(14)
+  SIGBUS* = cint(7)
+  SIGCHLD* = cint(17)
+  SIGCONT* = cint(18)
+  SIGFPE* = cint(8)
+  SIGHUP* = cint(1)
+  SIGILL* = cint(4)
+  SIGINT* = cint(2)
+  SIGKILL* = cint(9)
+  SIGPIPE* = cint(13)
+  SIGQUIT* = cint(3)
+  SIGSEGV* = cint(11)
+  SIGSTOP* = cint(19)
+  SIGTERM* = cint(15)
+  SIGTSTP* = cint(20)
+  SIGTTIN* = cint(21)
+  SIGTTOU* = cint(22)
+  SIGUSR1* = cint(10)
+  SIGUSR2* = cint(12)
+  SIGPOLL* = cint(29)
+  SIGPROF* = cint(27)
+  SIGSYS* = cint(31)
+  SIGTRAP* = cint(5)
+  SIGURG* = cint(23)
+  SIGVTALRM* = cint(26)
+  SIGXCPU* = cint(24)
+  SIGXFSZ* = cint(25)
+  SA_NOCLDSTOP* = cint(1)
+  SIG_BLOCK* = cint(0)
+  SIG_UNBLOCK* = cint(1)
+  SIG_SETMASK* = cint(2)
+  SA_ONSTACK* = cint(134217728)
+  SA_RESETHAND* = cint(-2147483648)
+  SA_RESTART* = cint(268435456)
+  SA_SIGINFO* = cint(4)
+  SA_NOCLDWAIT* = cint(2)
+  SA_NODEFER* = cint(1073741824)
+  SS_ONSTACK* = cint(1)
+  SS_DISABLE* = cint(2)
+  MINSIGSTKSZ* = cint(2048)
+  SIGSTKSZ* = cint(8192)
+  NL_SETD* = cint(1)
+  NL_CAT_LOCALE* = cint(1)
+  SCHED_FIFO* = cint(1)
+  SCHED_RR* = cint(2)
+  SCHED_OTHER* = cint(0)
+  FD_SETSIZE* = cint(1024)
+  IF_NAMESIZE* = cint(16)
+  SCM_RIGHTS* = cint(1)
+  SOCK_DGRAM* = cint(2)
+  SOCK_RAW* = cint(3)
+  SOCK_SEQPACKET* = cint(5)
+  SOCK_STREAM* = cint(1)
+  SOL_SOCKET* = cint(1)
+  SO_ACCEPTCONN* = cint(30)
+  SO_BROADCAST* = cint(6)
+  SO_DEBUG* = cint(1)
+  SO_DONTROUTE* = cint(5)
+  SO_ERROR* = cint(4)
+  SO_KEEPALIVE* = cint(9)
+  SO_LINGER* = cint(13)
+  SO_OOBINLINE* = cint(10)
+  SO_RCVBUF* = cint(8)
+  SO_RCVLOWAT* = cint(18)
+  SO_RCVTIMEO* = cint(20)
+  SO_REUSEADDR* = cint(2)
+  SO_SNDBUF* = cint(7)
+  SO_SNDLOWAT* = cint(19)
+  SO_SNDTIMEO* = cint(21)
+  SO_TYPE* = cint(3)
+  SOMAXCONN* = cint(128)
+  MSG_CTRUNC* = cint(8)
+  MSG_DONTROUTE* = cint(4)
+  MSG_EOR* = cint(128)
+  MSG_OOB* = cint(1)
+  MSG_PEEK* = cint(2)
+  MSG_TRUNC* = cint(32)
+  MSG_WAITALL* = cint(256)
+  AF_INET* = cint(2)
+  AF_INET6* = cint(10)
+  AF_UNIX* = cint(1)
+  AF_UNSPEC* = cint(0)
+  SHUT_RD* = cint(0)
+  SHUT_RDWR* = cint(2)
+  SHUT_WR* = cint(1)
+  IPPROTO_IP* = cint(0)
+  IPPROTO_IPV6* = cint(41)
+  IPPROTO_ICMP* = cint(1)
+  IPPROTO_RAW* = cint(255)
+  IPPROTO_TCP* = cint(6)
+  IPPROTO_UDP* = cint(17)
+  INADDR_ANY* = cint(0)
+  INADDR_BROADCAST* = cint(-1)
+  INET_ADDRSTRLEN* = cint(16)
+  IPV6_JOIN_GROUP* = cint(20)
+  IPV6_LEAVE_GROUP* = cint(21)
+  IPV6_MULTICAST_HOPS* = cint(18)
+  IPV6_MULTICAST_IF* = cint(17)
+  IPV6_MULTICAST_LOOP* = cint(19)
+  IPV6_UNICAST_HOPS* = cint(16)
+  IPV6_V6ONLY* = cint(26)
+  IPPORT_RESERVED* = cint(1024)
+  HOST_NOT_FOUND* = cint(1)
+  NO_DATA* = cint(4)
+  NO_RECOVERY* = cint(3)
+  TRY_AGAIN* = cint(2)
+  AI_PASSIVE* = cint(1)
+  AI_CANONNAME* = cint(2)
+  AI_NUMERICHOST* = cint(4)
+  AI_NUMERICSERV* = cint(1024)
+  AI_V4MAPPED* = cint(8)
+  AI_ALL* = cint(16)
+  AI_ADDRCONFIG* = cint(32)
+  NI_NOFQDN* = cint(4)
+  NI_NUMERICHOST* = cint(1)
+  NI_NAMEREQD* = cint(8)
+  NI_NUMERICSERV* = cint(2)
+  NI_DGRAM* = cint(16)
+  EAI_AGAIN* = cint(-3)
+  EAI_BADFLAGS* = cint(-1)
+  EAI_FAIL* = cint(-4)
+  EAI_FAMILY* = cint(-6)
+  EAI_MEMORY* = cint(-10)
+  EAI_NONAME* = cint(-2)
+  EAI_SERVICE* = cint(-8)
+  EAI_SOCKTYPE* = cint(-7)
+  EAI_SYSTEM* = cint(-11)
+  EAI_OVERFLOW* = cint(-12)
+  POLLIN* = cshort(1)
+  POLLPRI* = cshort(2)
+  POLLOUT* = cshort(4)
+  POLLERR* = cshort(8)
+  POLLHUP* = cshort(16)
+  POLLNVAL* = cshort(32)
+  POSIX_SPAWN_RESETIDS* = cint(1)
+  POSIX_SPAWN_SETPGROUP* = cint(2)
+  POSIX_SPAWN_SETSCHEDPARAM* = cint(16)
+  POSIX_SPAWN_SETSCHEDULER* = cint(32)
+  POSIX_SPAWN_SETSIGDEF* = cint(4)
+  POSIX_SPAWN_SETSIGMASK* = cint(8)