Ejemplo n.º 1
0
int
Child(char *arg)
{
    int   pid;
    char  *zeros;

    GetPID(&pid);
    Tconsole("Child(): starting (pid = %d)\n", pid);

    zeros = calloc(USLOSS_MmuPageSize(), 1);
    if (memcmp(vmRegion, zeros, USLOSS_MmuPageSize()) != 0) {
        Tconsole("Child(): VmRegion is not zero-filled\n");
        abort();
    }
    verify(vmStats.faults == 1);

    SemV(sem);

    Terminate(117);
    return 0;
} /* Child */
Ejemplo n.º 2
0
int
P4_Startup(void *arg)
{
    int     i;
    int     rc;
    int     pid;
    int     child;
    int     numChildren = sizeof(names) / sizeof(char *);
 
    USLOSS_Console("P4_Startup starting.\n");
    rc = Sys_VmInit(PAGES, PAGES, numChildren * PAGES, 1, (void **) &vmRegion);
    if (rc != 0) {
    USLOSS_Console("Sys_VmInit failed: %d\n", rc);
    USLOSS_Halt(1);
    }
    pageSize = USLOSS_MmuPageSize();
    for (i = 0; i < numChildren; i++) {
    rc = Sys_Spawn(names[i], Child, (void *) names[i], USLOSS_MIN_STACK * 2, 2, &pid);
    assert(rc == 0);
    }
    for (i = 0; i < numChildren; i++) {
    rc = Sys_Wait(&pid, &child);
    assert(rc == 0);
    }
    for (i = 0; i < numChildren; i++) {
    rc = Sys_Spawn(names[i], Child, (void *) names[i], USLOSS_MIN_STACK * 2, 2, &pid);
    assert(rc == 0);
    }
    for (i = 0; i < numChildren; i++) {
    rc = Sys_Wait(&pid, &child);
    assert(rc == 0);
    }
    Sys_VmDestroy();
    USLOSS_Console("P4_Startup done.\n");
    return 0;
}