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

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

?? list.c

?? 一個(gè)開(kāi)源的Modbus協(xié)議棧
?? C
字號(hào):
/*

	FreeRTOS.org V4.1.1 - Copyright (C) 2003-2006 Richard Barry.



	This file is part of the FreeRTOS.org distribution.



	FreeRTOS.org is free software; you can redistribute it and/or modify

	it under the terms of the GNU General Public License as published by

	the Free Software Foundation; either version 2 of the License, or

	(at your option) any later version.



	FreeRTOS.org is distributed in the hope that it will be useful,

	but WITHOUT ANY WARRANTY; without even the implied warranty of

	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the

	GNU General Public License for more details.



	You should have received a copy of the GNU General Public License

	along with FreeRTOS.org; if not, write to the Free Software

	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA



	A special exception to the GPL can be applied should you wish to distribute

	a combined work that includes FreeRTOS.org, without being obliged to provide

	the source code for any proprietary components.  See the licensing section

	of http://www.FreeRTOS.org for full details of how and when the exception

	can be applied.



	***************************************************************************

	See http://www.FreeRTOS.org for documentation, latest information, license

	and contact details.  Please ensure to read the configuration and relevant

	port sections of the online documentation.

	***************************************************************************

*/



/*

Changes from V1.2.0



	+ Removed the volatile modifier from the function parameters.  This was

	  only ever included to prevent compiler warnings.  Now warnings are

	  removed by casting parameters where the calls are made.



	+ prvListGetOwnerOfNextEntry() and prvListGetOwnerOfHeadEntry() have been

	  removed from the c file and added as macros to the h file.



	+ uxNumberOfItems has been added to the list structure.  This removes the

	  need for a pointer comparison when checking if a list is empty, and so

	  is slightly faster.



	+ Removed the NULL check in vListRemove().  This makes the call faster but

	  necessitates any application code utilising the list implementation to

	  ensure NULL pointers are not passed.



Changes from V2.0.0



	+ Double linked the lists to allow faster removal item removal.



Changes from V2.6.1



	+ Make use of the new portBASE_TYPE definition where ever appropriate.



Changes from V3.0.0



	+ API changes as described on the FreeRTOS.org WEB site.



Changes from V3.2.4



	+ Removed the pxHead member of the xList structure.  This always pointed

	  to the same place so has been removed to free a few bytes of RAM.



	+ Introduced the xMiniListItem structure that does not include the 

	  xListItem members that are not required by the xListEnd member of a list.

	  Again this was done to reduce RAM usage.



	+ Changed the volatile definitions of some structure members to clean up

	  the code where the list structures are used.



Changes from V4.0.4



	+ Optimised vListInsert() in the case when the wake time is the maximum 

	  tick count value.

*/



#include <stdlib.h>

#include "FreeRTOS.h"

#include "list.h"



/*-----------------------------------------------------------

 * PUBLIC LIST API documented in list.h

 *----------------------------------------------------------*/



void vListInitialise( xList *pxList )

{

	/* The list structure contains a list item which is used to mark the

	end of the list.  To initialise the list the list end is inserted

	as the only list entry. */

	pxList->pxIndex = ( xListItem * ) &( pxList->xListEnd );



	/* The list end value is the highest possible value in the list to

	ensure it remains at the end of the list. */

	pxList->xListEnd.xItemValue = portMAX_DELAY;



	/* The list end next and previous pointers point to itself so we know

	when the list is empty. */

	pxList->xListEnd.pxNext = ( xListItem * ) &( pxList->xListEnd );

	pxList->xListEnd.pxPrevious = ( xListItem * ) &( pxList->xListEnd );



	pxList->uxNumberOfItems = 0;

}

/*-----------------------------------------------------------*/



void vListInitialiseItem( xListItem *pxItem )

{

	/* Make sure the list item is not recorded as being on a list. */

	pxItem->pvContainer = NULL;

}

/*-----------------------------------------------------------*/



void vListInsertEnd( xList *pxList, xListItem *pxNewListItem )

{

volatile xListItem * pxIndex;



	/* Insert a new list item into pxList, but rather than sort the list,

	makes the new list item the last item to be removed by a call to

	pvListGetOwnerOfNextEntry.  This means it has to be the item pointed to by

	the pxIndex member. */

	pxIndex = pxList->pxIndex;



	pxNewListItem->pxNext = pxIndex->pxNext;

	pxNewListItem->pxPrevious = pxList->pxIndex;

	pxIndex->pxNext->pxPrevious = ( volatile xListItem * ) pxNewListItem;

	pxIndex->pxNext = ( volatile xListItem * ) pxNewListItem;

	pxList->pxIndex = ( volatile xListItem * ) pxNewListItem;



	/* Remember which list the item is in. */

	pxNewListItem->pvContainer = ( void * ) pxList;



	( pxList->uxNumberOfItems )++;

}

