/** Starts test step @internalComponent @return TVerdict pass / fail @pre N/A @post N/A */ enum TVerdict CT_WServCapCheckStepTSizeMode::runTestCaseL(const TDesC& aExecutable, const TInt& aExitReason) { __UHEAP_MARK; // mark the heap state //Launch window server client process read fron ini file RProcess process; User::LeaveIfError(process.Create(aExecutable, KNullDesC)); process.SetPriority(EPriorityHigh); TEST(process.Priority() == EPriorityHigh); INFO_PRINTF3(_L("Process Priority: Actual: %d, Expected: %d"), process.Priority(), EPriorityHigh); //Wait for the client process to terminate TRequestStatus status; process.Logon(status); process.Resume(); User::WaitForRequest(status); //Check the window server client exit reason INFO_PRINTF3(_L("Process Check: Actual: %d, Expected: %d"), process.ExitReason(), aExitReason); TEST(process.ExitReason() == aExitReason); __UHEAP_MARKEND; // check for no memory leak return TestStepResult(); }
// Gets the state and priority of process aproc. Writes state into buffer //pointed to by aprocstate and returns priority as an integer int getProcessState(RProcess& aproc,TDes& aprocstate) { TExitType exittype; TProcessPriority prio; exittype = aproc.ExitType(); prio = aproc.Priority(); switch(exittype) { case EExitPending: aprocstate.Append(_L("R")); break; case EExitPanic: aprocstate.Append(_L("P")); break; case EExitKill: case EExitTerminate: aprocstate.Append(_L("X")); return -1; } switch(prio) { case EPriorityLow: case EPriorityBackground: case EPriorityForeground: aprocstate.Append(_L("N")); break; default: // All other cases aprocstate.Append(_L("<")); break; } return prio; }
EXPORT_C int getpriority(int which, int who) { int priority = -1; if ( which == PRIO_PROCESS && who == 0 ) { RProcess pro; TProcessPriority pri; pri = pro.Priority(); priority = convPri( pri ); } else { errno = ENOSYS; } return priority; }
//All child process creation void CSMPSoakThread::CreateChildProcess(TInt aIndex) { if(TestSilent) gCmdLine.Format(KCmdLineBackground,(KProcessTable[aIndex].operation).Ptr()); else if (Period) gCmdLine.Format(KCmdLinePeriod,gPeriod,(KProcessTable[aIndex].operation).Ptr()); else gCmdLine.Format(KCmdLineProcess,(KProcessTable[aIndex].operation).Ptr()); TInt r = iProcess.Create(KProcessTable[aIndex].processFileName,gCmdLine); test_KErrNone(r); iProcess.SetPriority(EPriorityLow); gSMPStressDrv.ChangeThreadAffinity(&iThread, KProcessTable[aIndex].cpuAffinity); PRINT ((_L("SetProcessPriority CPU %d Priority %d\n"),gSMPStressDrv.GetThreadCPU(&iThread), iProcess.Priority())); }