[gnome-talos] proc: Rename from 'mem', add argv0
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-talos] proc: Rename from 'mem', add argv0
- Date: Fri, 23 Sep 2011 20:25:07 +0000 (UTC)
commit 6a876f135f08b52bef70cb68b0cce7dbc043f0cb
Author: Colin Walters <walters verbum org>
Date: Fri Sep 23 16:23:51 2011 -0400
proc: Rename from 'mem', add argv0
We only keep argv0 to help ensure privacy.
Makefile-src.am | 4 +-
...nome-talos-meminfo.c => gnome-talos-procinfo.c} | 42 +++++++++++++++++--
...nome-talos-meminfo.h => gnome-talos-procinfo.h} | 6 +-
src/gnome-talos-session.c | 8 ++--
4 files changed, 46 insertions(+), 14 deletions(-)
---
diff --git a/Makefile-src.am b/Makefile-src.am
index b1df945..1a79992 100644
--- a/Makefile-src.am
+++ b/Makefile-src.am
@@ -10,8 +10,8 @@ gnome-talos-session-%.desktop: src/gnome-talos-session.desktop.in
bin_PROGRAMS += gnome-talos-session
gnome_talos_session_SOURCES = src/gnome-talos-session.c \
- src/gnome-talos-meminfo.c \
- src/gnome-talos-meminfo.h \
+ src/gnome-talos-procinfo.c \
+ src/gnome-talos-procinfo.h \
src/gnome-talos-meta.c \
src/gnome-talos-meta.h
gnome_talos_session_CPPFLAGS = $(GIO_UNIX_CFLAGS)
diff --git a/src/gnome-talos-meminfo.c b/src/gnome-talos-procinfo.c
similarity index 87%
rename from src/gnome-talos-meminfo.c
rename to src/gnome-talos-procinfo.c
index 5773516..de0a1c8 100644
--- a/src/gnome-talos-meminfo.c
+++ b/src/gnome-talos-procinfo.c
@@ -27,6 +27,8 @@
#include <string.h>
#include <stdio.h>
+#include "gnome-talos-procinfo.h"
+
typedef void (WalkProcCallback) (long pid, const char *prefix, gpointer user_data);
static void
@@ -88,6 +90,32 @@ typedef struct {
GVariantBuilder *builder;
} AcquireMemData;
+static char*
+proc_get_procname (const char *proc_prefix)
+{
+ char *filename;
+ char *result = NULL;
+ char *contents;
+ gsize len;
+
+ filename = g_build_filename (proc_prefix, "cmdline", NULL);
+ if (!g_file_get_contents (filename, &contents, &len, NULL))
+ goto out;
+ if (memchr (contents, 0, len) == NULL)
+ {
+ g_free (contents);
+ goto out;
+ }
+
+ result = contents;
+
+ out:
+ g_free (filename);
+
+ return result;
+}
+
+
static void
proc_get_process_size (const char *proc_prefix,
gulong *vm_size,
@@ -179,15 +207,17 @@ acquire_mem_iter (long pid,
{
AcquireMemData *data = user_data;
GVariantBuilder *builder = data->builder;
+ char *procname;
gulong vm_size;
gulong rss_size;
gint32 real_uid, effective_uid, real_gid, effective_gid;
-
- proc_get_process_size (proc_prefix, &vm_size, &rss_size);
- if (vm_size == 0 && rss_size == 0) /* Probably a kernel thread */
- return;
+ procname = proc_get_procname (proc_prefix);
+ if (procname == NULL) /* Probably a kernel thread */
+ return;
+
+ proc_get_process_size (proc_prefix, &vm_size, &rss_size);
proc_get_uidgid (proc_prefix, &real_uid, &effective_uid, &real_gid, &effective_gid);
g_variant_builder_open (builder, G_VARIANT_TYPE ("{uv}"));
@@ -196,6 +226,8 @@ acquire_mem_iter (long pid,
g_variant_builder_open (builder, G_VARIANT_TYPE_VARIANT);
g_variant_builder_open (builder, G_VARIANT_TYPE_ARRAY);
+ g_variant_builder_add (builder, "{sv}", "argv0", g_variant_new_string (procname));
+ g_free (procname);
g_variant_builder_add (builder, "{sv}", "real-uid", g_variant_new_int32 (real_uid));
if (real_uid != effective_uid)
g_variant_builder_add (builder, "{sv}", "effective-uid", g_variant_new_int32 (effective_uid));
@@ -208,7 +240,7 @@ acquire_mem_iter (long pid,
}
GVariant *
-gnome_talos_acquire_mem (void)
+gnome_talos_acquire_procinfo (void)
{
GVariantBuilder builder;
AcquireMemData data;
diff --git a/src/gnome-talos-meminfo.h b/src/gnome-talos-procinfo.h
similarity index 88%
rename from src/gnome-talos-meminfo.h
rename to src/gnome-talos-procinfo.h
index a5cf5c0..0915410 100644
--- a/src/gnome-talos-meminfo.h
+++ b/src/gnome-talos-procinfo.h
@@ -19,9 +19,9 @@
* Author: Colin Walters <walters verbum org>
*/
-#ifndef __GNOME_TALOS_MEMINFO__
-#define __GNOME_TALOS_MEMINFO__ 1
+#ifndef __GNOME_TALOS_PROCINFO__
+#define __GNOME_TALOS_PROCINFO__ 1
-GVariant * gnome_talos_acquire_mem (void);
+GVariant * gnome_talos_acquire_procinfo (void);
#endif
diff --git a/src/gnome-talos-session.c b/src/gnome-talos-session.c
index 082d92d..40989cc 100644
--- a/src/gnome-talos-session.c
+++ b/src/gnome-talos-session.c
@@ -25,20 +25,20 @@
#include <string.h>
-#include "gnome-talos-meminfo.h"
+#include "gnome-talos-procinfo.h"
#include "gnome-talos-meta.h"
GVariant *
gather_snapshot (void)
{
gint64 start_timestamp, end_timestamp;
- GVariant *mem_data;
+ GVariant *proc_data;
GVariantBuilder builder;
GVariant *data;
start_timestamp = g_get_monotonic_time ();
- mem_data = gnome_talos_acquire_mem ();
+ proc_data = gnome_talos_acquire_procinfo ();
end_timestamp = g_get_monotonic_time ();
@@ -57,7 +57,7 @@ gather_snapshot (void)
/* data */
g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{sv}"));
- g_variant_builder_add (&builder, "{sv}", "mem", mem_data);
+ g_variant_builder_add (&builder, "{sv}", "processes", proc_data);
g_variant_builder_close (&builder);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]