JVMThreadNode::JVMThreadNode ( const JVMThreadNode& node ) : CMThreadNode(node.GetID(), node.GetName(), "", 0), itsType(node.GetType()) { if (itsType == kGroupType) { ShouldBeOpenable(kJTrue); } }
void CMVarNode::MakePointer ( const JBoolean pointer, const JBoolean adjustOpenable ) { itsIsPointerFlag = pointer; if (adjustOpenable) { ShouldBeOpenable(itsIsPointerFlag); } }
void GPMProcessEntry::Update ( const JFloat elapsedTime ) { itsPercentMemory = 0; #ifdef _J_HAS_PROC try { ReadStat(); ReadStatM(); JSize mem; if (GPMGetSystemMemory(&mem)) { itsPercentMemory = JFloat(itsResident * 100) / mem; } // shared across #if ReadCmdline(); // not in ctor, to make ctor faster } catch (...) { itsState = kZombie; // std::cerr << "failed to update: " << itsPID << std::endl; } #elif defined _J_HAS_SYSCTL { int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, itsPID }; kinfo_proc entry; size_t len = sizeof(entry); int result = sysctl(mib, 4, &entry, &len, NULL, 0); if (result != 0) { itsState = kZombie; } else { itsCommand = entry.kp_proc.p_comm; itsPPID = entry.kp_eproc.e_ppid; itsPriority = entry.kp_proc.p_priority; itsNice = entry.kp_proc.p_nice; itsSize = 0; itsResident = 0; itsShare = 0; itsUTime = entry.kp_proc.p_uticks; itsSTime = entry.kp_proc.p_sticks; if (entry.kp_proc.p_stat == SSLEEP) { itsState = kSleep; } else if (entry.kp_proc.p_stat == SSTOP) { itsState = kStopped; } else if (entry.kp_proc.p_stat == SZOMB) { itsState = kZombie; } else { itsState = kRun; } JSize mem; if (GPMGetSystemMemory(&mem)) { itsPercentMemory = JFloat(itsResident) / mem; } } // shared across #if ReadCmdline(); // not in ctor, to make ctor faster } #endif SetName(itsCommand); ShouldBeOpenable(HasChildren()); itsTime = (itsUTime + itsSTime) / sysconf(_SC_CLK_TCK); JSize totalTime = (itsLastUTime == 0 || itsLastSTime == 0) ? 0 : (itsUTime - itsLastUTime) + (itsSTime - itsLastSTime); itsLastUTime = itsUTime; itsLastSTime = itsSTime; itsPercentCPU = elapsedTime == 0 || itsState == kZombie ? 0 : JFloat(totalTime * 1000 / sysconf(_SC_CLK_TCK)) / (10 * elapsedTime); }