⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfork_thread.s

📁 nginx 反向代理0.7.1版本 用于实现反向代理
💻 S
字号:
/* * Copyright (C) Igor Sysoev */#include <sys/syscall.h>#include <machine/asm.h>/* * rfork_thread(3) - rfork_thread(flags, stack, func, arg); */#define	KERNCALL	int $0x80ENTRY(rfork_thread)	push	%ebp	mov	%esp, %ebp	push	%esi	mov	12(%ebp), %esi	# the thread stack address	sub	$4, %esi	mov	20(%ebp), %eax	# the thread argument	mov	%eax, (%esi)	sub	$4, %esi	mov	16(%ebp), %eax	# the thread start address	mov	%eax, (%esi)	push	8(%ebp)		# rfork(2) flags	push	$0	mov	$SYS_rfork, %eax	KERNCALL	jc	error	cmp	$0, %edx	jne	childparent:	add	$8, %esp	pop	%esi	leave	retchild:	mov	%esi, %esp	pop	%eax	call	*%eax		# call a thread start address ...	add	$4, %esp	push	%eax	push	$0	mov	$SYS_exit, %eax	# ... and exit(2) after a thread would return	KERNCALLerror:	add	$8, %esp	pop	%esi	leave	PIC_PROLOGUE	/* libc's cerror: jmp  PIC_PLT(HIDENAME(cerror)) */	push	%eax	call	PIC_PLT(CNAME(__error))	pop	%ecx	PIC_EPILOGUE	mov	%ecx, (%eax)	mov	$-1, %eax	mov	$-1, %edx	ret

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -