| 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" ); |