DTrace userspace makes the simplifying assumption that dtrace_ctf.ko (containing
the CTF for the kernel, for built-in modules, and for shared types, but no code)
is always loaded whenever DTrace is usable. (The CTF itself is in a non-loaded
section, but having dtrace_ctf.ko in the list of loaded modules means that we
can eliminate an annoying set of dtrace_ctf-related special case.)
We do this by introducing a dummy function dtrace_ctf_forceload() into the
dtrace_ctf module, which DTrace then calls: depmod will then arrange for
dtrace_ctf to be loaded when we need it.
Signed-off-by: Nick Alcock <nick.alcock@oracle.com>
extern int dtrace_badname(const char *);
extern void dtrace_cred2priv(const cred_t *, uint32_t *, uid_t *);
+extern void dtrace_ctf_forceload(void);
+
#define DT_PROVIDER_POPS(name) \
static unsigned int name##_refc = 0; \
\
}
dtrace_os_init();
+ dtrace_ctf_forceload();
dtrace_modload = dtrace_module_loaded;
dtrace_modunload = dtrace_module_unloaded;