]> sourceware.org Git - systemtap.git/commitdiff
2007-08-17 Martin Hunt <hunt@redhat.com>
authorhunt <hunt>
Fri, 17 Aug 2007 20:02:15 +0000 (20:02 +0000)
committerhunt <hunt>
Fri, 17 Aug 2007 20:02:15 +0000 (20:02 +0000)
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.

runtime/transport/control.c
runtime/transport/utt.c
runtime/transport/utt.h

index 1f7f70bdf3209fc4549b9b05f4b671463249dd3e..5242af4954859878cc0277620a5c5fb94414d5fc 100644 (file)
@@ -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;
 }
 
index 1ca595924282e7537fb1aec633bbf4afff6f3356..0871266a7e00a1c597478d779338f99597c21c20 100644 (file)
@@ -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;
index b2c9fa9ffc6788827406fd0c1fb03b55922119ac..00da0f7eb690c1671aac120529c75d0f1e7ae198 100644 (file)
@@ -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
This page took 0.027933 seconds and 5 git commands to generate.