1/* Copyright (C) 1999-2022 Free Software Foundation, Inc. 2 3 This file is part of the GNU C Library. 4 5 The GNU C Library is free software; you can redistribute it and/or 6 modify it under the terms of the GNU Lesser General Public License as 7 published by the Free Software Foundation; either version 2.1 of the 8 License, or (at your option) any later version. 9 10 The GNU C Library is distributed in the hope that it will be useful, 11 but WITHOUT ANY WARRANTY; without even the implied warranty of 12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 Lesser General Public License for more details. 14 15 You should have received a copy of the GNU Lesser General Public 16 License along with the GNU C Library; if not, see 17 <https://www.gnu.org/licenses/>. */ 18 19#include <sysdep.h> 20#define _ERRNO_H 1 21#include <bits/errno.h> 22 23/* Clone the calling process, but without copying the whole address space. 24 The calling process is suspended until the new process exits or is 25 replaced by a call to `execve'. Return -1 for errors, 0 to the new process, 26 and the process ID of the new process to the old process. */ 27 28ENTRY (__vfork) 29 30 mov x0, #0x4111 /* CLONE_VM | CLONE_VFORK | SIGCHLD */ 31 mov x1, sp 32 DO_CALL (clone, 2) 33 34 cmn x0, #4095 35 b.cs .Lsyscall_error 36 RET 37 38PSEUDO_END (__vfork) 39libc_hidden_def (__vfork) 40 41weak_alias (__vfork, vfork) 42strong_alias (__vfork, __libc_vfork) 43