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

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

?? tcpipmem.lst

?? 單片機(jī)下的TCP/IP協(xié)議棧
?? LST
字號(hào):
C51 COMPILER V8.01   TCPIPMEM                                                              12/13/2006 20:58:54 PAGE 1   


C51 COMPILER V8.01, COMPILATION OF MODULE TCPIPMEM
OBJECT MODULE PLACED IN .\TCPIPmem.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\TCPIP\TCPIPmem.c BROWSE DEBUG OBJECTEXTEND PRINT(.\TCPIPmem.lst) OBJECT(
                    -.\TCPIPmem.obj)

line level    source

   1          /*
   2           * Copyright (c) 2003 Electric Application Laboratory of NAN KAI University
   3           * All rights reserved.
   4           *
   5           * Redistribution and use in source and binary forms, with or without modification,
   6           * are permitted provided that the following conditions are met:
   7           *
   8           * 1. Redistributions of source code must retain the above copyright notice,
   9           *    this list of conditions and the following disclaimer.
  10           * 2. Redistributions in binary form must reproduce the above copyright notice,
  11           *    this list of conditions and the following disclaimer in the documentation
  12           *    and/or other materials provided with the distribution.
  13           * 3. The name of the author may not be used to endorse or promote products
  14           *    derived from this software without specific prior written permission.
  15           *
  16           * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
  17           * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  18           * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
  19           * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  20           * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
  21           * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  22           * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  23           * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
  24           * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
  25           * OF SUCH DAMAGE.
  26           *
  27           * Author: Li Zhanglin <wzzlin@nankai.edu.cn>
  28           *
  29           */
  30          
  31          #include "..\GloblDef\GloblDef.h"
  32          #include "..\TCPIP\TCPIPmem.h"
  33          
  34          /* buf for all tcpip packet */
  35          static BYTE DT_XDATA TCPIPBuf[TCPIP_BUF_SIZE];
  36          static struct SMemHead DT_XDATA * DT_XDATA MemHeadEnd;  /* end of the chain */
  37          static struct SMemHead DT_XDATA * DT_XDATA MemHeadStart;
  38          
  39          static WORD DT_XDATA FreeSize;  /* free memsize can use */
  40          
  41          void MemInit() REENTRANT_MUL
  42          {
  43   1              MemHeadEnd = (struct SMemHead DT_XDATA *)(TCPIPBuf + TCPIP_BUF_SIZE);
  44   1              MemHeadStart = (struct SMemHead DT_XDATA *)TCPIPBuf;
  45   1      
  46   1              /* at inital there is only a buf block. value in
  47   1              mem head is as following */
  48   1              MemHeadStart->pNext = MemHeadEnd;
  49   1              MemHeadStart->pPre  = MemHeadStart;
  50   1              MemHeadStart->used = FALSE;
  51   1      
  52   1              FreeSize = TCPIP_BUF_SIZE - sizeof(struct SMemHead);
  53   1      }
  54          
