[CRIU] [PATCH v3 2/2] criu: pie, log -- Print tid of writting process
Cyrill Gorcunov
gorcunov at gmail.com
Fri May 20 04:31:37 PDT 2016
On Thu, May 19, 2016 at 11:55:34PM +0300, Cyrill Gorcunov wrote:
> > Can we call sbuf_log_init() only when tid is changed? In other cases, a
> > prefix isn't changed and we can reuse it.
Updated
Cyrill
-------------- next part --------------
>From c37eac604f4999302558064c8fecfb6a879686e2 Mon Sep 17 00:00:00 2001
From: Cyrill Gorcunov <gorcunov at openvz.org>
Date: Thu, 19 May 2016 22:11:44 +0300
Subject: [PATCH] criu: pie, log -- Print tid of writting process
For more convenient log parsing.
Reported-by: Pavel Emelyanov <xemul at virtuozzo.com>
Signed-off-by: Cyrill Gorcunov <gorcunov at openvz.org>
---
criu/pie/log-simple.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/criu/pie/log-simple.c b/criu/pie/log-simple.c
index f4470af57f66..5d9394683d28 100644
--- a/criu/pie/log-simple.c
+++ b/criu/pie/log-simple.c
@@ -8,6 +8,7 @@
struct simple_buf {
char buf[LOG_SIMPLE_CHUNK];
char *bp;
+ int prefix_len;
void (*flush)(struct simple_buf *b);
};
@@ -18,22 +19,38 @@ static void sbuf_log_flush(struct simple_buf *b);
static void sbuf_log_init(struct simple_buf *b)
{
+ char pid_buf[12], *s;
+ int n;
+
+ /*
+ * Format:
+ *
+ * pie: pid: string-itself
+ */
+ b->prefix_len = vprint_num(pid_buf, sizeof(pid_buf), sys_gettid(), &s);
b->buf[0] = 'p';
b->buf[1] = 'i';
b->buf[2] = 'e';
b->buf[3] = ':';
b->buf[4] = ' ';
- b->bp = b->buf + 5;
+
+ for (n = 0; n < b->prefix_len; n++)
+ b->buf[n + 5] = s[n];
+ b->buf[n + 5] = ':';
+ b->buf[n + 6] = ' ';
+ b->prefix_len += 7;
+
+ b->bp = b->buf + b->prefix_len;
b->flush = sbuf_log_flush;
}
static void sbuf_log_flush(struct simple_buf *b)
{
- if (b->bp == b->buf + 5)
+ if (b->bp == b->buf + b->prefix_len)
return;
sys_write(logfd, b->buf, b->bp - b->buf);
- sbuf_log_init(b);
+ b->bp = b->buf + b->prefix_len;
}
static void sbuf_putc(struct simple_buf *b, char c)
--
2.5.5
More information about the CRIU
mailing list