1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- #include "uip_pbuf.h"
- #include "rtdef.h"
- typedef rt_uint32_t mem_ptr_t;
- #define LWIP_MEM_ALIGN(addr) ((void *)(((mem_ptr_t)(addr) + RT_ALIGN_SIZE - 1) & ~(mem_ptr_t)(RT_ALIGN_SIZE-1)))
- #define LWIP_MEM_ALIGN_SIZE(size) (((size) + RT_ALIGN_SIZE - 1) & ~(RT_ALIGN_SIZE-1))
- #define SIZEOF_STRUCT_PBUF LWIP_MEM_ALIGN_SIZE(sizeof(struct pbuf))
- u8_t
- pbuf_free(struct pbuf *p)
- {
- //struct pbuf *q;
-
- if (p == RT_NULL) return 0;
- rt_free(p);
- //rt_free(&p->len);
-
- return 1;
- }
- struct pbuf *
- pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type)
- {
- struct pbuf *p;
- u16_t offset = 0;
- offset += 16;
-
- /* If pbuf is to be allocated in RAM, allocate memory for it. */
- p = (struct pbuf*)rt_malloc(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF + offset) + LWIP_MEM_ALIGN_SIZE(length));
- if (p == RT_NULL) return RT_NULL;
- /* Set up internal structure of the pbuf. */
- p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset));
- p->len = length;
- return p;
- }
- u8_t
- pbuf_header(struct pbuf *p, s16_t header_size_increment) //
- {
- //extrat link header
- uint8_t *ptr;
-
- ptr = p->payload;
- ptr -= header_size_increment;
- p->payload = ptr;
- p->len += header_size_increment;
-
- return 0;
- }
|