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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? memp.c

?? MCS-51的一個Free小型操作系統,在KeilC中下編譯工作
?? C
字號:
/* * 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"#include "lwip/memp.h"#include "lwip/pbuf.h"#include "lwip/udp.h"#include "lwip/raw.h"#include "lwip/tcp.h"#include "lwip/api.h"#include "lwip/api_msg.h"#include "lwip/tcpip.h"#include "lwip/sys.h"#include "lwip/stats.h"struct memp {  struct memp *next;};static struct memp *memp_tab[MEMP_MAX];static const u16_t memp_sizes[MEMP_MAX] = {  sizeof(struct pbuf),  sizeof(struct raw_pcb),  sizeof(struct udp_pcb),  sizeof(struct tcp_pcb),  sizeof(struct tcp_pcb_listen),  sizeof(struct tcp_seg),  sizeof(struct netbuf),  sizeof(struct netconn),  sizeof(struct api_msg),  sizeof(struct tcpip_msg),  sizeof(struct sys_timeout)};static const u16_t memp_num[MEMP_MAX] = {  MEMP_NUM_PBUF,  MEMP_NUM_RAW_PCB,  MEMP_NUM_UDP_PCB,  MEMP_NUM_TCP_PCB,  MEMP_NUM_TCP_PCB_LISTEN,  MEMP_NUM_TCP_SEG,  MEMP_NUM_NETBUF,  MEMP_NUM_NETCONN,  MEMP_NUM_API_MSG,  MEMP_NUM_TCPIP_MSG,  MEMP_NUM_SYS_TIMEOUT};static u8_t memp_memory[(MEMP_NUM_PBUF *       MEM_ALIGN_SIZE(sizeof(struct pbuf) +          sizeof(struct memp)) +      MEMP_NUM_RAW_PCB *       MEM_ALIGN_SIZE(sizeof(struct raw_pcb) +          sizeof(struct memp)) +      MEMP_NUM_UDP_PCB *       MEM_ALIGN_SIZE(sizeof(struct udp_pcb) +          sizeof(struct memp)) +      MEMP_NUM_TCP_PCB *       MEM_ALIGN_SIZE(sizeof(struct tcp_pcb) +          sizeof(struct memp)) +      MEMP_NUM_TCP_PCB_LISTEN *       MEM_ALIGN_SIZE(sizeof(struct tcp_pcb_listen) +          sizeof(struct memp)) +      MEMP_NUM_TCP_SEG *       MEM_ALIGN_SIZE(sizeof(struct tcp_seg) +          sizeof(struct memp)) +      MEMP_NUM_NETBUF *       MEM_ALIGN_SIZE(sizeof(struct netbuf) +          sizeof(struct memp)) +      MEMP_NUM_NETCONN *       MEM_ALIGN_SIZE(sizeof(struct netconn) +          sizeof(struct memp)) +      MEMP_NUM_API_MSG *       MEM_ALIGN_SIZE(sizeof(struct api_msg) +          sizeof(struct memp)) +      MEMP_NUM_TCPIP_MSG *       MEM_ALIGN_SIZE(sizeof(struct tcpip_msg) +          sizeof(struct memp)) +      MEMP_NUM_SYS_TIMEOUT *       MEM_ALIGN_SIZE(sizeof(struct sys_timeout) +          sizeof(struct memp)))];#if !SYS_LIGHTWEIGHT_PROTstatic sys_sem_t mutex;#endif#if MEMP_SANITY_CHECKstatic intmemp_sanity(void){  int i, c;  struct memp *m, *n;  for(i = 0; i < MEMP_MAX; i++) {    for(m = memp_tab[i]; m != NULL; m = m->next) {      c = 1;      for(n = memp_tab[i]; n != NULL; n = n->next) {         if (n == m) {          --c;        }        if (c < 0) return 0; /* LW was: abort(); */      }    }  }  return 1;}#endif /* MEMP_SANITY_CHECK*/voidmemp_init(void){  struct memp *m, *memp;  u16_t i, j;  u16_t size;      #if MEMP_STATS  for(i = 0; i < MEMP_MAX; ++i) {    lwip_stats.memp[i].used = lwip_stats.memp[i].max =      lwip_stats.memp[i].err = 0;    lwip_stats.memp[i].avail = memp_num[i];  }#endif /* MEMP_STATS */  memp = (struct memp *)&memp_memory[0];  for(i = 0; i < MEMP_MAX; ++i) {    size = MEM_ALIGN_SIZE(memp_sizes[i] + sizeof(struct memp));    if (memp_num[i] > 0) {      memp_tab[i] = memp;      m = memp;            for(j = 0; j < memp_num[i]; ++j) {  m->next = (struct memp *)MEM_ALIGN((u8_t *)m + size);  memp = m;  m = m->next;      }      memp->next = NULL;      memp = m;    } else {      memp_tab[i] = NULL;    }  }#if !SYS_LIGHTWEIGHT_PROT  mutex = sys_sem_new(1);#endif  }void *memp_malloc(memp_t type){  struct memp *memp;  void *mem;#if SYS_LIGHTWEIGHT_PROT  SYS_ARCH_DECL_PROTECT(old_level);#endif   LWIP_ASSERT("memp_malloc: type < MEMP_MAX", type < MEMP_MAX);#if SYS_LIGHTWEIGHT_PROT  SYS_ARCH_PROTECT(old_level);#else /* SYS_LIGHTWEIGHT_PROT */    sys_sem_wait(mutex);#endif /* SYS_LIGHTWEIGHT_PROT */    memp = memp_tab[type];    if (memp != NULL) {        memp_tab[type] = memp->next;        memp->next = NULL;#if MEMP_STATS    ++lwip_stats.memp[type].used;    if (lwip_stats.memp[type].used > lwip_stats.memp[type].max) {      lwip_stats.memp[type].max = lwip_stats.memp[type].used;    }#endif /* MEMP_STATS */#if SYS_LIGHTWEIGHT_PROT    SYS_ARCH_UNPROTECT(old_level);#else /* SYS_LIGHTWEIGHT_PROT */    sys_sem_signal(mutex);#endif /* SYS_LIGHTWEIGHT_PROT */      LWIP_ASSERT("memp_malloc: memp properly aligned",     ((mem_ptr_t)MEM_ALIGN((u8_t *)memp + sizeof(struct memp)) % MEM_ALIGNMENT) == 0);    mem = MEM_ALIGN((u8_t *)memp + sizeof(struct memp));    return mem;  } else {    LWIP_DEBUGF(MEMP_DEBUG | 2, ("memp_malloc: out of memory in pool %d\n", type));#if MEMP_STATS    ++lwip_stats.memp[type].err;#endif /* MEMP_STATS */#if SYS_LIGHTWEIGHT_PROT  SYS_ARCH_UNPROTECT(old_level);#else /* SYS_LIGHTWEIGHT_PROT */  sys_sem_signal(mutex);#endif /* SYS_LIGHTWEIGHT_PROT */      return NULL;  }}voidmemp_free(memp_t type, void *mem){  struct memp *memp;#if SYS_LIGHTWEIGHT_PROT  SYS_ARCH_DECL_PROTECT(old_level);#endif /* SYS_LIGHTWEIGHT_PROT */    if (mem == NULL) {    return;  }  memp = (struct memp *)((u8_t *)mem - sizeof(struct memp));#if SYS_LIGHTWEIGHT_PROT    SYS_ARCH_PROTECT(old_level);#else /* SYS_LIGHTWEIGHT_PROT */    sys_sem_wait(mutex);#endif /* SYS_LIGHTWEIGHT_PROT */  #if MEMP_STATS  lwip_stats.memp[type].used--; #endif /* MEMP_STATS */    memp->next = memp_tab[type];   memp_tab[type] = memp;#if MEMP_SANITY_CHECK  LWIP_ASSERT("memp sanity", memp_sanity());#endif  #if SYS_LIGHTWEIGHT_PROT  SYS_ARCH_UNPROTECT(old_level);#else /* SYS_LIGHTWEIGHT_PROT */  sys_sem_signal(mutex);#endif /* SYS_LIGHTWEIGHT_PROT */  }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
老司机一区二区| 成人av在线一区二区三区| 久久精品99国产国产精| 成人综合婷婷国产精品久久蜜臀| 岛国精品在线观看| 88在线观看91蜜桃国自产| 欧美激情在线观看视频免费| 亚洲成人免费在线观看| 国产在线不卡一区| 欧美性猛交xxxx乱大交退制版| 国产网站一区二区| 婷婷开心久久网| 色综合久久久久久久| 精品粉嫩aⅴ一区二区三区四区| 亚洲一区二区三区影院| 国产精品一区二区果冻传媒| 欧美日韩一区二区三区在线| 欧美性猛交xxxxxxxx| 国产精品三级视频| 久久精品国产秦先生| 在线免费一区三区| 欧美精品一区二区三区一线天视频| 亚洲精品中文字幕在线观看| 国产精品一区二区黑丝| 日韩一区二区三区在线视频| 亚洲精品乱码久久久久久日本蜜臀| 国产精品2024| 欧美成人一区二区| 天堂蜜桃一区二区三区| 色综合欧美在线| 亚洲一区二区精品久久av| 成人爱爱电影网址| 欧美国产精品中文字幕| 自拍偷在线精品自拍偷无码专区| 国产精品性做久久久久久| 欧美一级一级性生活免费录像| 国产精品电影院| 国产不卡视频在线观看| 国产精品嫩草99a| 国产精品资源在线看| 日韩欧美一区二区久久婷婷| 亚洲伊人伊色伊影伊综合网| 欧美三级视频在线| 亚洲一级二级在线| 欧美特级限制片免费在线观看| 国产精品午夜在线观看| 国产suv一区二区三区88区| 久久青草欧美一区二区三区| 久久99久久精品| 免费成人av在线播放| 日韩精品欧美成人高清一区二区| 欧美日韩免费电影| 亚洲18色成人| 欧美日韩精品欧美日韩精品一综合| 国产精品久久久久久久久快鸭| 91在线精品秘密一区二区| 中文字幕一区不卡| av不卡在线观看| 久久精品日产第一区二区三区高清版 | 日韩在线一区二区| 制服丝袜亚洲播放| 香蕉久久一区二区不卡无毒影院| 欧美日韩国产精品自在自线| 日日摸夜夜添夜夜添国产精品 | 免费欧美高清视频| 精品伦理精品一区| 国产成人在线视频免费播放| 久久久噜噜噜久久中文字幕色伊伊| 国产精品自拍在线| 国产精品网曝门| 色就色 综合激情| 日韩精品乱码免费| 日本一区二区三区四区在线视频| 成人毛片老司机大片| 亚洲精品中文在线影院| 欧美影院一区二区三区| 亚洲风情在线资源站| 精品免费99久久| 国产一区二区成人久久免费影院 | 欧美精品一区二区久久久| 不卡的看片网站| 亚洲成人777| 久久久久久久av麻豆果冻| 色婷婷久久久久swag精品| 蜜桃免费网站一区二区三区| 亚洲人成网站色在线观看| 欧美裸体一区二区三区| 国产精品88888| 亚洲午夜精品网| 国产精品第一页第二页第三页| 717成人午夜免费福利电影| 国产乱码精品一区二区三区av| 精品福利一二区| 欧美男人的天堂一二区| 成人影视亚洲图片在线| 日韩高清在线一区| 欧美性生活一区| 国产99久久久久久免费看农村| 亚洲综合一二区| 中国av一区二区三区| 久久久久久久久一| 欧美一区二区网站| 91麻豆自制传媒国产之光| 日韩一区欧美二区| 亚洲色图一区二区三区| 久久精品免费在线观看| 精品视频一区二区三区免费| jvid福利写真一区二区三区| 亚洲综合在线五月| 久久亚洲私人国产精品va媚药| 欧美午夜免费电影| 99精品热视频| 国产一区二区在线观看视频| 久久精品久久精品| 日韩成人免费电影| 天天做天天摸天天爽国产一区 | 亚洲成人av免费| 亚洲精品免费在线| 国产精品色在线| 国产日韩欧美精品一区| 欧美激情一区二区三区四区| 欧美精品一区二| 日韩精品一区二区三区视频| 欧美乱妇20p| 欧美日韩久久久久久| 欧美熟乱第一页| 欧美一区二区三区思思人| 日韩三级视频在线观看| 精品盗摄一区二区三区| 久久久久久97三级| 国产精品久久福利| 一区二区三区四区激情| 亚洲福利视频三区| 麻豆91在线播放免费| 国产高清不卡一区| 日本高清视频一区二区| 7777女厕盗摄久久久| 日韩精品一区二区三区中文不卡 | 毛片一区二区三区| 欧美色图12p| 91精品综合久久久久久| 精品国产乱码久久久久久影片| 日韩视频免费直播| 久久久久久夜精品精品免费| 久久精品男人的天堂| 亚洲女厕所小便bbb| 中文字幕高清一区| 亚洲天堂福利av| 美女视频一区在线观看| 国产一区美女在线| 色综合久久综合中文综合网| 欧美性xxxxx极品少妇| 久久综合99re88久久爱| 精品久久久久久亚洲综合网| 亚洲欧洲av一区二区三区久久| 午夜精品福利在线| 国产精选一区二区三区| 欧美在线不卡视频| 欧美成人精品1314www| 中文字幕一区免费在线观看| 国产精品视频麻豆| 免费观看在线综合色| 成人高清在线视频| 欧美精品乱码久久久久久按摩| 国产欧美一区二区三区网站| 一区二区三区四区在线播放| 国产精一区二区三区| 国产成人精品免费一区二区| 4438成人网| 一区二区三区在线视频免费观看| 男女男精品视频网| 欧美在线观看一二区| 精品久久国产老人久久综合| 亚洲日本va午夜在线电影| 免费在线看一区| 欧美视频一区在线| 亚洲免费在线观看视频| 国内精品伊人久久久久影院对白| 欧美视频日韩视频| 国产日产亚洲精品系列| 日本不卡高清视频| 国产福利一区在线观看| 欧美大黄免费观看| 日产国产欧美视频一区精品| av一区二区三区黑人| 欧美激情一区二区三区在线| 免费在线观看一区| 欧美性生活影院| 久久你懂得1024| 日本特黄久久久高潮| 欧美日韩二区三区| 中文字幕欧美三区| 成人综合在线网站| 精品日韩欧美在线| 日韩激情在线观看| 日韩一区二区影院| 男人操女人的视频在线观看欧美| 欧美熟乱第一页| 性做久久久久久久久| 91精彩视频在线观看|