pulseaudio/src/modules
Ahmed S. Darwish 27d0a3b388 pstream: Support memfd blocks transport
Now that we have the necessary infrastructure to memexport and
mempimport a memfd memblock, extend that support higher up in the
chain with pstreams.

A PA endpoint can now _transparently_ send a memfd memblock to the
other end by simply calling pa_pstream_send_memblock() – provided
the block's memfd pool was earlier registered with the pstream.

If the pipe does not support memfd transfers, we fall back to
sending the block's full data instead of just its reference.

** Further details:

A single pstream connection usually transfers blocks from multiple
pools including the server's srbchannel mempool, the client's
audio data mempool, and the server's global core mempool.

If these mempools are memfd-backed, we now require registering
them with the pstream before sending any blocks they cover. This
is done to minimize fd passing overhead and avoid fd leaks.

Moreover, to support all these pools without hard-coding their
number or nature in the Pulse communication protocol itself, a new
REGISTER_MEMFD_SHMID command is introduced. That command can be
sent _anytime_ during the pstream's lifetime and is used for
creating on demand SHM ID to memfd mappings.

Suggested-by: David Henningsson <david.henningsson@canonical.com>
Signed-off-by: Ahmed S. Darwish <darwish.07@gmail.com>
2016-04-02 05:55:14 +02:00
..
alsa alsa-mixer: refactor element_probe and fix >2 channel bug 2016-03-08 08:37:57 +01:00
bluetooth bluetooth: Prevent aborts caused by invalid module arguments 2016-01-15 16:20:53 +05:30
dbus core, pulse, modules: Fix undefined behavior with array subscript of invalid type 2015-12-08 08:56:07 +05:30
echo-cancel echo-cancel: Convert AGC API to deal with pa_volume_t 2016-02-25 19:06:44 +05:30
gconf modules: Fix struct namespace collision on Solaris 2015-07-29 08:09:41 +05:30
jack update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
macosx coreaudio: Catch devices with more channels than we support 2016-02-12 19:34:58 +05:30
oss oss: Use the correct fd when interacting with the mixer 2015-04-30 13:21:02 +03:00
raop update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
rtp rtp: fix non null terminated string / non portable sscanf 2015-11-04 12:45:21 +02:00
x11 Rename functions with "tostring" in the name to one with "to_string" to conform with the convention. 2015-09-25 17:29:02 +05:30
xen xen: Resource leak in local function alloc_gref() - alloc_fd and dev_fd 2015-07-21 16:40:03 +02:00
ladspa.h update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
Makefile build-sys: readd stub makefiles to subdirectories to make building with emacs easier 2012-05-15 14:17:58 +02:00
module-always-sink.c always-sink: simplify hook management with pa_module_hook_connect() 2015-12-21 05:37:28 +02:00
module-augment-properties.c conf-parser: add support for .d directories 2015-12-14 13:45:39 +01:00
module-card-restore.c card-restore: save the database when shutting down 2016-03-08 10:21:13 +02:00
module-cli.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-combine-sink.c combine-sink: Fix unsafe message handling 2015-07-21 20:05:13 +03:00
module-combine.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-console-kit.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-default-device-restore.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-defs.h.m4 Remove pa_bool_t and replace it with bool. 2013-07-04 12:25:30 +03:00
module-detect.c detect: Fix OSS device detection with long names 2015-04-13 08:32:16 +05:30
module-device-manager.c device-manager: improve logging about non-existing data 2016-01-26 15:46:20 +02:00
module-device-restore.c module-*-restore: use pa_module_hook_connect 2015-04-10 09:26:40 +02:00
module-equalizer-sink.c equalizer: Handle underlying sink going away better when autoloaded 2015-06-12 12:43:18 +05:30
module-esound-compat-spawnfd.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-esound-compat-spawnpid.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-esound-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-filter-apply.c filter-apply: fix typo "what" -> "want" 2016-03-17 19:33:28 +02:00
module-filter-heuristics.c module-filter-*: use pa_module_hook_connect 2015-04-10 09:26:47 +02:00
module-hal-detect-compat.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-intended-roles.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-ladspa-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-lirc.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-loopback.c loopback: Validate the rate parameter 2015-12-18 07:35:15 +02:00
module-match.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-mmkbd-evdev.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-native-protocol-fd.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-null-sink.c null-sink: correct update of timestamp when state changes to RUNNING or IDLE 2015-10-25 16:36:51 +02:00
module-null-source.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-pipe-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-pipe-source.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-position-event-sounds.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-protocol-stub.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-remap-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-remap-source.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-rescue-streams.c rescue-streams : Fix a typo 2016-02-02 14:56:36 +05:30
module-role-cork.c role-cork: prepare merge with role-ducking: replace "cork" with "interact" where appropriate 2016-03-15 13:02:04 +02:00
module-role-ducking.c role-ducking: use the common code in stream-interaction.c 2016-03-21 14:29:18 +02:00
module-rygel-media-server.c Rename functions with "tostring" in the name to one with "to_string" to conform with the convention. 2015-09-25 17:29:02 +05:30
module-sine-source.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-sine.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-solaris.c solaris: Catch up with newer API 2016-01-22 13:25:29 +05:30
module-stream-restore.c modules: Fix compiler warning comparing 0 with bool 2016-02-18 14:08:13 +01:00
module-suspend-on-idle.c module-suspend-on-idle: use pa_module_hook_connect 2015-04-10 09:26:43 +02:00
module-switch-on-connect.c module-switch-*: use pa_module_hook_connect 2015-04-10 09:26:49 +02:00
module-switch-on-port-available.c switch-on-port-available: Switch from HDMI to analog; but not the other way around 2016-02-26 13:45:53 +01:00
module-systemd-login.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-tunnel-sink-new.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-tunnel-source-new.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-tunnel.c pstream: Support memfd blocks transport 2016-04-02 05:55:14 +02:00
module-udev-detect.c Rename functions with "tostring" in the name to one with "to_string" to conform with the convention. 2015-09-25 17:29:02 +05:30
module-virtual-sink.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-virtual-source.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-virtual-surround-sink.c lfe-filter: change the crossover frequency as a parameter 2015-03-30 10:52:30 +02:00
module-volume-restore.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-waveout.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-zeroconf-discover.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
module-zeroconf-publish.c module: Remove redundant core argument from pa_module_unload() 2015-12-07 09:31:58 +01:00
reserve-monitor.c reserve: Move get_name_owner() to the public rd_device API 2013-01-31 13:56:25 +02:00
reserve-monitor.h More spelling fixes 2011-08-25 11:27:47 +01:00
reserve-wrap.c update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
reserve-wrap.h update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00
reserve.c reserve: Fix leaking NameLost signals after release+acquire 2013-01-31 14:04:45 +02:00
reserve.h reserve: Move get_name_owner() to the public rd_device API 2013-01-31 13:56:25 +02:00
stream-interaction.c stream-interaction: interact if a stream starts corked 2016-03-21 20:26:57 +02:00
stream-interaction.h role-cork: prepare merge with role-ducking: replace "cork" with "interact" where appropriate 2016-03-15 13:02:04 +02:00
udev-util.c udev: Deal with unavailable bus property 2015-04-13 08:35:53 +05:30
udev-util.h update FSF addresses to FSF web page 2015-01-14 22:20:40 +02:00