X-Git-Url: http://git.lttng.org/?a=blobdiff_plain;f=src%2Fbin%2Flttng-consumerd%2Flttng-consumerd.c;h=9f2f02feba03897b7462de3250c863ec2ec37b55;hb=c1e57b6809e7eee904ed0254027f507be49ce21d;hp=5d1ad06829f3539cd9619d27467c89580dbe569a;hpb=3183dbb0b0a687ececcadb3be0cde938dc19f57a;p=lttng-tools.git diff --git a/src/bin/lttng-consumerd/lttng-consumerd.c b/src/bin/lttng-consumerd/lttng-consumerd.c index 5d1ad0682..9f2f02feb 100644 --- a/src/bin/lttng-consumerd/lttng-consumerd.c +++ b/src/bin/lttng-consumerd/lttng-consumerd.c @@ -2,19 +2,18 @@ * Copyright (C) 2011 - Julien Desfossez * Mathieu Desnoyers * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; only version 2 - * of the License. + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License, version 2 only, + * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * You should have received a copy of the GNU General Public License along + * with this program; if not, write to the Free Software Foundation, Inc., + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #define _GNU_SOURCE @@ -28,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -39,6 +39,7 @@ #include #include #include +#include #include #include @@ -49,7 +50,7 @@ #include "lttng-consumerd.h" -/* TODO : support UST (all direct kern-ctl accesses). */ +/* TODO : support UST (all direct kernel-ctl accesses). */ /* the two threads (receive fd and poll) */ static pthread_t threads[2]; @@ -58,8 +59,8 @@ static pthread_t threads[2]; static int sigintcount = 0; /* Argument variables */ -int opt_quiet; -int opt_verbose; +int lttng_opt_quiet; /* not static in error.h */ +int lttng_opt_verbose; /* not static in error.h */ static int opt_daemon; static const char *progname; static char command_sock_path[PATH_MAX]; /* Global command socket path */ @@ -199,10 +200,10 @@ static void parse_args(int argc, char **argv) usage(stdout); exit(EXIT_SUCCESS); case 'q': - opt_quiet = 1; + lttng_opt_quiet = 1; break; case 'v': - opt_verbose = 1; + lttng_opt_verbose = 1; break; case 'V': fprintf(stdout, "%s\n", VERSION); @@ -228,6 +229,25 @@ static void parse_args(int argc, char **argv) } } +/* + * Set open files limit to unlimited. This daemon can open a large number of + * file descriptors in order to consumer multiple kernel traces. + */ +static void set_ulimit(void) +{ + int ret; + struct rlimit lim; + + /* The kernel does not allowed an infinite limit for open files */ + lim.rlim_cur = 65535; + lim.rlim_max = 65535; + + ret = setrlimit(RLIMIT_NOFILE, &lim); + if (ret < 0) { + PERROR("failed to set open files limit"); + } +} + /* * main */ @@ -273,6 +293,11 @@ int main(int argc, char **argv) /* Init */ lttng_consumer_init(); + if (!getuid()) { + /* Set limit for open files */ + set_ulimit(); + } + /* create the consumer instance with and assign the callbacks */ ctx = lttng_consumer_create(opt_type, lttng_consumer_read_subbuffer, NULL, lttng_consumer_on_recv_stream, NULL); @@ -310,7 +335,7 @@ int main(int argc, char **argv) ret = lttcomm_connect_unix_sock(error_sock_path); /* not a fatal error, but all communication with lttng-sessiond will fail */ if (ret < 0) { - WARN("Cannot connect to error socket (is lttng-sessiond started ?)"); + WARN("Cannot connect to error socket (is lttng-sessiond started?)"); } lttng_consumer_set_error_sock(ctx, ret);