zoukankan      html  css  js  c++  java
  • 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长度。



  • 相关阅读:
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
    volcanol的工控博客
  • 原文地址:https://www.cnblogs.com/renhl/p/13020773.html
Copyright © 2011-2022 走看看