summaryrefslogtreecommitdiffstats
path: root/runtime/transport/relay_v2.c
diff options
context:
space:
mode:
authorDavid Smith <dsmith@redhat.com>2009-06-03 13:04:54 -0500
committerDavid Smith <dsmith@redhat.com>2009-06-03 13:04:54 -0500
commit01adca5bca8d61e3fdf09017496deec8859fe12d (patch)
treed256a8074b58fbf5607b1b594fc9ea8b7daa27ed /runtime/transport/relay_v2.c
parenta655ff03c59722c229a40909d0de9e3dfe63483e (diff)
downloadsystemtap-steved-01adca5bca8d61e3fdf09017496deec8859fe12d.tar.gz
systemtap-steved-01adca5bca8d61e3fdf09017496deec8859fe12d.tar.xz
systemtap-steved-01adca5bca8d61e3fdf09017496deec8859fe12d.zip
Fixed STP_TRANSPORT_VERSION 1 behavior.
* runtime/transport/control.c (_stp_ctl_write_dbug): Added support for more messages. * runtime/transport/relay_v2.c (_stp_transport_data_fs_start): New function. (_stp_transport_data_fs_stop): Ditto. (_stp_transport_data_fs_close): Moved some functionality into _stp_transport_data_fs_stop() and calls _stp_transport_data_fs_stop() also. (_stp_transport_data_fs_init): Moved some functionality into _stp_transport_data_fs_start() and calls _stp_transport_data_fs_start() also. * runtime/transport/relayfs.c (_stp_transport_data_fs_start): New function. (_stp_transport_data_fs_stop): Ditto. (_stp_transport_data_fs_close): Moved some functionality into _stp_transport_data_fs_stop() and calls _stp_transport_data_fs_stop() also. (_stp_transport_data_fs_init): Moved some functionality into _stp_transport_data_fs_start() and calls _stp_transport_data_fs_start() also. * runtime/transport/ring_buffer.c (_stp_transport_data_fs_start): New empty function. (_stp_transport_data_fs_stop): Ditto. * runtime/transport/transport.h: Added _stp_transport_data_fs_start() and _stp_transport_data_fs_stop() prototypes. * runtime/transport/transport.c (_stp_cleanup_and_exit): Calls _stp_transport_data_fs_stop(). (_stp_transport_close): Calls _stp_transport_fs_close() earlier. (_stp_transport_init): Calls _stp_transport_data_fs_start().
Diffstat (limited to 'runtime/transport/relay_v2.c')
-rw-r--r--runtime/transport/relay_v2.c29
1 files changed, 21 insertions, 8 deletions
diff --git a/runtime/transport/relay_v2.c b/runtime/transport/relay_v2.c
index 0c8d0955..16b5afa1 100644
--- a/runtime/transport/relay_v2.c
+++ b/runtime/transport/relay_v2.c
@@ -220,18 +220,35 @@ static struct rchan_callbacks __stp_relay_callbacks = {
.remove_buf_file = __stp_relay_remove_buf_file_callback,
};
-static void _stp_transport_data_fs_close(void)
+static void _stp_transport_data_fs_start(void)
+{
+ if (_stp_relay_data.transport_state == STP_TRANSPORT_INITIALIZED) {
+ /* We're initialized. Now start the timer. */
+ __stp_relay_timer_init();
+ _stp_relay_data.transport_state = STP_TRANSPORT_RUNNING;
+ }
+}
+
+static void _stp_transport_data_fs_stop(void)
{
- if (_stp_relay_data.transport_state == STP_TRANSPORT_RUNNING)
+ if (_stp_relay_data.transport_state == STP_TRANSPORT_RUNNING) {
del_timer_sync(&_stp_relay_data.timer);
+ dbug_trans(0, "flushing...\n");
+ _stp_relay_data.transport_state = STP_TRANSPORT_STOPPED;
+ if (_stp_relay_data.rchan)
+ relay_flush(_stp_relay_data.rchan);
+ }
+}
+static void _stp_transport_data_fs_close(void)
+{
+ _stp_transport_data_fs_stop();
if (_stp_relay_data.dropped_file)
debugfs_remove(_stp_relay_data.dropped_file);
if (_stp_relay_data.rchan) {
- relay_flush(_stp_relay_data.rchan);
relay_close(_stp_relay_data.rchan);
+ _stp_relay_data.rchan = NULL;
}
- _stp_relay_data.transport_state = STP_TRANSPORT_STOPPED;
}
static int _stp_transport_data_fs_init(void)
@@ -300,10 +317,6 @@ static int _stp_transport_data_fs_init(void)
dbug_trans(1, "returning 0...\n");
_stp_relay_data.transport_state = STP_TRANSPORT_INITIALIZED;
- /* We're initialized. Now start the timer. */
- __stp_relay_timer_init();
- _stp_relay_data.transport_state = STP_TRANSPORT_RUNNING;
-
return 0;
err: