diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2022-04-16 05:42:25 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-04-16 05:42:25 -0400 |
| commit | 578a792b33d1f26c839cd6c77eaa2680601caaf2 (patch) | |
| tree | 1378c449be224c8b81fcb46ca4b1ad9097588c9b /lib/std/c.zig | |
| parent | 3bfb1616db0883e6145a1fe1844eee3038bd4ca1 (diff) | |
| parent | 101aac92c258af9f25520c36f06b2ce8335d7f9a (diff) | |
| download | zig-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.zig | 16 |
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; |
