mirror of
https://github.com/alsa-project/alsa-lib.git
synced 2025-11-02 09:01:48 -05:00
move page helpers to common code
If you build with --disable-pcm, the rawmidi code fails to link because it uses the page_size helper declared in local.h, but the page_* funcs are in the pcm mmap module. Move these funcs into conf.c so that they are always available to the rest of the system. Signed-off-by: Mike Frysinger <vapier@gentoo.org> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
8985742d91
commit
5a24987575
2 changed files with 36 additions and 36 deletions
36
src/conf.c
36
src/conf.c
|
|
@ -4876,3 +4876,39 @@ static void _snd_config_end(void)
|
||||||
files_info_count = 0;
|
files_info_count = 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
size_t page_size(void)
|
||||||
|
{
|
||||||
|
long s = sysconf(_SC_PAGE_SIZE);
|
||||||
|
assert(s > 0);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t page_align(size_t size)
|
||||||
|
{
|
||||||
|
size_t r;
|
||||||
|
long psz = page_size();
|
||||||
|
r = size % psz;
|
||||||
|
if (r)
|
||||||
|
return size + psz - r;
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t page_ptr(size_t object_offset, size_t object_size, size_t *offset, size_t *mmap_offset)
|
||||||
|
{
|
||||||
|
size_t r;
|
||||||
|
long psz = page_size();
|
||||||
|
assert(offset);
|
||||||
|
assert(mmap_offset);
|
||||||
|
*mmap_offset = object_offset;
|
||||||
|
object_offset %= psz;
|
||||||
|
*mmap_offset -= object_offset;
|
||||||
|
object_size += object_offset;
|
||||||
|
r = object_size % psz;
|
||||||
|
if (r)
|
||||||
|
r = object_size + psz - r;
|
||||||
|
else
|
||||||
|
r = object_size;
|
||||||
|
*offset = object_offset;
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,42 +26,6 @@
|
||||||
#include <sys/shm.h>
|
#include <sys/shm.h>
|
||||||
#include "pcm_local.h"
|
#include "pcm_local.h"
|
||||||
|
|
||||||
size_t page_size(void)
|
|
||||||
{
|
|
||||||
long s = sysconf(_SC_PAGE_SIZE);
|
|
||||||
assert(s > 0);
|
|
||||||
return s;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t page_align(size_t size)
|
|
||||||
{
|
|
||||||
size_t r;
|
|
||||||
long psz = page_size();
|
|
||||||
r = size % psz;
|
|
||||||
if (r)
|
|
||||||
return size + psz - r;
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t page_ptr(size_t object_offset, size_t object_size, size_t *offset, size_t *mmap_offset)
|
|
||||||
{
|
|
||||||
size_t r;
|
|
||||||
long psz = page_size();
|
|
||||||
assert(offset);
|
|
||||||
assert(mmap_offset);
|
|
||||||
*mmap_offset = object_offset;
|
|
||||||
object_offset %= psz;
|
|
||||||
*mmap_offset -= object_offset;
|
|
||||||
object_size += object_offset;
|
|
||||||
r = object_size % psz;
|
|
||||||
if (r)
|
|
||||||
r = object_size + psz - r;
|
|
||||||
else
|
|
||||||
r = object_size;
|
|
||||||
*offset = object_offset;
|
|
||||||
return r;
|
|
||||||
}
|
|
||||||
|
|
||||||
void snd_pcm_mmap_appl_backward(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
|
void snd_pcm_mmap_appl_backward(snd_pcm_t *pcm, snd_pcm_uframes_t frames)
|
||||||
{
|
{
|
||||||
snd_pcm_sframes_t appl_ptr = *pcm->appl.ptr;
|
snd_pcm_sframes_t appl_ptr = *pcm->appl.ptr;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue