diff options
author | David Smith <dsmith@redhat.com> | 2009-06-03 13:04:54 -0500 |
---|---|---|
committer | David Smith <dsmith@redhat.com> | 2009-06-03 13:04:54 -0500 |
commit | 01adca5bca8d61e3fdf09017496deec8859fe12d (patch) | |
tree | d256a8074b58fbf5607b1b594fc9ea8b7daa27ed /runtime/transport/relayfs.c | |
parent | a655ff03c59722c229a40909d0de9e3dfe63483e (diff) | |
download | systemtap-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/relayfs.c')
-rw-r--r-- | runtime/transport/relayfs.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/runtime/transport/relayfs.c b/runtime/transport/relayfs.c index dac6db1d..191b932f 100644 --- a/runtime/transport/relayfs.c +++ b/runtime/transport/relayfs.c @@ -75,14 +75,29 @@ static struct rchan_callbacks stp_rchan_callbacks = .buf_full = __stp_relay_buf_full_callback, }; +static void _stp_transport_data_fs_start(void) +{ + if (_stp_relay_data.transport_state == STP_TRANSPORT_INITIALIZED) + _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) { + _stp_relay_data.transport_state = STP_TRANSPORT_STOPPED; + _stp_relay_data.flushing = 1; + 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.rchan) { - _stp_relay_data.flushing = 1; - 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) @@ -111,9 +126,8 @@ static int _stp_transport_data_fs_init(void) = _stp_gid; } - /* We're off and running. */ - smp_mb(); - _stp_relay_data.transport_state = STP_TRANSPORT_RUNNING; + /* We're initialized. */ + _stp_relay_data.transport_state = STP_TRANSPORT_INITIALIZED; return rc; err: |