Esempio n. 1
0
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);
}