C51 COMPILER V8.01   TCPIPMEM                                                              12/13/2006 20:58:54 PAGE 2   

  55          /* allocate a buffer size of size, and set pStart to the start of buffer,pEnd
  56          to end of buffer.Also decrease FreeSize. */
  57          struct SMemHead DT_XDATA *MemAllocate(WORD size) REENTRANT_SIG
  58          {
  59   1              struct SMemHead DT_XDATA *MemHead;
  60   1              struct SMemHead DT_XDATA *NewMemHead;
  61   1              WORD MemPlayloadSize;
  62   1              
  63   1              /* search though the mem blocks */
  64   1              for(MemHead = MemHeadStart; MemHead != MemHeadEnd; MemHead = MemHead->pNext)
  65   1              {
  66   2                      /* if unused and mem playload size > size, select it. */
  67   2                      if(MemHead->used == FALSE && 
  68   2                              (MemPlayloadSize = (BYTE DT_XDATA *)(MemHead->pNext) - (BYTE DT_XDATA *)MemHead - sizeof(struct SMemHea
             -d)) >= size)
  69   2                      {
  70   3                              /* if MemPalyloadSize - size > sizeof(struct SMemHead) create
  71   3                              a new SMemHead at the excess memory leaving for later usage */
  72   3                              if(MemPlayloadSize - size > sizeof(struct SMemHead))
  73   3                              {
  74   4                                      NewMemHead = (struct SMemHead DT_XDATA *)((BYTE DT_XDATA *)MemHead + sizeof(struct SMemHead)+ size );
  75   4      
  76   4                                      /* link into link chain */
  77   4                                      NewMemHead->pNext = MemHead->pNext;
  78   4                                      MemHead->pNext    = NewMemHead;
  79   4                                      NewMemHead->pPre  = MemHead;
  80   4                                      if(NewMemHead->pNext != MemHeadEnd)
  81   4                                      {
  82   5                                              NewMemHead->pNext->pPre = NewMemHead;
  83   5                                      }
  84   4                                      
  85   4                                      /* set new mem as unused */
  86   4                                      NewMemHead->used = FALSE;
  87   4      
  88   4                                      /* decrease FreeSize: playload of MemHead and the head of NewMemHead */
  89   4                                      FreeSize -= (BYTE DT_XDATA *)(MemHead->pNext) - (BYTE DT_XDATA *)MemHead;
  90   4                              }
  91   3                              else
  92   3                              {
  93   4                                      /* decrease: playload of MemHead */
  94   4                                      FreeSize -= (BYTE DT_XDATA *)(MemHead->pNext) - (BYTE DT_XDATA *)MemHead - sizeof(struct SMemHead);
  95   4                              }
  96   3      
  97   3      
  98   3                              /* set pStart */
  99   3                              MemHead->pStart = (BYTE DT_XDATA *)MemHead + sizeof(struct SMemHead);
 100   3      
 101   3                              MemHead->pEnd   = MemHead->pStart + size;
 102   3      
 103   3                              /* set as used */
 104   3                              MemHead->used = TRUE;
 105   3      
 106   3                              return MemHead;
 107   3                      }
 108   2              }
 109   1              return NULL;
 110   1      }
 111          
 112          void MemFree(struct SMemHead DT_XDATA * MemHead) REENTRANT_SIG
 113          {
 114   1              struct SMemHead DT_XDATA * MemHeadMergePre;
 115   1              struct SMemHead DT_XDATA * MemHeadMergeNext;
C51 COMPILER V8.01   TCPIPMEM                                                              12/13/2006 20:58:54 PAGE 3   

 116   1      
 117   1              /* set used flag to false */
 118   1              MemHead->used = FALSE;
 119   1      
 120   1              /* inc FreeSize the size of playload of 'MemHead'*/
 121   1              FreeSize += (BYTE DT_XDATA *)(MemHead->pNext) - (BYTE DT_XDATA *)MemHead - sizeof(struct SMemHead);
 122   1      
 123   1              /* 
 124   1               * if pNext or pPre is a unused memblock, merge with it 
 125   1               */
 126   1      
 127   1              /* find the two MemHead going to merge */
 128   1              if(MemHead->pPre->used == FALSE)
 129   1              {
 130   2                      MemHeadMergePre = MemHead->pPre;        /* note: if MemHead == TCPBuf, MemHead->pPre == MemHead, but it is not 
             -a problom */
 131   2              }
 132   1              else
 133   1              {
 134   2                      MemHeadMergePre = MemHead;
 135   2              }
 136   1              if(MemHead->pNext != MemHeadEnd && MemHead->pNext->used == FALSE)
 137   1              {
 138   2                      MemHeadMergeNext = MemHead->pNext;      
 139   2      
 140   2                      /* MemHead of 'MemHead->pNext' will be free. Free size inc*/
 141   2                      FreeSize += sizeof(struct SMemHead);
 142   2              }
 143   1              else
 144   1              {
 145   2                      MemHeadMergeNext = MemHead;
 146   2              }
 147   1      
 148   1              /* merge is necessary? */
 149   1              if(MemHeadMergePre != MemHeadMergeNext)
 150   1              {
 151   2                      /* merge. that is del MemHeadMergeNext from the chain */
 152   2                      MemHeadMergePre->pNext = MemHeadMergeNext->pNext;
 153   2                      if(MemHeadMergeNext->pNext != MemHeadEnd)
 154   2                              MemHeadMergeNext->pNext->pPre = MemHeadMergePre;
 155   2      
 156   2                      /* will MemHead of 'MemHead' will be free? */
 157   2                      if(MemHead != MemHeadMergePre)
 158   2                              FreeSize += sizeof(struct SMemHead);
 159   2                      
 160   2              }
 161   1      }
 162          
 163          WORD MemFreeSize() REENTRANT_SIG
 164          {
 165   1              return FreeSize;
 166   1      }
 167          
 168          
 169          
 170          
 171          
 172                  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    948    ----
