summaryrefslogtreecommitdiffstats
path: root/runtime
diff options
context:
space:
mode:
authorhunt <hunt>2007-08-17 20:02:15 +0000
committerhunt <hunt>2007-08-17 20:02:15 +0000
commit8cd9b4c7c5e3703e7ecde252717cb517f94bcf3b (patch)
tree79d1db9383279317a6fb54f0fa7fea8d865467af /runtime
parent6c543717a705fa93b4e1f2b971b066ffa39a2ab4 (diff)
downloadsystemtap-steved-8cd9b4c7c5e3703e7ecde252717cb517f94bcf3b.tar.gz
systemtap-steved-8cd9b4c7c5e3703e7ecde252717cb517f94bcf3b.tar.xz
systemtap-steved-8cd9b4c7c5e3703e7ecde252717cb517f94bcf3b.zip
2007-08-17 Martin Hunt <hunt@redhat.com>
PR3857 From Masami Hiramatsu * utt.c (utt_subbuf_start_callback): Use overwrite flag. * control.c (_stp_ctl_open_cmd): Set overwrite_flag off. (_stp_ctl_close_cmd): Set overwrite flag on.
Diffstat (limited to 'runtime')
-rw-r--r--runtime/transport/control.c3
-rw-r--r--runtime/transport/utt.c4
-rw-r--r--runtime/transport/utt.h2
3 files changed, 8 insertions, 1 deletions
diff --git a/runtime/transport/control.c b/runtime/transport/control.c
index 1f7f70bd..5242af49 100644
--- a/runtime/transport/control.c
+++ b/runtime/transport/control.c
@@ -239,6 +239,7 @@ static int _stp_ctl_open_cmd (struct inode *inode, struct file *file)
_stp_ctl_opens++;
_stp_pid = current->pid;
+ utt_overwrite_flag = 0;
return 0;
}
@@ -247,6 +248,8 @@ static int _stp_ctl_close_cmd (struct inode *inode, struct file *file)
if (_stp_ctl_opens)
_stp_ctl_opens--;
_stp_pid = 0;
+ if (!_stp_exit_flag)
+ utt_overwrite_flag = 1;
return 0;
}
diff --git a/runtime/transport/utt.c b/runtime/transport/utt.c
index 1ca59592..0871266a 100644
--- a/runtime/transport/utt.c
+++ b/runtime/transport/utt.c
@@ -29,6 +29,8 @@
#include <linux/relay.h>
#include "utt.h"
+int utt_overwrite_flag = 0;
+
static void utt_remove_root(struct utt_trace *utt)
{
if (utt->utt_tree_root) {
@@ -129,7 +131,7 @@ static int utt_subbuf_start_callback(struct rchan_buf *buf, void *subbuf,
{
struct utt_trace *utt;
- if (!relay_buf_full(buf))
+ if (utt_overwrite_flag || !relay_buf_full(buf))
return 1;
utt = buf->chan->private_data;
diff --git a/runtime/transport/utt.h b/runtime/transport/utt.h
index b2c9fa9f..00da0f7e 100644
--- a/runtime/transport/utt.h
+++ b/runtime/transport/utt.h
@@ -39,4 +39,6 @@ extern int utt_trace_startstop(struct utt_trace *utt, int start,
extern void utt_trace_cleanup(struct utt_trace *utt);
extern int utt_trace_remove(struct utt_trace *utt);
+extern int utt_overwrite_flag;
+
#endif