diff --git a/src/sysprof/sysprof-callgraph-view-private.h b/src/sysprof/sysprof-callgraph-view-private.h
index 21d5acf4..c88df22f 100644
--- a/src/sysprof/sysprof-callgraph-view-private.h
+++ b/src/sysprof/sysprof-callgraph-view-private.h
@@ -55,6 +55,7 @@ struct _SysprofCallgraphView
guint bottom_up : 1;
guint categorize_frames : 1;
guint hide_system_libraries : 1;
+ guint ignore_kernel_processes : 1;
guint ignore_process_0 : 1;
guint include_threads : 1;
guint left_heavy : 1;
diff --git a/src/sysprof/sysprof-callgraph-view.c b/src/sysprof/sysprof-callgraph-view.c
index 20df65fb..ce089d52 100644
--- a/src/sysprof/sysprof-callgraph-view.c
+++ b/src/sysprof/sysprof-callgraph-view.c
@@ -36,6 +36,7 @@ enum {
PROP_CALLGRAPH,
PROP_DOCUMENT,
PROP_HIDE_SYSTEM_LIBRARIES,
+ PROP_IGNORE_KERNEL_PROCESSES,
PROP_IGNORE_PROCESS_0,
PROP_INCLUDE_THREADS,
PROP_LEFT_HEAVY,
@@ -451,6 +452,10 @@ sysprof_callgraph_view_set_property (GObject *object,
sysprof_callgraph_view_set_ignore_process_0 (self, g_value_get_boolean (value));
break;
+ case PROP_IGNORE_KERNEL_PROCESSES:
+ sysprof_callgraph_view_set_ignore_kernel_processes (self, g_value_get_boolean (value));
+ break;
+
case PROP_INCLUDE_THREADS:
sysprof_callgraph_view_set_include_threads (self, g_value_get_boolean (value));
break;
@@ -517,6 +522,11 @@ sysprof_callgraph_view_class_init (SysprofCallgraphViewClass *klass)
FALSE,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ properties[PROP_IGNORE_KERNEL_PROCESSES] =
+ g_param_spec_boolean ("ignore-kernel-processes", NULL, NULL,
+ FALSE,
+ (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
properties[PROP_LEFT_HEAVY] =
g_param_spec_boolean ("left-heavy", NULL, NULL,
FALSE,
@@ -714,6 +724,9 @@ sysprof_callgraph_view_reload (SysprofCallgraphView *self)
if (self->merge_similar_processes)
flags |= SYSPROF_CALLGRAPH_FLAGS_MERGE_SIMILAR_PROCESSES;
+ if (self->ignore_kernel_processes)
+ flags |= SYSPROF_CALLGRAPH_FLAGS_IGNORE_KERNEL_PROCESSES;
+
sysprof_document_callgraph_async (self->document,
flags,
self->traceables,
@@ -944,6 +957,30 @@ sysprof_callgraph_view_set_include_threads (SysprofCallgraphView *self,
}
}
+gboolean
+sysprof_callgraph_view_get_ignore_kernel_processes (SysprofCallgraphView *self)
+{
+ g_return_val_if_fail (SYSPROF_IS_CALLGRAPH_VIEW (self), FALSE);
+
+ return self->ignore_kernel_processes;
+}
+
+void
+sysprof_callgraph_view_set_ignore_kernel_processes (SysprofCallgraphView *self,
+ gboolean ignore_kernel_processes)
+{
+ g_return_if_fail (SYSPROF_IS_CALLGRAPH_VIEW (self));
+
+ ignore_kernel_processes = !!ignore_kernel_processes;
+
+ if (self->ignore_kernel_processes != ignore_kernel_processes)
+ {
+ self->ignore_kernel_processes = ignore_kernel_processes;
+ g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_IGNORE_KERNEL_PROCESSES]);
+ sysprof_callgraph_view_queue_reload (self);
+ }
+}
+
gboolean
sysprof_callgraph_view_get_ignore_process_0 (SysprofCallgraphView *self)
{
diff --git a/src/sysprof/sysprof-callgraph-view.h b/src/sysprof/sysprof-callgraph-view.h
index 963327f1..85a1d92c 100644
--- a/src/sysprof/sysprof-callgraph-view.h
+++ b/src/sysprof/sysprof-callgraph-view.h
@@ -52,6 +52,9 @@ void sysprof_callgraph_view_set_categorize_frames (SysprofCal
gboolean sysprof_callgraph_view_get_ignore_process_0 (SysprofCallgraphView *self);
void sysprof_callgraph_view_set_ignore_process_0 (SysprofCallgraphView *self,
gboolean ignore_process_0);
+gboolean sysprof_callgraph_view_get_ignore_kernel_processes (SysprofCallgraphView *self);
+void sysprof_callgraph_view_set_ignore_kernel_processes (SysprofCallgraphView *self,
+ gboolean ignore_kernel_processes);
gboolean sysprof_callgraph_view_get_include_threads (SysprofCallgraphView *self);
void sysprof_callgraph_view_set_include_threads (SysprofCallgraphView *self,
gboolean include_threads);
diff --git a/src/sysprof/sysprof-callgraph-view.ui b/src/sysprof/sysprof-callgraph-view.ui
index 5670201f..494d75a4 100644
--- a/src/sysprof/sysprof-callgraph-view.ui
+++ b/src/sysprof/sysprof-callgraph-view.ui
@@ -271,6 +271,10 @@
Bottom Up
win.callgraph.bottom-up
+ -
+ Ignore Kernel Processes
+ win.callgraph.ignore-kernel-processes
+
-
Ignore Process 0
win.callgraph.ignore-process-0
diff --git a/src/sysprof/sysprof-samples-section.ui b/src/sysprof/sysprof-samples-section.ui
index 2d398ce5..6005dd43 100644
--- a/src/sysprof/sysprof-samples-section.ui
+++ b/src/sysprof/sysprof-samples-section.ui
@@ -109,6 +109,11 @@
SysprofSamplesSection
+
+
+ SysprofSamplesSection
+
+
SysprofSamplesSection
diff --git a/src/sysprof/sysprof-session.c b/src/sysprof/sysprof-session.c
index 3b001f0a..10f323d6 100644
--- a/src/sysprof/sysprof-session.c
+++ b/src/sysprof/sysprof-session.c
@@ -43,6 +43,7 @@ struct _SysprofSession
guint categorize_frames : 1;
guint hide_system_libraries : 1;
guint ignore_process_0 : 1;
+ guint ignore_kernel_processes : 1;
guint include_threads : 1;
guint left_heavy : 1;
guint merge_similar_processes : 1;
@@ -56,6 +57,7 @@ enum {
PROP_DOCUMENT_TIME,
PROP_FILTER,
PROP_HIDE_SYSTEM_LIBRARIES,
+ PROP_IGNORE_KERNEL_PROCESSES,
PROP_IGNORE_PROCESS_0,
PROP_INCLUDE_THREADS,
PROP_LEFT_HEAVY,
@@ -156,6 +158,10 @@ sysprof_session_get_property (GObject *object,
g_value_set_boolean (value, self->ignore_process_0);
break;
+ case PROP_IGNORE_KERNEL_PROCESSES:
+ g_value_set_boolean (value, self->ignore_kernel_processes);
+ break;
+
case PROP_INCLUDE_THREADS:
g_value_set_boolean (value, self->include_threads);
break;
@@ -219,6 +225,10 @@ sysprof_session_set_property (GObject *object,
self->ignore_process_0 = g_value_get_boolean (value);
break;
+ case PROP_IGNORE_KERNEL_PROCESSES:
+ self->ignore_kernel_processes = g_value_get_boolean (value);
+ break;
+
case PROP_INCLUDE_THREADS:
self->include_threads = g_value_get_boolean (value);
break;
@@ -280,6 +290,11 @@ sysprof_session_class_init (SysprofSessionClass *klass)
FALSE,
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ properties [PROP_IGNORE_KERNEL_PROCESSES] =
+ g_param_spec_boolean ("ignore-kernel-processes", NULL, NULL,
+ FALSE,
+ (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
properties [PROP_INCLUDE_THREADS] =
g_param_spec_boolean ("include-threads", NULL, NULL,
FALSE,
diff --git a/src/sysprof/sysprof-window.c b/src/sysprof/sysprof-window.c
index ae65a137..36edb958 100644
--- a/src/sysprof/sysprof-window.c
+++ b/src/sysprof/sysprof-window.c
@@ -222,6 +222,7 @@ sysprof_window_set_document (SysprofWindow *self,
"bottom-up",
"categorize-frames",
"hide-system-libraries",
+ "ignore-kernel-processes",
"ignore-process-0",
"include-threads",
"left-heavy",
diff --git a/src/sysprof/sysprof-window.ui b/src/sysprof/sysprof-window.ui
index 49093169..0a065130 100644
--- a/src/sysprof/sysprof-window.ui
+++ b/src/sysprof/sysprof-window.ui
@@ -377,6 +377,10 @@
Bottom Up
win.callgraph.bottom-up
+ -
+ Ignore Kernel Processes
+ win.callgraph.ignore-kernel-processes
+
-
Ignore Process 0
win.callgraph.ignore-process-0