diff options
author | hunt <hunt> | 2007-08-17 20:02:15 +0000 |
---|---|---|
committer | hunt <hunt> | 2007-08-17 20:02:15 +0000 |
commit | 8cd9b4c7c5e3703e7ecde252717cb517f94bcf3b (patch) | |
tree | 79d1db9383279317a6fb54f0fa7fea8d865467af /runtime | |
parent | 6c543717a705fa93b4e1f2b971b066ffa39a2ab4 (diff) | |
download | systemtap-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.c | 3 | ||||
-rw-r--r-- | runtime/transport/utt.c | 4 | ||||
-rw-r--r-- | runtime/transport/utt.h | 2 |
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 |