亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? netbuf.c

?? uCOSII2.84在at91sam9263的移植
?? C
字號(hào):
/** * @file * Network buffer management * */ /* * Copyright (c) 2001-2004 Swedish Institute of Computer Science. * All rights reserved.  *  * Redistribution and use in source and binary forms, with or without modification,  * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, *    this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright notice, *    this list of conditions and the following disclaimer in the documentation *    and/or other materials provided with the distribution. * 3. The name of the author may not be used to endorse or promote products *    derived from this software without specific prior written permission.  * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY  * OF SUCH DAMAGE. * * This file is part of the lwIP TCP/IP stack. *  * Author: Adam Dunkels <adam@sics.se> * */#include "lwip/opt.h"#if LWIP_NETCONN /* don't build if not configured for use in lwipopts.h */#include "lwip/netbuf.h"#include "lwip/memp.h"#include <string.h>/** * Create (allocate) and initialize a new netbuf. * The netbuf doesn't yet contain a packet buffer! * * @return a pointer to a new netbuf *         NULL on lack of memory */structnetbuf *netbuf_new(void){  struct netbuf *buf;  buf = memp_malloc(MEMP_NETBUF);  if (buf != NULL) {    buf->p = NULL;    buf->ptr = NULL;    buf->addr = NULL;    return buf;  } else {    return NULL;  }}/** * Deallocate a netbuf allocated by netbuf_new(). * * @param buf pointer to a netbuf allocated by netbuf_new() */voidnetbuf_delete(struct netbuf *buf){  if (buf != NULL) {    if (buf->p != NULL) {      pbuf_free(buf->p);      buf->p = buf->ptr = NULL;    }    memp_free(MEMP_NETBUF, buf);  }}/** * Allocate memory for a packet buffer for a given netbuf. * * @param buf the netbuf for which to allocate a packet buffer * @param size the size of the packet buffer to allocate * @return pointer to the allocated memory *         NULL if no memory could be allocated */void *netbuf_alloc(struct netbuf *buf, u16_t size){  LWIP_ERROR("netbuf_alloc: invalid buf", (buf != NULL), return NULL;);  /* Deallocate any previously allocated memory. */  if (buf->p != NULL) {    pbuf_free(buf->p);  }  buf->p = pbuf_alloc(PBUF_TRANSPORT, size, PBUF_RAM);  if (buf->p == NULL) {     return NULL;  }  LWIP_ASSERT("check that first pbuf can hold size",             (buf->p->len >= size));  buf->ptr = buf->p;  return buf->p->payload;}/** * Free the packet buffer included in a netbuf * * @param buf pointer to the netbuf which contains the packet buffer to free */voidnetbuf_free(struct netbuf *buf){  LWIP_ERROR("netbuf_free: invalid buf", (buf != NULL), return;);  if (buf->p != NULL) {    pbuf_free(buf->p);  }  buf->p = buf->ptr = NULL;}/** * Let a netbuf reference existing (non-volatile) data. * * @param buf netbuf which should reference the data * @param dataptr pointer to the data to reference * @param size size of the data * @return ERR_OK if data is referenced *         ERR_MEM if data couldn't be referenced due to lack of memory */err_tnetbuf_ref(struct netbuf *buf, const void *dataptr, u16_t size){  LWIP_ERROR("netbuf_ref: invalid buf", (buf != NULL), return ERR_ARG;);  if (buf->p != NULL) {    pbuf_free(buf->p);  }  buf->p = pbuf_alloc(PBUF_TRANSPORT, 0, PBUF_REF);  if (buf->p == NULL) {    buf->ptr = NULL;    return ERR_MEM;  }  buf->p->payload = (void*)dataptr;  buf->p->len = buf->p->tot_len = size;  buf->ptr = buf->p;  return ERR_OK;}/** * Chain one netbuf to another (@see pbuf_chain) * * @param head the first netbuf * @param tail netbuf to chain after head */voidnetbuf_chain(struct netbuf *head, struct netbuf *tail){  LWIP_ERROR("netbuf_ref: invalid head", (head != NULL), return;);  LWIP_ERROR("netbuf_chain: invalid tail", (tail != NULL), return;);  pbuf_chain(head->p, tail->p);  head->ptr = head->p;  memp_free(MEMP_NETBUF, tail);}/** * Get the data pointer and length of the data inside a netbuf. * * @param buf netbuf to get the data from * @param dataptr pointer to a void pointer where to store the data pointer * @param len pointer to an u16_t where the length of the data is stored * @return ERR_OK if the information was retreived, *         ERR_BUF on error. */err_tnetbuf_data(struct netbuf *buf, void **dataptr, u16_t *len){  LWIP_ERROR("netbuf_data: invalid buf", (buf != NULL), return ERR_ARG;);  LWIP_ERROR("netbuf_data: invalid dataptr", (dataptr != NULL), return ERR_ARG;);  LWIP_ERROR("netbuf_data: invalid len", (len != NULL), return ERR_ARG;);  if (buf->ptr == NULL) {    return ERR_BUF;  }  *dataptr = buf->ptr->payload;  *len = buf->ptr->len;  return ERR_OK;}/** * Move the current data pointer of a packet buffer contained in a netbuf * to the next part. * The packet buffer itself is not modified. * * @param buf the netbuf to modify * @return -1 if there is no next part *         1  if moved to the next part but now there is no next part *         0  if moved to the next part and there are still more parts */s8_tnetbuf_next(struct netbuf *buf){  LWIP_ERROR("netbuf_free: invalid buf", (buf != NULL), return -1;);  if (buf->ptr->next == NULL) {    return -1;  }  buf->ptr = buf->ptr->next;  if (buf->ptr->next == NULL) {    return 1;  }  return 0;}/** * Move the current data pointer of a packet buffer contained in a netbuf * to the beginning of the packet. * The packet buffer itself is not modified. * * @param buf the netbuf to modify */voidnetbuf_first(struct netbuf *buf){  LWIP_ERROR("netbuf_free: invalid buf", (buf != NULL), return;);  buf->ptr = buf->p;}#endif /* LWIP_NETCONN */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色老头久久综合| 欧美日韩精品一二三区| 国产精品一区二区在线观看不卡 | 图片区小说区国产精品视频| 亚洲第一福利视频在线| 日韩国产一区二| 秋霞成人午夜伦在线观看| 久久99蜜桃精品| 国产美女主播视频一区| caoporen国产精品视频| 97精品电影院| 欧美一区日本一区韩国一区| 精品99久久久久久| 亚洲免费毛片网站| 日韩高清在线不卡| 国产电影精品久久禁18| 91啪亚洲精品| 久久综合色播五月| 一区二区视频免费在线观看| 久久精品99国产精品| 91蜜桃网址入口| 亚洲精品在线观看网站| 亚洲精选在线视频| 国产麻豆午夜三级精品| 欧美优质美女网站| 国产日韩欧美综合一区| 亚洲成人在线观看视频| 国产精品一区在线| 7777精品伊人久久久大香线蕉的 | 久久er99精品| 日本精品视频一区二区| 精品国产乱码久久久久久图片| 亚洲国产成人av网| 91国在线观看| 一区二区久久久久| 97久久精品人人做人人爽 | 精品美女一区二区| 亚洲自拍与偷拍| 91看片淫黄大片一级| 国产精品久久久久久久久免费桃花 | 中文字幕亚洲成人| 久久成人麻豆午夜电影| 日韩你懂的在线观看| 亚洲sss视频在线视频| 在线观看一区二区视频| 综合在线观看色| 91福利国产精品| 亚洲国产成人va在线观看天堂| 色噜噜夜夜夜综合网| 国产精品美女久久久久高潮| 成人免费精品视频| 欧美激情资源网| 99久久婷婷国产综合精品| 久久无码av三级| 成人综合日日夜夜| 国产精品国产成人国产三级 | 欧美国产欧美综合| 成人午夜av电影| 一区二区三区欧美在线观看| 欧美日韩黄视频| 日本欧美一区二区三区乱码| 日韩免费看的电影| www.日韩在线| 蜜臀a∨国产成人精品| 欧美激情在线看| 欧美吻胸吃奶大尺度电影 | 亚洲成在线观看| 日韩精品中文字幕一区| 成人av网址在线| 麻豆精品国产传媒mv男同| 欧美激情自拍偷拍| 欧美三级在线看| 国产精品一区二区三区四区 | 制服丝袜中文字幕一区| 国产91综合网| 首页国产欧美久久| 一区二区国产视频| 国产色产综合色产在线视频| 欧美日韩三级一区二区| 国产成人精品午夜视频免费 | 国内外成人在线| 亚洲一区二区在线免费观看视频| 久久久综合精品| 在线不卡a资源高清| 色狠狠综合天天综合综合| 蜜桃av一区二区三区| 国产精品久久久久久久岛一牛影视| 欧美亚洲国产一区二区三区va| 国产精品一区2区| 天天综合日日夜夜精品| 一区二区三区免费网站| 国产精品电影一区二区三区| 2017欧美狠狠色| 日韩一区二区免费在线观看| 欧美精品在线观看播放| 在线视频一区二区三| 成人91在线观看| av网站一区二区三区| 韩国中文字幕2020精品| 蜜桃视频免费观看一区| 免费欧美日韩国产三级电影| 亚洲va国产天堂va久久en| 午夜精品福利视频网站| 日韩黄色在线观看| 麻豆精品一区二区三区| 久久机这里只有精品| 国产麻豆欧美日韩一区| 成人性色生活片| 色综合中文字幕国产 | 久久精品国产久精国产| 捆绑紧缚一区二区三区视频| 日本美女一区二区三区| 国产精品综合av一区二区国产馆| 国产激情91久久精品导航| 99精品久久99久久久久| 欧美日韩黄视频| 精品毛片乱码1区2区3区| 国产精品家庭影院| 午夜精品免费在线观看| 国产成人精品免费网站| 在线视频亚洲一区| 91精品国产综合久久久久| 国产亚洲一区二区在线观看| 亚洲成va人在线观看| 成人丝袜视频网| 欧美一区三区四区| 国产精品视频线看| 午夜久久久久久久久久一区二区| 国产91对白在线观看九色| 欧美福利视频导航| 中文字幕一区二区三区精华液| 亚洲精品国产品国语在线app| 极品美女销魂一区二区三区免费| 91网上在线视频| 中文字幕高清一区| 美女mm1313爽爽久久久蜜臀| 色综合久久综合| 欧美国产视频在线| 国产成人无遮挡在线视频| 欧美一区二区国产| 午夜精品福利一区二区蜜股av| 成人免费看视频| 国产嫩草影院久久久久| 国产一区二区在线观看免费| 欧美成va人片在线观看| 五月婷婷久久综合| 色88888久久久久久影院野外 | 欧美视频在线一区| 亚洲品质自拍视频| 波多野结衣亚洲| 国产精品护士白丝一区av| 国产精品亚洲人在线观看| 亚洲精品一区在线观看| 国产制服丝袜一区| 国产亚洲欧美日韩日本| 蜜桃一区二区三区在线观看| 7777精品伊人久久久大香线蕉经典版下载| 亚洲图片一区二区| 91精品国产福利在线观看| 美女网站色91| 91精品麻豆日日躁夜夜躁| 九色综合国产一区二区三区| 久久亚洲一区二区三区明星换脸| 国产一区二区在线影院| 中文一区在线播放| 91国产视频在线观看| 久久成人精品无人区| 国产精品五月天| 欧美精品日日鲁夜夜添| 国产毛片精品国产一区二区三区| 国产精品入口麻豆九色| 色综合婷婷久久| 蜜臀av一区二区在线免费观看| 中文字幕欧美日本乱码一线二线| 色婷婷综合久久久| 精品一区二区在线看| 欧美国产精品中文字幕| 7777精品伊人久久久大香线蕉 | 美女精品一区二区| 亚洲日本中文字幕区| 欧美一区二区视频在线观看2022 | 亚洲一区在线观看免费观看电影高清| 日韩精品资源二区在线| 色哟哟在线观看一区二区三区| 青青草原综合久久大伊人精品优势| 亚洲国产精品成人综合| 欧美一区二区三区播放老司机| 色综合久久六月婷婷中文字幕| 国产在线不卡视频| 日韩福利电影在线| 亚洲色图20p| 中文字幕在线不卡国产视频| 精品乱码亚洲一区二区不卡| 337p亚洲精品色噜噜噜| 欧美色综合网站| 色妹子一区二区| av在线综合网| 成人av电影在线网| 99精品桃花视频在线观看| 成人高清视频在线|