/*-----------------------------------------------------------*/



void vListInsert( xList *pxList, xListItem *pxNewListItem )

{

volatile xListItem *pxIterator;

portTickType xValueOfInsertion;



	/* Insert the new list item into the list, sorted in ulListItem order. */

	xValueOfInsertion = pxNewListItem->xItemValue;



	/* If the list already contains a list item with the same item value then

	the new list item should be placed after it.  This ensures that TCB's which

	are stored in ready lists (all of which have the same ulListItem value)

	get an equal share of the CPU.  However, if the xItemValue is the same as 

	the back marker the iteration loop below will not end.  This means we need

	to guard against this by checking the value first and modifying the 

	algorithm slightly if necessary. */

	if( xValueOfInsertion == portMAX_DELAY )

	{

		pxIterator = pxList->xListEnd.pxPrevious;

	}

	else

	{

		for( pxIterator = ( xListItem * ) &( pxList->xListEnd ); pxIterator->pxNext->xItemValue <= xValueOfInsertion; pxIterator = pxIterator->pxNext )

		{

			/* There is nothing to do here, we are just iterating to the

			wanted insertion position. */

		}

	}



	pxNewListItem->pxNext = pxIterator->pxNext;

	pxNewListItem->pxNext->pxPrevious = ( volatile xListItem * ) pxNewListItem;

	pxNewListItem->pxPrevious = pxIterator;

	pxIterator->pxNext = ( volatile xListItem * ) pxNewListItem;



	/* Remember which list the item is in.  This allows fast removal of the

	item later. */

	pxNewListItem->pvContainer = ( void * ) pxList;



	( pxList->uxNumberOfItems )++;

}

/*-----------------------------------------------------------*/



void vListRemove( xListItem *pxItemToRemove )

{

xList * pxList;



	pxItemToRemove->pxNext->pxPrevious = pxItemToRemove->pxPrevious;

	pxItemToRemove->pxPrevious->pxNext = pxItemToRemove->pxNext;

	

	/* The list item knows which list it is in.  Obtain the list from the list

	item. */

	pxList = ( xList * ) pxItemToRemove->pvContainer;



	/* Make sure the index is left pointing to a valid item. */

	if( pxList->pxIndex == pxItemToRemove )

	{

		pxList->pxIndex = pxItemToRemove->pxPrevious;

	}



	pxItemToRemove->pvContainer = NULL;

	( pxList->uxNumberOfItems )--;

}

/*-----------------------------------------------------------*/



