mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 14:25:26 +00:00
socket-util: Move get_max_fds() to process.c.
get_max_fds() is used only from process.c. Move it there along with rlim_is_finite(). Since process_start() can only be called before any additional threads are created, we no longer need the thread safety checks in get_max_fds(). Signed-off-by: Gurucharan Shetty <gshetty@nicira.com> Acked-by: Ben Pfaff <blp@nicira.com>
This commit is contained in:
@@ -165,6 +165,49 @@ process_register(const char *name, pid_t pid)
|
||||
return p;
|
||||
}
|
||||
|
||||
#ifndef _WIN32
|
||||
static bool
|
||||
rlim_is_finite(rlim_t limit)
|
||||
{
|
||||
if (limit == RLIM_INFINITY) {
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef RLIM_SAVED_CUR /* FreeBSD 8.0 lacks RLIM_SAVED_CUR. */
|
||||
if (limit == RLIM_SAVED_CUR) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RLIM_SAVED_MAX /* FreeBSD 8.0 lacks RLIM_SAVED_MAX. */
|
||||
if (limit == RLIM_SAVED_MAX) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Returns the maximum valid FD value, plus 1. */
|
||||
static int
|
||||
get_max_fds(void)
|
||||
{
|
||||
static int max_fds;
|
||||
|
||||
if (!max_fds) {
|
||||
struct rlimit r;
|
||||
if (!getrlimit(RLIMIT_NOFILE, &r) && rlim_is_finite(r.rlim_cur)) {
|
||||
max_fds = r.rlim_cur;
|
||||
} else {
|
||||
VLOG_WARN("failed to obtain fd limit, defaulting to 1024");
|
||||
max_fds = 1024;
|
||||
}
|
||||
}
|
||||
|
||||
return max_fds;
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
|
||||
/* Starts a subprocess with the arguments in the null-terminated argv[] array.
|
||||
* argv[0] is used as the name of the process. Searches the PATH environment
|
||||
* variable to find the program to execute.
|
||||
|
@@ -122,49 +122,6 @@ set_dscp(int fd, uint8_t dscp)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool
|
||||
rlim_is_finite(rlim_t limit)
|
||||
{
|
||||
if (limit == RLIM_INFINITY) {
|
||||
return false;
|
||||
}
|
||||
|
||||
#ifdef RLIM_SAVED_CUR /* FreeBSD 8.0 lacks RLIM_SAVED_CUR. */
|
||||
if (limit == RLIM_SAVED_CUR) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef RLIM_SAVED_MAX /* FreeBSD 8.0 lacks RLIM_SAVED_MAX. */
|
||||
if (limit == RLIM_SAVED_MAX) {
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Returns the maximum valid FD value, plus 1. */
|
||||
int
|
||||
get_max_fds(void)
|
||||
{
|
||||
static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER;
|
||||
static int max_fds;
|
||||
|
||||
if (ovsthread_once_start(&once)) {
|
||||
struct rlimit r;
|
||||
if (!getrlimit(RLIMIT_NOFILE, &r) && rlim_is_finite(r.rlim_cur)) {
|
||||
max_fds = r.rlim_cur;
|
||||
} else {
|
||||
VLOG_WARN("failed to obtain fd limit, defaulting to 1024");
|
||||
max_fds = 1024;
|
||||
}
|
||||
ovsthread_once_done(&once);
|
||||
}
|
||||
|
||||
return max_fds;
|
||||
}
|
||||
|
||||
/* Translates 'host_name', which must be a string representation of an IP
|
||||
* address, into a numeric IP address in '*addr'. Returns 0 if successful,
|
||||
* otherwise a positive errno value. */
|
||||
|
@@ -31,8 +31,6 @@ int set_nonblocking(int fd);
|
||||
void xset_nonblocking(int fd);
|
||||
int set_dscp(int fd, uint8_t dscp);
|
||||
|
||||
int get_max_fds(void);
|
||||
|
||||
int lookup_ip(const char *host_name, struct in_addr *address);
|
||||
int lookup_ipv6(const char *host_name, struct in6_addr *address);
|
||||
|
||||
|
Reference in New Issue
Block a user