Commit 3d61e42282

Andrew Kelley <andrew@ziglang.org>
2019-05-25 01:36:09
rename "posix" to "bits"
1 parent 17b0166
std/c/linux.zig
@@ -1,17 +1,12 @@
-const linux = @import("../os/linux.zig");
-pub use @import("../os/linux/errno.zig");
+const std = @import("../std.zig");
+use std.c;
 
 pub extern "c" fn getrandom(buf_ptr: [*]u8, buf_len: usize, flags: c_uint) c_int;
 extern "c" fn __errno_location() *c_int;
 pub const _errno = __errno_location;
 
-pub const pthread_attr_t = extern struct {
-    __size: [56]u8,
-    __align: c_long,
-};
-
 /// See std.elf for constants for this
 pub extern fn getauxval(__type: c_ulong) c_ulong;
 
-pub const dl_iterate_phdr_callback = extern fn (info: *linux.dl_phdr_info, size: usize, data: ?*c_void) c_int;
+pub const dl_iterate_phdr_callback = extern fn (info: *dl_phdr_info, size: usize, data: ?*c_void) c_int;
 pub extern fn dl_iterate_phdr(callback: dl_iterate_phdr_callback, data: ?*c_void) c_int;
std/c/posix.zig
@@ -1,26 +0,0 @@
-// Declarations that are intended to be imported into the POSIX namespace.
-
-const builtin = @import("builtin");
-
-pub use switch (builtin.os) {
-    .windows => @import("posix/windows.zig"),
-    .macosx, .ios, .tvos, .watchos => @import("posix/darwin.zig"),
-    .freebsd => @import("posix/freebsd.zig"),
-    .netbsd => @import("posix/netbsd.zig"),
-    else => struct {},
-};
-
-pub const fd_t = c_int;
-pub const pid_t = c_int;
-pub const pthread_t = *@OpaqueType();
-pub const FILE = @OpaqueType();
-
-pub const iovec = extern struct {
-    iov_base: [*]u8,
-    iov_len: usize,
-};
-
-pub const iovec_const = extern struct {
-    iov_base: [*]const u8,
-    iov_len: usize,
-};
std/os/linux/posix/arm64.zig → std/os/bits/linux/arm64.zig
File renamed without changes
std/os/linux/errno.zig → std/os/bits/linux/errno.zig
File renamed without changes
std/os/linux/posix/x86_64.zig → std/os/bits/linux/x86_64.zig
File renamed without changes
std/c/posix/darwin.zig → std/os/bits/darwin.zig
@@ -1,6 +1,9 @@
-const std = @import("../std.zig");
+const std = @import("../../std.zig");
 const assert = std.debug.assert;
 
