Commit graph

38 commits

Author SHA1 Message Date
Ahmed S. Darwish
73e86b1cb1 pulsecore: Introduce memfd support
Memfd is a simple memory sharing mechanism, added by the systemd/kdbus
developers, to share pages between processes in an anonymous, no global
registry needed, no mount-point required, relatively secure, manner.

This patch introduces the necessary building blocks for using memfd
shared memory transfers in PulseAudio.

Memfd support shall also help us in laying out the necessary (but not
yet sufficient) groundwork for application sandboxing, protecting PA
from its clients, and protecting clients data from each other.

We plan to exclusively use memfds, instead of POSIX SHM, on the way
forward.

Signed-off-by: Ahmed S. Darwish <darwish.07@gmail.com>
2016-04-02 05:47:47 +02:00
Ahmed S. Darwish
1c3a2bcaf1 SHM: Refactor private allocations
pa_shm_create_rw() is responsible for creating two types of memory:
POSIX shared memory and regular malloc()-ed ones.

A third memory type, memfds, will be added later. Thus to add this
extra shared memory type in a sane manner, refactor private memory
allocations into their own static methods.

Signed-off-by: Ahmed S. Darwish <darwish.07@gmail.com>
2016-04-02 05:46:42 +02:00
Ahmed S. Darwish
b88acd0266 pulsecore: Transform pa_mempool_new() into a factory method
Soon we're going to have three types of memory pools: POSIX shm_open()
pools, memfd memfd_create() ones, and privately malloc()-ed pools.

Thus introduce annotations for the memory types supported and change
pa_mempool_new() into a factory method based on required memory.

Signed-off-by: Ahmed S. Darwish <darwish.07@gmail.com>
2016-04-02 05:44:34 +02:00
David Henningsson
12a93495b9 shm: Warn on not being able to open shm files
With the exception of when trying to clean up shm files,
it's useful to warn if opening them fails, regardless of reason.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2015-09-28 15:41:15 +02:00
Ondrej Holecek
5effc83479 update FSF addresses to FSF web page
FSF addresses used in PA sources are no longer valid and rpmlint
generates numerous warnings during packaging because of this.
This patch changes all FSF addresses to FSF web page according to
the GPL how-to: https://www.gnu.org/licenses/gpl-howto.en.html

Done automatically by sed-ing through sources.
2015-01-14 22:20:40 +02:00
David Henningsson
613177919f shm: Allow to open shm in writable mode
This is a preparation for the shm ringbuffer, which needs to be able
to be writable by both sides, because there are atomic variables they
both need to modify.

Signed-off-by: David Henningsson <david.henningsson@canonical.com>
2014-06-27 14:16:32 +02:00
poljar (Damir Jelić)
d806b19714 Remove pa_bool_t and replace it with bool.
commands used for this (executed from the pulseaudio/src directory):
    find . -regex '\(.*\.[hc]\|.*\.cc\|.*\.m4\)' -not -name 'macro.h' \
        -a -not -name 'reserve.[ch]' -a -not -name 'reserve-monitor.[ch]' \
        -a -not -name 'glib-mainloop.c' -a -not -name 'gkt-test.c' \
        -a -not -name 'glib-mainloop.c' -a -not -name 'gkt-test.c' \
        -a -not -name 'poll-win32.c' -a -not -name 'thread-win32.c' \
        -a -not -name 'dllmain.c' -a -not -name 'gconf-helper.c' \
        -exec sed -i -e 's/\bpa_bool_t\b/bool/g' \
        -e 's/\bTRUE\b/true/g' -e 's/\bFALSE\b/false/g' {} \;

and:
    sed -i -e '181,194!s/\bpa_bool_t\b/bool/' \
        -e '181,194!s/\bTRUE\b/true/' -e \
        '181,194!s/\bFALSE\b/false/' pulsecore/macro.h
2013-07-04 12:25:30 +03:00
Tanu Kaskinen
d646d931dc shm: Don't force the shm files to be read-only
Forcing the shm file to be read-only makes shm_unlink() fail on OS X.
Thanks to Albert Zeyer for reporting the bug and investigating the
root cause.

BugLink: https://bugs.freedesktop.org/show_bug.cgi?id=62988
2013-04-10 14:31:54 +03:00
Tanu Kaskinen
54c9fa97bd shm: Support Solaris shm file paths.
Patch by Brian Cameron <brian.cameron@oracle.com>
2013-01-04 16:31:57 +02:00
Maarten Bosmans
ae179d7321 shm: Use a goto rather than early return for consistency.
This is functionally the same but is easier to understand.
2011-11-27 16:25:04 +00:00
Maarten Bosmans
c5dca7cf2b More spelling fixes 2011-08-25 11:27:47 +01:00
Maarten Bosmans
5818a2c63e win32: Make some unused-variable warnings go away 2011-06-24 00:34:05 +01:00
Maarten Bosmans
53695b83dc Get rid of some unused-function compiler warnings 2011-03-02 14:52:46 +00:00
Lennart Poettering
c2079d792c shm: don't complain about missing SHM segments
If two clients try to cleanup the SHM directory at the same time, they
might want to open and then delete the same segment at the same time, in
which case one client might win, the other one lose. In this case, don't
warn about ENOENT.
2010-02-21 17:48:17 +01:00
Lennart Poettering
f250179b4e shm: explicitly mark shm seg for MAP_NORESERVE to request overcommiting no matter what 2010-02-02 09:01:04 +01:00
Lennart Poettering
b0cabfe16b shm: bump shm size limit to 1GB 2009-08-14 04:14:35 +02:00
Diego Elio 'Flameeyes' Pettenò
de40e41446 Also alias MAP_ANONYMOUS to MAP_ANON in shm.c, for FreeBSD. 2009-06-29 17:41:06 +02:00
Lennart Poettering
0921b1b4a3 shm: rework alignment when punching memory 2009-05-14 19:51:05 +02:00
Lennart Poettering
8247e4555b shm: minor modernizations 2009-04-29 01:49:22 +02:00
Lennart Poettering
595c22a3ad shm: page align shm size when mmap()ing it 2009-04-29 01:49:02 +02:00
Lennart Poettering
44bca66c59 make PA_GCC_PACKED and PA_GCC_MALLOC actually work 2009-02-13 18:02:47 +01:00
Lennart Poettering
f826ded33d make shm marker architecture independant, patch from michich, closes #401 2008-11-01 21:41:07 +01:00
Lennart Poettering
34bcba63a2 remove a few more gcc warnings 2008-08-30 01:22:41 +02:00
Lennart Poettering
13018d62c1 fix a few compiler warnings on older gcc 2008-08-29 23:53:55 +02:00
Lennart Poettering
b7026bf248 add a few more gcc warning flags and fix quite a few problems found by doing so 2008-08-19 22:39:54 +02:00
Lennart Poettering
8ae83d618e get rid of svn $ keywords 2008-06-18 23:23:21 +03:00
Lennart Poettering
045c1d602d merge glitch-free branch back into trunk
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2445 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-05-15 23:34:41 +00:00
Lennart Poettering
2b8bc5cbbf allow compilation on systems that lack POSIX shared memory. Patch from matthijs, closes #200
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@2110 fefdeb5f-60dc-0310-8127-8f9354f1896f
2008-02-15 13:38:12 +00:00
Lennart Poettering
a67c21f093 merge 'lennart' branch back into trunk.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1971 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-10-28 19:13:50 +00:00
Pierre Ossman
06211b7c8f Add copyright notices to all relevant files. (based on svn log)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1426 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-02-13 15:35:19 +00:00
Pierre Ossman
521daf6f0a Huge trailing whitespace cleanup. Let's keep the tree pure from here on,
mmmkay?


git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1418 fefdeb5f-60dc-0310-8127-8f9354f1896f
2007-01-04 13:43:45 +00:00
Lennart Poettering
a633944820 fix an misdesigned assert()
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1339 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-28 19:16:00 +00:00
Pierre Ossman
cf7b401ac6 Fix up portability of memory pool handling a bit.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1319 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-22 12:45:43 +00:00
Pierre Ossman
10bbc4b7c9 Fix detection of shared memory support and proper fallback.
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1316 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-22 11:41:14 +00:00
Lennart Poettering
3e0f00f93d if MAP_ANONYMOUS is not supported use posix_memalign if possible to allocate the memory pool
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1296 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 17:27:27 +00:00
Lennart Poettering
8c9bdb838c fix allocation of anonymous memory
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1281 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-19 01:15:22 +00:00
Lennart Poettering
e385d93e5a remove all occurences of
pa_logXXX(__FILE__":  
   
and replace them by 
  
   pa_logXXX("



git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1272 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-18 21:38:40 +00:00
Lennart Poettering
ff48681aae add abstracted shared memory API
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@1265 fefdeb5f-60dc-0310-8127-8f9354f1896f
2006-08-18 19:46:20 +00:00