Bottom: 47adffa1c470a8413209e0679e601e328605b9da
-Top: 4860efad80a95980f7d24b72f375f62f9d743186
+Top: 04a586373bea04b3e94c31fe01c365a50b7c1bf1
Author: Sean Hefty <sean.hefty@intel.com>
Date: 2012-07-24 11:40:10 -0700
---
diff --git a/src/preload.c b/src/preload.c
-index d2058e2..79340c6 100644
+index d2058e2..e88c958 100644
--- a/src/preload.c
+++ b/src/preload.c
@@ -46,6 +46,8 @@
#include <rdma/rdma_cma.h>
#include <rdma/rdma_verbs.h>
-@@ -81,6 +83,7 @@ struct socket_calls {
- int (*getsockopt)(int socket, int level, int optname,
- void *optval, socklen_t *optlen);
- int (*fcntl)(int socket, int cmd, ... /* arg */);
-+ pid_t (*fork)(void);
- };
-
- static struct socket_calls real;
-@@ -92,10 +95,12 @@ static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
+@@ -92,10 +94,12 @@ static pthread_mutex_t mut = PTHREAD_MUTEX_INITIALIZER;
static int sq_size;
static int rq_size;
static int sq_inline;
};
struct fd_info {
-@@ -207,6 +212,10 @@ void getenv_options(void)
+@@ -207,6 +211,10 @@ void getenv_options(void)
var = getenv("RS_INLINE");
if (var)
sq_inline = atoi(var);
}
static void init_preload(void)
-@@ -244,6 +253,7 @@ static void init_preload(void)
- real.setsockopt = dlsym(RTLD_NEXT, "setsockopt");
- real.getsockopt = dlsym(RTLD_NEXT, "getsockopt");
- real.fcntl = dlsym(RTLD_NEXT, "fcntl");
-+ real.fork = dlsym(RTLD_NEXT, "fork");
-
- rs.socket = dlsym(RTLD_DEFAULT, "rsocket");
- rs.bind = dlsym(RTLD_DEFAULT, "rbind");
-@@ -378,8 +388,16 @@ int socket(int domain, int type, int protocol)
+@@ -378,8 +386,16 @@ int socket(int domain, int type, int protocol)
ret = rsocket(domain, type, protocol);
recursive = 0;
if (ret >= 0) {
return index;
}
fd_close(index, &ret);
-@@ -418,31 +436,161 @@ int listen(int socket, int backlog)
+@@ -418,31 +434,161 @@ int listen(int socket, int backlog)
int accept(int socket, struct sockaddr *addr, socklen_t *addrlen)
{
int fd, index, ret;
sin = (struct sockaddr_in *) addr;
if (ntohs(sin->sin_port) > 1024) {
ret = rconnect(fd, addr, addrlen);
-@@ -456,6 +604,9 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -456,6 +602,9 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
rclose(fd);
fd = ret;
}
return real.connect(fd, addr, addrlen);
-@@ -464,7 +615,7 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
+@@ -464,7 +613,7 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen)
ssize_t recv(int socket, void *buf, size_t len, int flags)
{
int fd;
rrecv(fd, buf, len, flags) : real.recv(fd, buf, len, flags);
}
-@@ -472,7 +623,7 @@ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
+@@ -472,7 +621,7 @@ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen)
{
int fd;
rrecvfrom(fd, buf, len, flags, src_addr, addrlen) :
real.recvfrom(fd, buf, len, flags, src_addr, addrlen);
}
-@@ -480,7 +631,7 @@ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
+@@ -480,7 +629,7 @@ ssize_t recvfrom(int socket, void *buf, size_t len, int flags,
ssize_t recvmsg(int socket, struct msghdr *msg, int flags)
{
int fd;
rrecvmsg(fd, msg, flags) : real.recvmsg(fd, msg, flags);
}
-@@ -488,7 +639,7 @@ ssize_t read(int socket, void *buf, size_t count)
+@@ -488,7 +637,7 @@ ssize_t read(int socket, void *buf, size_t count)
{
int fd;
init_preload();
rread(fd, buf, count) : real.read(fd, buf, count);
}
-@@ -496,14 +647,14 @@ ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
+@@ -496,14 +645,14 @@ ssize_t readv(int socket, const struct iovec *iov, int iovcnt)
{
int fd;
init_preload();
rsend(fd, buf, len, flags) : real.send(fd, buf, len, flags);
}
-@@ -511,7 +662,7 @@ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
+@@ -511,7 +660,7 @@ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
const struct sockaddr *dest_addr, socklen_t addrlen)
{
int fd;
rsendto(fd, buf, len, flags, dest_addr, addrlen) :
real.sendto(fd, buf, len, flags, dest_addr, addrlen);
}
-@@ -519,7 +670,7 @@ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
+@@ -519,7 +668,7 @@ ssize_t sendto(int socket, const void *buf, size_t len, int flags,
ssize_t sendmsg(int socket, const struct msghdr *msg, int flags)
{
int fd;
rsendmsg(fd, msg, flags) : real.sendmsg(fd, msg, flags);
}
-@@ -527,7 +678,7 @@ ssize_t write(int socket, const void *buf, size_t count)
+@@ -527,7 +676,7 @@ ssize_t write(int socket, const void *buf, size_t count)
{
int fd;
init_preload();
rwrite(fd, buf, count) : real.write(fd, buf, count);
}
-@@ -535,7 +686,7 @@ ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
+@@ -535,7 +684,7 @@ ssize_t writev(int socket, const struct iovec *iov, int iovcnt)
{
int fd;
init_preload();