diff options
author | hunt <hunt> | 2006-06-13 08:45:15 +0000 |
---|---|---|
committer | hunt <hunt> | 2006-06-13 08:45:15 +0000 |
commit | 58dd896433eca417b237f6f17cd2194cc59a4fb3 (patch) | |
tree | 5bd0334313d848379d308190ac56445f4a092bb8 /runtime | |
parent | 7058bdd8ad09f68b194ed3bb1d7173d2e82779b8 (diff) | |
download | systemtap-steved-58dd896433eca417b237f6f17cd2194cc59a4fb3.tar.gz systemtap-steved-58dd896433eca417b237f6f17cd2194cc59a4fb3.tar.xz systemtap-steved-58dd896433eca417b237f6f17cd2194cc59a4fb3.zip |
2006-06-13 Martin Hunt <hunt@redhat.com>
* transport.c (_stp_transport_close): Destroy workqueue when
done.
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/transport/ChangeLog | 5 | ||||
-rw-r--r-- | runtime/transport/transport.c | 6 |
2 files changed, 8 insertions, 3 deletions
diff --git a/runtime/transport/ChangeLog b/runtime/transport/ChangeLog index 11461fef..c7db329c 100644 --- a/runtime/transport/ChangeLog +++ b/runtime/transport/ChangeLog @@ -1,3 +1,8 @@ +2006-06-13 Martin Hunt <hunt@redhat.com> + + * transport.c (_stp_transport_close): Destroy workqueue when + done. + 2006-06-09 Martin Hunt <hunt@redhat.com> * transport.c: Using the default workqueue was causing problems diff --git a/runtime/transport/transport.c b/runtime/transport/transport.c index 26e6dd9a..5b0b4ff2 100644 --- a/runtime/transport/transport.c +++ b/runtime/transport/transport.c @@ -168,9 +168,9 @@ static void _stp_work_queue (void *data) /* if exit flag is set AND we have finished with probe_start() */ if (unlikely(_stp_exit_flag && atomic_read(&_stp_start_finished))) { + _stp_cleanup_and_exit(0); cancel_delayed_work(&stp_exit); flush_workqueue(_stp_wq); - _stp_cleanup_and_exit(0); wake_up_interruptible(&_stp_proc_wq); } else queue_delayed_work(_stp_wq, &stp_exit, STP_WORK_TIMER); @@ -185,9 +185,9 @@ static void _stp_work_queue (void *data) void _stp_transport_close() { kbug("************** transport_close *************\n"); - cancel_delayed_work(&stp_exit); - flush_workqueue(_stp_wq); _stp_cleanup_and_exit(1); + cancel_delayed_work(&stp_exit); + destroy_workqueue(_stp_wq); wake_up_interruptible(&_stp_proc_wq); #ifdef STP_RELAYFS if (_stp_transport_mode == STP_TRANSPORT_RELAYFS) |