Пример #1
0
void
umain(void)
{
	u_int who, i;

	i = 0;
	if ((who = sfork()) != 0) {
		printf("i am %08x; env is %p\n", sys_getenvid(), env);
		// get the ball rolling
		printf("send 0 from %x to %x\n", sys_getenvid(), who);
		ipc_send(who, 0, 0, 0);
	}

	for (;;) {
		ipc_recv(&who, 0, 0);
		printf("%x got %d from %x (env is %p %x)\n", sys_getenvid(), val, who, env, env->env_id);
		if (val == 10)
			return;
		++val;
		ipc_send(who, 0, 0, 0);
		if (val == 10)
			return;
	}
		
}
Пример #2
0
void
umain(int argc, char **argv)
{
  envid_t who;
  uint32_t i;

  i = 0;
  if ((who = sfork()) != 0) {
    cprintf("i am %08x; thisenv is %p\n", sys_getenvid(), thisenv);
    // get the ball rolling
    cprintf("send 0 from %x to %x\n", sys_getenvid(), who);
    ipc_send(who, 0, 0, 0);
  }

  while (1) {
    cprintf("%x prepare to recv from %x (thisenv is %p %x)\n", sys_getenvid(), who, thisenv, thisenv->env_id); 
    ipc_recv(&who, 0, 0);
    cprintf("%x got %d from %x (thisenv is %p %x)\n", sys_getenvid(), val, who, thisenv, thisenv->env_id);
    if (val == 10)
      return;
    ++val;
    ipc_send(who, 0, 0, 0);
    if (val == 10)
      return;
  }

}
Пример #3
0
void
umain(int argc, char **argv)
{
  envid_t env;
	cprintf("Father:%04x", sys_getenvid());
  a=1;
  if ((env = sfork()) == 0) {
    while (1) {
      cprintf("child:a=%d\n",a);
      sys_yield();
    }
    exit();
  }
  sys_yield();
  sys_yield();
  sys_yield();
  sys_yield();
  sys_yield();
  sys_yield();
  cprintf("Father:a changed\n");
  a=2;
  sys_yield();
  sys_yield();
  sys_yield();
  sys_yield();
  sys_yield();
  sys_yield();
  cprintf("Killing the child\n");
  sys_env_destroy(env);
}
Пример #4
0
void
umain(int argc, char **argv)
{
	int c = sfork();
	if (c != 0){
		cprintf("parent: %d\n", k);
		k = 255;
	}
	else {
		cprintf("child: %d\n", k);
	} 
}
Пример #5
0
void
forkchild(const char *cur, char branch)
{
	char nxt[DEPTH+1];

	if (strlen(cur) >= DEPTH)
		return;

	snprintf(nxt, DEPTH+1, "%s%c", cur, branch);
	if (sfork() == 0) {
		forktree(nxt);
		exit();
	}
}