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

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

?? xemac_intr_dma.c

?? gumstiz u-boot loader in linux
?? C
?? 第 1 頁 / 共 4 頁
字號:
	case XEM_RECV:		*WaitPtr =		    XDmaChannel_GetPktWaitBound(&InstancePtr->RecvChannel);		break;	default:		return XST_INVALID_PARAM;	}	return XST_SUCCESS;}/*****************************************************************************//**** Give the driver the memory space to be used for the scatter-gather DMA* receive descriptor list. This function should only be called once, during* initialization of the Ethernet driver. The memory space must be big enough* to hold some number of descriptors, depending on the needs of the system.* The xemac.h file defines minimum and default numbers of descriptors* which can be used to allocate this memory space.** The memory space must be word-aligned. An assert will occur if asserts are* turned on and the memory is not word-aligned.** @param InstancePtr is a pointer to the XEmac instance to be worked on.* @param MemoryPtr is a pointer to the word-aligned memory.* @param ByteCount is the length, in bytes, of the memory space.** @return** - XST_SUCCESS if the space was initialized successfully* - XST_NOT_SGDMA if the MAC is not configured for scatter-gather DMA* - XST_DMA_SG_LIST_EXISTS if this list space has already been created** @note** If the device is configured for scatter-gather DMA, this function must be* called AFTER the XEmac_Initialize() function because the DMA channel* components must be initialized before the memory space is set.*******************************************************************************/XStatusXEmac_SetSgRecvSpace(XEmac * InstancePtr, u32 * MemoryPtr, u32 ByteCount){	XASSERT_NONVOID(InstancePtr != NULL);	XASSERT_NONVOID(MemoryPtr != NULL);	XASSERT_NONVOID(ByteCount != 0);	XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);	if (!XEmac_mIsSgDma(InstancePtr)) {		return XST_NOT_SGDMA;	}	return XDmaChannel_CreateSgList(&InstancePtr->RecvChannel, MemoryPtr,					ByteCount);}/*****************************************************************************//**** Give the driver the memory space to be used for the scatter-gather DMA* transmit descriptor list. This function should only be called once, during* initialization of the Ethernet driver. The memory space must be big enough* to hold some number of descriptors, depending on the needs of the system.* The xemac.h file defines minimum and default numbers of descriptors* which can be used to allocate this memory space.** The memory space must be word-aligned. An assert will occur if asserts are* turned on and the memory is not word-aligned.** @param InstancePtr is a pointer to the XEmac instance to be worked on.* @param MemoryPtr is a pointer to the word-aligned memory.* @param ByteCount is the length, in bytes, of the memory space.** @return** - XST_SUCCESS if the space was initialized successfully* - XST_NOT_SGDMA if the MAC is not configured for scatter-gather DMA* - XST_DMA_SG_LIST_EXISTS if this list space has already been created** @note** If the device is configured for scatter-gather DMA, this function must be* called AFTER the XEmac_Initialize() function because the DMA channel* components must be initialized before the memory space is set.*******************************************************************************/XStatusXEmac_SetSgSendSpace(XEmac * InstancePtr, u32 * MemoryPtr, u32 ByteCount){	XASSERT_NONVOID(InstancePtr != NULL);	XASSERT_NONVOID(MemoryPtr != NULL);	XASSERT_NONVOID(ByteCount != 0);	XASSERT_NONVOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);	if (!XEmac_mIsSgDma(InstancePtr)) {		return XST_NOT_SGDMA;	}	return XDmaChannel_CreateSgList(&InstancePtr->SendChannel, MemoryPtr,					ByteCount);}/*****************************************************************************//**** Set the callback function for handling received frames in scatter-gather DMA* mode.  The upper layer software should call this function during* initialization.  The callback is called once per frame received. The head of* a descriptor list is passed in along with the number of descriptors in the* list. Before leaving the callback, the upper layer software should attach a* new buffer to each descriptor in the list.** The callback is invoked by the driver within interrupt context, so it needs* to do its job quickly. Sending the received frame up the protocol stack* should be done at task-level. If there are other potentially slow operations* within the callback, these too should be done at task-level.** @param InstancePtr is a pointer to the XEmac instance to be worked on.* @param CallBackRef is a reference pointer to be passed back to the adapter in*        the callback. This helps the adapter correlate the callback to a*        particular driver.* @param FuncPtr is the pointer to the callback function.** @return** None.** @note** None.*******************************************************************************/voidXEmac_SetSgRecvHandler(XEmac * InstancePtr, void *CallBackRef,		       XEmac_SgHandler FuncPtr){	/*	 * Asserted IsDmaSg here instead of run-time check because there is really	 * no ill-effects of setting these when not configured for scatter-gather.	 */	XASSERT_VOID(InstancePtr != NULL);	XASSERT_VOID(FuncPtr != NULL);	XASSERT_VOID(XEmac_mIsSgDma(InstancePtr));	XASSERT_VOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);	InstancePtr->SgRecvHandler = FuncPtr;	InstancePtr->SgRecvRef = CallBackRef;}/*****************************************************************************//**** Set the callback function for handling confirmation of transmitted frames in* scatter-gather DMA mode.  The upper layer software should call this function* during initialization.  The callback is called once per frame sent. The head* of a descriptor list is passed in along with the number of descriptors in* the list. The callback is responsible for freeing buffers attached to these* descriptors.** The callback is invoked by the driver within interrupt context, so it needs* to do its job quickly. If there are potentially slow operations within the* callback, these should be done at task-level.** @param InstancePtr is a pointer to the XEmac instance to be worked on.* @param CallBackRef is a reference pointer to be passed back to the adapter in*        the callback. This helps the adapter correlate the callback to a*        particular driver.* @param FuncPtr is the pointer to the callback function.** @return** None.** @note** None.*******************************************************************************/voidXEmac_SetSgSendHandler(XEmac * InstancePtr, void *CallBackRef,		       XEmac_SgHandler FuncPtr){	/*	 * Asserted IsDmaSg here instead of run-time check because there is really	 * no ill-effects of setting these when not configured for scatter-gather.	 */	XASSERT_VOID(InstancePtr != NULL);	XASSERT_VOID(FuncPtr != NULL);	XASSERT_VOID(XEmac_mIsSgDma(InstancePtr));	XASSERT_VOID(InstancePtr->IsReady == XCOMPONENT_IS_READY);	InstancePtr->SgSendHandler = FuncPtr;	InstancePtr->SgSendRef = CallBackRef;}/*****************************************************************************//*** Handle an interrupt from the DMA receive channel. DMA interrupts are:** - DMA error. DMA encountered a bus error or timeout. This is a fatal error*   that requires reset of the channel.  The driver calls the error handler*   of the upper layer software with an error code indicating the device should*   be reset.* - Packet count threshold reached.  For scatter-gather operations, indicates*   the threshold for the number of packets not serviced by software has been*   reached. The driver behaves as follows:*       - Get the value of the packet counter, which tells us how many packets*         are ready to be serviced*       - For each packet*           - For each descriptor, remove it from the scatter-gather list*           - Check for the last descriptor in the frame, and if set*               - Bump frame statistics*               - Call the scatter-gather receive callback function*               - Decrement the packet counter by one*       Note that there are no receive errors reported in the status word of*       the buffer descriptor.  If receive errors occur, the MAC drops the*       packet, and we only find out about the errors through various error*       count registers.* - Packet wait bound reached.  For scatter-gather, indicates the time to wait*   for the next packet has expired.  The driver follows the same logic as when*   the packet count threshold interrupt is received.* - Scatter-gather end acknowledge.  Hardware has reached the end of the*   descriptor list.  The driver follows the same logic as when the packet count*   threshold interrupt is received. In addition, the driver restarts the DMA*   scatter-gather channel in case there are newly inserted descriptors.** @param InstancePtr is a pointer to the XEmac instance to be worked on.** @return** Although the function returns void, there are asynchronous errors that can* be generated (by calling the ErrorHandler) from this function.  These are:* - XST_DMA_SG_LIST_EMPTY indicates we tried to get a buffer descriptor from the*   DMA channel, but there was not one ready for software.* - XST_DMA_ERROR indicates a DMA bus error or timeout occurred. This is a fatal*   error that requires reset.** @note** None.*******************************************************************************/static voidHandleDmaRecvIntr(XEmac * InstancePtr){	u32 IntrStatus;	/*	 * Read the interrupt status	 */	IntrStatus = XDmaChannel_GetIntrStatus(&InstancePtr->RecvChannel);	/*	 * For packet threshold or wait bound interrupts, process desciptors. Also	 * process descriptors on a SG end acknowledgement, which means the end of	 * the descriptor list has been reached by the hardware. For receive, this	 * is potentially trouble since it means the descriptor list is full,	 * unless software can process enough packets quickly enough so the	 * hardware has room to put new packets.	 */	if (IntrStatus & (XDC_IXR_PKT_THRESHOLD_MASK |			  XDC_IXR_PKT_WAIT_BOUND_MASK | XDC_IXR_SG_END_MASK)) {		XStatus Result = XST_SUCCESS;		u32 NumFrames;		u32 NumProcessed;		u32 NumBuffers;		u32 NumBytes;		u32 IsLast;		XBufDescriptor *FirstBdPtr;		XBufDescriptor *BdPtr;		/*		 * Get the number of unserviced packets		 */		NumFrames = XDmaChannel_GetPktCount(&InstancePtr->RecvChannel);		for (NumProcessed = 0; NumProcessed < NumFrames; NumProcessed++) {			IsLast = FALSE;			FirstBdPtr = NULL;			NumBuffers = 0;			NumBytes = 0;			/*			 * For each packet, get the descriptor from the list. On the			 * last one in the frame, make the callback to the upper layer.			 */			while (!IsLast) {				Result =				    XDmaChannel_GetDescriptor(&InstancePtr->							      RecvChannel,							      &BdPtr);				if (Result != XST_SUCCESS) {					/*					 * An error getting a buffer descriptor from the list.					 * This should not happen, but if it does, report it to					 * the error callback and break out of the loops to service					 * other interrupts.					 */					InstancePtr->ErrorHandler(InstancePtr->								  ErrorRef,								  Result);					break;				}				/*				 * Keep a pointer to the first descriptor in the list, as it				 * will be passed to the upper layers in a bit. By the fact				 * that we received this packet means no errors occurred, so				 * no need to check the device status word for errors.				 */				if (FirstBdPtr == NULL) {					FirstBdPtr = BdPtr;				}				NumBytes += XBufDescriptor_GetLength(BdPtr);				/*				 * Check to see if this is the last descriptor in the frame,				 * and if so, set the IsLast flag to get out of the loop.				 */				if (XBufDescriptor_IsLastStatus(BdPtr)) {					IsLast = TRUE;				}				/*				 * Bump the number of buffers in this packet				 */				NumBuffers++;			}	/* end while loop */			/*			 * Check for error that occurred inside the while loop, and break			 * out of the for loop if there was one so other interrupts can

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲午夜免费电影| 中文字幕在线观看不卡视频| 亚洲一区二区三区四区五区中文 | 国产精品国产自产拍在线| 国产高清在线观看免费不卡| 国产欧美一区二区精品久导航| 国产成人综合精品三级| 亚洲国产精品ⅴa在线观看| 不卡的av中国片| 亚洲人成网站影音先锋播放| 欧美午夜一区二区三区免费大片| 日韩电影在线免费观看| 亚洲精品在线免费播放| 懂色av一区二区三区免费看| 亚洲男人天堂av| 欧美久久免费观看| 精品综合免费视频观看| 中文字幕乱码一区二区免费| 91啦中文在线观看| 日韩不卡一区二区三区| 国产日韩欧美亚洲| 欧美亚洲综合一区| 精品一区二区三区在线播放视频| 欧美—级在线免费片| 欧美性感一区二区三区| 国产一区二区三区不卡在线观看| 亚洲同性gay激情无套| 在线播放中文一区| 高清不卡在线观看av| 亚洲午夜羞羞片| 久久久久久9999| 欧美日韩国产成人在线免费| 国产精品乡下勾搭老头1| 亚洲综合视频网| 久久久久99精品国产片| 欧美日韩中文字幕一区| 高清视频一区二区| 日本亚洲欧美天堂免费| 国产精品成人午夜| 精品少妇一区二区三区在线播放 | 久久99精品国产.久久久久| 中文字幕日韩精品一区| 日韩欧美一二区| 色综合 综合色| 国产精品系列在线观看| 全国精品久久少妇| 亚洲欧美日韩中文播放| 国产视频一区不卡| 成人欧美一区二区三区黑人麻豆| 精品日韩欧美在线| 欧美情侣在线播放| 色综合久久久久久久久| 国产98色在线|日韩| 久久69国产一区二区蜜臀| 亚洲综合男人的天堂| 国产欧美日韩综合精品一区二区| 91精品久久久久久久99蜜桃| 色综合天天综合网天天狠天天| 国产999精品久久久久久绿帽| 另类小说综合欧美亚洲| 亚洲午夜精品17c| 亚洲另类色综合网站| 国产精品美女www爽爽爽| 亚洲精品在线免费观看视频| 777欧美精品| 欧美另类久久久品| 欧美三级中文字幕| 色综合色狠狠天天综合色| 成人一区二区三区视频在线观看 | 日本一区二区三区高清不卡| 91精品国产综合久久精品app| 91久久国产综合久久| 99re视频精品| 91麻豆精品视频| 9i在线看片成人免费| 成人sese在线| 99久久99久久精品免费看蜜桃| 国产不卡视频在线观看| 国产成人综合网| 不卡高清视频专区| 91小视频免费观看| 欧美影院精品一区| 欧美丝袜丝交足nylons图片| 欧美日韩一区视频| 538prom精品视频线放| 欧美一区二区在线视频| 日韩三级高清在线| 久久综合国产精品| 国产精品欧美久久久久无广告| 国产精品系列在线| 亚洲精品乱码久久久久久日本蜜臀| 成人欧美一区二区三区在线播放| 一区二区三区四区av| 日本亚洲视频在线| 国产乱码精品1区2区3区| a级精品国产片在线观看| 色综合久久久久久久久久久| 欧美日韩激情一区二区| 精品国产欧美一区二区| 日本一区二区三区四区在线视频| 国产精品成人一区二区艾草 | 开心九九激情九九欧美日韩精美视频电影 | 丝袜国产日韩另类美女| 美腿丝袜亚洲色图| 国产69精品一区二区亚洲孕妇| 99久久免费精品高清特色大片| 欧美综合亚洲图片综合区| 日韩欧美高清dvd碟片| 亚洲国产高清在线观看视频| 一区二区三区四区蜜桃| 捆绑调教一区二区三区| 99久久国产综合精品色伊| 欧美日韩亚州综合| 久久综合色天天久久综合图片| 国产精品少妇自拍| 日韩影院免费视频| 国产剧情一区在线| 欧美亚洲国产一区二区三区 | 久久精品国产亚洲5555| 成人免费的视频| 欧美电影在线免费观看| 久久精品欧美一区二区三区麻豆| 亚洲精品国产精华液| 久久av资源网| 欧美中文字幕一区二区三区 | 国产精品二三区| 男女激情视频一区| 91老师片黄在线观看| 久久先锋影音av| 午夜精品久久久久久久久久 | 2022国产精品视频| 亚洲午夜久久久久久久久电影院| 激情文学综合网| 精品污污网站免费看| 亚洲国产精品激情在线观看| 秋霞影院一区二区| 欧美日韩综合在线| 亚洲欧洲一区二区在线播放| 久久成人精品无人区| 色噜噜狠狠色综合中国| 国产日韩在线不卡| 开心九九激情九九欧美日韩精美视频电影| 91视视频在线观看入口直接观看www | 成人一区二区三区| 日韩欧美一区中文| 亚洲第一在线综合网站| 91伊人久久大香线蕉| 国产欧美一区二区精品性| 免费观看成人av| 欧美精三区欧美精三区| 一区二区三区精品视频| jizzjizzjizz欧美| 欧美国产一区二区| 国产乱色国产精品免费视频| 日韩一区二区电影在线| 婷婷综合五月天| 欧美日韩精品欧美日韩精品一综合| 成人免费在线视频| 91在线视频播放| 国产精品久久久99| 成人激情免费视频| 国产精品久久久久久一区二区三区| 国产毛片精品一区| 久久午夜电影网| 国产精品91一区二区| 精品成人一区二区三区四区| 麻豆视频一区二区| 日韩欧美一级在线播放| 久久99久久99精品免视看婷婷| 日韩欧美卡一卡二| 国产一区在线视频| 久久精品男人的天堂| 国产成人精品www牛牛影视| 欧美国产综合一区二区| a4yy欧美一区二区三区| 亚洲男人的天堂在线观看| 91九色最新地址| 天天操天天干天天综合网| 欧美一区二区在线观看| 黑人巨大精品欧美黑白配亚洲| 精品动漫一区二区三区在线观看| 国产美女主播视频一区| 国产精品视频免费看| 91视频免费播放| 亚洲一区二区三区四区的| 欧美肥胖老妇做爰| 极品少妇xxxx精品少妇偷拍| 久久综合狠狠综合久久综合88 | 欧美色综合天天久久综合精品| 亚洲午夜国产一区99re久久| 欧美日韩国产美| 久久精品国产一区二区| 亚洲国产高清在线| 欧美唯美清纯偷拍| 激情综合一区二区三区| 中文字幕一区在线观看| 欧美欧美午夜aⅴ在线观看| 国内成人精品2018免费看| 国产精品久久久久国产精品日日| 在线观看日韩毛片|