aboutsummaryrefslogtreecommitdiff
path: root/lib/std/c.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2022-04-16 05:42:25 -0400
committerGitHub <noreply@github.com>2022-04-16 05:42:25 -0400
commit578a792b33d1f26c839cd6c77eaa2680601caaf2 (patch)
tree1378c449be224c8b81fcb46ca4b1ad9097588c9b /lib/std/c.zig
parent3bfb1616db0883e6145a1fe1844eee3038bd4ca1 (diff)
parent101aac92c258af9f25520c36f06b2ce8335d7f9a (diff)
downloadzig-578a792b33d1f26c839cd6c77eaa2680601caaf2.tar.gz
zig-578a792b33d1f26c839cd6c77eaa2680601caaf2.zip
Merge pull request #11442 from Vexu/stage3
Make self hosted compiler capable of building itself
Diffstat (limited to 'lib/std/c.zig')
-rw-r--r--lib/std/c.zig16
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/std/c.zig b/lib/std/c.zig
index 400feda63c..d98dbf0cde 100644
--- a/lib/std/c.zig
+++ b/lib/std/c.zig
@@ -219,7 +219,11 @@ pub extern "c" fn utimes(path: [*:0]const u8, times: *[2]c.timeval) c_int;
pub extern "c" fn utimensat(dirfd: c.fd_t, pathname: [*:0]const u8, times: *[2]c.timespec, flags: u32) c_int;
pub extern "c" fn futimens(fd: c.fd_t, times: *const [2]c.timespec) c_int;
-pub extern "c" fn pthread_create(noalias newthread: *pthread_t, noalias attr: ?*const c.pthread_attr_t, start_routine: fn (?*anyopaque) callconv(.C) ?*anyopaque, noalias arg: ?*anyopaque) c.E;
+pub extern "c" fn pthread_create(noalias newthread: *pthread_t, noalias attr: ?*const c.pthread_attr_t, start_routine: PThreadStartFn, noalias arg: ?*anyopaque) c.E;
+const PThreadStartFn = if (builtin.zig_backend == .stage1)
+ fn (?*anyopaque) callconv(.C) ?*anyopaque
+else
+ *const fn (?*anyopaque) callconv(.C) ?*anyopaque;
pub extern "c" fn pthread_attr_init(attr: *c.pthread_attr_t) c.E;
pub extern "c" fn pthread_attr_setstack(attr: *c.pthread_attr_t, stackaddr: *anyopaque, stacksize: usize) c.E;
pub extern "c" fn pthread_attr_setstacksize(attr: *c.pthread_attr_t, stacksize: usize) c.E;
@@ -229,10 +233,14 @@ pub extern "c" fn pthread_self() pthread_t;
pub extern "c" fn pthread_join(thread: pthread_t, arg_return: ?*?*anyopaque) c.E;
pub extern "c" fn pthread_detach(thread: pthread_t) c.E;
pub extern "c" fn pthread_atfork(
- prepare: ?fn () callconv(.C) void,
- parent: ?fn () callconv(.C) void,
- child: ?fn () callconv(.C) void,
+ prepare: ?PThreadForkFn,
+ parent: ?PThreadForkFn,
+ child: ?PThreadForkFn,
) c_int;
+const PThreadForkFn = if (builtin.zig_backend == .stage1)
+ fn () callconv(.C) void
+else
+ *const fn () callconv(.C) void;
pub extern "c" fn pthread_key_create(key: *c.pthread_key_t, destructor: ?fn (value: *anyopaque) callconv(.C) void) c.E;
pub extern "c" fn pthread_key_delete(key: c.pthread_key_t) c.E;
pub extern "c" fn pthread_getspecific(key: c.pthread_key_t) ?*anyopaque;