From 2f5350f30cbfeebde0bd287d16fb118639536493 Mon Sep 17 00:00:00 2001 From: "sgunderson@bigfoot.com" <> Date: Tue, 13 Feb 2007 21:54:31 +0100 Subject: [PATCH] Stop malloc()-ing for each new connection. --- jam.c | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/jam.c b/jam.c index 581d51c..5faf037 100644 --- a/jam.c +++ b/jam.c @@ -148,21 +148,14 @@ struct sender { unsigned long long bytes_left; }; -void generate_new_sender(int ep_fd) +void generate_new_sender(int ep_fd, struct sender *s) { int sock, one = 1; unsigned src_num, dst_num; unsigned long long num_bytes; struct sockaddr_in sin; struct epoll_event ev; - struct sender *s; - s = (struct sender *)malloc(sizeof(struct sender)); - if (s == NULL) { - perror("malloc()"); - exit(1); - } - sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP); if (sock == -1) { perror("socket()"); @@ -230,8 +223,15 @@ void *sender_worker(void *arg) buf[i] = rand() & 0xff; // allocate all the senders - for (i = 0; i < num_sockets_per_sender; ++i) - generate_new_sender(ep_fd); + for (i = 0; i < num_sockets_per_sender; ++i) { + struct sender *s = (struct sender *)malloc(sizeof(struct sender)); + if (s == NULL) { + perror("malloc()"); + exit(1); + } + + generate_new_sender(ep_fd, s); + } for ( ;; ) { int num_active = epoll_wait(ep_fd, events, num_sockets_per_sender, -1); @@ -277,9 +277,7 @@ void *sender_worker(void *arg) exit(1); } close(s->fd); - - free(s); - generate_new_sender(ep_fd); + generate_new_sender(ep_fd, s); } } } -- 2.39.2