mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 16:10:54 +00:00
kernel: fix use of address array
This commit is contained in:
@ -95,7 +95,7 @@ sysprof_kernel_symbol_resolver_load (SysprofSymbolResolver *resolver,
|
|||||||
{
|
{
|
||||||
if (data_fd != -1)
|
if (data_fd != -1)
|
||||||
close (data_fd);
|
close (data_fd);
|
||||||
self->symbols = _sysprof_kernel_symbols_ref_shared ();
|
self->symbols = _sysprof_kernel_symbols_get_shared ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,7 +121,7 @@ sysprof_kernel_symbol_resolver_load (SysprofSymbolResolver *resolver,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
self->symbols = _sysprof_kernel_symbols_ref_shared ();
|
self->symbols = _sysprof_kernel_symbols_get_shared ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,23 +138,9 @@ G_DEFINE_TYPE_WITH_CODE (SysprofKernelSymbolResolver,
|
|||||||
G_IMPLEMENT_INTERFACE (SYSPROF_TYPE_SYMBOL_RESOLVER,
|
G_IMPLEMENT_INTERFACE (SYSPROF_TYPE_SYMBOL_RESOLVER,
|
||||||
symbol_resolver_iface_init))
|
symbol_resolver_iface_init))
|
||||||
|
|
||||||
static void
|
|
||||||
sysprof_kernel_symbol_resolver_finalize (GObject *object)
|
|
||||||
{
|
|
||||||
SysprofKernelSymbolResolver *self = (SysprofKernelSymbolResolver *)object;
|
|
||||||
|
|
||||||
g_clear_pointer (&self->symbols, g_array_unref);
|
|
||||||
|
|
||||||
G_OBJECT_CLASS (sysprof_kernel_symbol_resolver_parent_class)->finalize (object);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
sysprof_kernel_symbol_resolver_class_init (SysprofKernelSymbolResolverClass *klass)
|
sysprof_kernel_symbol_resolver_class_init (SysprofKernelSymbolResolverClass *klass)
|
||||||
{
|
{
|
||||||
GObjectClass *object_class = G_OBJECT_CLASS (klass);
|
|
||||||
|
|
||||||
object_class->finalize = sysprof_kernel_symbol_resolver_finalize;
|
|
||||||
|
|
||||||
linux_quark = g_quark_from_static_string ("Kernel");
|
linux_quark = g_quark_from_static_string ("Kernel");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -149,12 +149,14 @@ _sysprof_kernel_symbols_new_from_kallsyms (SysprofKallsyms *kallsyms)
|
|||||||
}
|
}
|
||||||
|
|
||||||
SysprofKernelSymbols *
|
SysprofKernelSymbols *
|
||||||
_sysprof_kernel_symbols_ref_shared (void)
|
_sysprof_kernel_symbols_get_shared (void)
|
||||||
{
|
{
|
||||||
static SysprofKernelSymbols *shared;
|
static SysprofKernelSymbols *shared;
|
||||||
|
static SysprofKernelSymbols empty[] = { 0 };
|
||||||
|
|
||||||
if (shared == NULL)
|
if (shared == NULL)
|
||||||
{
|
{
|
||||||
|
#ifdef __linux__
|
||||||
SysprofHelpers *helpers = sysprof_helpers_get_default ();
|
SysprofHelpers *helpers = sysprof_helpers_get_default ();
|
||||||
g_autofree gchar *contents = NULL;
|
g_autofree gchar *contents = NULL;
|
||||||
|
|
||||||
@ -163,9 +165,13 @@ _sysprof_kernel_symbols_ref_shared (void)
|
|||||||
g_autoptr(SysprofKallsyms) kallsyms = sysprof_kallsyms_new_take (g_steal_pointer (&contents));
|
g_autoptr(SysprofKallsyms) kallsyms = sysprof_kallsyms_new_take (g_steal_pointer (&contents));
|
||||||
shared = _sysprof_kernel_symbols_new_from_kallsyms (kallsyms);
|
shared = _sysprof_kernel_symbols_new_from_kallsyms (kallsyms);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (shared == NULL)
|
||||||
|
shared = empty;
|
||||||
}
|
}
|
||||||
|
|
||||||
return g_array_ref (shared);
|
return shared;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const SysprofKernelSymbol *
|
static const SysprofKernelSymbol *
|
||||||
|
|||||||
@ -29,7 +29,7 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
typedef GArray SysprofKernelSymbols;
|
typedef GArray SysprofKernelSymbols;
|
||||||
|
|
||||||
SysprofKernelSymbols *_sysprof_kernel_symbols_ref_shared (void);
|
SysprofKernelSymbols *_sysprof_kernel_symbols_get_shared (void);
|
||||||
SysprofKernelSymbols *_sysprof_kernel_symbols_new_from_kallsyms (SysprofKallsyms *kallsyms);
|
SysprofKernelSymbols *_sysprof_kernel_symbols_new_from_kallsyms (SysprofKallsyms *kallsyms);
|
||||||
const SysprofKernelSymbol *_sysprof_kernel_symbols_lookup (const SysprofKernelSymbols *self,
|
const SysprofKernelSymbol *_sysprof_kernel_symbols_lookup (const SysprofKernelSymbols *self,
|
||||||
SysprofCaptureAddress address);
|
SysprofCaptureAddress address);
|
||||||
|
|||||||
Reference in New Issue
Block a user