Exemplo n.º 1
0
int start3(char *arg)
{
    int result;
    int pid;
    int status;

    USLOSS_Console("start3(): started\n");
    result = SemCreate(3, &sem1);
    SemP(sem1);
    USLOSS_Console("start3(): After P in the CS\n");
    Spawn("Child1", Child1, "Child1", USLOSS_MIN_STACK, 2, &pid);
    USLOSS_Console("\nstart3(): spawn %d\n", pid);
    Spawn("Child2", Child2, "Child2", USLOSS_MIN_STACK, 3, &pid);
    USLOSS_Console("start3(): spawn %d\n", pid);
    SemV(sem1);
    USLOSS_Console("\nstart3(): After V -- may appear before: Child1(): After P attempt #3\n");
    Wait(&pid, &status);
    USLOSS_Console("\nstart3(): status of quit child = %d\n",status);
    Wait(&pid, &status);
    USLOSS_Console("start3(): status of quit child = %d\n",status);
    USLOSS_Console("start3(): Parent done\n");
    Terminate(8);

    return 0;
} /* start3 */
Exemplo n.º 2
0
int Child1(char *arg) 
{
    int i;

    USLOSS_Console("\n%s(): starting\n", arg);
    for (i = 0; i < 5; i++) {
        SemP(sem1);
        if (i == 3)
            USLOSS_Console("%s(): After P attempt #3 -- may appear before: start3(): After V\n", arg);
        else
            USLOSS_Console("%s(): After P attempt #%d\n", arg, i);
    }
    USLOSS_Console("%s(): done\n", arg);
    Terminate(9);

    return 0;
} /* Child1 */
Exemplo n.º 3
0
int
start5(char *arg)
{
    int  pid;
    int  status;

    Tconsole("start5(): Running %s\n", TEST);
    Tconsole("start5(): Pagers: %d, Mappings : %d, Pages: %d, Frames: %d, Children %d, Iterations %d, Priority %d.\n", PAGERS, MAPPINGS, PAGES, FRAMES, CHILDREN, ITERATIONS, PRIORITY);

    vmRegion = VmInit( MAPPINGS, PAGES, FRAMES, PAGERS );

    Spawn("Child", Child,  0,USLOSS_MIN_STACK*7,PRIORITY, &pid);
    SemP( sem);
    Wait(&pid, &status);
    verify(status == 117);

    Tconsole("start5 done\n");
    //PrintStats();
    VmDestroy();
    Terminate(1);

    return 0;
} /* start5 */
Exemplo n.º 4
0
int
start5(char *arg)
{
    int  pid;
    int  status;

    Tconsole("start5(): Running:    %s\n", TEST);
    Tconsole("start5(): Pagers:     %d\n", PAGERS);
    Tconsole("          Mappings:   %d\n", MAPPINGS);
    Tconsole("          Pages:      %d\n", PAGES);
    Tconsole("          Frames:     %d\n", FRAMES);
    Tconsole("          Children:   %d\n", CHILDREN);
    Tconsole("          Iterations: %d\n", ITERATIONS);
    Tconsole("          Priority:   %d\n", PRIORITY);

    status = VmInit( MAPPINGS, PAGES, FRAMES, PAGERS, &vmRegion );
    Tconsole("start5(): after call to VmInit, status = %d\n\n", status);
    assert(status == 0);
    assert(vmRegion != NULL);

    SemCreate(0, &sem);

    Spawn("Child", Child, NULL, USLOSS_MIN_STACK * 7, PRIORITY, &pid);

    SemP( sem);

    Wait(&pid, &status);
    assert(status == 117);

    Tconsole("start5(): done\n");
    //PrintStats();
    VmDestroy();
    Terminate(1);

    return 0;
} /* start5 */