vfork.S 594 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. /*
  2. * Copyright (C) 2000-2006 Erik Andersen <andersen@uclibc.org>
  3. *
  4. * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball.
  5. */
  6. #include <sys/syscall.h>
  7. #ifndef __NR_vfork
  8. /* No vfork so use fork instead */
  9. # define __NR_vfork __NR_fork
  10. #endif
  11. .text
  12. .global __vfork
  13. .hidden __vfork
  14. .type __vfork,%function
  15. __vfork:
  16. popl %ecx
  17. #ifdef SAVE_PID
  18. SAVE_PID
  19. #endif
  20. movl $__NR_vfork,%eax
  21. int $0x80
  22. pushl %ecx
  23. #ifdef RESTORE_PID
  24. RESTORE_PID
  25. #endif
  26. cmpl $-4095,%eax
  27. jae __syscall_error
  28. ret
  29. .size __vfork,.-__vfork
  30. weak_alias(__vfork,vfork)
  31. libc_hidden_weak(vfork)