mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-15 07:00:05 -05:00
mem: use right flags when mapping
This commit is contained in:
parent
ba118e26a3
commit
ee66893133
1 changed files with 17 additions and 9 deletions
|
|
@ -272,6 +272,7 @@ static struct mapping * memblock_map(struct memblock *b,
|
|||
prot |= PROT_WRITE;
|
||||
|
||||
if (flags & PW_MEMMAP_FLAG_TWICE) {
|
||||
pw_log_error("pool %p: implement me PW_MEMMAP_FLAG_TWICE", p);
|
||||
errno = ENOTSUP;
|
||||
return NULL;
|
||||
}
|
||||
|
|
@ -398,6 +399,18 @@ int pw_memmap_free(struct pw_memmap *map)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static inline enum pw_memmap_flags block_flags_to_mem(enum pw_memblock_flags flags)
|
||||
{
|
||||
enum pw_memmap_flags fl = 0;
|
||||
|
||||
if (flags & PW_MEMBLOCK_FLAG_READABLE)
|
||||
fl |= PW_MEMMAP_FLAG_READ;
|
||||
if (flags & PW_MEMBLOCK_FLAG_WRITABLE)
|
||||
fl |= PW_MEMMAP_FLAG_WRITE;
|
||||
|
||||
return fl;
|
||||
}
|
||||
|
||||
/** Create a new memblock
|
||||
* \param pool the pool to use
|
||||
* \param flags memblock flags
|
||||
|
|
@ -458,14 +471,8 @@ struct pw_memblock * pw_mempool_alloc(struct pw_mempool *pool, enum pw_memblock_
|
|||
}
|
||||
#endif
|
||||
if (flags & PW_MEMBLOCK_FLAG_MAP && size > 0) {
|
||||
enum pw_memmap_flags fl = 0;
|
||||
|
||||
if (flags & PW_MEMBLOCK_FLAG_READABLE)
|
||||
fl |= PW_MEMMAP_FLAG_READ;
|
||||
if (flags & PW_MEMBLOCK_FLAG_WRITABLE)
|
||||
fl |= PW_MEMMAP_FLAG_WRITE;
|
||||
|
||||
b->this.map = pw_memblock_map(&b->this, fl, 0, size, NULL);
|
||||
b->this.map = pw_memblock_map(&b->this,
|
||||
block_flags_to_mem(flags), 0, size, NULL);
|
||||
if (b->this.map == NULL) {
|
||||
res = -errno;
|
||||
pw_log_warn("Failed to map: %m");
|
||||
|
|
@ -589,7 +596,8 @@ struct pw_memmap * pw_mempool_import_map(struct pw_mempool *pool,
|
|||
|
||||
offset = SPA_PTRDIFF(data, old->map->ptr);
|
||||
|
||||
map = pw_memblock_map(block, block->flags, offset, size, tag);
|
||||
map = pw_memblock_map(block,
|
||||
block_flags_to_mem(block->flags), offset, size, tag);
|
||||
if (map == NULL)
|
||||
return NULL;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue