File: | src/lib/libc/sys/w_vfork.c |
Warning: | line 31, column 24 This function call is prohibited after a successful vfork |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
1 | /* $OpenBSD: w_vfork.c,v 1.1 2016/05/07 19:05:22 guenther Exp $ */ | |||
2 | /* | |||
3 | * Copyright (c) 2015 Philip Guenther <guenther@openbsd.org> | |||
4 | * | |||
5 | * Permission to use, copy, modify, and distribute this software for any | |||
6 | * purpose with or without fee is hereby granted, provided that the above | |||
7 | * copyright notice and this permission notice appear in all copies. | |||
8 | * | |||
9 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |||
10 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |||
11 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |||
12 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |||
13 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |||
14 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |||
15 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |||
16 | */ | |||
17 | ||||
18 | #include <tib.h> | |||
19 | #include <unistd.h> | |||
20 | #include "thread_private.h" | |||
21 | ||||
22 | pid_t | |||
23 | WRAP(vfork)_libc_vfork_wrap(void) | |||
24 | { | |||
25 | pid_t newid; | |||
26 | ||||
27 | if (_thread_cb.tc_vfork != NULL((void*)0)) | |||
| ||||
28 | return (_thread_cb.tc_vfork()); | |||
29 | newid = vfork(); | |||
30 | if (newid
| |||
31 | TIB_GET()((struct tib *)((char *)(__amd64_read_tcb(0)) - (__builtin_offsetof (struct tib, __tib_self) + 0)))->tib_tid = getthrid(); | |||
| ||||
32 | return newid; | |||
33 | } | |||
34 | DEF_WRAP(vfork)__asm__(".weak " "vfork" " ; " "vfork" " = " "_libc_vfork_wrap" ); |