C51 COMPILER V8.01   TCPIPMEM                                                              12/13/2006 20:58:54 PAGE 4   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   8198    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产无遮挡一区二区三区毛片日本| 狠狠色丁香久久婷婷综合丁香| 国产成人综合在线观看| 久久综合九色综合97_久久久| 久久爱www久久做| 久久综合色婷婷| 国产精品12区| 亚洲欧美综合网| 在线中文字幕不卡| 香港成人在线视频| 精品国产乱码久久| 国产不卡视频在线播放| 1024成人网色www| 欧美伊人精品成人久久综合97| 三级欧美韩日大片在线看| 日韩精品最新网址| 丁香六月综合激情| 夜夜夜精品看看| 精品三级在线看| 成人激情动漫在线观看| 一区二区免费在线| 精品女同一区二区| 99久久久国产精品| 婷婷综合另类小说色区| 久久精品夜色噜噜亚洲a∨| 91免费小视频| 蜜桃一区二区三区在线观看| 国产精品不卡视频| 欧美精品xxxxbbbb| 成人中文字幕电影| 日韩中文字幕不卡| 国产精品白丝在线| 欧美人伦禁忌dvd放荡欲情| 国产麻豆欧美日韩一区| 一区二区日韩电影| 久久精品人人做人人爽97| 欧美性猛片xxxx免费看久爱| 精品中文av资源站在线观看| 日韩一区在线看| 精品区一区二区| 欧美在线影院一区二区| 国产精品羞羞答答xxdd| 亚洲18色成人| 日韩理论片网站| 久久久久久久网| 91麻豆精品国产91久久久久久久久 | 天天综合天天综合色| 国产女同互慰高潮91漫画| 在线电影一区二区三区| 99精品欧美一区二区三区小说| 麻豆91在线播放免费| 亚洲最大的成人av| 国产精品久久看| 久久久久99精品国产片| 欧美一区二区三区在线视频| 色哟哟日韩精品| 成人免费视频一区二区| 激情久久五月天| 三级欧美在线一区| 亚洲va欧美va人人爽| 亚洲欧美日韩在线| 日本一区二区三区在线不卡| 日韩欧美一二区| 91麻豆精品国产91久久久资源速度 | 亚洲婷婷综合色高清在线| 久久嫩草精品久久久精品| 欧美色国产精品| 欧美色视频在线观看| 色综合久久久网| 95精品视频在线| 99视频在线精品| 不卡大黄网站免费看| 成人福利视频在线看| 一本色道久久综合亚洲91| 欧美精品一区二区久久久| 99久久精品久久久久久清纯| 国产一本一道久久香蕉| 韩国一区二区视频| 久久99国产乱子伦精品免费| 人禽交欧美网站| 久久精工是国产品牌吗| 久久99国产精品免费网站| 麻豆91在线播放| 国产最新精品精品你懂的| 狠狠色丁香婷婷综合久久片| 国产福利精品导航| 成人理论电影网| 91网站最新网址| 欧美亚洲一区三区| 欧美日韩午夜在线视频| 制服丝袜在线91| 日韩精品一区在线| 久久久久国产精品免费免费搜索| 久久一留热品黄| 国产精品久久久久久久久免费樱桃| 国产精品国模大尺度视频| 亚洲丝袜精品丝袜在线| 一区二区三区免费观看| 日本亚洲欧美天堂免费| 激情五月婷婷综合| 成人性视频网站| 色婷婷久久99综合精品jk白丝| 欧美亚州韩日在线看免费版国语版| 欧美综合一区二区| 日韩欧美第一区| 欧美激情一二三区| 亚洲在线视频免费观看| 日本网站在线观看一区二区三区| 精品亚洲欧美一区| aaa亚洲精品一二三区| 精品视频在线看| 精品美女在线观看| 日韩理论片中文av| 免费人成在线不卡| 成人午夜精品在线| 欧美人与性动xxxx| 欧美国产精品久久| 亚洲成av人综合在线观看| 国内成+人亚洲+欧美+综合在线| 成人av电影在线播放| 欧美日韩一区二区电影| 久久久久久久久久久久久久久99| 亚洲欧美日韩系列| 精品一区二区在线看| 日本高清不卡视频| 精品国产乱码久久久久久浪潮 | 欧美一区二区在线视频| 国产日韩三级在线| 香蕉成人伊视频在线观看| 丰满少妇在线播放bd日韩电影| 欧美影视一区二区三区| 国产女主播在线一区二区| 日本在线播放一区二区三区| 91性感美女视频| 精品久久久久香蕉网| 亚洲小少妇裸体bbw| 成人开心网精品视频| 日韩无一区二区| 亚洲黄色片在线观看| 国产成人av影院| 91精品国产高清一区二区三区蜜臀| 中文字幕中文字幕在线一区| 久久 天天综合| 欧美日韩国产bt| 亚洲免费观看在线观看| 国产成人免费视频| 欧美tickle裸体挠脚心vk| 视频一区视频二区中文| 欧美亚男人的天堂| 亚洲欧美一区二区不卡| 粉嫩蜜臀av国产精品网站| 精品国产区一区| 日韩av一二三| 国产日本欧美一区二区| 免费在线观看成人| 欧美喷潮久久久xxxxx| 一区二区三区国产精品| 91蜜桃视频在线| 亚洲欧美在线观看| 成人激情午夜影院| 欧美国产日韩a欧美在线观看| 国产综合成人久久大片91| 91精品国产综合久久福利软件| 亚洲国产成人91porn| 欧美午夜片在线看| 亚洲第一电影网| 欧美三级蜜桃2在线观看| 亚洲一区二区中文在线| 色噜噜狠狠色综合中国| 亚洲精品午夜久久久| 91在线国内视频| 亚洲色图在线播放| 色哟哟国产精品| 亚洲最新视频在线播放| 欧美日韩激情一区二区三区| 亚洲电影中文字幕在线观看| 欧美日韩你懂的| 日本一不卡视频| 久久久亚洲欧洲日产国码αv| 久久精品国产网站| 26uuu精品一区二区在线观看| 久久草av在线| 国产喷白浆一区二区三区| 粉嫩蜜臀av国产精品网站| 中文字幕在线不卡一区 | 在线精品视频免费观看| 亚洲电影欧美电影有声小说| 制服丝袜亚洲网站| 久久99热狠狠色一区二区| 久久久久国产免费免费| 91网站黄www| 亚洲成av人片一区二区梦乃| 日韩视频免费观看高清完整版| 国产综合色在线视频区| 国产精品亲子乱子伦xxxx裸| 色噜噜狠狠色综合欧洲selulu| 日本欧美大码aⅴ在线播放| 久久久噜噜噜久久中文字幕色伊伊| 大桥未久av一区二区三区中文| 一区二区在线观看视频|