Subversion Repositories planix.SVN

Rev

Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

typedef struct Packet Packet;
typedef struct Mem Mem;
typedef struct Frag Frag;

enum {
        BigMemSize = MaxFragSize,
        SmallMemSize = BigMemSize/8,
        NLocalFrag = 2,
};

/* position to carve out of a Mem */
enum {
        PFront,
        PMiddle,
        PEnd,
};

struct Mem
{
        Lock lk;
        int ref;
        uchar *bp;
        uchar *ep;
        uchar *rp;
        uchar *wp;
        Mem *next;
};

enum {
        FragLocalFree,
        FragLocalAlloc,
        FragGlobal,
};
        
struct Frag
{
        int state;
        Mem *mem;
        uchar *rp;
        uchar *wp;
        Frag *next;
};

struct Packet
{
        int size;
        int asize;  /* allocated memmory - always greater than size */
        
        Packet *next;
        
        Frag *first;
        Frag *last;
        
        Frag local[NLocalFrag];
};