Plx使用手册学习-----8 PlxPci_CommonBufferProperties

本文介绍如何使用PlxPci_CommonBufferProperties函数获取PLX设备的公共缓冲区属性,包括总线物理地址、CPU物理地址及大小。该缓冲区由PLX驱动为应用程序分配,用于DMA等操作,其大小由PLX注册表条目决定。

Syntax:

PLX_STATUS
PlxPci_CommonBufferProperties(
PLX_DEVICE_OBJECT *pDevice,
PLX_PHYSICAL_MEM *pMemoryInfo
);

PLX Chip Support:
All PLX devices
Description:

返回公共缓冲区属性。
Returns the common buffer properties.
Parameters:
pDevice
Pointer to an open device
pMemoryInfo
A pointer to a PLX_PHYSICAL_MEM structure which will contain information about the common buffer
Return Codes:

CodeDescription
ApiSuccessThe function returned successfully and at least one event ocurred
ApiNullParamOne or more parameters is NULL
ApiInvalidDeviceInfoThe device object is not valid

Notes:
This function will only return properties of the common buffer. It will not provide a virtual address for the buffer.
Use PlxPci_CommonBufferMap to get a virtual address.
PLX drivers allocate a common buffer for use by applications. The buffer size requested is determined by a
PLX registry entry (refer to the PLX driver registry options in this manual). The driver will attempt to allocate the
buffer, but the operating system determines the success of the attempt based upon available system resources.
PLX drivers will re-issue the request for a smaller-sized buffer until the call succeeds.
The common buffer is guaranteed to be physically contiguous and page-locked in memory so that it may be used for
operations such as DMA. PLX drivers do not use the common buffer for any functionality. Its use is reserved for
applications.
Coordination and management of access to the buffer between multiple processes or threads is left to applications.
Care must be taken to avoid shared memory issues.

Usage:

PLX_STATUS rc;
PLX_PHYSICAL_MEM BufferInfo;
// Get the common buffer information
rc =
PlxPci_CommonBufferProperties(
pDevice,
&BufferInfo
);
if (rc != ApiSucess)
{
// Error – Unable to get common buffer properties
}
Cons_printf(
“Common buffer information:\n”
“ Bus Physical Addr: %08lx\n”
“ CPU Physical Addr: %08lx\n”
“ Size : %d bytes\n”,
BufferInfo.PhysicalAddr,
BufferInfo.CpuPhysical,
BufferInfo.Size
);

 

PCI8系列 PCI9系列 PCI9054 linux驱动程序 PLX SDK Samples ================================================================ ABOUT This document provides a brief description of the samples included in the PLX SDK. Please refer to the source code in each sample & the PLX SDK User's Manual for additional details. The PLX samples are intended to demonstrate use of the PLX API. The samples are not intended for debug or real world applications, although they can be extended to complex applications. They should be treated as a reference for writing custom software that utilizes the PLX API. Not all samples work with all PLX devices. The PLX API supports numerous PLX chip families in PCI/PCIe, including 6000-series PCI-to-PCI bridges, 9000-series PCI-to-Local bus bridges, & 8000-series PCI/PCIe bridges & switches. Some samples are provided only for specific chip families. SAMPLES - ApiTest Simple application that calls various PLX APIs for a selected device & verifies return codes & parameters. The API calls made depend upon the type of device selected. - DSlave Demonstrates how to read/write from a PLX 9000 PCI BAR space using the PLX API/driver to perform the data transer. This operation is often referred to as "Direct Slave". - DSlave_BypassApi Similar to the 'DSlave' sample, except this sample uses the PLX API only to map a PCI BAR space directly to the application's virtual space. The application can then directly access the space via simple memory dereferencing, bypassing the PLX API/driver & resulting in greater performance, especially for small transfers. The application is responsible for initializing the BAR space, such as setup of translation/remap registers. - LocalToPciInt [9000-series & 8311] Demonstrates how to wait for a generic Local-to-PCI interrupt using the PLX Notification API. - NT_DmaTest [8000-series switches with DMA & NT support] Demonstrates using the DMA engine in a PLX 8000 switch to transfer data through a PLX
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值