aboutsummaryrefslogtreecommitdiff
path: root/vswitchd/ovs-vswitchd.c
diff options
context:
space:
mode:
Diffstat (limited to 'vswitchd/ovs-vswitchd.c')
-rw-r--r--vswitchd/ovs-vswitchd.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c
index 01645adf..3309c080 100644
--- a/vswitchd/ovs-vswitchd.c
+++ b/vswitchd/ovs-vswitchd.c
@@ -22,6 +22,9 @@
#include <signal.h>
#include <stdlib.h>
#include <string.h>
+#ifdef HAVE_MLOCKALL
+#include <sys/mman.h>
+#endif
#include "bridge.h"
#include "cfg.h"
@@ -148,6 +151,7 @@ parse_options(int argc, char *argv[])
{
enum {
OPT_PEER_CA_CERT = UCHAR_MAX + 1,
+ OPT_MLOCKALL,
OPT_FAKE_PROC_NET,
VLOG_OPTION_ENUMS,
LEAK_CHECKER_OPTION_ENUMS
@@ -155,6 +159,7 @@ parse_options(int argc, char *argv[])
static struct option long_options[] = {
{"help", no_argument, 0, 'h'},
{"version", no_argument, 0, 'V'},
+ {"mlockall", no_argument, 0, OPT_MLOCKALL},
{"fake-proc-net", no_argument, 0, OPT_FAKE_PROC_NET},
DAEMON_LONG_OPTIONS,
VLOG_LONG_OPTIONS,
@@ -186,6 +191,16 @@ parse_options(int argc, char *argv[])
OVS_PRINT_VERSION(OFP_VERSION, OFP_VERSION);
exit(EXIT_SUCCESS);
+ case OPT_MLOCKALL:
+#ifdef HAVE_MLOCKALL
+ if (mlockall(MCL_CURRENT | MCL_FUTURE)) {
+ VLOG_ERR("mlockall failed: %s", strerror(errno));
+ }
+#else
+ VLOG_ERR("mlockall not supported on this system");
+#endif
+ break;
+
case OPT_FAKE_PROC_NET:
error = proc_net_compat_init();
if (error) {