- checkComms(pvm_joingroup(PECTLGROUP), "PEStartup");
- IF_PAR_DEBUG(verbose,
- fprintf(stderr,"== [%x] PEStartup: Joined PECTLGROUP\n", mytid));
- checkComms(pvm_barrier(PECTLGROUP, nPEs+1), "PEStartup");
- IF_PAR_DEBUG(verbose,
- fprintf(stderr,"== [%x] PEStartup, Passed PECTLGROUP barrier\n", mytid));
-
- addr = waitForPEOp(PP_SYSMAN_TID, ANY_GLOBAL_TASK);
- SysManTask = senderTask(addr);
- if (IAmMainThread) { /* Main Thread Identifies itself to SysMan */
- pvm_initsend(PvmDataDefault);
- pvm_send(SysManTask, PP_MAIN_TASK);
- }
- IF_PAR_DEBUG(verbose,
- fprintf(stderr,"== [%x] Thread waits for %s\n",
- mytid, getOpName(PP_PETIDS)));
- addr = waitForPEOp(PP_PETIDS, ANY_GLOBAL_TASK);
- GetArgs(buffer, nPEs);
- for (i = 0; i < nPEs; ++i) {
- thePEs[i] = (GlobalTaskId) buffer[i];
- IF_PAR_DEBUG(verbose,
- fprintf(stderr,"== [%x] PEStartup: PEs[%d] = %x \n",
- mytid, i, thePEs[i]));
- }
- free(buffer);
- return thePEs;