From e18be9201f9d4a8267541dd9185c5c14fc09c547 Mon Sep 17 00:00:00 2001 From: Sean Hefty Date: Thu, 15 Nov 2012 20:55:33 -0800 Subject: [PATCH] udp perf test --- src/preload.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/src/preload.c b/src/preload.c index fb2149bf..b913091f 100644 --- a/src/preload.c +++ b/src/preload.c @@ -34,7 +34,7 @@ #if HAVE_CONFIG_H # include #endif /* HAVE_CONFIG_H */ - +#include #include #include #include @@ -120,6 +120,7 @@ struct fd_info { int fd; int dupfd; atomic_t refcnt; + int udp_fd; }; static int fd_open(void) @@ -136,6 +137,8 @@ static int fd_open(void) ret = index; goto err1; } + fdi->udp_fd = real.socket(PF_INET, SOCK_DGRAM, 0); + real.fcntl(fdi->udp_fd, F_SETFL, O_NONBLOCK); fdi->dupfd = -1; atomic_init(&fdi->refcnt); @@ -437,6 +440,9 @@ real: int bind(int socket, const struct sockaddr *addr, socklen_t addrlen) { int fd; + printf("%s in\n", __func__); +// real.bind(socket, addr, addrlen); + printf("%s call out\n", __func__); return (fd_get(socket, &fd) == fd_rsocket) ? rbind(fd, addr, addrlen) : real.bind(fd, addr, addrlen); } @@ -444,6 +450,7 @@ int bind(int socket, const struct sockaddr *addr, socklen_t addrlen) int listen(int socket, int backlog) { int fd, ret; + printf("%s in\n", __func__); if (fd_get(socket, &fd) == fd_rsocket) { ret = rlisten(fd, backlog); } else { @@ -451,6 +458,7 @@ int listen(int socket, int backlog) if (!ret && fd_gets(socket) == fd_fork) fd_store(socket, fd, fd_normal, fd_fork_listen); } + printf("%s out\n", __func__); return ret; } @@ -470,6 +478,7 @@ int accept(int socket, struct sockaddr *addr, socklen_t *addrlen) } fd_store(index, ret, fd_rsocket, fd_ready); + printf("%s out\n", __func__); return index; } else if (fd_gets(socket) == fd_fork_listen) { index = fd_open(); @@ -636,8 +645,11 @@ int connect(int socket, const struct sockaddr *addr, socklen_t addrlen) { int fd, ret; + printf("%s in\n", __func__); if (fd_get(socket, &fd) == fd_rsocket) { + printf("%s rconnect\n", __func__); ret = rconnect(fd, addr, addrlen); + printf("%s ret %d\n", __func__, ret); if (!ret || errno == EINPROGRESS) return ret; @@ -657,6 +669,9 @@ 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; +// struct sockaddr sa; +// socklen_t slen = sizeof sa; +// real.recvfrom(socket, buf, len, flags, &sa, &slen); return (fd_fork_get(socket, &fd) == fd_rsocket) ? rrecv(fd, buf, len, flags) : real.recv(fd, buf, len, flags); } @@ -753,11 +768,13 @@ int poll(struct pollfd *fds, nfds_t nfds, int timeout) struct pollfd *rfds; int i, ret; +// printf("%s in\n", __func__); init_preload(); for (i = 0; i < nfds; i++) { if (fd_gett(fds[i].fd) == fd_rsocket) goto use_rpoll; } +// printf("%s call real poll\n", __func__); return real.poll(fds, nfds, timeout); @@ -770,6 +787,7 @@ use_rpoll: rfds[i].fd = fd_getd(fds[i].fd); rfds[i].events = fds[i].events; rfds[i].revents = 0; +// real.poll(&fds[i], 1, 0); } ret = rpoll(rfds, nfds, timeout); @@ -777,6 +795,7 @@ use_rpoll: for (i = 0; i < nfds; i++) fds[i].revents = rfds[i].revents; +// printf("%s out\n", __func__); return ret; } @@ -935,6 +954,7 @@ int fcntl(int socket, int cmd, ... /* arg */) void *pparam; int fd, ret; + printf("%s in\n", __func__); init_preload(); va_start(args, cmd); switch (cmd) { @@ -965,6 +985,7 @@ int fcntl(int socket, int cmd, ... /* arg */) break; } va_end(args); + printf("%s out\n", __func__); return ret; } -- 2.41.0