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

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

?? memp.c

?? 一個輕量tcpip協議在移植在ucOS2系統上運行
?? C
字號:
/*
 * Copyright (c) 2001-2003 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/tcp.h"
#include "lwip/api.h"
#include "lwip/api_msg.h"
#include "lwip/tcpip.h"

#include "lwip/sys.h"
#include "lwip/stats.h"


//added by dy
#include <string.h>
#include "arch/cc.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 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_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_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_PROT
static sys_sem_t mutex;
#endif
/*-----------------------------------------------------------------------------------*/
#ifdef LWIP_DEBUG
static int
memp_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 /* LWIP_DEBUG */
/*-----------------------------------------------------------------------------------*/
void
memp_init(void)
{
  struct memp *m, *memp;
  u16_t i, j;
  u16_t size;
      
#ifdef 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;
 
  LWIP_ASSERT("memp_malloc: type < MEMP_MAX", type < MEMP_MAX);

  memp = memp_tab[type];
  
  if(memp != NULL) {    
    memp_tab[type] = memp->next;    
    memp->next = NULL;
#ifdef 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 */
    LWIP_ASSERT("memp_malloc: memp properly aligned",
	   ((u32_t)MEM_ALIGN((u8_t *)memp + sizeof(struct memp)) % MEM_ALIGNMENT) == 0);

    mem = MEM_ALIGN((u8_t *)memp + sizeof(struct memp));
    /* initialize memp memory with zeroes */
    memset(mem, 0, memp_sizes[type]);	
    return mem;
  } else {
    DEBUGF(MEMP_DEBUG | 2, ("memp_malloc: out of memory in pool %d\n", type));
#ifdef MEMP_STATS
    ++lwip_stats.memp[type].err;
#endif /* MEMP_STATS */
    return NULL;
  }
}
/*-----------------------------------------------------------------------------------*/
void *
memp_mallocp(memp_t type)
{
  void *mem;
#if SYS_LIGHTWEIGHT_PROT
  SYS_ARCH_DECL_PROTECT(old_level);
  SYS_ARCH_PROTECT(old_level);
#else /* SYS_LIGHTWEIGHT_PROT */  
  sys_sem_wait(mutex);
#endif /* SYS_LIGHTWEIGHT_PROT */  

  mem = memp_malloc(type);

#if SYS_LIGHTWEIGHT_PROT
  SYS_ARCH_UNPROTECT(old_level);
#else /* SYS_LIGHTWEIGHT_PROT */
  sys_sem_signal(mutex);
#endif /* SYS_LIGHTWEIGHT_PROT */  
  return mem;
}
/*-----------------------------------------------------------------------------------*/
void
memp_free(memp_t type, void *mem)
{
  struct memp *memp;

  if(mem == NULL) {
    return;
  }
  memp = (struct memp *)((u8_t *)mem - sizeof(struct memp));

#ifdef MEMP_STATS
  lwip_stats.memp[type].used--; 
#endif /* MEMP_STATS */
  
  memp->next = memp_tab[type]; 
  memp_tab[type] = memp;

  LWIP_ASSERT("memp sanity", memp_sanity());

  return;
}
/*-----------------------------------------------------------------------------------*/
void 
memp_freep(memp_t type, void *mem)
{
#if SYS_LIGHTWEIGHT_PROT
    SYS_ARCH_DECL_PROTECT(old_level);
    SYS_ARCH_PROTECT(old_level);
#else /* SYS_LIGHTWEIGHT_PROT */  
  sys_sem_wait(mutex);
#endif /* SYS_LIGHTWEIGHT_PROT */  

  memp_free(type, mem);

#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一区二区三区免费野_久草精品视频
国产精品天美传媒| 亚洲第一狼人社区| 欧美高清性hdvideosex| 国产高清久久久| 免费在线观看不卡| 亚洲va欧美va人人爽| 国产激情一区二区三区| 制服丝袜亚洲精品中文字幕| 日韩欧美www| 日韩欧美亚洲国产另类| 亚洲蜜桃精久久久久久久| 亚洲欧美另类在线| 国产精品亚洲视频| 91香蕉国产在线观看软件| 在线一区二区三区| 91.成人天堂一区| 一区二区三区高清不卡| 亚洲国产综合91精品麻豆| 全部av―极品视觉盛宴亚洲| 在线观看日韩精品| 2021国产精品久久精品| 国产欧美一区二区精品性色超碰| 最新热久久免费视频| 夜色激情一区二区| 色哟哟国产精品| 日韩小视频在线观看专区| 国产精品无人区| 国产成人综合网| 精品精品欲导航| 国产午夜精品在线观看| 亚洲精品五月天| 精品一区二区三区免费观看| 成人黄色免费短视频| 精品视频在线免费看| 欧美白人最猛性xxxxx69交| 日韩精品成人一区二区三区 | 欧美不卡123| 强制捆绑调教一区二区| 日韩美女一区二区三区| 国产一区二区三区av电影| 91久久精品一区二区二区| 亚洲视频一区在线观看| 极品少妇xxxx精品少妇| 久久综合资源网| 国产成人精品在线看| 中文字幕日韩av资源站| 欧美图区在线视频| 国产精品电影一区二区三区| 麻豆国产精品一区二区三区 | 亚洲免费视频成人| 欧美乱妇一区二区三区不卡视频| 日日夜夜免费精品| 日韩亚洲欧美一区| 国产成人免费视频网站| 一个色妞综合视频在线观看| 欧美美女一区二区在线观看| 精品在线观看免费| 中文字幕一区二区三区在线播放| 欧美中文字幕亚洲一区二区va在线| 三级亚洲高清视频| 国产欧美精品国产国产专区| 91蜜桃视频在线| 免费成人在线影院| 国产精品免费久久| 欧美日韩一区二区三区四区| 免费高清在线视频一区·| 国产精品久久久久久久久图文区| 欧美午夜一区二区| 成人夜色视频网站在线观看| 久久综合色一综合色88| 99久久综合99久久综合网站| 国产精品久久久久久久久久久免费看| 在线观看亚洲专区| 激情欧美日韩一区二区| 久久中文娱乐网| 91久久精品一区二区二区| 国产一区二区0| 亚洲高清免费一级二级三级| 国产日韩欧美a| 69成人精品免费视频| 不卡视频在线看| 国产乱子轮精品视频| 一区二区三区在线观看国产| 日韩精品一区二区三区老鸭窝| 97精品超碰一区二区三区| 亚洲激情成人在线| 国产喂奶挤奶一区二区三区| 欧美一区二区三区视频免费| 国模娜娜一区二区三区| 亚洲成人7777| 玉足女爽爽91| 中文字幕在线不卡一区二区三区| 日韩一区二区三区免费观看| 欧美日韩精品综合在线| 毛片av中文字幕一区二区| 亚洲精品写真福利| 亚洲欧美日韩成人高清在线一区| 国产欧美日韩综合精品一区二区 | 精品中文字幕一区二区| 亚洲午夜激情网站| 亚洲精品少妇30p| 国产精品久久午夜夜伦鲁鲁| 久久久久久久网| 在线国产电影不卡| 91啦中文在线观看| 97精品国产露脸对白| 成人高清伦理免费影院在线观看| 国产在线不卡一卡二卡三卡四卡| 日本成人在线不卡视频| 国产精品美女一区二区| 久久久久国产精品人| 久久久亚洲综合| 国产欧美一区二区精品性色| 国产亚洲美州欧州综合国 | 欧美一区二区三区免费大片 | 在线观看日韩av先锋影音电影院| 9久草视频在线视频精品| jiyouzz国产精品久久| 成人开心网精品视频| 国产福利一区二区| 国产白丝网站精品污在线入口| 亚洲美女在线国产| 亚洲制服欧美中文字幕中文字幕| 国产日韩欧美精品电影三级在线| 国产亚洲视频系列| 国产精品不卡视频| 亚洲理论在线观看| 香蕉久久夜色精品国产使用方法 | 欧美三级电影网| 欧美一区二区精品| www激情久久| 国产精品久久久久久亚洲毛片| 综合色天天鬼久久鬼色| 亚洲自拍偷拍网站| 青青草精品视频| 粉嫩aⅴ一区二区三区四区五区 | 久久久久久久久蜜桃| 国产精品免费网站在线观看| 亚洲美女免费视频| 麻豆91在线播放| 成人黄色av网站在线| 一本久道中文字幕精品亚洲嫩| 欧美人妇做爰xxxⅹ性高电影| 精品粉嫩aⅴ一区二区三区四区| 国产欧美一区二区精品性| 亚洲精品中文在线影院| 蜜臀久久99精品久久久画质超高清| 国产一区二区三区香蕉| 91国在线观看| 久久午夜免费电影| 一区二区三区日本| 国产一区二区三区免费观看| 91麻豆文化传媒在线观看| 日韩一区和二区| 亚洲欧美在线视频观看| 欧美aⅴ一区二区三区视频| 懂色av一区二区夜夜嗨| 欧美欧美午夜aⅴ在线观看| 日本一区二区电影| 国产欧美视频在线观看| 五月婷婷激情综合网| 日韩不卡一二三区| 99国产精品久久久久久久久久久| 欧美一级艳片视频免费观看| 国产精品久久久久久久久免费丝袜 | 国产精品欧美极品| 奇米影视一区二区三区小说| 91啪九色porn原创视频在线观看| 日韩一区二区中文字幕| 夜夜嗨av一区二区三区中文字幕| 精一区二区三区| 91精品婷婷国产综合久久| 亚洲欧洲日本在线| 国产九色精品成人porny| 欧美嫩在线观看| 亚洲欧美日本韩国| 99久久精品久久久久久清纯| 久久久久久久性| 麻豆高清免费国产一区| 在线成人高清不卡| 亚洲在线视频一区| 日本道色综合久久| 亚洲丝袜另类动漫二区| 国产91丝袜在线观看| 欧美精品一区二区三区很污很色的| 天堂成人国产精品一区| 在线国产电影不卡| 亚洲自拍偷拍欧美| 欧美午夜精品一区| 一区二区三区在线播放| 色素色在线综合| 亚洲美女一区二区三区| 91女人视频在线观看| 一色屋精品亚洲香蕉网站| 成人性视频免费网站| 中文字幕免费一区| aa级大片欧美| 一区二区三区影院| 欧美天堂亚洲电影院在线播放| 亚洲在线一区二区三区|