Hi Philippe, here is a tiny patch to re-trigger trace freezing by writing a positive number to /proc/ipipe/trace/frozen. Writing 0 provides the old behaviour, i.e. resets the frozen trace so that ipipe_trace_freeze() can capture a new trace.
Please apply. Jan
Index: linux-2.6.15.3-kgdb/kernel/ipipe/tracer.c
===================================================================
--- linux-2.6.15.3-kgdb.orig/kernel/ipipe/tracer.c
+++ linux-2.6.15.3-kgdb/kernel/ipipe/tracer.c
@@ -1005,11 +1005,28 @@ static int __ipipe_frozen_prtrace_open(s
}
static ssize_t
-__ipipe_frozen_reset(struct file *file, const char __user *pbuffer,
- size_t count, loff_t *data)
+__ipipe_frozen_ctrl(struct file *file, const char __user *pbuffer,
+ size_t count, loff_t *data)
{
+ char *end, buf[16];
+ int val;
+ int n;
+
+ n = (count > sizeof(buf) - 1) ? sizeof(buf) - 1 : count;
+
+ if (copy_from_user(buf, pbuffer, n))
+ return -EFAULT;
+
+ buf[n] = '\0';
+ val = simple_strtol(buf, &end, 0);
+
+ if (((*end != '\0') && !isspace(*end)) || (val < 0))
+ return -EINVAL;
+
down(&out_mutex);
ipipe_trace_frozen_reset();
+ if (val > 0)
+ ipipe_trace_freeze(-1);
up(&out_mutex);
return count;
@@ -1018,7 +1035,7 @@ __ipipe_frozen_reset(struct file *file,
struct file_operations __ipipe_frozen_prtrace_fops = {
.open = __ipipe_frozen_prtrace_open,
.read = seq_read,
- .write = __ipipe_frozen_reset,
+ .write = __ipipe_frozen_ctrl,
.llseek = seq_lseek,
.release = seq_release,
};
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Adeos-main mailing list [email protected] https://mail.gna.org/listinfo/adeos-main
