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

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

?? tcpipmem.c

?? 本程序實現單片機控制以太網網卡進行傳輸數據
?? C
字號:
/*
 * Copyright (c) 2003 Electric Application Laboratory of NAN KAI University
 * 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.
 *
 * Author: Li Zhanglin <wzzlin@nankai.edu.cn>
 *
 */

#include "..\GloblDef\GloblDef.h"
#include "..\TCPIP\TCPIPmem.h"

/* buf for all tcpip packet */
static BYTE DT_XDATA TCPIPBuf[TCPIP_BUF_SIZE];
static struct SMemHead DT_XDATA * DT_XDATA MemHeadEnd;	/* end of the chain */
static struct SMemHead DT_XDATA * DT_XDATA MemHeadStart;

static WORD DT_XDATA FreeSize;	/* free memsize can use */

void MemInit() REENTRANT_MUL
{
	MemHeadEnd = (struct SMemHead DT_XDATA *)(TCPIPBuf + TCPIP_BUF_SIZE);
	MemHeadStart = (struct SMemHead DT_XDATA *)TCPIPBuf;

	/* at inital there is only a buf block. value in
	mem head is as following */
	MemHeadStart->pNext = MemHeadEnd;
	MemHeadStart->pPre  = MemHeadStart;
	MemHeadStart->used = FALSE;

	FreeSize = TCPIP_BUF_SIZE - sizeof(struct SMemHead);
}

/* allocate a buffer size of size, and set pStart to the start of buffer,pEnd
to end of buffer.Also decrease FreeSize. */
struct SMemHead DT_XDATA *MemAllocate(WORD size) REENTRANT_SIG
{
	struct SMemHead DT_XDATA *MemHead;
	struct SMemHead DT_XDATA *NewMemHead;
	WORD MemPlayloadSize;
	
	/* search though the mem blocks */
	for(MemHead = MemHeadStart; MemHead != MemHeadEnd; MemHead = MemHead->pNext)
	{
		/* if unused and mem playload size > size, select it. */
		if(MemHead->used == FALSE && 
			(MemPlayloadSize = (BYTE DT_XDATA *)(MemHead->pNext) - (BYTE DT_XDATA *)MemHead - sizeof(struct SMemHead)) >= size)
		{
			/* if MemPalyloadSize - size > sizeof(struct SMemHead) create
			a new SMemHead at the excess memory leaving for later usage */
			if(MemPlayloadSize - size > sizeof(struct SMemHead))
			{
				NewMemHead = (struct SMemHead DT_XDATA *)((BYTE DT_XDATA *)MemHead + sizeof(struct SMemHead)+ size );

				/* link into link chain */
				NewMemHead->pNext = MemHead->pNext;
				MemHead->pNext    = NewMemHead;
				NewMemHead->pPre  = MemHead;
				if(NewMemHead->pNext != MemHeadEnd)
				{
					NewMemHead->pNext->pPre = NewMemHead;
				}
				
				/* set new mem as unused */
				NewMemHead->used = FALSE;

				/* decrease FreeSize: playload of MemHead and the head of NewMemHead */
				FreeSize -= (BYTE DT_XDATA *)(MemHead->pNext) - (BYTE DT_XDATA *)MemHead;
			}
			else
			{
				/* decrease: playload of MemHead */
				FreeSize -= (BYTE DT_XDATA *)(MemHead->pNext) - (BYTE DT_XDATA *)MemHead - sizeof(struct SMemHead);
			}


			/* set pStart */
			MemHead->pStart = (BYTE DT_XDATA *)MemHead + sizeof(struct SMemHead);

			MemHead->pEnd	= MemHead->pStart + size;

			/* set as used */
			MemHead->used = TRUE;

			return MemHead;
		}
	}
	return NULL;
}

void MemFree(struct SMemHead DT_XDATA * MemHead) REENTRANT_SIG
{
	struct SMemHead DT_XDATA * MemHeadMergePre;
	struct SMemHead DT_XDATA * MemHeadMergeNext;

	/* set used flag to false */
	MemHead->used = FALSE;

	/* inc FreeSize the size of playload of 'MemHead'*/
	FreeSize += (BYTE DT_XDATA *)(MemHead->pNext) - (BYTE DT_XDATA *)MemHead - sizeof(struct SMemHead);

	/* 
	 * if pNext or pPre is a unused memblock, merge with it 
	 */

	/* find the two MemHead going to merge */
	if(MemHead->pPre->used == FALSE)
	{
		MemHeadMergePre = MemHead->pPre;	/* note: if MemHead == TCPBuf, MemHead->pPre == MemHead, but it is not a problom */
	}
	else
	{
		MemHeadMergePre = MemHead;
	}
	if(MemHead->pNext != MemHeadEnd && MemHead->pNext->used == FALSE)
	{
		MemHeadMergeNext = MemHead->pNext;	

		/* MemHead of 'MemHead->pNext' will be free. Free size inc*/
		FreeSize += sizeof(struct SMemHead);
	}
	else
	{
		MemHeadMergeNext = MemHead;
	}

	/* merge is necessary? */
	if(MemHeadMergePre != MemHeadMergeNext)
	{
		/* merge. that is del MemHeadMergeNext from the chain */
		MemHeadMergePre->pNext = MemHeadMergeNext->pNext;
		if(MemHeadMergeNext->pNext != MemHeadEnd)
			MemHeadMergeNext->pNext->pPre = MemHeadMergePre;

		/* will MemHead of 'MemHead' will be free? */
		if(MemHead != MemHeadMergePre)
			FreeSize += sizeof(struct SMemHead);
		
	}
}

WORD MemFreeSize() REENTRANT_SIG
{
	return FreeSize;
}





	

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久毛片av大全日韩| 中文字幕一区二区三中文字幕| 色综合久久中文字幕综合网| 99久久精品费精品国产一区二区| 波多野结衣亚洲| 国产成人精品在线看| 国产一区二区毛片| 国产一区二区三区免费看| 韩国精品主播一区二区在线观看| 日本午夜精品视频在线观看| 蜜桃一区二区三区在线| 狠狠色狠狠色合久久伊人| 国产成人av电影| 9色porny自拍视频一区二区| 在线精品观看国产| 欧美日韩在线亚洲一区蜜芽| 91麻豆精品国产91久久久久久| 日韩一区二区三区电影在线观看 | 国产精品久久久久三级| 日韩三级在线免费观看| 午夜精品成人在线| 亚洲国产综合色| 国产伦理精品不卡| 欧美夫妻性生活| 精品国产污网站| 亚洲1区2区3区4区| jlzzjlzz国产精品久久| 日韩三级精品电影久久久| 亚洲你懂的在线视频| 99re热这里只有精品免费视频| 美女精品一区二区| 国产69精品久久久久毛片| 99久久国产综合精品麻豆| 欧美视频在线一区二区三区| 欧美一区二区三区公司| 中文字幕免费观看一区| 亚洲成人av免费| 国产91精品在线观看| 欧美性猛交xxxx乱大交退制版| 欧美成人乱码一区二区三区| 亚洲精品欧美在线| 国产在线视频一区二区三区| 一本一道久久a久久精品| 欧美另类videos死尸| 国产清纯白嫩初高生在线观看91 | 欧美一区二区视频网站| 国产精品日日摸夜夜摸av| 午夜精品影院在线观看| 成人免费av在线| 欧美成人精品3d动漫h| 一区二区三区在线看| 国产黑丝在线一区二区三区| 欧美老肥妇做.爰bbww| 中文字幕日韩精品一区| 老司机精品视频一区二区三区| 日本伦理一区二区| 中文天堂在线一区| 久久成人久久鬼色| 欧美日韩国产经典色站一区二区三区 | 精品国产成人在线影院| 蜜桃av一区二区三区电影| 色噜噜偷拍精品综合在线| 欧美国产欧美综合| 国产精品影视在线| 欧美电影免费观看完整版| 亚洲第一电影网| 欧美影视一区在线| 亚洲私人影院在线观看| 成人激情视频网站| 中文字幕不卡一区| 国产曰批免费观看久久久| 日韩欧美一级精品久久| 日韩成人午夜精品| 欧美一级久久久| 欧美aaaaa成人免费观看视频| 欧美人狂配大交3d怪物一区| 亚洲福利视频一区二区| 欧美日韩午夜在线视频| 亚洲自拍偷拍麻豆| 欧美色欧美亚洲另类二区| 亚洲第一福利视频在线| 欧美精品自拍偷拍| 麻豆视频一区二区| 日韩美女视频一区二区在线观看| 日韩精品亚洲一区二区三区免费| 欧美性受xxxx黑人xyx性爽| 亚洲视频精选在线| 精品视频在线免费观看| 日日夜夜精品视频天天综合网| 777欧美精品| 国产一区在线不卡| 国产精品私人影院| 色香蕉久久蜜桃| 日韩精品成人一区二区在线| 日韩精品一区二区三区视频播放| 狠狠色综合播放一区二区| 中文在线资源观看网站视频免费不卡| 成人av集中营| 亚洲成人午夜影院| 久久免费午夜影院| 91丨porny丨在线| 日韩精品一级中文字幕精品视频免费观看 | 久久久精品国产免大香伊| 国产91精品免费| 亚洲国产婷婷综合在线精品| 日韩欧美www| 波多野结衣欧美| 日韩福利电影在线| 国产三级一区二区| 欧美色精品天天在线观看视频| 日本免费在线视频不卡一不卡二| 国产亚洲欧美日韩俺去了| 91麻豆成人久久精品二区三区| 秋霞午夜av一区二区三区| 国产精品久久久久7777按摩| 欧美老肥妇做.爰bbww| 国产91精品一区二区麻豆网站| 亚洲第一成人在线| 久久久精品国产免费观看同学| 欧洲在线/亚洲| 成人福利电影精品一区二区在线观看| 亚洲国产一区视频| 久久欧美一区二区| 欧美精品日韩一本| 91美女蜜桃在线| 精品一区二区三区在线播放 | 精品三级在线看| 在线视频中文字幕一区二区| 国产麻豆一精品一av一免费 | 亚洲日本va在线观看| 日韩精品影音先锋| 在线视频欧美区| www.欧美精品一二区| 激情亚洲综合在线| 日韩二区三区四区| 污片在线观看一区二区| 亚洲欧美色图小说| 国产精品天天看| 精品粉嫩aⅴ一区二区三区四区| 欧美日韩美少妇| 91福利资源站| 97se亚洲国产综合自在线不卡 | 色激情天天射综合网| 岛国一区二区在线观看| 精彩视频一区二区三区| 首页欧美精品中文字幕| 亚洲综合色丁香婷婷六月图片| 中文字幕不卡在线| 久久久久久久久蜜桃| 2023国产精品视频| 日韩精品一区二区三区在线播放 | 日韩高清国产一区在线| 日韩精品一级中文字幕精品视频免费观看| 亚洲精品v日韩精品| 亚洲国产精华液网站w| 中文一区二区在线观看| 国产女同互慰高潮91漫画| 国产精品免费丝袜| 国产精品久久久久永久免费观看 | 亚洲午夜一区二区| 亚洲综合成人在线| 亚洲一区二区三区四区在线| 一区二区三区四区不卡视频| 亚洲视频1区2区| 天堂va蜜桃一区二区三区漫画版| 亚洲不卡av一区二区三区| 亚洲国产一区二区三区青草影视 | 最新日韩av在线| 亚洲精品免费播放| 日日摸夜夜添夜夜添国产精品| 免费在线观看一区二区三区| 狠狠久久亚洲欧美| 成年人午夜久久久| 欧美午夜精品久久久久久超碰| 欧美精品丝袜久久久中文字幕| 精品成人a区在线观看| 国产亚洲精品久| 玉足女爽爽91| 国产一区二区三区日韩| 99国产精品久久久久久久久久| 欧美日韩黄视频| 久久久久久久综合色一本| 亚洲狼人国产精品| 久久国产生活片100| 国产精品久久久久久久久免费樱桃| 亚洲免费观看视频| 久久99精品久久久久久国产越南| 成人国产精品免费观看| 91精品蜜臀在线一区尤物| 中文字幕成人av| 日韩电影免费在线看| 91蜜桃免费观看视频| 精品久久久久香蕉网| 亚洲一区在线播放| 国产成人免费视频精品含羞草妖精| 日本黄色一区二区| 26uuuu精品一区二区| 亚洲综合久久av| 成人免费福利片| 亚洲精品一区二区三区四区高清|