]> git.openfabrics.org - ~shefty/librdmacm.git/commitdiff
support for debug prints
authorSean Hefty <sean.hefty@intel.com>
Wed, 8 Aug 2012 04:30:48 +0000 (21:30 -0700)
committerSean Hefty <sean.hefty@intel.com>
Tue, 14 Aug 2012 23:23:41 +0000 (16:23 -0700)
src/preload.c

index ec62e693b351efa3395c11e16a842d4bfc44d6b1..ac36642ca548cef0ec33c179d6bb5d32d6a166a7 100644 (file)
@@ -50,6 +50,8 @@
 #include <netinet/tcp.h>
 #include <unistd.h>
 #include <semaphore.h>
+#include <stdio.h>
+#include <sys/syscall.h>
 
 #include <rdma/rdma_cma.h>
 #include <rdma/rdma_verbs.h>
@@ -102,6 +104,8 @@ static int rq_size;
 static int sq_inline;
 static int fork_support;
 
+static FILE *fout;
+
 enum fd_type {
        fd_normal,
        fd_rsocket
@@ -309,6 +313,7 @@ static void init_preload(void)
        rs.getsockopt = dlsym(RTLD_DEFAULT, "rgetsockopt");
        rs.fcntl = dlsym(RTLD_DEFAULT, "rfcntl");
 
+       fout = fopen("rs-out.txt", "w+");
        getenv_options();
        init = 1;
 out:
@@ -410,10 +415,12 @@ int socket(int domain, int type, int protocol)
                goto real;
 
        init_preload();
+       fprintf(fout, "%d socket\n", (int)syscall(SYS_gettid));
        index = fd_open();
        if (index < 0)
                return index;
 
+       fprintf(fout, "%d socket %d\n", (int)syscall(SYS_gettid), index); fflush(fout);
        recursive = 1;
        ret = rsocket(domain, type, protocol);
        recursive = 0;
@@ -428,6 +435,9 @@ int socket(int domain, int type, int protocol)
                        fd_store(index, ret, fd_rsocket, fd_ready);
                        set_rsocket_options(ret);
                }
+               fprintf(fout, "%d socket %d real fd %d type %d\n",
+                               (int)syscall(SYS_gettid), index, ret, fd_gett(index));
+               fflush(fout);
                return index;
        }
        fd_close(index, &ret);
@@ -438,6 +448,7 @@ real:
 int bind(int socket, const struct sockaddr *addr, socklen_t addrlen)
 {
        int fd;
+       fprintf(fout, "%d bind %d\n", (int)syscall(SYS_gettid), socket); fflush(fout);
        return (fd_get(socket, &fd) == fd_rsocket) ?
                rbind(fd, addr, addrlen) : real.bind(fd, addr, addrlen);
 }
@@ -554,7 +565,6 @@ static void fork_passive(int socket)
        uint32_t msg;
 
        sfd = fd_getd(socket);
-
        len = sizeof sin6;
        ret = real.getsockname(sfd, (struct sockaddr *) &sin6, &len);
        if (ret)
@@ -586,11 +596,17 @@ static void fork_passive(int socket)
        ret = rlisten(lfd, 1);
        if (ret)
                goto lclose;
+       fprintf(fout, "%d fork_passive %d, listening for fork\n", (int)syscall(SYS_gettid), socket);
+       fflush(fout);
 
        msg = 0;
        len = real.write(sfd, &msg, sizeof msg);
        if (len != sizeof msg)
+       {
+               fprintf(fout, "%d fork_passive - %d write failed\n", (int)syscall(SYS_gettid), socket);
+               fflush(fout);
                goto lclose;
+       }
 
        dfd = raccept(lfd, NULL, NULL);
        if (dfd < 0) {
@@ -874,18 +890,29 @@ int close(int socket)
        int ret;
 
        init_preload();
+       fprintf(fout, "%d close %d real fd %d type %d\n",
+               (int)syscall(SYS_gettid), socket, fd_getd(socket), fd_gett(socket));
+       fflush(fout);
        fdi = idm_lookup(&idm, socket);
        if (!fdi)
                return real.close(socket);
 
        if (fdi->dupfd != -1) {
+               fprintf(fout, "%d closing dupfd %d\n",
+                       (int)syscall(SYS_gettid), fdi->dupfd);
+               fflush(fout);
                ret = close(fdi->dupfd);
                if (ret)
                        return ret;
        }
 
        if (atomic_dec(&fdi->refcnt))
+       {
+               fprintf(fout, "%d close - still have ref %d\n",
+                       (int)syscall(SYS_gettid), atomic_get(&fdi->refcnt));
+               fflush(fout);
                return 0;
+       }
 
        idm_clear(&idm, socket);
        real.close(socket);
@@ -978,6 +1005,8 @@ int dup2(int oldfd, int newfd)
        int ret;
 
        init_preload();
+       fprintf(fout, "%d dup2 %d -> %d\n", (int)syscall(SYS_gettid), oldfd, newfd);
+       fflush(fout);
        oldfdi = idm_lookup(&idm, oldfd);
        if (oldfdi && oldfdi->type == fd_fork)
                fork_passive(oldfd);
@@ -1015,6 +1044,9 @@ int dup2(int oldfd, int newfd)
        atomic_init(&newfdi->refcnt);
        atomic_set(&newfdi->refcnt, 1);
        atomic_inc(&oldfdi->refcnt);
+       fprintf(fout, "%d dup2 %d -> %d, real fd %d type %d\n",
+               (int)syscall(SYS_gettid), oldfd, newfd, newfdi->fd, newfdi->type);
+       fflush(fout);
        return newfd;
 }
 
@@ -1040,8 +1072,10 @@ ssize_t sendfile(int out_fd, int in_fd, off_t *offset, size_t count)
 
 int __fxstat64(int ver, int socket, struct stat64 *buf)
 {
-//     int fd, ret;
+       int fd, ret;
 
+       init_preload();
+       fprintf(fout, "%s\n", __func__); fflush(fout);
 //     if (fd_get(socket, &fd) == fd_rsocket) {
 //             ret = real.fxstat64(ver, socket, buf);
 //             if (!ret)
@@ -1055,5 +1089,7 @@ int __fxstat64(int ver, int socket, struct stat64 *buf)
 
 int __fxstat(int ver, int socket, struct stat *buf)
 {
+       init_preload();
+       fprintf(fout, "%s\n", __func__); fflush(fout);
        return real.fxstat(ver, socket, buf);
 }