From 8c84c96fe1918c6967d17403825a93e9becb016f Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 19 Jan 2021 12:17:29 +0100 Subject: [PATCH] daemon: add support for mlockall --- src/daemon/media-session.d/media-session.conf | 1 + src/daemon/pipewire.conf.in | 1 + src/examples/media-session/media-session.c | 8 ++++---- src/pipewire/context.c | 8 ++++++++ 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/daemon/media-session.d/media-session.conf b/src/daemon/media-session.d/media-session.conf index 1b8bfcdb1..ae56d6190 100644 --- a/src/daemon/media-session.d/media-session.conf +++ b/src/daemon/media-session.d/media-session.conf @@ -2,6 +2,7 @@ properties = { # Properties to configure the session and some # modules + #mem.mlock-all = false } diff --git a/src/daemon/pipewire.conf.in b/src/daemon/pipewire.conf.in index 78084a2ca..e49a0d344 100644 --- a/src/daemon/pipewire.conf.in +++ b/src/daemon/pipewire.conf.in @@ -6,6 +6,7 @@ properties = { #link.max-buffers = 64 link.max-buffers = 16 # version < 3 clients can't handle more #mem.allow-mlock = true + #mem.mlock-all = false #log.level = 2 ## Properties for the DSP configuration diff --git a/src/examples/media-session/media-session.c b/src/examples/media-session/media-session.c index 0dcf7204d..75cccbd51 100644 --- a/src/examples/media-session/media-session.c +++ b/src/examples/media-session/media-session.c @@ -2281,7 +2281,9 @@ int main(int argc, char *argv[]) pw_init(&argc, &argv); impl.state_dir_fd = -1; - impl.this.props = pw_properties_new(NULL, NULL); + impl.this.props = pw_properties_new( + PW_KEY_CONTEXT_PROFILE_MODULES, "default,rtkit", + NULL); if (impl.this.props == NULL) return -1; @@ -2326,9 +2328,7 @@ int main(int argc, char *argv[]) pw_loop_add_signal(impl.this.loop, SIGTERM, do_quit, &impl); impl.this.context = pw_context_new(impl.this.loop, - pw_properties_new( - PW_KEY_CONTEXT_PROFILE_MODULES, "default,rtkit", - NULL), + pw_properties_copy(impl.this.props), 0); if (impl.this.context == NULL) diff --git a/src/pipewire/context.c b/src/pipewire/context.c index 846238277..ecb251608 100644 --- a/src/pipewire/context.c +++ b/src/pipewire/context.c @@ -27,6 +27,7 @@ #include #include #include +#include #include @@ -220,6 +221,13 @@ struct pw_context *pw_context_new(struct pw_loop *main_loop, goto error_free; } + if ((str = pw_properties_get(properties, "mem.mlock-all")) != NULL && + pw_properties_parse_bool(str)) { + if (mlockall(MCL_CURRENT | MCL_FUTURE) < 0) + pw_log_warn(NAME" %p: could not mlockall; %m", impl); + else + pw_log_info(NAME" %p: mlockall succeeded", impl); + } this->properties = properties; fill_defaults(this);