From: Sean Hefty Date: Wed, 8 Aug 2012 04:25:00 +0000 (-0700) Subject: rsockets: Support SO_OOBINLINE X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=9c3a42c9ba3f0f58295a70f5eefd2491f34d7ed4;p=~shefty%2Flibrdmacm.git rsockets: Support SO_OOBINLINE We don't support urgent data, so just return success. Signed-off-by: Sean Hefty --- diff --git a/src/preload.c b/src/preload.c index 1264594d..4379bfc7 100644 --- a/src/preload.c +++ b/src/preload.c @@ -49,6 +49,7 @@ #include #include #include +#include #include #include @@ -395,6 +396,8 @@ int socket(int domain, int type, int protocol) if (index < 0) return index; + fprintf(fout, "%d socket - %d\n", syscall(SYS_gettid), index); + fflush(fout); recursive = 1; ret = rsocket(domain, type, protocol); recursive = 0; @@ -409,6 +412,9 @@ int socket(int domain, int type, int protocol) fd_store(index, ret, fd_rsocket); set_rsocket_options(ret); } + fprintf(fout, "%d socket - %d fd %d type %d\n", + syscall(SYS_gettid), index, ret, fd_gett(index)); + fflush(fout); return index; } fd_close(index, &ret); @@ -469,6 +475,8 @@ static int fork_active(int socket, const struct sockaddr *addr, socklen_t addrle long flags; fd = fd_getd(socket); + fprintf(fout, "%d fork_active - %d fd %d\n", syscall(SYS_gettid), socket, fd); + fflush(fout); flags = real.fcntl(fd, F_GETFL); real.fcntl(fd, F_SETFL, 0); ret = real.connect(fd, addr, addrlen); @@ -499,6 +507,8 @@ static void fork_passive(int socket) uint32_t msg; fd_get(socket, &sfd); + fprintf(fout, "%d fork_passive - %d fd %d\n", syscall(SYS_gettid), socket, sfd); + fflush(fout); len = sizeof sin6; ret = real.getsockname(sfd, (struct sockaddr *) &sin6, &len); @@ -531,11 +541,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", 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", syscall(SYS_gettid), socket); + fflush(fout); goto lclose; + } dfd = raccept(lfd, NULL, NULL); if (dfd < 0) { @@ -551,6 +567,8 @@ static void fork_passive(int socket) real.shutdown(sfd, SHUT_RDWR); real.close(sfd); fd_store(socket, dfd, fd_rsocket); + fprintf(fout, "%d fork_passive success - %d new fd %d\n", syscall(SYS_gettid), socket, dfd); + fflush(fout); lclose: rclose(lfd); @@ -928,6 +946,7 @@ int dup2(int oldfd, int newfd) int ret; init_preload(); + fprintf(fout, "%d dup2 %d -> %d\n", syscall(SYS_gettid), oldfd, newfd); oldfdi = idm_lookup(&idm, oldfd); if (oldfdi && oldfdi->type == fd_fork) fork_passive(oldfd); @@ -973,16 +992,16 @@ int __fxstat64(int ver, int socket, struct stat64 *buf) int fd, ret; init_preload(); - fprintf(fout, "fxstat64 socket %d - fd %d type %d\n", - socket, fd_getd(socket), fd_gett(socket)); + fprintf(fout, "%d fxstat64 socket %d - fd %d type %d\n", + syscall(SYS_gettid), socket, fd_getd(socket), fd_gett(socket)); if (fd_get(socket, &fd) == fd_rsocket) { ret = real.fxstat64(ver, socket, buf); - fprintf(fout, "fxstat64 - rsocket %d\n", ret); + fprintf(fout, "%d fxstat64 - rsocket %d\n", syscall(SYS_gettid), ret); if (!ret) buf->st_mode = (buf->st_mode & ~S_IFMT) | __S_IFSOCK; } else { ret = real.fxstat64(ver, fd, buf); - fprintf(fout, "fxstat64 - normal %d\n", ret); + fprintf(fout, "%d fxstat64 - normal %d\n", syscall(SYS_gettid), ret); } fflush(fout); return ret;