summaryrefslogtreecommitdiff
path: root/src/bootchart
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2013-03-11 22:54:36 +0100
committerLennart Poettering <lennart@poettering.net>2013-03-11 22:54:36 +0100
commit361514aca147f8826811c23cfac40c6ac995dfeb (patch)
tree2569d834221d1198d026fec1486f13392aa5e309 /src/bootchart
parent6d031c0b6037ac7308d31562c09fb8ac714e82b4 (diff)
bootchart: bump RLIMIT_NOFILE only after we forked us off, so that the init system inherits the kernel default
Diffstat (limited to 'src/bootchart')
-rw-r--r--src/bootchart/bootchart.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/src/bootchart/bootchart.c b/src/bootchart/bootchart.c
index a722b2aabf..e608af2e3f 100644
--- a/src/bootchart/bootchart.c
+++ b/src/bootchart/bootchart.c
@@ -90,8 +90,6 @@ double arg_scale_y = 20.0; /* 16px = 1 process bar */
char arg_init_path[PATH_MAX] = "/sbin/init";
char arg_output_path[PATH_MAX] = "/run/log";
-static struct rlimit rlim;
-
static void signal_handler(int sig) {
if (sig++)
sig--;
@@ -110,6 +108,7 @@ int main(int argc, char *argv[]) {
int gind;
int i, r;
char *init = NULL, *output = NULL;
+ struct rlimit rlim;
const ConfigTableItem items[] = {
{ "Bootchart", "Samples", config_parse_int, 0, &arg_samples_len },
@@ -125,10 +124,6 @@ int main(int argc, char *argv[]) {
{ NULL, NULL, NULL, 0, NULL }
};
- rlim.rlim_cur = 4096;
- rlim.rlim_max = 4096;
- (void) setrlimit(RLIMIT_NOFILE, &rlim);
-
fn = "/etc/systemd/bootchart.conf";
f = fopen(fn, "re");
if (f) {
@@ -260,6 +255,10 @@ int main(int argc, char *argv[]) {
}
argv[0][0] = '@';
+ rlim.rlim_cur = 4096;
+ rlim.rlim_max = 4096;
+ (void) setrlimit(RLIMIT_NOFILE, &rlim);
+
/* start with empty ps LL */
ps_first = calloc(1, sizeof(struct ps_struct));
if (!ps_first) {