pid = -errno; 
pid = err; 
int run_helper_thread(int (*proc)(void *), void *arg, unsigned int flags, 		      unsigned long *stack_out, int stack_order){	unsigned long stack, sp;	int pid, status;	stack = alloc_stack(stack_order, um_in_interrupt());	if(stack == 0) return(-ENOMEM);	sp = stack + (page_size() << stack_order) - sizeof(void *);	pid = clone(proc, (void *) sp, flags | SIGCHLD, arg);	if(pid < 0){		printk("run_helper_thread : clone failed, errno = %d\n", 		       errno);		return(-errno);	}	if(stack_out == NULL){		CATCH_EINTR(pid = waitpid(pid, &status, 0));		if(pid < 0){			printk("run_helper_thread - wait failed, errno = %d\n",			       errno);			pid = -errno;		}		if(!WIFEXITED(status) || (WEXITSTATUS(status) != 0))			printk("run_helper_thread - thread returned status "			       "0x%x\n", status);		free_stack(stack, stack_order);	}	else *stack_out = stack;	return(pid);}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/b4fd310e163477236a241580b3b8c29aee65f4cc/helper.c/clean/arch/um/kernel/helper.c