+pub const fd_t = c_int;
+pub const pid_t = c_int;
+
 pub fn sigaction(sig: u5, noalias act: *const Sigaction, noalias oact: ?*Sigaction) usize {
     assert(sig != SIGKILL);
     assert(sig != SIGSTOP);
std/c/posix/freebsd.zig → std/os/bits/freebsd.zig
@@ -1,4 +1,5 @@
-const std = @import("../std.zig");
+pub const fd_t = c_int;
+pub const pid_t = c_int;
 
 /// Renamed from `kevent` to `Kevent` to avoid conflict with function name.
 pub const Kevent = extern struct {
std/os/linux/posix.zig → std/os/bits/linux.zig
@@ -1,10 +1,7 @@
-// Declarations that are intended to be imported into the POSIX namespace.
-// This includes Linux-only APIs.
-
 pub use @import("errno.zig");
 pub use switch (builtin.arch) {
-    .x86_64 => @import("posix/x86_64.zig"),
-    .aarch64 => @import("posix/arm64.zig"),
+    .x86_64 => @import("linux/x86_64.zig"),
+    .aarch64 => @import("linux/arm64.zig"),
     else => struct {},
 };
 
@@ -915,3 +912,8 @@ pub const dl_phdr_info = extern struct {
     dlpi_phdr: [*]elf.Phdr,
     dlpi_phnum: u16,
 };
+
+pub const pthread_attr_t = extern struct {
+    __size: [56]u8,
+    __align: c_long,
+};
std/c/posix/netbsd.zig → std/os/bits/netbsd.zig
@@ -1,6 +1,9 @@
 const std = @import("../../std.zig");
 const maxInt = std.math.maxInt;
 
+pub const fd_t = c_int;
+pub const pid_t = c_int;
+
 /// Renamed from `kevent` to `Kevent` to avoid conflict with function name.
 pub const Kevent = extern struct {
     ident: usize,
std/os/wasi/posix.zig → std/os/bits/wasi.zig
File renamed without changes
std/c/posix/windows.zig → std/os/bits/windows.zig
@@ -1,3 +1,8 @@
+use @import("../windows.zig");
+
+pub const fd_t = HANDLE;
+pub const pid_t = HANDLE;
+
 pub const EPERM = 1;
 pub const ENOENT = 2;
 pub const ESRCH = 3;
std/os/linux/sys.zig
@@ -17,8 +17,7 @@ pub use switch (builtin.arch) {
     .aarch64 => @import("arm64.zig"),
     else => struct {},
 };
-pub const posix = @import("posix.zig");
-pub use posix;
+pub use @import("../bits.zig");
 
 /// See `std.os.posix.getauxval`.
 pub var elf_aux_maybe: ?[*]std.elf.Auxv = null;
std/os/windows/posix.zig
@@ -1,6 +0,0 @@
-// Declarations that are intended to be imported into the POSIX namespace,
-// when not linking libc.
-const std = @import("../../std.zig");
-const builtin = @import("builtin");
-
-pub const fd_t = std.os.windows.HANDLE;
std/os/bits.zig
@@ -0,0 +1,27 @@
+// Platform-dependent types and values that are used along with OS-specific APIs.
+// These are imported into `std.c`, `std.os`, and `std.os.linux`.
+
+const builtin = @import("builtin");
+
+pub use switch (builtin.os) {
+    .macosx, .ios, .tvos, .watchos => @import("bits/darwin.zig"),
+    .freebsd => @import("bits/freebsd.zig"),
+    .linux => @import("bits/linux.zig"),
+    .netbsd => @import("bits/netbsd.zig"),
+    .wasi => @import("bits/wasi.zig"),
+    .windows => @import("bits/windows.zig"),
+    else => struct {},
+};
+
+pub const pthread_t = *@OpaqueType();
+pub const FILE = @OpaqueType();
+
+pub const iovec = extern struct {
+    iov_base: [*]u8,
+    iov_len: usize,
+};
+
+pub const iovec_const = extern struct {
+    iov_base: [*]const u8,
+    iov_len: usize,
+};
std/os/linux.zig
@@ -4,7 +4,7 @@ pub const is_the_target = builtin.os == .linux;
 pub const sys = @import("linux/sys.zig");
 pub use if (builtin.link_libc) std.c else sys;
 
-test "import" {
+test "" {
     if (is_the_target) {
         _ = @import("linux/test.zig");
     }
std/os/wasi.zig
@@ -1,11 +1,11 @@
 // Based on https://github.com/CraneStation/wasi-sysroot/blob/wasi/libc-bottom-half/headers/public/wasi/core.h
 // and https://github.com/WebAssembly/WASI/blob/master/design/WASI-core.md
+const builtin = @import("builtin");
 const std = @import("std");
 const assert = std.debug.assert;
 
-pub const is_the_target = @import("builtin").os == .wasi;
-pub const posix = @import("wasi/posix.zig");
-pub use posix;
+pub const is_the_target = builtin.os == .wasi;
+pub use @import("bits/wasi.zig");
 
 comptime {
     assert(@alignOf(i8) == 1);
std/os/windows.zig
@@ -1,12 +1,14 @@
-// This file contains the types and constants of the Windows API,
-// as well as the Windows-equivalent of "Zig-flavored POSIX" API layer.
+// This file contains thin wrappers around Windows-specific APIs, with these
+// specific goals in mind:
+// * Convert "errno"-style error codes into Zig errors.
+// * When null-terminated or UTF16LE byte buffers are required, provide APIs which accept
+//   slices as well as APIs which accept null-terminated UTF16LE byte buffers.
+
 const std = @import("../std.zig");
 const assert = std.debug.assert;
 const maxInt = std.math.maxInt;
 
 pub const is_the_target = builtin.os == .windows;
-pub const posix = if (builtin.link_libc) struct {} else @import("windows/posix.zig");
-pub use posix;
 
 pub const advapi32 = @import("windows/advapi32.zig");
 pub const kernel32 = @import("windows/kernel32.zig");
@@ -565,7 +567,7 @@ pub fn CreateFile(
     share_mode: DWORD,
     creation_disposition: DWORD,
     flags_and_attrs: DWORD,
-) CreateFileError!fd_t {
+) CreateFileError!HANDLE {
     const file_path_w = try sliceToPrefixedFileW(file_path);
     return CreateFileW(&file_path_w, desired_access, share_mode, creation_disposition, flags_and_attrs);
 }
@@ -934,7 +936,7 @@ pub const GetStdHandleError = error{
     Unexpected,
 };
 
-pub fn GetStdHandle(handle_id: DWORD) GetStdHandleError!fd_t {
+pub fn GetStdHandle(handle_id: DWORD) GetStdHandleError!HANDLE {
     const handle = kernel32.GetStdHandle(handle_id) orelse return error.NoStandardHandleAttached;
     if (handle == INVALID_HANDLE_VALUE) {
         switch (kernel32.GetLastError()) {
std/os/zen.zig
@@ -80,7 +80,7 @@ pub const STDOUT_FILENO = 1;
 pub const STDERR_FILENO = 2;
 
 // FIXME: let's borrow Linux's error numbers for now.
-use @import("linux/errno.zig");
+use @import("../bits/linux/errno.zig");
 // Get the errno from a syscall return value, or 0 for no error.
 pub fn getErrno(r: usize) usize {
     const signed_r = @bitCast(isize, r);
std/c.zig
@@ -1,10 +1,9 @@
 const builtin = @import("builtin");
 
-pub const posix = @import("c/posix.zig");
-pub use posix;
+pub use @import("os/bits.zig");
 
 pub use switch (builtin.os) {
-    .linux => @import("os/linux/posix.zig"),
+    .linux => @import("c/linux.zig"),
     .windows => @import("c/windows.zig"),
     .macosx, .ios, .tvos, .watchos => @import("c/darwin.zig"),
     .freebsd => @import("c/freebsd.zig"),
std/os.zig
@@ -19,7 +19,7 @@ const builtin = @import("builtin");
 const MAX_PATH_BYTES = std.fs.MAX_PATH_BYTES;
 
 comptime {
-    assert(@import("std") == std); // You have to run the std lib tests with --override-std-dir
+    assert(@import("std") == std); // std lib tests require --override-std-dir
 }
 
 pub const darwin = @import("os/darwin.zig");
@@ -43,6 +43,8 @@ pub const system = if (builtin.link_libc) std.c else switch (builtin.os) {
     else => struct {},
 };
 
+pub use @import("os/bits.zig");
+
 /// See also `getenv`.
 pub var environ: [][*]u8 = undefined;
 
CMakeLists.txt
@@ -474,10 +474,7 @@ set(ZIG_STD_FILES
     "c/linux.zig"
     "c/netbsd.zig"
     "c/windows.zig"
-    "c/posix.zig"
-    "c/posix/darwin.zig"
-    "c/posix/freebsd.zig"
-    "c/posix/windows.zig"
+    "child_process.zig"
     "coff.zig"
     "crypto.zig"
     "crypto/blake2.zig"
@@ -491,8 +488,8 @@ set(ZIG_STD_FILES
     "crypto/x25519.zig"
     "cstr.zig"
     "debug.zig"
-    "debug/leb128.zig"
     "debug/failing_allocator.zig"
+    "debug/leb128.zig"
     "dwarf.zig"
     "dynamic_library.zig"
     "elf.zig"
@@ -513,6 +510,10 @@ set(ZIG_STD_FILES
     "fmt/errol/enum3.zig"
     "fmt/errol/lookup.zig"
     "fmt/parse_float.zig"
+    "fs.zig"
+    "fs/file.zig"
+    "fs/get_app_data_dir.zig"
+    "fs/path.zig"
     "hash.zig"
     "hash/adler.zig"
     "hash/crc.zig"
@@ -521,8 +522,8 @@ set(ZIG_STD_FILES
     "hash_map.zig"
     "heap.zig"
     "io.zig"
-    "io/seekable_stream.zig"
     "io/c_out_stream.zig"
+    "io/seekable_stream.zig"
     "json.zig"
     "lazy_init.zig"
     "linked_list.zig"
@@ -604,46 +605,40 @@ set(ZIG_STD_FILES
     "mutex.zig"
     "net.zig"
     "os.zig"
-    "os/child_process.zig"
+    "os/bits.zig"
+    "os/bits/darwin.zig"
+    "os/bits/freebsd.zig"
+    "os/bits/linux.zig"
+    "os/bits/linux/arm64.zig"
+    "os/bits/linux/errno.zig"
+    "os/bits/linux/x86_64.zig"
+    "os/bits/netbsd.zig"
+    "os/bits/wasi.zig"
+    "os/bits/windows.zig"
     "os/darwin.zig"
-    "os/darwin/errno.zig"
     "os/epoch.zig"
-    "os/file.zig"
     "os/freebsd.zig"
-    "os/freebsd/errno.zig"
-    "os/get_app_data_dir.zig"
-    "os/get_user_id.zig"
     "os/linux.zig"
     "os/linux/arm64.zig"
-    "os/linux/errno.zig"
-    "os/linux/posix.zig"
-    "os/linux/posix/arm64.zig"
-    "os/linux/posix/x86_64.zig"
     "os/linux/sys.zig"
     "os/linux/tls.zig"
     "os/linux/vdso.zig"
     "os/linux/x86_64.zig"
     "os/netbsd.zig"
-    "os/netbsd/errno.zig"
-    "os/path.zig"
-    "os/posix.zig"
-    "os/time.zig"
     "os/uefi.zig"
     "os/wasi.zig"
-    "os/wasi/posix.zig"
     "os/windows.zig"
     "os/windows/advapi32.zig"
-    "os/windows/errno.zig"
     "os/windows/error.zig"
     "os/windows/kernel32.zig"
     "os/windows/ntdll.zig"
     "os/windows/ole32.zig"
     "os/windows/shell32.zig"
-    "os/windows/util.zig"
     "os/zen.zig"
     "packed_int_array.zig"
     "pdb.zig"
     "priority_queue.zig"
+    "process.zig"
     "rand.zig"
     "rand/ziggurat.zig"
     "rb.zig"
@@ -655,17 +650,18 @@ set(ZIG_STD_FILES
     "special/build_runner.zig"
     "special/c.zig"
     "special/compiler_rt.zig"
-    "special/compiler_rt/stack_probe.zig"
-    "special/compiler_rt/arm/aeabi_fcmp.zig"
-    "special/compiler_rt/arm/aeabi_dcmp.zig"
     "special/compiler_rt/addXf3.zig"
+    "special/compiler_rt/arm/aeabi_dcmp.zig"
+    "special/compiler_rt/arm/aeabi_fcmp.zig"
+    "special/compiler_rt/ashlti3.zig"
+    "special/compiler_rt/ashrti3.zig"
     "special/compiler_rt/aulldiv.zig"
     "special/compiler_rt/aullrem.zig"
-    "special/compiler_rt/comparetf2.zig"
     "special/compiler_rt/comparedf2.zig"
     "special/compiler_rt/comparesf2.zig"
-    "special/compiler_rt/divsf3.zig"
+    "special/compiler_rt/comparetf2.zig"
     "special/compiler_rt/divdf3.zig"
+    "special/compiler_rt/divsf3.zig"
     "special/compiler_rt/divti3.zig"
     "special/compiler_rt/extendXfYf2.zig"
     "special/compiler_rt/fixdfdi.zig"
@@ -690,26 +686,25 @@ set(ZIG_STD_FILES
     "special/compiler_rt/fixunstfti.zig"
     "special/compiler_rt/floatdidf.zig"
     "special/compiler_rt/floatsiXf.zig"
-    "special/compiler_rt/floatunsidf.zig"
     "special/compiler_rt/floattidf.zig"
     "special/compiler_rt/floattisf.zig"
     "special/compiler_rt/floattitf.zig"
     "special/compiler_rt/floatundidf.zig"
     "special/compiler_rt/floatunditf.zig"
+    "special/compiler_rt/floatunsidf.zig"
     "special/compiler_rt/floatunsitf.zig"
     "special/compiler_rt/floatuntidf.zig"
     "special/compiler_rt/floatuntisf.zig"
     "special/compiler_rt/floatuntitf.zig"
+    "special/compiler_rt/lshrti3.zig"
     "special/compiler_rt/modti3.zig"
     "special/compiler_rt/mulXf3.zig"
-    "special/compiler_rt/muloti4.zig"
     "special/compiler_rt/mulodi4.zig"
+    "special/compiler_rt/muloti4.zig"
     "special/compiler_rt/multi3.zig"
-    "special/compiler_rt/ashlti3.zig"
-    "special/compiler_rt/ashrti3.zig"
-    "special/compiler_rt/lshrti3.zig"
     "special/compiler_rt/negXf2.zig"
     "special/compiler_rt/popcountdi2.zig"
+    "special/compiler_rt/stack_probe.zig"
     "special/compiler_rt/truncXfYf2.zig"
     "special/compiler_rt/udivmod.zig"
     "special/compiler_rt/udivmoddi4.zig"
@@ -726,6 +721,8 @@ set(ZIG_STD_FILES
     "statically_initialized_mutex.zig"
     "std.zig"
     "testing.zig"
+    "thread.zig"
+    "time.zig"
     "unicode.zig"
     "valgrind.zig"
     "valgrind/callgrind.zig"