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

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

?? memp.c

?? ARM7的一些試驗(yàn)程序
?? 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_PROT
static sys_sem_t mutex;
#endif

#if MEMP_SANITY_CHECK
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 /* MEMP_SANITY_CHECK*/

void
memp_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;
  }
}

void
memp_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 */  
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区精品性色 | 久久国内精品自在自线400部| 91久久香蕉国产日韩欧美9色| 综合久久综合久久| 色噜噜夜夜夜综合网| 亚洲丰满少妇videoshd| 欧美精品三级在线观看| 国内久久婷婷综合| 国产精品久久久久久亚洲伦| 一道本成人在线| 日本最新不卡在线| 欧美韩日一区二区三区| 欧美中文字幕不卡| 久久精品国产在热久久| 国产精品欧美一区喷水| 91久久精品一区二区三| 日韩国产欧美在线播放| 日本一区二区视频在线| 色综合久久久久久久久久久| 亚洲bt欧美bt精品| www国产精品av| 不卡的av电影在线观看| 日韩不卡一二三区| 国产欧美日韩另类一区| 欧美日韩在线综合| 国产精品18久久久久久久久久久久| 成人欧美一区二区三区小说 | 成人av电影免费在线播放| 综合欧美一区二区三区| 日韩一区二区免费在线观看| 成人av中文字幕| 日本不卡视频一二三区| 国产精品久久99| 日韩精品一区二区三区视频播放 | 亚洲超丰满肉感bbw| 久久久午夜精品| 欧美日韩精品久久久| 国产精品自在欧美一区| 午夜精品免费在线| 国产精品久久久久久久久搜平片| 欧美乱妇20p| 91麻豆蜜桃一区二区三区| 麻豆一区二区99久久久久| 亚洲精品国久久99热| 国产三级久久久| 欧美一区二区三区播放老司机| www.在线成人| 国产精品99久久久久久久女警| 亚洲6080在线| 亚洲精品免费一二三区| 中文字幕乱码亚洲精品一区| 精品国产免费视频| 欧美伦理影视网| 欧美性大战xxxxx久久久| 国产69精品久久99不卡| 看电视剧不卡顿的网站| 亚洲成人动漫av| 伊人色综合久久天天| 中文一区二区在线观看| 国产视频一区二区三区在线观看| 欧美一二三区在线| 欧美三级乱人伦电影| 97精品国产露脸对白| 国产成人精品免费一区二区| 激情六月婷婷综合| 美国欧美日韩国产在线播放| 午夜精品久久久久久久99水蜜桃| 一区二区三区免费观看| 亚洲激情校园春色| 综合中文字幕亚洲| 国产精品久久久久久久蜜臀| 国产精品久久久久影院老司| 中文一区在线播放| 国产精品每日更新在线播放网址| 国产欧美日韩不卡免费| 久久久www成人免费无遮挡大片| 日韩欧美成人激情| 日韩欧美国产三级| 久久亚洲精品小早川怜子| 久久影音资源网| 26uuu色噜噜精品一区二区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美人牲a欧美精品| 欧美精品乱人伦久久久久久| 欧美夫妻性生活| 欧美一级二级三级乱码| 欧美成人在线直播| 久久久www成人免费无遮挡大片 | 欧美va在线播放| wwwwww.欧美系列| 亚洲精品在线网站| 中文在线免费一区三区高中清不卡| 国产精品乱人伦中文| 亚洲乱码一区二区三区在线观看| 亚洲在线观看免费视频| 午夜影院久久久| 久久国产夜色精品鲁鲁99| 国产成人综合网| 色偷偷久久人人79超碰人人澡| 91九色02白丝porn| 91精品久久久久久久99蜜桃| 久久色在线视频| 中文字幕在线不卡一区| 婷婷久久综合九色国产成人| 久久99久国产精品黄毛片色诱| 国产成人精品网址| 欧美亚一区二区| 精品久久久影院| 综合久久久久久| 日本网站在线观看一区二区三区 | 日韩欧美国产精品| 中文字幕一区二区日韩精品绯色| 亚洲午夜久久久| 国产精品中文字幕一区二区三区| 91碰在线视频| 日韩欧美久久久| 日韩美女视频一区二区| 日韩成人午夜电影| 99精品视频在线免费观看| 欧美日本免费一区二区三区| 欧美激情综合五月色丁香| 亚洲福利一区二区三区| 国产电影一区二区三区| 欧美日韩小视频| 国产精品拍天天在线| 日本91福利区| 一本色道久久加勒比精品| 精品国产乱码久久久久久牛牛| 一区二区三区在线播| 国产高清一区日本| 91.com在线观看| 一区二区三区精品视频在线| 高清国产一区二区三区| 欧美一级电影网站| 亚洲一区二区三区四区的 | 色婷婷久久综合| 久久网站热最新地址| 日一区二区三区| 色婷婷精品久久二区二区蜜臂av| 久久久综合视频| 麻豆专区一区二区三区四区五区| 日本乱人伦一区| 国产精品第13页| 国产suv精品一区二区三区| 日韩欧美一级精品久久| 亚洲国产一区视频| 色av综合在线| 亚洲欧美一区二区三区国产精品| 国产成人h网站| 亚洲精品一线二线三线| 美女任你摸久久| 欧美一级久久久久久久大片| 亚洲妇女屁股眼交7| 欧美专区日韩专区| 亚洲精品少妇30p| 91色在线porny| 亚洲免费成人av| 91蜜桃在线观看| 综合激情成人伊人| 99久久婷婷国产| 中文字幕亚洲成人| jlzzjlzz欧美大全| 亚洲欧美综合色| 色老汉av一区二区三区| 亚洲欧洲99久久| 91精品办公室少妇高潮对白| 亚洲欧美国产高清| 欧美午夜免费电影| 亚洲电影一区二区| 欧美日本韩国一区| 麻豆精品久久精品色综合| 日韩欧美国产一区二区在线播放| 理论片日本一区| 久久噜噜亚洲综合| 成人免费不卡视频| 亚洲桃色在线一区| 欧美日韩成人在线| 久久激情五月婷婷| 国产精品污网站| 在线观看成人免费视频| 亚洲chinese男男1069| 日韩欧美精品三级| 风间由美性色一区二区三区| 中国色在线观看另类| 97se亚洲国产综合自在线| 亚洲国产精品一区二区久久恐怖片 | 欧美三区在线观看| 奇米在线7777在线精品 | 久久精品视频一区二区| 国产99久久久国产精品免费看| 国产精品视频第一区| 欧美性生活影院| 久久丁香综合五月国产三级网站| 国产欧美日韩麻豆91| 91黄色激情网站| 另类小说综合欧美亚洲| 国产精品电影一区二区三区| 欧美女孩性生活视频| 黄网站免费久久| 亚洲乱码国产乱码精品精小说|