pa_mempool_blocksize_max

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 2010-11-09 at 20:48 +0000, Tarantism wrote:
> Whilst trying to get to grips with memblocks and chunks, I came across
> this in rtp.c:
> 
>     if (ioctl(c->fd, FIONREAD, &size) < 0) {
>         pa_log_warn("FIONREAD failed: %s", pa_cstrerror(errno));
>         goto fail;
>     }
> 
>     if (size <= 0)
>         return 0;
> 
>     if (c->memchunk.length < (unsigned) size) {
>         size_t l;
> 
>         if (c->memchunk.memblock)
>             pa_memblock_unref(c->memchunk.memblock);
> 
>         l = PA_MAX((size_t) size, pa_mempool_block_size_max(pool));
> 
> I'd have expected that last line to use PA_MIN rather than PA_MAX or
> have I misunderstood?

There indeed are many places where we want to limit the memblock size to
the maximum block size of the mempool, but this is not one of those
cases. It seems that the memblock stored by pa_rtp_context.memchunk is
reused for all received rtp packets, and normally its size is kept at
the maximum block size, which allows us to use the mempool. The rtp
packet size can however be almost anything, and I think we must read it
all at once. If the maximum block size of the mempool isn't enough, then
we reallocate the memblock from the heap instead of the preallocated
blocks in the mempool.

-- 
Tanu




[Index of Archives]     [Linux Audio Users]     [AMD Graphics]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux