📄 ovfork.s
字号:
/* @(#)Ovfork.s 1.1 92/07/30 SMI; from UCB 4.1 12/21/80 *//* * C library -- vfork */#include "SYS.h"#define SYS_vfork 66/* * pid = vfork(); * * r1 == 0 in parent process, r1 == 1 in child process. * r0 == pid of child in parent, r0 == pid of parent in child. */#if vax/* * trickery here, due to keith sklower, uses ret to clear the stack, * and then returns with a jump indirect, since only one person can return * with a ret off this stack... we do the ret before we vfork! */ENTRY(vfork) movl 16(fp),r2 movab here,16(fp) REThere: chmk $SYS_vfork bcc vforkok jmp verrorvforkok: tstl r1 # child process ? bneq child # yes bcc parent # if c-bit not set, fork ok.globl _errnoverror: movl r0,_errno mnegl $1,r0 jmp (r2)child: clrl r0parent: jmp (r2)#endif#if sunENTRY(vfork) movl sp@+,a0 movl #SYS_vfork,sp@- trap #0 bcss verrorvforkok: tstl d1 | child process ? jne child | yes jmp a0@.globl _errnoverror:#ifdef PIC PIC_SETUP(a1) movl a1@(_errno:w),a1 movl d0, a1@#else movl d0,_errno#endif movl #-1,d0 jmp a0@child: clrl d0parent: jmp a0@#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -