diff options
author | Josh Stone <jistone@redhat.com> | 2009-10-13 19:20:05 -0700 |
---|---|---|
committer | Josh Stone <jistone@redhat.com> | 2009-10-13 19:20:05 -0700 |
commit | 1c1f1a255cd969934bb7ce1678f4a411337be6f9 (patch) | |
tree | ac6df7814bf392d96f75250e260228ff8a02a1e8 /runtime/staprun/staprun.c | |
parent | d5e178c1d6eb0e7c1a317b925687050aa1cb6c1b (diff) | |
parent | c4ca2da6ca875c0142a4e7ffd95e0aa0c573590b (diff) | |
download | systemtap-steved-1c1f1a255cd969934bb7ce1678f4a411337be6f9.tar.gz systemtap-steved-1c1f1a255cd969934bb7ce1678f4a411337be6f9.tar.xz systemtap-steved-1c1f1a255cd969934bb7ce1678f4a411337be6f9.zip |
Merge branch 'master' of sourceware.org:/git/systemtap
Diffstat (limited to 'runtime/staprun/staprun.c')
-rw-r--r-- | runtime/staprun/staprun.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/runtime/staprun/staprun.c b/runtime/staprun/staprun.c index 7b4aba1c..c5651d9a 100644 --- a/runtime/staprun/staprun.c +++ b/runtime/staprun/staprun.c @@ -181,27 +181,25 @@ static int remove_module(const char *name, int verb) int ret; dbug(2, "%s\n", name); + (void) verb; /* XXX: ignore */ + if (strcmp(name, "*") == 0) { remove_all_modules(); return 0; } - /* Call init_ctl_channel() which actually attempts an open() - * of the control channel. This is better than using access() because - * an open on an already open channel will fail, preventing us from attempting - * to remove an in-use module. - */ - if (init_ctl_channel(name, 0) < 0) { - if (verb) - err("Error accessing systemtap module %s: %s\n", name, strerror(errno)); - return 1; - } - close_ctl_channel(); + /* We could call init_ctl_channel / close_ctl_channel here, as a heuristic + to determine whether the module is being used by some other stapio process. + However, delete_module() does basically the same thing. */ dbug(2, "removing module %s\n", name); STAP_PROBE1(staprun, remove__module, name); - ret = delete_module (name, 0); + ret = delete_module (name, O_NONBLOCK); if (ret != 0) { + /* XXX: maybe we should just accept this, with a + diagnostic, but without an error. Might it be + possible for the same module to be started up just + as we're shutting down? */ err("Error removing module '%s': %s.\n", name, strerror(errno)); return 1; } |