?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩精品一区二区浪潮av | 久久机这里只有精品| 日韩一级片网站| 美女诱惑一区二区| 一区二区欧美精品| 国产成人欧美日韩在线电影| 亚洲欧美一区二区三区极速播放| 日韩一区二区三区视频在线| 国产精品91一区二区| 亚洲va在线va天堂| 中文字幕一区二区日韩精品绯色| 欧美一区二区三区人| 蜜桃av一区二区在线观看| 国产精品麻豆网站| 欧美成人bangbros| 宅男在线国产精品| 欧美日韩一区视频| 欧美在线小视频| 99v久久综合狠狠综合久久| 紧缚奴在线一区二区三区| 日本亚洲免费观看| 亚洲高清免费观看 | 日韩三级在线免费观看| 9191精品国产综合久久久久久 | 久久久精品欧美丰满| 这里是久久伊人| 91精品国产入口在线| 91色.com| 色天使久久综合网天天| 91网站最新地址| av电影天堂一区二区在线| 国产99一区视频免费| 欧美一区二区三区的| 成人动漫中文字幕| 波多野结衣中文一区| 91麻豆免费看片| 在线免费一区三区| 欧美激情一区二区三区在线| 欧美精品一区二区三区蜜桃| www激情久久| 亚洲精品视频自拍| 日韩精品欧美成人高清一区二区| 麻豆视频一区二区| 国产成人8x视频一区二区| 91无套直看片红桃| 欧美成人一区二区三区片免费| 日韩一区二区精品| 久久精品一区二区三区av| 成人免费在线视频| 韩国三级在线一区| 久久久久久久久蜜桃| 欧美日韩精品免费| 亚洲国产成人私人影院tom| 亚洲午夜久久久久| 国产成人免费视频一区| 欧美伦理影视网| 欧美国产97人人爽人人喊| 久久不见久久见免费视频7| 色婷婷香蕉在线一区二区| 亚洲精品一区二区三区福利| 亚洲1区2区3区4区| 色欧美88888久久久久久影院| 精品福利一区二区三区免费视频| 亚洲一区在线视频| 色综合欧美在线| 国产精品美女久久久久久久久久久 | 国内成人自拍视频| 欧美精品18+| 午夜成人免费电影| 欧美写真视频网站| 一区二区不卡在线播放 | 日韩精品福利网| 91免费版在线| 尤物av一区二区| 色综合久久综合网97色综合 | 欧美精品乱码久久久久久| 亚洲精品视频一区二区| 99国产精品一区| 国产偷v国产偷v亚洲高清| 国内精品伊人久久久久影院对白| 精品欧美一区二区在线观看| 麻豆成人91精品二区三区| 精品少妇一区二区三区视频免付费| 婷婷六月综合亚洲| 欧美一区二区三区免费大片| 久久99精品国产| 久久久国产一区二区三区四区小说 | 色先锋资源久久综合| 一区二区高清视频在线观看| 777奇米成人网| 亚洲高清免费一级二级三级| 日韩女优av电影| 国产91精品久久久久久久网曝门| 国产精品乱码一区二区三区软件| 国产精品综合久久| 国产精品青草综合久久久久99| 色诱视频网站一区| 麻豆高清免费国产一区| 中文字幕在线不卡一区二区三区| 欧美日韩卡一卡二| 国产不卡视频一区二区三区| 中文字幕一区二区不卡| 91精品国产免费| 成人av资源在线观看| 日本欧美韩国一区三区| 亚洲国产精品av| 精品国产精品网麻豆系列| 欧美专区日韩专区| 成人免费三级在线| 麻豆精品视频在线观看免费 | 亚洲色图欧美激情| 亚洲免费在线视频一区 二区| 色综合天天综合网天天看片| 国产在线不卡一卡二卡三卡四卡| 亚洲美女免费在线| 亚洲精品一区二区三区香蕉| 欧美午夜免费电影| 97久久人人超碰| 国产成人免费在线| 国产精品正在播放| 国产美女娇喘av呻吟久久| 美女在线观看视频一区二区| 青青草91视频| 日韩精彩视频在线观看| 亚洲一本大道在线| 亚洲国产毛片aaaaa无费看 | 国产精品伦理在线| 成人免费一区二区三区在线观看| 欧美国产一区二区在线观看| 国产欧美日韩精品一区| 欧美激情综合在线| 日本一区免费视频| 中文字幕一区二区三| 欧美高清dvd| 欧美一区二区在线不卡| 3d成人h动漫网站入口| 欧美一区二区三区日韩视频| 日韩欧美国产一区二区在线播放| 欧美日韩一级片网站| 欧美老肥妇做.爰bbww视频| 欧美一区二区三区思思人| 日韩欧美中文字幕制服| 久久久久高清精品| 亚洲老妇xxxxxx| 日韩成人午夜电影| 国产成人免费在线观看不卡| 91影院在线免费观看| 91精品中文字幕一区二区三区| 日韩亚洲欧美综合| 亚洲视频一区在线观看| 蜜臀久久久99精品久久久久久| 国产电影精品久久禁18| 99re热视频精品| 欧美精品一区二区三区蜜桃| 亚洲人成7777| 卡一卡二国产精品| 欧洲av在线精品| 欧美国产在线观看| 爽好久久久欧美精品| 色婷婷久久久综合中文字幕| 久久综合久久99| 午夜精品一区二区三区三上悠亚| 国产一区二区三区免费在线观看| 成人app在线| 久久精品无码一区二区三区| 亚洲成a人在线观看| 粉嫩av一区二区三区| 久久欧美一区二区| 美腿丝袜亚洲综合| 欧美一级黄色大片| 一区二区三区在线免费观看| 国产成人av在线影院| 午夜精品国产更新| 国产精品一二三| 久久女同互慰一区二区三区| 蜜臀精品久久久久久蜜臀| 日韩一区二区三区精品视频| 亚洲香肠在线观看| 欧美一区二区三区性视频| 婷婷激情综合网| 日韩欧美在线1卡| 极品尤物av久久免费看| 精品99一区二区三区| 麻豆一区二区99久久久久| 日韩午夜在线观看视频| 黄一区二区三区| 国产欧美精品日韩区二区麻豆天美| 国产综合色视频| 亚洲精品视频在线看| 一本大道久久精品懂色aⅴ| 亚洲激情在线激情| 欧美精品v国产精品v日韩精品| 亚洲一区二区三区中文字幕| 欧美视频中文一区二区三区在线观看| 日韩毛片一二三区| 欧美肥胖老妇做爰| 国产精品正在播放| 日日摸夜夜添夜夜添亚洲女人| 日韩欧美国产一二三区| 成人精品免费网站|