Ejemplo n.º 1
0
void get_proc_mem (dbgov_proc_mem * buf, pid_t pid, pid_t tid)
{
  char buffer[BUFSIZ], *p;
  const size_t pagesize = get_page_size ();
  memset (buf, 0, sizeof (dbgov_proc_mem));

  int res = try_file_to_buffer (buffer, "/proc/%d/task/%d/stat", pid, tid);
  if (res == TRY_FILE_TO_BUFFER_OK_IOSTAT)
    {
      p = proc_stat_after_cmd (buffer);
      if (!p)
	return;

      p = skip_multiple_token (p, 20);

      buf->vsize = strtoull (p, &p, 0);
      buf->rss = strtoull (p, &p, 0);
      buf->rss_rlim = strtoull (p, &p, 0);

      int res = try_file_to_buffer(buffer, "/proc/%d/task/%d/statm", pid, tid);
      if (res == TRY_FILE_TO_BUFFER_OK_IOSTAT)
	{
	  buf->size = strtoull (buffer, &p, 0);
	  buf->resident = strtoull (p, &p, 0);
	  buf->share = strtoull (p, &p, 0);
	}
      buf->size *= pagesize;
      buf->resident *= pagesize;
      buf->share *= pagesize;
      buf->rss *= pagesize;
    }
}
Ejemplo n.º 2
0
int get_proc_time (dbgov_proc_time * buf, pid_t pid, pid_t tid)
{
  char buffer[BUFSIZ], *p;
  memset (buf, 0, sizeof (dbgov_proc_time));

  int res = try_file_to_buffer (buffer, "/proc/%d/task/%d/stat", pid, tid);
  if (res == TRY_FILE_TO_BUFFER_OK_IOSTAT)
    {
      p = proc_stat_after_cmd (buffer);
      if (!p)
	return -1;

      p = skip_multiple_token (p, 11);

      buf->utime = strtoull (p, &p, 0);
      buf->stime = strtoull (p, &p, 0);
      buf->rtime = buf->utime + buf->stime;
      buf->cutime = strtoull (p, &p, 0);
      buf->cstime = strtoull (p, &p, 0);
      p = skip_multiple_token (p, 3);
      buf->it_real_value = strtoull (p, &p, 0);
      buf->frequency = 100;

    } else {
    	return -2;
    }
  return 0;
}
Ejemplo n.º 3
0
void get_cpu (dbgov_cpu * buf)
{
  char buffer[BUFSIZ], *p;

  memset (buf, 0, sizeof (dbgov_cpu));

  int res = try_file_to_buffer (buffer, FILENAME);
  if (res == TRY_FILE_TO_BUFFER_OK_IOSTAT)
    {
      p = skip_token (buffer);
      buf->user = strtoull (p, &p, 0);
      buf->nice = strtoull (p, &p, 0);
      buf->sys = strtoull (p, &p, 0);
      buf->idle = strtoull (p, &p, 0);
      buf->total = buf->user + buf->nice + buf->sys + buf->idle;

      /* 2.6 kernel */
      if (os_version_code >= LINUX_VERSION_CODE (2, 6, 0))
	{
	  buf->iowait = strtoull (p, &p, 0);
	  buf->irq = strtoull (p, &p, 0);
	  buf->softirq = strtoull (p, &p, 0);

	  buf->total += buf->iowait + buf->irq + buf->softirq;
	}

      buf->frequency = 100;
    }
}
Ejemplo n.º 4
0
void
file_to_buffer(glibtop *server, char *buffer, size_t bufsiz, const char *filename)
{
	switch(try_file_to_buffer(buffer, bufsiz, "%s", filename))
	{
	case TRY_FILE_TO_BUFFER_OPEN:
		glibtop_error_io_r (server, "open (%s)", filename);
	case TRY_FILE_TO_BUFFER_READ:
		glibtop_error_io_r (server, "read (%s)", filename);
	}
}
Ejemplo n.º 5
0
void get_mem (dbgov_mem * buf)
{
  char buffer[BUFSIZ];
  memset (buf, 0, sizeof *buf);

  int res = try_file_to_buffer (buffer, FILENAMEMEM);
  if (res == TRY_FILE_TO_BUFFER_OK_IOSTAT)
    {
      buf->total = get_scaled_iostat (buffer, "MemTotal:");
      buf->free = get_scaled_iostat (buffer, "MemFree:");
      buf->used = buf->total - buf->free;
      buf->shared = 0;
      buf->buffer = get_scaled_iostat (buffer, "Buffers:");
      buf->cached = get_scaled_iostat (buffer, "Cached:");

      buf->user = buf->total - buf->free - buf->cached - buf->buffer;
    }

}
Ejemplo n.º 6
0
int get_io_stat (dbgov_iostat * info, pid_t pid, pid_t tid)
{
  char buffer[BUFSIZ];
  io_stat_reset (info);
  int res = try_file_to_buffer (buffer, "/proc/%d/task/%d/io", pid, tid);
  if (res == TRY_FILE_TO_BUFFER_OK_IOSTAT)
    {
      info->rchar = get_scaled_iostat (buffer, "rchar:");
      info->wchar = get_scaled_iostat (buffer, "wchar:");
      info->read_bytes = get_scaled_iostat (buffer, "read_bytes:");
      info->write_bytes = get_scaled_iostat (buffer, "write_bytes:");
      info->cancelled_write_bytes =
	get_scaled_iostat (buffer, "cancelled_write_bytes:");
      if(info->cancelled_write_bytes<=info->write_bytes){
    	  info->write_bytes = info->write_bytes - info->cancelled_write_bytes;
      } else {
    	  info->write_bytes = 0;
      }
    } else {
    	return -2;
    }
  return 0;
}
Ejemplo n.º 7
0
static inline int
proc_file_to_buffer (char *buffer, size_t bufsiz, const char *fmt, pid_t pid)
{
	return try_file_to_buffer(buffer, bufsiz, fmt, pid);
}