📄 prpbuffermanager.h
字号:
//
// Copyright (C) 2004-2006, Freescale Semiconductor, Inc. All Rights Reserved.
// THIS SOURCE CODE, AND ITS USE AND DISTRIBUTION, IS SUBJECT TO THE TERMS
// AND CONDITIONS OF THE APPLICABLE LICENSE AGREEMENT
//
//------------------------------------------------------------------------------
//
// File: PrpBufferManager.h
//
// Class definition for an object to manage multiple buffering
// in the pre-processor.
//
//------------------------------------------------------------------------------
#ifndef _PRP_BUFFER_MANAGER_H_
#define _PRP_BUFFER_MANAGER_H_
#ifdef __cplusplus
extern "C" {
#endif
//------------------------------------------------------------------------------
// Defines
#define PRP_MIN_NUM_BUFFERS 3
#define PRP_MAX_NUM_BUFFERS 100
//------------------------------------------------------------------------------
// Types
typedef struct {
LPVOID pPhysAddr;
LPVOID pVirtAddr;
} prpBufferData, *pPrpBufferData;
//------------------------------------------------------------------------------
// Functions
class PrpBufferManager {
public:
PrpBufferManager();
~PrpBufferManager();
BOOL AllocateBuffers(ULONG, ULONG);
DWORD SetActiveBuffer(LPVOID *, UINT32);
BOOL SetFilledBuffer();
BOOL DeleteBuffers();
VOID ResetBuffers();
BOOL GetBufferFilled(pPrpBufferData);
BOOL PutBufferIdle(pPrpBufferData);
VOID PrintBufferInfo();
public:
DWORD m_iNumBuffers;
ULONG m_lBufferSize;
private:
CRITICAL_SECTION m_csLockBufferQueues;
// Queue handles
HANDLE m_hReadIdleQueue, m_hWriteIdleQueue;
HANDLE m_hReadBusyQueue, m_hWriteBusyQueue;
HANDLE m_hReadFilledQueue, m_hWriteFilledQueue;
};
#ifdef __cplusplus
}
#endif
#endif // _PRP_BUFFER_MANAGER_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -