From ede86e83830b4b44e9017071c09c53db6e00e811 Mon Sep 17 00:00:00 2001 From: Filippos Giannakos Date: Mon, 12 Nov 2012 15:46:54 +0200 Subject: [PATCH] add stdout, stderr redirection of peers to logfile --- xseg/peers/user/peer.c | 26 ++++++++++++++++++-------- xseg/sys/user/xseg_user.c | 4 ++++ xseg/xtypes/xobj.c | 2 ++ 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/xseg/peers/user/peer.c b/xseg/peers/user/peer.c index 779beaf..eb0cf76 100644 --- a/xseg/peers/user/peer.c +++ b/xseg/peers/user/peer.c @@ -372,7 +372,7 @@ static void* thread_loop(void *arg) pid_t pid =syscall(SYS_gettid); uint64_t loops; uint64_t threshold=1000/(1 + portno_end - portno_start); - + XSEGLOG2(&lc, D, "thread %u\n", (unsigned int) (t- peer->thread)); XSEGLOG2(&lc, I, "Thread %u has tid %u.\n", (unsigned int) (t- peer->thread), pid); @@ -444,7 +444,7 @@ static int peerd_loop(struct peerd *peer) uint64_t threshold=1000/(1 + portno_end - portno_start); pid_t pid =syscall(SYS_gettid); uint64_t loops; - + XSEGLOG2(&lc, I, "Peer has tid %u.\n", pid); xseg_init_local_signal(xseg, peer->portno_start); for (;!(isTerminate() && xq_count(&peer->free_reqs) == peer->nr_ops);) { @@ -639,7 +639,8 @@ int main(int argc, char *argv[]) // -dp xseg_portno to defer blocking requests // -l log file ? //TODO print messages on arg parsing error - + //TODO string checking + for (i = 1; i < argc; i++) { if (!strcmp(argv[i], "-g") && i + 1 < argc) { spec = argv[i+1]; @@ -652,7 +653,7 @@ int main(int argc, char *argv[]) i += 1; continue; } - + if (!strcmp(argv[i], "-ep") && i + 1 < argc) { portno_end = strtoul(argv[i+1], NULL, 10); i += 1; @@ -701,9 +702,18 @@ int main(int argc, char *argv[]) } } - init_logctx(&lc, argv[0], debug_level, logfile); + r = init_logctx(&lc, argv[0], debug_level, logfile); + if (r < 0){ + XSEGLOG("Cannot initialize logging to logfile"); + return -1; + } + //hack + if (logfile){ + dup2(fileno(lc.logfile), 1); + dup2(fileno(lc.logfile), 2); + } XSEGLOG2(&lc, D, "Main thread has tid %ld.\n", syscall(SYS_gettid)); - + if (pidfile){ pid_fd = pidfile_open(pidfile, &old_pid); if (pid_fd < 0) { @@ -715,7 +725,7 @@ int main(int argc, char *argv[]) return -1; } } - + if (daemonize){ if (daemon(0, 1) < 0){ XSEGLOG2(&lc, E, "Cannot daemonize"); @@ -725,7 +735,7 @@ int main(int argc, char *argv[]) } pidfile_write(pid_fd); - + //TODO perform argument sanity checks verbose = debug_level; if (portno != -1) { diff --git a/xseg/sys/user/xseg_user.c b/xseg/sys/user/xseg_user.c index 127786b..129e695 100644 --- a/xseg/sys/user/xseg_user.c +++ b/xseg/sys/user/xseg_user.c @@ -91,6 +91,10 @@ void __get_current_time(struct timeval *tv) { int user_init_logctx(struct log_ctx *lc, char *peer_name, enum log_level log_level, char *logfile) { FILE *file; + /* FIXME + * copy peer_name + * check logfile length + */ lc->peer_name = peer_name; lc->log_level = log_level; if (!logfile) { diff --git a/xseg/xtypes/xobj.c b/xseg/xtypes/xobj.c index 3f9cd51..f686a5b 100644 --- a/xseg/xtypes/xobj.c +++ b/xseg/xtypes/xobj.c @@ -191,6 +191,8 @@ int xobj_iterate(struct xobject_h *obj_h, struct xobject_iter *it, void **obj) } +//FIXME make it smarter. aka check if ptr in mem chunk range and offset is +//consistent wit obj_size int __xobj_check(struct xobject_h *obj_h, void *ptr) { void *container = XPTR(&obj_h->container); -- 1.7.10.4