enum clockid {
  // The clock measuring real time. Time value zero corresponds with
  // 1970-01-01T00:00:00Z.
  realtime,
  // The store-wide monotonic clock, which is defined as a clock measuring
  // real time, whose value cannot be adjusted and which cannot have negative
  // clock jumps. The epoch of this clock is undefined. The absolute time
  // value of this clock therefore has no meaning.
  monotonic,
}

// Timestamp in nanoseconds.
type timestamp = u64

// Error codes returned by functions.
// Not all of these error codes are returned by the functions provided by this
// API/ some are used in higher-level library layers, and others are provided
// merely for alignment with POSIX.
enum errno {
  // No error occurred. System call completed successfully.
  success,
  // Argument list too long.
  toobig,
  // Permission denied.
  access,
  // Address in use.
  addrinuse,
  // Address not available.
  addrnotavail,
  // Address family not supported.
  afnosupport,
  // Resource unavailable, or operation would block.
  again,
  // Connection already in progress.
  already,
  // Bad file descriptor.
  badf,
  // Bad message.
  badmsg,
  // Device or resource busy.
  busy,
  // Operation canceled.
  canceled,
  // No child processes.
  child,
  // Connection aborted.
  connaborted,
  // Connection refused.
  connrefused,
  // Connection reset.
  connreset,
  // Resource deadlock would occur.
  deadlk,
  // Destination address required.
  destaddrreq,
  // Mathematics argument out of domain of function.
  dom,
  // Reserved.
  dquot,
  // File exists.
  exist,
  // Bad address.
  fault,
  // File too large.
  fbig,
  // Host is unreachable.
  hostunreach,
  // Identifier removed.
  idrm,
  // Illegal byte sequence.
  ilseq,
  // Operation in progress.
  inprogress,
  // Interrupted function.
  intr,
  // Invalid argument.
  inval,
  // I/O error.
  io,
  // Socket is connected.
  isconn,
  // Is a directory.
  isdir,
  // Too many levels of symbolic links.
  loop,
  // File descriptor value too large.
  mfile,
  // Too many links.
  mlink,
  // Message too large.
  msgsize,
  // Reserved.
  multihop,
  // Filename too long.
  nametoolong,
  // Network is down.
  netdown,
  // Connection aborted by network.
  netreset,
  // Network unreachable.
  netunreach,
  // Too many files open in system.
  nfile,
  // No buffer space available.
  nobufs,
  // No such device.
  nodev,
  // No such file or directory.
  noent,
  // Executable file format error.
  noexec,
  // No locks available.
  nolck,
  // Reserved.
  nolink,
  // Not enough space.
  nomem,
  // No message of the desired type.
  nomsg,
  // Protocol not available.
  noprotoopt,
  // No space left on device.
  nospc,
  // Function not supported.
  nosys,
  // The socket is not connected.
  notconn,
  // Not a directory or a symbolic link to a directory.
  notdir,
  // Directory not empty.
  notempty,
  // State not recoverable.
  notrecoverable,
  // Not a socket.
  notsock,
  // Not supported, or operation not supported on socket.
  notsup,
  // Inappropriate I/O control operation.
  notty,
  // No such device or address.
  nxio,
  // Value too large to be stored in data type.
  overflow,
  // Previous owner died.
  ownerdead,
  // Operation not permitted.
  perm,
  // Broken pipe.
  pipe,
  // Protocol error.
  proto,
  // Protocol not supported.
  protonosupport,
  // Protocol wrong type for socket.
  prototype,
  // Result too large.
  range,
  // Read-only file system.
  rofs,
  // Invalid seek.
  spipe,
  // No such process.
  srch,
  // Reserved.
  stale,
  // Connection timed out.
  timedout,
  // Text file busy.
  txtbsy,
  // Cross-device link.
  xdev,
  // Extension: Capabilities insufficient.
  notcapable,
}
