Documentation of buf struct

Rv Rv rvrv7575 at
Sun Jun 28 15:12:23 UTC 2015

I am not very clear on the purpose of different data members within the buf structure.(appended below)

After looking through the code, I can figure out the purpose of 
   - pos,last (sliding window)    

   - file_pos, file_last, start, end ,(data start and end)   

   - tag, (which module owns this buf)   

   - file (name of the file if any associated with the data)   

   - memory(cannot be released by any module that processes the buf).   

   - mmap (buf is memory map)   

   - last_in_chain(last in the chain of bufs)   

   - last_buf(last in the response)   

   - For temporary: can the temporary buffer be released by any module that processes it or can it be released by only the module that owns it as indicated in the tag   

It will be good if the purpose of other data members is described also. Thanks for any inputs

struct ngx_buf_s {    u_char          *pos;    u_char          *last;    off_t            file_pos;    off_t            file_last;
    u_char          *start;         /* start of buffer */    u_char          *end;           /* end of buffer */    ngx_buf_tag_t    tag;    ngx_file_t      *file;    ngx_buf_t       *shadow;

    /* the buf's content could be changed */    unsigned         temporary:1;
    /*     * the buf's content is in a memory cache or in a read only memory     * and must not be changed     */    unsigned         memory:1;
    /* the buf's content is mmap()ed and must not be changed */    unsigned         mmap:1;
    unsigned         recycled:1;    unsigned         in_file:1;    unsigned         flush:1;    unsigned         sync:1;    unsigned         last_buf:1;    unsigned         last_in_chain:1;
    unsigned         last_shadow:1;    unsigned         temp_file:1;
    /* STUB */ int   num;};

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the nginx mailing list