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;
|
prot |= PROT_WRITE;
|
||||||
|
|
||||||
if (flags & PW_MEMMAP_FLAG_TWICE) {
|
if (flags & PW_MEMMAP_FLAG_TWICE) {
|
||||||
|
pw_log_error("pool %p: implement me PW_MEMMAP_FLAG_TWICE", p);
|
||||||
errno = ENOTSUP;
|
errno = ENOTSUP;
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
@ -398,6 +399,18 @@ int pw_memmap_free(struct pw_memmap *map)
|
||||||
return 0;
|
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
|
/** Create a new memblock
|
||||||
* \param pool the pool to use
|
* \param pool the pool to use
|
||||||
* \param flags memblock flags
|
* \param flags memblock flags
|
||||||
|
|
@ -458,14 +471,8 @@ struct pw_memblock * pw_mempool_alloc(struct pw_mempool *pool, enum pw_memblock_
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if (flags & PW_MEMBLOCK_FLAG_MAP && size > 0) {
|
if (flags & PW_MEMBLOCK_FLAG_MAP && size > 0) {
|
||||||
enum pw_memmap_flags fl = 0;
|
b->this.map = pw_memblock_map(&b->this,
|
||||||
|
block_flags_to_mem(flags), 0, size, NULL);
|
||||||
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);
|
|
||||||
if (b->this.map == NULL) {
|
if (b->this.map == NULL) {
|
||||||
res = -errno;
|
res = -errno;
|
||||||
pw_log_warn("Failed to map: %m");
|
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);
|
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)
|
if (map == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue