diff options
Diffstat (limited to 'lib/std/c/windows.zig')
| -rw-r--r-- | lib/std/c/windows.zig | 340 |
1 files changed, 340 insertions, 0 deletions
diff --git a/lib/std/c/windows.zig b/lib/std/c/windows.zig index a10715f083..449508fd05 100644 --- a/lib/std/c/windows.zig +++ b/lib/std/c/windows.zig @@ -1,3 +1,343 @@ +//! The reference for these types and values is Microsoft Windows's ucrt (Universal C RunTime). + +const ws2_32 = @import("../os/windows/ws2_32.zig"); + pub extern "c" fn _errno() *c_int; pub extern "c" fn _msize(memblock: ?*c_void) usize; + +// TODO: copied the else case and removed the socket function (because its in ws2_32) +// need to verify which of these is actually supported on windows +pub extern "c" fn clock_getres(clk_id: c_int, tp: *timespec) c_int; +pub extern "c" fn clock_gettime(clk_id: c_int, tp: *timespec) c_int; +pub extern "c" fn fstat(fd: fd_t, buf: *Stat) c_int; +pub extern "c" fn getrusage(who: c_int, usage: *rusage) c_int; +pub extern "c" fn gettimeofday(noalias tv: ?*timeval, noalias tz: ?*timezone) c_int; +pub extern "c" fn nanosleep(rqtp: *const timespec, rmtp: ?*timespec) c_int; +pub extern "c" fn sched_yield() c_int; +pub extern "c" fn sigaction(sig: c_int, noalias act: ?*const Sigaction, noalias oact: ?*Sigaction) c_int; +pub extern "c" fn sigprocmask(how: c_int, noalias set: ?*const sigset_t, noalias oset: ?*sigset_t) c_int; +pub extern "c" fn stat(noalias path: [*:0]const u8, noalias buf: *Stat) c_int; +pub extern "c" fn sigfillset(set: ?*sigset_t) void; +pub extern "c" fn alarm(seconds: c_uint) c_uint; +pub extern "c" fn sigwait(set: ?*sigset_t, sig: ?*c_int) c_int; + +pub const fd_t = HANDLE; +pub const ino_t = LARGE_INTEGER; +pub const pid_t = HANDLE; +pub const mode_t = u0; + +pub const PATH_MAX = 260; + +pub const time_t = c_longlong; + +pub const timespec = extern struct { + tv_sec: time_t, + tv_nsec: c_long, +}; + +pub const timeval = extern struct { + tv_sec: c_long, + tv_usec: c_long, +}; + +pub const sig_atomic_t = c_int; + +/// maximum signal number + 1 +pub const NSIG = 23; + +// Signal types + +/// interrupt +pub const SIGINT = 2; + +/// illegal instruction - invalid function image +pub const SIGILL = 4; + +/// floating point exception +pub const SIGFPE = 8; + +/// segment violation +pub const SIGSEGV = 11; + +/// Software termination signal from kill +pub const SIGTERM = 15; + +/// Ctrl-Break sequence +pub const SIGBREAK = 21; + +/// abnormal termination triggered by abort call +pub const SIGABRT = 22; + +/// SIGABRT compatible with other platforms, same as SIGABRT +pub const SIGABRT_COMPAT = 6; + +// Signal action codes + +/// default signal action +pub const SIG_DFL = 0; + +/// ignore signal +pub const SIG_IGN = 1; + +/// return current value +pub const SIG_GET = 2; + +/// signal gets error +pub const SIG_SGE = 3; + +/// acknowledge +pub const SIG_ACK = 4; + +/// Signal error value (returned by signal call on error) +pub const SIG_ERR = -1; + +pub const SEEK_SET = 0; +pub const SEEK_CUR = 1; +pub const SEEK_END = 2; + +pub const E = enum(u16) { + /// No error occurred. + SUCCESS = 0, + PERM = 1, + NOENT = 2, + SRCH = 3, + INTR = 4, + IO = 5, + NXIO = 6, + @"2BIG" = 7, + NOEXEC = 8, + BADF = 9, + CHILD = 10, + AGAIN = 11, + NOMEM = 12, + ACCES = 13, + FAULT = 14, + BUSY = 16, + EXIST = 17, + XDEV = 18, + NODEV = 19, + NOTDIR = 20, + ISDIR = 21, + NFILE = 23, + MFILE = 24, + NOTTY = 25, + FBIG = 27, + NOSPC = 28, + SPIPE = 29, + ROFS = 30, + MLINK = 31, + PIPE = 32, + DOM = 33, + /// Also means `DEADLOCK`. + DEADLK = 36, + NAMETOOLONG = 38, + NOLCK = 39, + NOSYS = 40, + NOTEMPTY = 41, + + INVAL = 22, + RANGE = 34, + ILSEQ = 42, + + // POSIX Supplement + ADDRINUSE = 100, + ADDRNOTAVAIL = 101, + AFNOSUPPORT = 102, + ALREADY = 103, + BADMSG = 104, + CANCELED = 105, + CONNABORTED = 106, + CONNREFUSED = 107, + CONNRESET = 108, + DESTADDRREQ = 109, + HOSTUNREACH = 110, + IDRM = 111, + INPROGRESS = 112, + ISCONN = 113, + LOOP = 114, + MSGSIZE = 115, + NETDOWN = 116, + NETRESET = 117, + NETUNREACH = 118, + NOBUFS = 119, + NODATA = 120, + NOLINK = 121, + NOMSG = 122, + NOPROTOOPT = 123, + NOSR = 124, + NOSTR = 125, + NOTCONN = 126, + NOTRECOVERABLE = 127, + NOTSOCK = 128, + NOTSUP = 129, + OPNOTSUPP = 130, + OTHER = 131, + OVERFLOW = 132, + OWNERDEAD = 133, + PROTO = 134, + PROTONOSUPPORT = 135, + PROTOTYPE = 136, + TIME = 137, + TIMEDOUT = 138, + TXTBSY = 139, + WOULDBLOCK = 140, + DQUOT = 10069, + _, +}; + +pub const STRUNCATE = 80; + +pub const F_OK = 0; + +/// Remove directory instead of unlinking file +pub const AT_REMOVEDIR = 0x200; + +pub const in_port_t = u16; +pub const sa_family_t = ws2_32.ADDRESS_FAMILY; +pub const socklen_t = ws2_32.socklen_t; + +pub const sockaddr = ws2_32.sockaddr; +pub const sockaddr_in = ws2_32.sockaddr_in; +pub const sockaddr_in6 = ws2_32.sockaddr_in6; +pub const sockaddr_un = ws2_32.sockaddr_un; + +pub const in6_addr = [16]u8; +pub const in_addr = u32; + +pub const addrinfo = ws2_32.addrinfo; + +pub const AF_UNSPEC = ws2_32.AF_UNSPEC; +pub const AF_UNIX = ws2_32.AF_UNIX; +pub const AF_INET = ws2_32.AF_INET; +pub const AF_IMPLINK = ws2_32.AF_IMPLINK; +pub const AF_PUP = ws2_32.AF_PUP; +pub const AF_CHAOS = ws2_32.AF_CHAOS; +pub const AF_NS = ws2_32.AF_NS; +pub const AF_IPX = ws2_32.AF_IPX; +pub const AF_ISO = ws2_32.AF_ISO; +pub const AF_OSI = ws2_32.AF_OSI; +pub const AF_ECMA = ws2_32.AF_ECMA; +pub const AF_DATAKIT = ws2_32.AF_DATAKIT; +pub const AF_CCITT = ws2_32.AF_CCITT; +pub const AF_SNA = ws2_32.AF_SNA; +pub const AF_DECnet = ws2_32.AF_DECnet; +pub const AF_DLI = ws2_32.AF_DLI; +pub const AF_LAT = ws2_32.AF_LAT; +pub const AF_HYLINK = ws2_32.AF_HYLINK; +pub const AF_APPLETALK = ws2_32.AF_APPLETALK; +pub const AF_NETBIOS = ws2_32.AF_NETBIOS; +pub const AF_VOICEVIEW = ws2_32.AF_VOICEVIEW; +pub const AF_FIREFOX = ws2_32.AF_FIREFOX; +pub const AF_UNKNOWN1 = ws2_32.AF_UNKNOWN1; +pub const AF_BAN = ws2_32.AF_BAN; +pub const AF_ATM = ws2_32.AF_ATM; +pub const AF_INET6 = ws2_32.AF_INET6; +pub const AF_CLUSTER = ws2_32.AF_CLUSTER; +pub const AF_12844 = ws2_32.AF_12844; +pub const AF_IRDA = ws2_32.AF_IRDA; +pub const AF_NETDES = ws2_32.AF_NETDES; +pub const AF_TCNPROCESS = ws2_32.AF_TCNPROCESS; +pub const AF_TCNMESSAGE = ws2_32.AF_TCNMESSAGE; +pub const AF_ICLFXBM = ws2_32.AF_ICLFXBM; +pub const AF_BTH = ws2_32.AF_BTH; +pub const AF_MAX = ws2_32.AF_MAX; + +pub const SOCK_STREAM = ws2_32.SOCK_STREAM; +pub const SOCK_DGRAM = ws2_32.SOCK_DGRAM; +pub const SOCK_RAW = ws2_32.SOCK_RAW; +pub const SOCK_RDM = ws2_32.SOCK_RDM; +pub const SOCK_SEQPACKET = ws2_32.SOCK_SEQPACKET; + +/// WARNING: this flag is not supported by windows socket functions directly, +/// it is only supported by std.os.socket. Be sure that this value does +/// not share any bits with any of the SOCK_* values. +pub const SOCK_CLOEXEC = 0x10000; +/// WARNING: this flag is not supported by windows socket functions directly, +/// it is only supported by std.os.socket. Be sure that this value does +/// not share any bits with any of the SOCK_* values. +pub const SOCK_NONBLOCK = 0x20000; + +pub const IPPROTO_ICMP = ws2_32.IPPROTO_ICMP; +pub const IPPROTO_IGMP = ws2_32.IPPROTO_IGMP; +pub const BTHPROTO_RFCOMM = ws2_32.BTHPROTO_RFCOMM; +pub const IPPROTO_TCP = ws2_32.IPPROTO_TCP; +pub const IPPROTO_UDP = ws2_32.IPPROTO_UDP; +pub const IPPROTO_ICMPV6 = ws2_32.IPPROTO_ICMPV6; +pub const IPPROTO_RM = ws2_32.IPPROTO_RM; + +pub const nfds_t = c_ulong; +pub const pollfd = ws2_32.pollfd; + +pub const POLLRDNORM = ws2_32.POLLRDNORM; +pub const POLLRDBAND = ws2_32.POLLRDBAND; +pub const POLLIN = ws2_32.POLLIN; +pub const POLLPRI = ws2_32.POLLPRI; +pub const POLLWRNORM = ws2_32.POLLWRNORM; +pub const POLLOUT = ws2_32.POLLOUT; +pub const POLLWRBAND = ws2_32.POLLWRBAND; +pub const POLLERR = ws2_32.POLLERR; +pub const POLLHUP = ws2_32.POLLHUP; +pub const POLLNVAL = ws2_32.POLLNVAL; + +pub const SOL_SOCKET = ws2_32.SOL_SOCKET; + +pub const SO_DEBUG = ws2_32.SO_DEBUG; +pub const SO_ACCEPTCONN = ws2_32.SO_ACCEPTCONN; +pub const SO_REUSEADDR = ws2_32.SO_REUSEADDR; +pub const SO_KEEPALIVE = ws2_32.SO_KEEPALIVE; +pub const SO_DONTROUTE = ws2_32.SO_DONTROUTE; +pub const SO_BROADCAST = ws2_32.SO_BROADCAST; +pub const SO_USELOOPBACK = ws2_32.SO_USELOOPBACK; +pub const SO_LINGER = ws2_32.SO_LINGER; +pub const SO_OOBINLINE = ws2_32.SO_OOBINLINE; + +pub const SO_DONTLINGER = ws2_32.SO_DONTLINGER; +pub const SO_EXCLUSIVEADDRUSE = ws2_32.SO_EXCLUSIVEADDRUSE; + +pub const SO_SNDBUF = ws2_32.SO_SNDBUF; +pub const SO_RCVBUF = ws2_32.SO_RCVBUF; +pub const SO_SNDLOWAT = ws2_32.SO_SNDLOWAT; +pub const SO_RCVLOWAT = ws2_32.SO_RCVLOWAT; +pub const SO_SNDTIMEO = ws2_32.SO_SNDTIMEO; +pub const SO_RCVTIMEO = ws2_32.SO_RCVTIMEO; +pub const SO_ERROR = ws2_32.SO_ERROR; +pub const SO_TYPE = ws2_32.SO_TYPE; + +pub const SO_GROUP_ID = ws2_32.SO_GROUP_ID; +pub const SO_GROUP_PRIORITY = ws2_32.SO_GROUP_PRIORITY; +pub const SO_MAX_MSG_SIZE = ws2_32.SO_MAX_MSG_SIZE; +pub const SO_PROTOCOL_INFOA = ws2_32.SO_PROTOCOL_INFOA; +pub const SO_PROTOCOL_INFOW = ws2_32.SO_PROTOCOL_INFOW; + +pub const PVD_CONFIG = ws2_32.PVD_CONFIG; +pub const SO_CONDITIONAL_ACCEPT = ws2_32.SO_CONDITIONAL_ACCEPT; + +pub const TCP_NODELAY = ws2_32.TCP_NODELAY; + +pub const O_RDONLY = 0o0; +pub const O_WRONLY = 0o1; +pub const O_RDWR = 0o2; + +pub const O_CREAT = 0o100; +pub const O_EXCL = 0o200; +pub const O_NOCTTY = 0o400; +pub const O_TRUNC = 0o1000; +pub const O_APPEND = 0o2000; +pub const O_NONBLOCK = 0o4000; +pub const O_DSYNC = 0o10000; +pub const O_SYNC = 0o4010000; +pub const O_RSYNC = 0o4010000; +pub const O_DIRECTORY = 0o200000; +pub const O_NOFOLLOW = 0o400000; +pub const O_CLOEXEC = 0o2000000; + +pub const O_ASYNC = 0o20000; +pub const O_DIRECT = 0o40000; +pub const O_LARGEFILE = 0; +pub const O_NOATIME = 0o1000000; +pub const O_PATH = 0o10000000; +pub const O_TMPFILE = 0o20200000; +pub const O_NDELAY = O_NONBLOCK; + +pub const IFNAMESIZE = 30; |
