2006-08-18 19:46:20 +00:00
|
|
|
#ifndef foopulseshmhfoo
|
|
|
|
|
#define foopulseshmhfoo
|
|
|
|
|
|
|
|
|
|
/***
|
|
|
|
|
This file is part of PulseAudio.
|
2007-01-04 13:43:45 +00:00
|
|
|
|
2007-02-13 15:35:19 +00:00
|
|
|
Copyright 2006 Lennart Poettering
|
|
|
|
|
|
2006-08-18 19:46:20 +00:00
|
|
|
PulseAudio is free software; you can redistribute it and/or modify
|
|
|
|
|
it under the terms of the GNU Lesser General Public License as
|
|
|
|
|
published by the Free Software Foundation; either version 2.1 of the
|
|
|
|
|
License, or (at your option) any later version.
|
2007-01-04 13:43:45 +00:00
|
|
|
|
2006-08-18 19:46:20 +00:00
|
|
|
PulseAudio is distributed in the hope that it will be useful, but
|
|
|
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
|
|
|
Lesser General Public License for more details.
|
2007-01-04 13:43:45 +00:00
|
|
|
|
2006-08-18 19:46:20 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2014-11-26 14:14:51 +01:00
|
|
|
License along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.
|
2006-08-18 19:46:20 +00:00
|
|
|
***/
|
|
|
|
|
|
|
|
|
|
#include <sys/types.h>
|
|
|
|
|
|
2008-05-15 23:34:41 +00:00
|
|
|
#include <pulsecore/macro.h>
|
2016-03-13 00:57:06 +02:00
|
|
|
#include <pulsecore/mem.h>
|
2008-05-15 23:34:41 +00:00
|
|
|
|
2006-08-18 19:46:20 +00:00
|
|
|
typedef struct pa_shm {
|
2016-03-13 00:57:06 +02:00
|
|
|
pa_mem_type_t type;
|
2006-08-18 19:46:20 +00:00
|
|
|
unsigned id;
|
|
|
|
|
void *ptr;
|
|
|
|
|
size_t size;
|
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-03-13 01:04:18 +02:00
|
|
|
|
|
|
|
|
/* Only for type = PA_MEM_TYPE_SHARED_POSIX */
|
2013-06-27 19:28:09 +02:00
|
|
|
bool do_unlink:1;
|
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-03-13 01:04:18 +02:00
|
|
|
|
|
|
|
|
/* Only for type = PA_MEM_TYPE_SHARED_MEMFD
|
|
|
|
|
*
|
|
|
|
|
* To avoid fd leaks, we keep this fd open only until we pass it
|
|
|
|
|
* to the other PA endpoint over unix domain socket.
|
|
|
|
|
*
|
|
|
|
|
* When we don't have ownership for the memfd fd in question (e.g.
|
|
|
|
|
* pa_shm_attach()), or the file descriptor has now been closed,
|
|
|
|
|
* this is set to -1. */
|
|
|
|
|
int fd;
|
2006-08-18 19:46:20 +00:00
|
|
|
} pa_shm;
|
|
|
|
|
|
2016-03-13 00:57:06 +02:00
|
|
|
int pa_shm_create_rw(pa_shm *m, pa_mem_type_t type, size_t size, mode_t mode);
|
2016-03-13 01:07:27 +02:00
|
|
|
int pa_shm_attach(pa_shm *m, pa_mem_type_t type, unsigned id, int memfd_fd, bool writable);
|
2006-08-18 19:46:20 +00:00
|
|
|
|
|
|
|
|
void pa_shm_punch(pa_shm *m, size_t offset, size_t size);
|
|
|
|
|
|
|
|
|
|
void pa_shm_free(pa_shm *m);
|
|
|
|
|
|
2007-10-28 19:13:50 +00:00
|
|
|
int pa_shm_cleanup(void);
|
|
|
|
|
|
2006-08-18 19:46:20 +00:00
|
|
|
#endif
|