diff options
author | Lennart Poettering <lennart@poettering.net> | 2018-06-05 15:21:47 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2018-06-06 14:39:15 +0200 |
commit | 9264cc39ce9da6f6cdf675a7b3bb3ef9e8f97cbb (patch) | |
tree | fa7090786fc73ef0c7e7a539f50094bd3ba1478e /src/basic/fd-util.c | |
parent | 0e37c169fbacf3b447aa97eac459c29537c34263 (diff) | |
download | systemd-9264cc39ce9da6f6cdf675a7b3bb3ef9e8f97cbb.tar.gz |
main: split out reading of /proc/sys/fs/nr_open into its own function
This doesn't really reduce the code size over all, but it does make main.c
shorter and more readable, and that's always a good thing.
Diffstat (limited to 'src/basic/fd-util.c')
-rw-r--r-- | src/basic/fd-util.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/basic/fd-util.c b/src/basic/fd-util.c index e54881ca3c..e1bea94c90 100644 --- a/src/basic/fd-util.c +++ b/src/basic/fd-util.c @@ -930,3 +930,27 @@ int fd_reopen(int fd, int flags) { return new_fd; } + +int read_nr_open(void) { + _cleanup_free_ char *nr_open = NULL; + int r; + + /* Returns the kernel's current fd limit, either by reading it of /proc/sys if that works, or using the + * hard-coded default compiled-in value of current kernels (1M) if not. This call will never fail. */ + + r = read_one_line_file("/proc/sys/fs/nr_open", &nr_open); + if (r < 0) + log_debug_errno(r, "Failed to read /proc/sys/fs/nr_open, ignoring: %m"); + else { + int v; + + r = safe_atoi(nr_open, &v); + if (r < 0) + log_debug_errno(r, "Failed to parse /proc/sys/fs/nr_open value '%s', ignoring: %m", nr_open); + else + return v; + } + + /* If we fail, fallback to the hard-coded kernel limit of 1024 * 1024. */ + return 1024 * 1024; +} |