memchunk.c

Posted renhl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了memchunk.c相关的知识,希望对你有一定的参考价值。

★ //memblock->data 的有效数据从index索引开始,长度为length
struct pa_memchunk {
    struct pa_memblock *memblock;
    size_t index, length;
};

★ //base 是每次取出的大小
//buffer和buffer_fill是不够base长度的部分,放入到buffer
struct pa_mcalign {
    size_t base;
    struct pa_memchunk chunk;
    uint8_t *buffer;
    size_t buffer_fill;
};

■ void pa_memchunk_make_writable(struct pa_memchunk *c)
将pa_memchunk中的index和length设置为0,将pa_memchunk中的memblock的data进行移动。
c->memblock->ref为1时,不能进行数据移动。

■ struct pa_mcalign *pa_mcalign_new(size_t base)
初始化pa_mcalign

■ void pa_mcalign_free(struct pa_mcalign *m)
释放pa_mcalign
pa_mcalign,buffer和chunk

■ void pa_mcalign_push(struct pa_mcalign *m, const struct pa_memchunk *c)
将c放入到pa_mcalign中的chunk

■ int pa_mcalign_pop(struct pa_mcalign *m, struct pa_memchunk *c)
将整数base的数据进行返回
将不足base的数据,保存到pa_mcalign中的buffer,下次进行pop,从pa_mcalign->chunk->memblock->data前部数据将buffer补足到base长度。



以上是关于memchunk.c的主要内容,如果未能解决你的问题,请参考以下文章