• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C++ do_fork函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C++中do_fork函数的典型用法代码示例。如果您正苦于以下问题:C++ do_fork函数的具体用法?C++ do_fork怎么用?C++ do_fork使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了do_fork函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: sys_clone

long sys_clone(unsigned long clone_flags, unsigned long newsp,
	       int __user *parent_tid, void *newtls, int __user *child_tid)
{
	long ret;

	if (!newsp)
		newsp = UPT_SP(&current->thread.regs.regs);

	current->thread.forking = 1;
	ret = do_fork(clone_flags, newsp, &current->thread.regs, 0, parent_tid,
		      child_tid);
	current->thread.forking = 0;
	return ret;
}
开发者ID:DirtyDroidX,项目名称:android_kernel_htc_m8ul,代码行数:14,代码来源:syscalls_32.c


示例2: kernel_thread

/*
 * Create a kernel thread
 */
int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{
	struct pt_regs regs;

	memset(&regs, 0, sizeof(regs));

        /* Don't use r10 since that is set to 0 in copy_thread */
	regs.r11 = (unsigned long)fn;
	regs.r12 = (unsigned long)arg;
	regs.irp = (unsigned long)kernel_thread_helper;

	/* Ok, create the new process.. */
        return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
}
开发者ID:BackupTheBerlios,项目名称:tuxap,代码行数:17,代码来源:process.c


示例3: sys_clone

int sys_clone(struct pt_regs *regs)
{
	unsigned long clone_flags;
	unsigned long newsp;
	int __user *parent_tidptr, *child_tidptr;

	clone_flags = regs->bx;
	newsp = regs->cx;
	parent_tidptr = (int __user *)regs->dx;
	child_tidptr = (int __user *)regs->di;
	if (!newsp)
		newsp = regs->sp;
	return do_fork(clone_flags, newsp, regs, 0, parent_tidptr, child_tidptr);
}
开发者ID:Aircell,项目名称:asp-kernel,代码行数:14,代码来源:process_32.c


示例4: sys_clone

asmlinkage int sys_clone(struct pt_regs regs)
{
    unsigned long clone_flags;
    unsigned long newsp;
    int __user *parent_tidptr, *child_tidptr;

    clone_flags = regs.ebx;
    newsp = regs.ecx;
    parent_tidptr = (int __user *)regs.edx;
    child_tidptr = (int __user *)regs.edi;
    if (!newsp)
        newsp = regs.esp;
    return do_fork(clone_flags, newsp, &regs, 0, parent_tidptr, child_tidptr);
}
开发者ID:b3rnik,项目名称:dsl-n55u-bender,代码行数:14,代码来源:process.c


示例5: daemon

      int daemon(int nochdir, int noclose, boost::system::error_code &ec)
      {
         int status = 0;

         //openlog("daemonize", LOG_PID, LOG_DAEMON);

         // fork once to go into the background.
         if((status = do_fork()) < 0 )
            ;
         // create new session
         else if(setsid() < 0)              // shouldn't fail 
            status = -1;
         // fork again to ensure that daemon never reacquires a control terminal. 
         else if((status = do_fork()) < 0 )
            ;
         else
         {
            // clear any inherited umask(2) value 

            umask(0);

            // we're there.

            if(!nochdir)
            {
               // go to a neutral corner. 
               chdir("/");
            }

            if(!noclose)
            {
               redirect_fds(ec);
            }
         }

         return status;
      }
开发者ID:retf,项目名称:Boost.Application,代码行数:37,代码来源:server_application_impl.hpp


示例6: kernel_thread

/*
 * Create a kernel thread.
 */
long kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
{
	struct pt_regs regs;

	memset(&regs, 0, sizeof(regs));

	regs.regs[6] = (unsigned long) arg;
	regs.regs[5] = (unsigned long) fn;
	regs.cp0_epc = (unsigned long) kernel_thread_helper;
	regs.cp0_psr = (regs.cp0_psr & ~(0x1|0x4|0x8)) | \
			((regs.cp0_psr & 0x3) << 2);

	return do_fork(flags | CLONE_VM | CLONE_UNTRACED, \
			0, &regs, 0, NULL, NULL);
}
开发者ID:CSCLOG,项目名称:beaglebone,代码行数:18,代码来源:process.c


示例7: kernel_thread

pid_t kernel_thread(int (*fn) (void *), void *arg, unsigned long flags)
{
	struct pt_regs regs;

	memset(&regs, 0, sizeof(regs));

	regs.r1 = (unsigned long)arg;
	regs.p1 = (unsigned long)fn;
	regs.pc = (unsigned long)kernel_thread_helper;
	regs.orig_p0 = -1;
	regs.ipend = 0x8002;
	__asm__ __volatile__("%0 = syscfg;":"=da"(regs.syscfg):);
	return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL,
		       NULL);
}
开发者ID:Blackburn29,项目名称:PsycoKernel,代码行数:15,代码来源:process.c


示例8: plat_boot

void plat_boot(void) {
    int i;
    for (i=0; init[i]; i++) {
        init[i]();
    }
    init_sys_mmu();
    start_mmu();
    task_init();
    timer_init();

    init_page_map();
    kmalloc_init();
    ramdisk_driver_init();
    romfs_init();
    
    i = do_fork(test_process, (void *)0x1);
    i = do_fork(test_process, (void *)0x2);

    while (1) {
        delay ();
        printk("this is the original process\n");
    }

}
开发者ID:duskast,项目名称:learning,代码行数:24,代码来源:boot.c


示例9: kernel_thread

int kernel_thread(int (*fn)(void *), void * arg, unsigned long flags)
{
	struct pt_regs regs;

	memset(&regs, 0, sizeof(regs));

        
	regs.r11 = (unsigned long)fn;
	regs.r12 = (unsigned long)arg;
	regs.irp = (unsigned long)kernel_thread_helper;
	regs.dccr = 1 << I_DCCR_BITNR;

	
        return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
}
开发者ID:Blackburn29,项目名称:PsycoKernel,代码行数:15,代码来源:process.c


示例10: daemonize

static void daemonize()
{
  int fd, fdlimit;
  const char *chdir_root = "/";

  do_fork();
  if ( setsid() < 0 )
    {
      exit(EXIT_FAILURE);
    }
  do_fork();

  umask(0);
  if ( chdir(chdir_root) < 0)
    {
      exit(EXIT_FAILURE);
    }

  /* Close all open files. */
  fdlimit = sysconf (_SC_OPEN_MAX);
  for ( fd=0; fd<fdlimit; ++fd )
    {
      close(fd);
    }

  /* Open 0, 1 and 2. */
  open("/dev/null", O_RDWR);
  if ( dup(0) != 1 )
    {
      exit(EXIT_FAILURE);
    }
  if ( dup(0) != 2 )
    {
      exit(EXIT_FAILURE);
    }
}
开发者ID:lwes,项目名称:lwes-journaller,代码行数:36,代码来源:lwes-journaller.c


示例11: kernel_thread

int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
{
	struct pt_regs regs;

	memset(&regs, 0, sizeof(regs));
	/*
	 * Yes, we're exploting illicit knowledge of the ABI here.
	 */
	regs.r00 = (unsigned long) arg;
	regs.r01 = (unsigned long) fn;
	pt_set_elr(&regs, (unsigned long)kernel_thread_helper);
	pt_set_kmode(&regs);

	return do_fork(flags|CLONE_VM|CLONE_UNTRACED, 0, &regs, 0, NULL, NULL);
}
开发者ID:AllenDou,项目名称:linux,代码行数:15,代码来源:process.c


示例12: kernel_thread

int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
{
	struct pt_regs regs;

	memset(&regs, 0, sizeof(regs));
	/* store them in non-volatile registers */
	regs.r5 = (unsigned long)fn;
	regs.r6 = (unsigned long)arg;
	local_save_flags(regs.msr);
	regs.pc = (unsigned long)kernel_thread_helper;
	regs.pt_mode = 1;

	return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0,
			&regs, 0, NULL, NULL);
}
开发者ID:7L,项目名称:pi_plus,代码行数:15,代码来源:process.c


示例13: _sys_clone

static_unused int _sys_clone(nabi_no_regargs struct pt_regs regs)
{
	unsigned long clone_flags;
	unsigned long newsp;
	int *parent_tidptr, *child_tidptr;

	clone_flags = regs.regs[4];
	newsp = regs.regs[5];
	if (!newsp)
		newsp = regs.regs[29];
	parent_tidptr = (int *) regs.regs[6];
	child_tidptr = (int *) regs.regs[7];
	return do_fork(clone_flags & ~CLONE_IDLETASK, newsp, &regs, 0,
	               parent_tidptr, child_tidptr);
}
开发者ID:iPodLinux,项目名称:linux-2.6.7-ipod,代码行数:15,代码来源:syscall.c


示例14: main

int
main(int ac, char **av)
{
	if (ac < 2) goto usage;

	if (!strcmp("procedure", av[1])) {
		BENCH(do_procedure(ac), 0);
		micro("Procedure call", get_n());
	} else if (!strcmp("fork", av[1])) {
		BENCH(do_fork(), 0);
#ifdef STATIC
		micro("Static Process fork+exit", get_n());
#else
		micro("Process fork+exit", get_n());
#endif
	} else if (!strcmp("dfork", av[1])) {
		BENCH(do_dfork(), 0);
#ifdef STATIC
		micro("Static Process double fork+exit", get_n());
#else
		micro("Process double fork+exit", get_n());
#endif
	} else if (!strcmp("exec", av[1])) {
		BENCH(do_forkexec(), 0);
#ifdef STATIC
		micro("Static Process fork+execve", get_n());
#else
		micro("Process fork+execve", get_n());
#endif
	} else if (!strcmp("dforkexec", av[1])) {
		BENCH(do_dforkexec(), 0);
#ifdef STATIC
		micro("Static Process double fork+execve", get_n());
#else
		micro("Process double fork+execve", get_n());
#endif
	} else if (!strcmp("shell", av[1])) {
		BENCH(do_shell(), 0);
#ifdef STATIC
		micro("Static Process fork+/bin/sh -c", get_n());
#else
		micro("Process fork+/bin/sh -c", get_n());
#endif
	} else {
usage:		printf("Usage: %s fork|exec|shell|dfork|dforkexec\n", av[0]);
	}
	return(0);
}
开发者ID:ash9211,项目名称:graphene,代码行数:48,代码来源:lat_proc.c


示例15: kernel_thread

int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
{
	struct pt_regs regs;

	memset(&regs, 0, sizeof(regs));

	regs.r0 = (unsigned long)arg;
	regs.r1 = (unsigned long)fn;
	regs.r2 = (unsigned long)do_exit;
	regs.lr = (unsigned long)kernel_thread_helper;
	regs.pc = (unsigned long)kernel_thread_helper;
	regs.sr = MODE_SUPERVISOR;

	return do_fork(flags | CLONE_VM | CLONE_UNTRACED,
		       0, &regs, 0, NULL, NULL);
}
开发者ID:qwerty1023,项目名称:wive-rtnl-firmware,代码行数:16,代码来源:process.c


示例16: _sys_clone

asmlinkage long _sys_clone(unsigned long clone_flags, unsigned long newsp,
			   int __user *parent_tid, int __user *child_tid,
			   struct pt_regs *regs)
{
	long ret;

	/* FIXME: Is alignment necessary? */
	/* newsp = ALIGN(newsp, 4); */

	if (!newsp)
		newsp = regs->sp;

	ret = do_fork(clone_flags, newsp, regs, 0, parent_tid, child_tid);

	return ret;
}
开发者ID:08opt,项目名称:linux,代码行数:16,代码来源:sys_or32.c


示例17: kernel_thread

int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
{
	struct pt_regs regs;

	memset(&regs, 0, sizeof (regs));
	regs.r1 = (unsigned long)fn;
	regs.r2 = (unsigned long)arg;

	regs.bpc = (unsigned long)kernel_thread_helper;

	regs.psw = M32R_PSW_BIE;

	/* Ok, create the new process. */
	return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0, NULL,
		NULL);
}
开发者ID:007kumarraja,项目名称:rockchip-rk3188-mk908,代码行数:16,代码来源:process.c


示例18: nios2_clone

/* We don't want to use generic sys_clone because Nios II passes all arguments
 * on stack. And we need to save all these registers, which means we need
 * push all these registers on top of pt_regs. So, it is better to pass in
 * pt_regs* and extract the arguments for do_fork() from here.
 */
asmlinkage int nios2_clone(struct pt_regs *regs)
{
    unsigned long flags;
    unsigned long newsp;
    int __user *parent_tidptr, *child_tidptr;

    flags = regs->r4;
    newsp = regs->r5;
    if (newsp == 0)
        newsp = regs->sp;

    parent_tidptr = (int __user *) regs->r6;
    child_tidptr = (int __user *) regs->r8;

    return do_fork(flags, newsp, 0, parent_tidptr, child_tidptr);
}
开发者ID:xinyun,项目名称:lark_board_amp_ref_design,代码行数:21,代码来源:sys_nios2.c


示例19: _sys_clone

asmlinkage long _sys_clone(unsigned long clone_flags, unsigned long newsp,
			   int __user *parent_tid, int __user *child_tid,
			   struct pt_regs *regs)
{
	long ret;

	
	

	if (!newsp)
		newsp = regs->sp;

	ret = do_fork(clone_flags, newsp, regs, 0, parent_tid, child_tid);

	return ret;
}
开发者ID:Blackburn29,项目名称:PsycoKernel,代码行数:16,代码来源:sys_or32.c


示例20: kernel_thread

/*
 * create a kernel thread
 */
int kernel_thread(int (*fn)(void *), void *arg, unsigned long flags)
{
	struct pt_regs regs;

	memset(&regs, 0, sizeof(regs));

	regs.a2 = (unsigned long) fn;
	regs.d2 = (unsigned long) arg;
	regs.pc = (unsigned long) kernel_thread_helper;
	local_save_flags(regs.epsw);
	regs.epsw |= EPSW_IE | EPSW_IM_7;

	/* Ok, create the new process.. */
	return do_fork(flags | CLONE_VM | CLONE_UNTRACED, 0, &regs, 0,
		       NULL, NULL);
}
开发者ID:Conap30,项目名称:htc_kernel_desirec_bfs,代码行数:19,代码来源:process.c



注:本文中的do_fork函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ do_fps函数代码示例发布时间:2022-05-30
下一篇:
C++ do_fio函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap