The Gaudi Framework  master (d98a2936)
ProcessDescriptor.cpp File Reference
#include <cstdio>
#include <errno.h>
#include <fcntl.h>
#include <iostream>
#include <libgen.h>
#include <sstream>
#include <string>
#include <sys/signal.h>
#include <sys/syscall.h>
#include <sys/times.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/procfs.h>
#include <sys/resource.h>
#include <sys/time.h>
#include "ProcessDescriptor.h"
#include <GaudiKernel/ModuleInfo.h>
#include <GaudiKernel/System.h>
Include dependency graph for ProcessDescriptor.cpp:

Go to the source code of this file.

Classes

struct  linux_proc
 

Namespaces

 System
 Note: OS specific details for environment resolution.
 

Enumerations

enum  System::ProcessInfoCommand {
  System::ProcessBasicInformation, System::ProcessQuotaLimits, System::ProcessIoCounters, System::ProcessVmCounters,
  System::ProcessTimes, System::ProcessBasePriority, System::ProcessRaisePriority, System::ProcessDebugPort,
  System::ProcessExceptionPort, System::ProcessAccessToken, System::ProcessLdtInformation, System::ProcessLdtSize,
  System::ProcessDefaultHardErrorMode, System::ProcessIoPortHandlers, System::ProcessPooledUsageAndLimits, System::ProcessWorkingSetWatch,
  System::ProcessUserModeIOPL, System::ProcessEnableAlignmentFaultFixup, System::ProcessPriorityClass, System::ProcessWx86Information,
  System::ProcessHandleCount, System::ProcessAffinityMask, System::ProcessPriorityBoost, System::MaxProcessInfoClass,
  System::ProcessEllapsedTime
}
 

Functions

void readProcStat (long pid, linux_proc &pinfo)
 

Function Documentation

◆ readProcStat()

void readProcStat ( long  pid,
linux_proc pinfo 
)

Definition at line 274 of file ProcessDescriptor.cpp.

274  {
275 
276  ssize_t cnt;
277  int fd;
278  char buf[512];
279 
280  std::ostringstream ost;
281 
282  ost << "/proc/" << pid << "/stat";
283  std::string fname = ost.str();
284  if ( ( fd = open( fname.c_str(), O_RDONLY ) ) < 0 ) {
285  std::cerr << "Failed to open " << ost.str() << std::endl;
286  return;
287  }
288 
289  lseek( fd, 0, SEEK_SET );
290  if ( ( cnt = read( fd, buf, sizeof( buf ) - 1 ) ) < 0 ) {
291  std::cout << "LINUX Read of Proc file failed:" << std::endl;
292  close( fd );
293  return;
294  }
295 
296  // Format
297  if ( cnt > 0 ) {
298  buf[cnt] = '\0';
299  sscanf(
300  buf,
301  // 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 20 1 2 3 4 5 6 7 8 9
302  // 30 1 2 3 4 5
303  "%d %400s %c %d %d %d %d %d %lu %lu %lu %lu %lu %lu %lu %ld %ld %ld %ld %ld %ld %llu %lu %ld %lu %lu %lu %lu "
304  "%lu %lu %lu %lu %lu %lu %lu",
305  &pinfo.pid, pinfo.comm, &pinfo.state, &pinfo.ppid, &pinfo.pgrp, &pinfo.session, &pinfo.tty, &pinfo.tpgid,
306  &pinfo.flags, &pinfo.minflt, &pinfo.cminflt, &pinfo.majflt, &pinfo.cmajflt, &pinfo.utime, &pinfo.stime,
307  &pinfo.cutime, &pinfo.cstime, &pinfo.priority, &pinfo.nice, &pinfo.num_threads, &pinfo.itrealvalue,
308  &pinfo.starttime, &pinfo.vsize, &pinfo.rss, &pinfo.rlim, &pinfo.startcode, &pinfo.endcode, &pinfo.startstack,
309  &pinfo.kstkesp, &pinfo.kstkeip, &pinfo.signal, &pinfo.blocked, &pinfo.sigignore, &pinfo.sigcatch,
310  &pinfo.wchan );
311  }
312  close( fd );
313 }
linux_proc::blocked
unsigned long blocked
Definition: ProcessDescriptor.cpp:263
linux_proc::vsize
unsigned long vsize
Definition: ProcessDescriptor.cpp:254
linux_proc::rss
long rss
Definition: ProcessDescriptor.cpp:255
linux_proc::endcode
unsigned long endcode
Definition: ProcessDescriptor.cpp:258
linux_proc::comm
char comm[400]
Definition: ProcessDescriptor.cpp:233
linux_proc::starttime
unsigned long long starttime
Definition: ProcessDescriptor.cpp:253
linux_proc::tty
int tty
Definition: ProcessDescriptor.cpp:238
gaudirun.fd
fd
Definition: gaudirun.py:630
linux_proc::startcode
unsigned long startcode
Definition: ProcessDescriptor.cpp:257
linux_proc::itrealvalue
long itrealvalue
Definition: ProcessDescriptor.cpp:252
linux_proc::wchan
unsigned long wchan
Definition: ProcessDescriptor.cpp:266
linux_proc::ppid
int ppid
Definition: ProcessDescriptor.cpp:235
linux_proc::tpgid
int tpgid
Definition: ProcessDescriptor.cpp:239
linux_proc::priority
long priority
Definition: ProcessDescriptor.cpp:249
linux_proc::majflt
unsigned long majflt
Definition: ProcessDescriptor.cpp:243
linux_proc::flags
unsigned long flags
Definition: ProcessDescriptor.cpp:240
linux_proc::stime
unsigned long stime
Definition: ProcessDescriptor.cpp:246
linux_proc::num_threads
long num_threads
Definition: ProcessDescriptor.cpp:251
linux_proc::rlim
unsigned long rlim
Definition: ProcessDescriptor.cpp:256
linux_proc::startstack
unsigned long startstack
Definition: ProcessDescriptor.cpp:259
linux_proc::cminflt
unsigned long cminflt
Definition: ProcessDescriptor.cpp:242
linux_proc::signal
unsigned long signal
Definition: ProcessDescriptor.cpp:262
linux_proc::minflt
unsigned long minflt
Definition: ProcessDescriptor.cpp:241
linux_proc::pgrp
int pgrp
Definition: ProcessDescriptor.cpp:236
linux_proc::kstkesp
unsigned long kstkesp
Definition: ProcessDescriptor.cpp:260
linux_proc::sigcatch
unsigned long sigcatch
Definition: ProcessDescriptor.cpp:265
linux_proc::pid
int pid
Definition: ProcessDescriptor.cpp:232
hivetimeline.read
def read(f, regex=".*", skipevents=0)
Definition: hivetimeline.py:32
linux_proc::state
char state
Definition: ProcessDescriptor.cpp:234
linux_proc::sigignore
unsigned long sigignore
Definition: ProcessDescriptor.cpp:264
linux_proc::session
int session
Definition: ProcessDescriptor.cpp:237
linux_proc::cmajflt
unsigned long cmajflt
Definition: ProcessDescriptor.cpp:244
linux_proc::kstkeip
unsigned long kstkeip
Definition: ProcessDescriptor.cpp:261
linux_proc::utime
unsigned long utime
Definition: ProcessDescriptor.cpp:245
linux_proc::nice
long nice
Definition: ProcessDescriptor.cpp:250
linux_proc::cstime
long cstime
Definition: ProcessDescriptor.cpp:248
linux_proc::cutime
long cutime
Definition: ProcessDescriptor.cpp:247