diff --git a/src/libsysprof-analyze/sysprof-cpu-info-private.h b/src/libsysprof-analyze/sysprof-cpu-info-private.h index ef785717..1345231e 100644 --- a/src/libsysprof-analyze/sysprof-cpu-info-private.h +++ b/src/libsysprof-analyze/sysprof-cpu-info-private.h @@ -24,6 +24,8 @@ G_BEGIN_DECLS +void _sysprof_cpu_info_set_core_id (SysprofCpuInfo *self, + guint core_id); void _sysprof_cpu_info_set_model_name (SysprofCpuInfo *self, const char *model_name); diff --git a/src/libsysprof-analyze/sysprof-cpu-info.c b/src/libsysprof-analyze/sysprof-cpu-info.c index b24b43b2..909a8a90 100644 --- a/src/libsysprof-analyze/sysprof-cpu-info.c +++ b/src/libsysprof-analyze/sysprof-cpu-info.c @@ -27,11 +27,13 @@ struct _SysprofCpuInfo GObject parent_instance; char *model_name; guint id; + guint core_id; }; enum { PROP_0, PROP_ID, + PROP_CORE_ID, PROP_MODEL_NAME, N_PROPS }; @@ -64,6 +66,10 @@ sysprof_cpu_info_get_property (GObject *object, g_value_set_uint (value, self->id); break; + case PROP_CORE_ID: + g_value_set_uint (value, self->core_id); + break; + case PROP_MODEL_NAME: g_value_set_string (value, self->model_name); break; @@ -87,6 +93,10 @@ sysprof_cpu_info_set_property (GObject *object, self->id = g_value_get_uint (value); break; + case PROP_CORE_ID: + self->core_id = g_value_get_uint (value); + break; + case PROP_MODEL_NAME: self->model_name = g_value_dup_string (value); break; @@ -110,6 +120,11 @@ sysprof_cpu_info_class_init (SysprofCpuInfoClass *klass) 0, G_MAXUINT, 0, (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + properties[PROP_CORE_ID] = + g_param_spec_uint ("core-id", NULL, NULL, + 0, G_MAXUINT, 0, + (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS)); + properties[PROP_MODEL_NAME] = g_param_spec_string ("model-name", NULL, NULL, NULL, @@ -148,3 +163,24 @@ _sysprof_cpu_info_set_model_name (SysprofCpuInfo *self, if (g_set_str (&self->model_name, model_name)) g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_MODEL_NAME]); } + +guint +sysprof_cpu_info_get_core_id (SysprofCpuInfo *self) +{ + g_return_val_if_fail (SYSPROF_IS_CPU_INFO (self), 0); + + return self->core_id; +} + +void +_sysprof_cpu_info_set_core_id (SysprofCpuInfo *self, + guint core_id) +{ + g_return_if_fail (SYSPROF_IS_CPU_INFO (self)); + + if (self->core_id != core_id) + { + self->core_id = core_id; + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_CORE_ID]); + } +} diff --git a/src/libsysprof-analyze/sysprof-cpu-info.h b/src/libsysprof-analyze/sysprof-cpu-info.h index b61babe4..2e66f5c9 100644 --- a/src/libsysprof-analyze/sysprof-cpu-info.h +++ b/src/libsysprof-analyze/sysprof-cpu-info.h @@ -34,6 +34,8 @@ G_DECLARE_FINAL_TYPE (SysprofCpuInfo, sysprof_cpu_info, SYSPROF, CPU_INFO, GObje SYSPROF_AVAILABLE_IN_ALL guint sysprof_cpu_info_get_id (SysprofCpuInfo *self); SYSPROF_AVAILABLE_IN_ALL +guint sysprof_cpu_info_get_core_id (SysprofCpuInfo *self); +SYSPROF_AVAILABLE_IN_ALL const char *sysprof_cpu_info_get_model_name (SysprofCpuInfo *self); G_END_DECLS diff --git a/src/libsysprof-analyze/sysprof-document.c b/src/libsysprof-analyze/sysprof-document.c index fb7a8324..59695d13 100644 --- a/src/libsysprof-analyze/sysprof-document.c +++ b/src/libsysprof-analyze/sysprof-document.c @@ -1046,6 +1046,14 @@ sysprof_document_load_cpu (SysprofDocument *self) NULL); } + if (g_str_has_prefix (line, "core id\t\t: ")) + { + gint64 core_id = g_ascii_strtoll (line+strlen("core id\t\t: "), NULL, 10); + + if (core_id > 0) + _sysprof_cpu_info_set_core_id (cpu_info, core_id); + } + if (g_str_has_prefix (line, "model name\t: ")) { const gsize model_name_len = strlen ("model name\t: "); diff --git a/src/sysprof/sysprof-cpu-info-dialog.ui b/src/sysprof/sysprof-cpu-info-dialog.ui index decb5530..71a50d5e 100644 --- a/src/sysprof/sysprof-cpu-info-dialog.ui +++ b/src/sysprof/sysprof-cpu-info-dialog.ui @@ -69,6 +69,41 @@ +]]> + + + + + + + + Core + + + + + + + + + + + + + ]]>