[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20130820134902.3a06e4d0@gandalf.local.home>
Date: Tue, 20 Aug 2013 13:49:02 -0400
From: Steven Rostedt <rostedt@...dmis.org>
To: Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@...achi.com>
Cc: Hidehiro Kawai <hidehiro.kawai.ez@...achi.com>,
Masami Hiramatsu <masami.hiramatsu.pt@...achi.com>,
linux-kernel@...r.kernel.org, yrl.pp-manager.tt@...achi.com
Subject: Re: [RFC PATCH 07/11] [CLEANUP] trace-cmd: Split out binding a port
and fork reader from open_udp()
On Mon, 19 Aug 2013 18:46:37 +0900
Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@...achi.com> wrote:
> Split out binding a port and fork reader from open_udp() for avoiding duplicate
> codes between listen mode and virt-server mode.
>
> Signed-off-by: Yoshihiro YUNOMAE <yoshihiro.yunomae.ez@...achi.com>
> ---
> trace-listen.c | 34 ++++++++++++++++++++++++++--------
> 1 file changed, 26 insertions(+), 8 deletions(-)
>
> diff --git a/trace-listen.c b/trace-listen.c
> index f29dd35..bf9ef9d 100644
> --- a/trace-listen.c
> +++ b/trace-listen.c
> @@ -228,13 +228,12 @@ static void process_udp_child(int sfd, const char *host, const char *port,
> #define START_PORT_SEARCH 1500
> #define MAX_PORT_SEARCH 6000
>
> -static int open_udp(const char *node, const char *port, int *pid,
> - int cpu, int pagesize, int start_port)
> +static int udp_bind_a_port(int start_port, int *sfd)
> {
> struct addrinfo hints;
> struct addrinfo *result, *rp;
> - int sfd, s;
> char buf[BUFSIZ];
> + int s;
> int num_port = start_port;
>
> again:
> @@ -250,15 +249,15 @@ static int open_udp(const char *node, const char *port, int *pid,
> pdie("getaddrinfo: error opening udp socket");
>
> for (rp = result; rp != NULL; rp = rp->ai_next) {
> - sfd = socket(rp->ai_family, rp->ai_socktype,
> - rp->ai_protocol);
> - if (sfd < 0)
> + *sfd = socket(rp->ai_family, rp->ai_socktype,
> + rp->ai_protocol);
> + if (*sfd < 0)
> continue;
>
> - if (bind(sfd, rp->ai_addr, rp->ai_addrlen) == 0)
> + if (bind(*sfd, rp->ai_addr, rp->ai_addrlen) == 0)
> break;
>
> - close(sfd);
> + close(*sfd);
> }
>
> if (rp == NULL) {
> @@ -270,6 +269,12 @@ static int open_udp(const char *node, const char *port, int *pid,
>
> freeaddrinfo(result);
>
> + return num_port;
> +}
> +
> +static void fork_udp_reader(int sfd, const char *node, const char *port,
> + int *pid, int cpu, int pagesize)
> +{
> *pid = fork();
>
> if (*pid < 0)
> @@ -279,6 +284,19 @@ static int open_udp(const char *node, const char *port, int *pid,
> process_udp_child(sfd, node, port, cpu, pagesize);
>
> close(sfd);
> +}
> +
> +static int open_udp(const char *node, const char *port, int *pid,
> + int cpu, int pagesize, int start_port)
> +{
> + int sfd;
> + int num_port;
> +
> + num_port = udp_bind_a_port(start_port, &sfd);
> + if (num_port < 0)
> + return num_port;
I don't see how num_port could be less than zero.
-- Steve
> +
> + fork_udp_reader(sfd, node, port, pid, cpu, pagesize);
>
> return num_port;
> }
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists