mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2025-12-31 20:36:25 +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)
|
||||
close (data_fd);
|
||||
self->symbols = _sysprof_kernel_symbols_ref_shared ();
|
||||
self->symbols = _sysprof_kernel_symbols_get_shared ();
|
||||
return;
|
||||
}
|
||||
|
||||
@ -121,7 +121,7 @@ sysprof_kernel_symbol_resolver_load (SysprofSymbolResolver *resolver,
|
||||
}
|
||||
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,
|
||||
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
|
||||
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");
|
||||
}
|
||||
|
||||
|
||||
@ -149,12 +149,14 @@ _sysprof_kernel_symbols_new_from_kallsyms (SysprofKallsyms *kallsyms)
|
||||
}
|
||||
|
||||
SysprofKernelSymbols *
|
||||
_sysprof_kernel_symbols_ref_shared (void)
|
||||
_sysprof_kernel_symbols_get_shared (void)
|
||||
{
|
||||
static SysprofKernelSymbols *shared;
|
||||
static SysprofKernelSymbols empty[] = { 0 };
|
||||
|
||||
if (shared == NULL)
|
||||
{
|
||||
#ifdef __linux__
|
||||
SysprofHelpers *helpers = sysprof_helpers_get_default ();
|
||||
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));
|
||||
shared = _sysprof_kernel_symbols_new_from_kallsyms (kallsyms);
|
||||
}
|
||||
#endif
|
||||
|
||||
if (shared == NULL)
|
||||
shared = empty;
|
||||
}
|
||||
|
||||
return g_array_ref (shared);
|
||||
return shared;
|
||||
}
|
||||
|
||||
static const SysprofKernelSymbol *
|
||||
|
||||
@ -29,7 +29,7 @@ G_BEGIN_DECLS
|
||||
|
||||
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);
|
||||
const SysprofKernelSymbol *_sysprof_kernel_symbols_lookup (const SysprofKernelSymbols *self,
|
||||
SysprofCaptureAddress address);
|
||||
|
||||
Reference in New Issue
Block a user