|
rogue
|
#include <stdint.h>#include <string>#include <signal.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/fcntl.h>#include <sys/ioctl.h>#include <sys/mman.h>#include <sys/signal.h>#include <sys/socket.h>#include <unistd.h>Go to the source code of this file.
Classes | |
| struct | DmaWriteData |
| Structure representing a DMA write operation. More... | |
| struct | DmaReadData |
| Structure representing a DMA read operation. More... | |
| struct | DmaRegisterData |
| Register data structure. More... | |
Functions | |
| static ssize_t | dmaWrite (int32_t fd, const void *buf, size_t size, uint32_t flags, uint32_t dest) |
| Writes data to a DMA channel. | |
| static ssize_t | dmaWriteIndex (int32_t fd, uint32_t index, size_t size, uint32_t flags, uint32_t dest) |
| Writes data to a DMA channel using an index. | |
| static ssize_t | dmaWriteVector (int32_t fd, struct iovec *iov, size_t iovlen, uint32_t begFlags, uint32_t midFlags, uint32_t endFlags, uint32_t dest) |
| Writes an array of data frames to a DMA channel. | |
| static ssize_t | dmaWriteIndexVector (int32_t fd, struct iovec *iov, size_t iovlen, uint32_t begFlags, uint32_t midFlags, uint32_t endFlags, uint32_t dest) |
| Write Frame, memory mapped from iovector. | |
| static ssize_t | dmaRead (int32_t fd, void *buf, size_t maxSize, uint32_t *flags, uint32_t *error, uint32_t *dest) |
| Receive Frame. | |
| static ssize_t | dmaReadIndex (int32_t fd, uint32_t *index, uint32_t *flags, uint32_t *error, uint32_t *dest) |
| Receive Frame, access memory mapped buffer. | |
| static ssize_t | dmaReadBulkIndex (int32_t fd, uint32_t count, int32_t *ret, uint32_t *index, uint32_t *flags, uint32_t *error, uint32_t *dest) |
| Receive frame and access memory-mapped buffer. | |
| static ssize_t | dmaRetIndex (int32_t fd, uint32_t index) |
| Post an index back to the DMA. | |
| static ssize_t | dmaRetIndexes (int32_t fd, uint32_t count, uint32_t *indexes) |
| Post multiple indices back to the DMA. | |
| static int32_t | dmaGetIndex (int32_t fd) |
| Get the current write buffer index. | |
| static ssize_t | dmaReadReady (int32_t fd) |
| Check if read is ready. | |
| static ssize_t | dmaGetRxBuffCount (int32_t fd) |
| Get the receive buffer count. | |
| static ssize_t | dmaGetRxBuffinUserCount (int32_t fd) |
| Get the receive buffer count in user. | |
| static ssize_t | dmaGetRxBuffinHwCount (int32_t fd) |
| Get the receive buffer count in hardware. | |
| static ssize_t | dmaGetRxBuffinPreHwQCount (int32_t fd) |
| Get the receive buffer count in pre-hardware queue. | |
| static ssize_t | dmaGetRxBuffinSwQCount (int32_t fd) |
| Get the receive buffer count in software queue. | |
| static ssize_t | dmaGetRxBuffMissCount (int32_t fd) |
| Get the receive buffer missing count. | |
| static ssize_t | dmaGetTxBuffCount (int32_t fd) |
| Get the transmit buffer count. | |
| static ssize_t | dmaGetTxBuffinUserCount (int32_t fd) |
| Get the transmit buffer count in user. | |
| static ssize_t | dmaGetTxBuffinHwCount (int32_t fd) |
| Get the transmit buffer count in hardware. | |
| static ssize_t | dmaGetTxBuffinPreHwQCount (int32_t fd) |
| Get the transmit buffer count in pre-hardware queue. | |
| static ssize_t | dmaGetTxBuffinSwQCount (int32_t fd) |
| Get the transmit buffer count in software queue. | |
| static ssize_t | dmaGetTxBuffMissCount (int32_t fd) |
| Get the transmit buffer missing count. | |
| static ssize_t | dmaGetBuffSize (int32_t fd) |
| Get the buffer size. | |
| static ssize_t | dmaGetBuffCount (int32_t fd) |
| Get the buffer count. | |
| static std::string | dmaGetGitVersion (int32_t fd) |
| Get the DMA Driver's Git Version. | |
| static void ** | dmaMapDma (int32_t fd, uint32_t *count, uint32_t *size) |
| Map user space to DMA buffers. | |
| static ssize_t | dmaUnMapDma (int32_t fd, void **buffer) |
| Unmap user space from DMA buffers. | |
| static ssize_t | dmaSetDebug (int32_t fd, uint32_t level) |
| Set debugging level for DMA operations. | |
| static void | dmaAssignHandler (int32_t fd, void(*handler)(int32_t)) |
| Assign a signal handler for asynchronous DMA operations. | |
| static ssize_t | dmaSetMask (int32_t fd, uint32_t mask) |
| Set DMA mask. | |
| static void | dmaInitMaskBytes (uint8_t *mask) |
| Initialize DMA mask byte array. | |
| static void | dmaAddMaskBytes (uint8_t *mask, uint32_t dest) |
| Add a destination to the DMA mask byte array. | |
| static ssize_t | dmaSetMaskBytes (int32_t fd, uint8_t *mask) |
| Set mask byte array to the driver. | |
| static ssize_t | dmaCheckVersion (int32_t fd) |
| Check API version of the DMA driver. | |
| static ssize_t | dmaGetApiVersion (int32_t fd) |
| Get API version of the DMA driver. | |
| static ssize_t | dmaWriteRegister (int32_t fd, uint64_t address, uint32_t data) |
| Write to a DMA register. | |
| static ssize_t | dmaReadRegister (int32_t fd, uint64_t address, uint32_t *data) |
| Read a value from a DMA register. | |
| static void * | dmaMapRegister (int32_t fd, off_t offset, uint32_t size) |
| Map a DMA register space to user space. | |
| static ssize_t | dmaUnMapRegister (int32_t fd, void *ptr, uint32_t size) |
| Unmap a DMA register space from user space. | |
| #define DMA_ERR_BUS 0x08 |
Definition at line 40 of file DmaDriver.h.
| #define DMA_ERR_FIFO 0x01 |
Definition at line 37 of file DmaDriver.h.
| #define DMA_ERR_LEN 0x02 |
Definition at line 38 of file DmaDriver.h.
| #define DMA_ERR_MAX 0x04 |
Definition at line 39 of file DmaDriver.h.
| #define DMA_Get_Buff_Count 0x1001 |
Definition at line 43 of file DmaDriver.h.
| #define DMA_Get_Buff_Size 0x1002 |
Definition at line 44 of file DmaDriver.h.
| #define DMA_Get_GITV 0x1019 |
Definition at line 66 of file DmaDriver.h.
| #define DMA_Get_Index 0x1006 |
Definition at line 48 of file DmaDriver.h.
| #define DMA_Get_RxBuff_Count 0x100C |
Definition at line 54 of file DmaDriver.h.
| #define DMA_Get_RxBuffinHW_Count 0x1015 |
Definition at line 62 of file DmaDriver.h.
| #define DMA_Get_RxBuffinPreHWQ_Count 0x1016 |
Definition at line 63 of file DmaDriver.h.
| #define DMA_Get_RxBuffinSWQ_Count 0x1017 |
Definition at line 64 of file DmaDriver.h.
| #define DMA_Get_RxBuffinUser_Count 0x1014 |
Definition at line 61 of file DmaDriver.h.
| #define DMA_Get_RxBuffMiss_Count 0x1018 |
Definition at line 65 of file DmaDriver.h.
| #define DMA_Get_TxBuff_Count 0x100D |
Definition at line 55 of file DmaDriver.h.
| #define DMA_Get_TxBuffinHW_Count 0x1010 |
Definition at line 57 of file DmaDriver.h.
| #define DMA_Get_TxBuffinPreHWQ_Count 0x1011 |
Definition at line 58 of file DmaDriver.h.
| #define DMA_Get_TxBuffinSWQ_Count 0x1012 |
Definition at line 59 of file DmaDriver.h.
| #define DMA_Get_TxBuffinUser_Count 0x100F |
Definition at line 56 of file DmaDriver.h.
| #define DMA_Get_TxBuffMiss_Count 0x1013 |
Definition at line 60 of file DmaDriver.h.
| #define DMA_Get_Version 0x1009 |
Definition at line 51 of file DmaDriver.h.
| #define DMA_MASK_SIZE 512 |
Definition at line 69 of file DmaDriver.h.
| #define DMA_Read_Ready 0x1007 |
Definition at line 49 of file DmaDriver.h.
| #define DMA_Read_Register 0x100B |
Definition at line 53 of file DmaDriver.h.
| #define DMA_Ret_Index 0x1005 |
Definition at line 47 of file DmaDriver.h.
| #define DMA_Set_Debug 0x1003 |
Definition at line 45 of file DmaDriver.h.
| #define DMA_Set_Mask 0x1004 |
Definition at line 46 of file DmaDriver.h.
| #define DMA_Set_MaskBytes 0x1008 |
Definition at line 50 of file DmaDriver.h.
| #define DMA_VERSION 0x06 |
Description: This header file defines the interfaces and data structures used by DMA (Direct Memory Access) drivers in the aes_stream_drivers package. These drivers facilitate efficient data transfer between memory and devices without requiring CPU intervention, improving throughput and
This file is part of the aes_stream_drivers package. It is subject to the license terms in the LICENSE.txt file found in the top-level directory of this distribution and at: https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html. No part of the aes_stream_drivers package, including this file, may be copied, modified, propagated, or distributed except according to the terms
Definition at line 34 of file DmaDriver.h.
| #define DMA_Write_Register 0x100A |
Definition at line 52 of file DmaDriver.h.
|
inlinestatic |
Add a destination to the DMA mask byte array.
Adds a destination to the DMA mask byte array by setting the appropriate bit based on the destination index.
| mask | Pointer to the DMA mask byte array. |
| dest | Destination index to set in the mask. |
Definition at line 832 of file DmaDriver.h.
|
inlinestatic |
Assign a signal handler for asynchronous DMA operations.
This function sets up a signal action structure to handle SIGIO signals with the specified handler function. It also sets the file descriptor to receive signals for asynchronous I/O.
| fd | File descriptor for the DMA device. |
| handler | Function pointer to the signal handler. |
Definition at line 782 of file DmaDriver.h.
|
inlinestatic |
Check API version of the DMA driver.
Checks the API version of the DMA driver to ensure compatibility.
| fd | File descriptor for the DMA device. |
Definition at line 866 of file DmaDriver.h.
|
inlinestatic |
Get API version of the DMA driver.
Get the API version of the DMA driver
| fd | File descriptor for the DMA device. |
Definition at line 881 of file DmaDriver.h.
|
inlinestatic |
Get the buffer count.
This function retrieves the count of DMA buffers.
| fd | File descriptor to use. |
Definition at line 665 of file DmaDriver.h.
|
inlinestatic |
Get the buffer size.
This function retrieves the size of DMA buffers.
| fd | File descriptor to use. |
Definition at line 652 of file DmaDriver.h.
|
inlinestatic |
Get the DMA Driver's Git Version.
This function retrieves the DMA Driver's Git Version string
| fd | File descriptor to use. |
Definition at line 678 of file DmaDriver.h.
|
inlinestatic |
Get the current write buffer index.
This function retrieves the current index for writing to the DMA buffer.
| fd | File descriptor to use. |
Definition at line 470 of file DmaDriver.h.
|
inlinestatic |
Get the receive buffer count.
This function retrieves the count of receive buffers available.
| fd | File descriptor to use. |
Definition at line 496 of file DmaDriver.h.
|
inlinestatic |
Get the receive buffer count in hardware.
This function retrieves the count of receive buffers in hardware.
| fd | File descriptor to use. |
Definition at line 522 of file DmaDriver.h.
|
inlinestatic |
Get the receive buffer count in pre-hardware queue.
This function retrieves the count of receive buffers in pre-hardware queue
| fd | File descriptor to use. |
Definition at line 535 of file DmaDriver.h.
|
inlinestatic |
Get the receive buffer count in software queue.
This function retrieves the count of receive buffers in software queue
| fd | File descriptor to use. |
Definition at line 548 of file DmaDriver.h.
|
inlinestatic |
Get the receive buffer count in user.
This function retrieves the count of receive buffers in user.
| fd | File descriptor to use. |
Definition at line 509 of file DmaDriver.h.
|
inlinestatic |
Get the receive buffer missing count.
This function retrieves the count of receive buffer missing
| fd | File descriptor to use. |
Definition at line 561 of file DmaDriver.h.
|
inlinestatic |
Get the transmit buffer count.
This function retrieves the count of transmit buffers available.
| fd | File descriptor to use. |
Definition at line 574 of file DmaDriver.h.
|
inlinestatic |
Get the transmit buffer count in hardware.
This function retrieves the count of transmit buffers in hardware.
| fd | File descriptor to use. |
Definition at line 600 of file DmaDriver.h.
|
inlinestatic |
Get the transmit buffer count in pre-hardware queue.
This function retrieves the count of transmit buffers in pre-hardware queue
| fd | File descriptor to use. |
Definition at line 613 of file DmaDriver.h.
|
inlinestatic |
Get the transmit buffer count in software queue.
This function retrieves the count of transmit buffers in software queue
| fd | File descriptor to use. |
Definition at line 626 of file DmaDriver.h.
|
inlinestatic |
Get the transmit buffer count in user.
This function retrieves the count of transmit buffers in user.
| fd | File descriptor to use. |
Definition at line 587 of file DmaDriver.h.
|
inlinestatic |
Get the transmit buffer missing count.
This function retrieves the count of transmit buffer missing
| fd | File descriptor to use. |
Definition at line 639 of file DmaDriver.h.
|
inlinestatic |
Initialize DMA mask byte array.
Initializes the DMA mask byte array to zeros.
| mask | Pointer to the DMA mask byte array. |
Definition at line 818 of file DmaDriver.h.
|
inlinestatic |
Map user space to DMA buffers.
This function maps DMA buffers into user space, allowing direct access.
| fd | File descriptor to use. |
| count | Pointer to store the count of buffers. |
| size | Pointer to store the size of each buffer. |
Definition at line 698 of file DmaDriver.h.
|
inlinestatic |
Map a DMA register space to user space.
This function calculates an internal offset based on the buffer size and count obtained from the DMA device. It then attempts to map a region of memory into the user space corresponding to this calculated offset plus the specified offset.
| fd | File descriptor for the DMA device. |
| offset | Offset from the start of the register space to be mapped. |
| size | Size of the memory region to map. |
Definition at line 946 of file DmaDriver.h.
|
inlinestatic |
Receive Frame.
This function reads a frame from a device using DMA.
| fd | File descriptor for DMA operation. |
| buf | Buffer to store received data. |
| maxSize | Maximum size to read. |
| flags | Pointer to store flags after reading. |
| error | Pointer to store error code if any. |
| dest | Pointer to store destination address. |
Definition at line 331 of file DmaDriver.h.
|
inlinestatic |
Receive frame and access memory-mapped buffer.
This function reads bulk data from a DMA channel and extracts the metadata associated with each read operation, including return values, indices, flags, error codes, and destination addresses.
| fd | File descriptor to read from. |
| count | Number of elements in the buffers. |
| ret | Pointer to store the return values. |
| index | Buffer to store the indices of the DMA read operations. |
| flags | Buffer to store flags of the DMA read operations. |
| error | Buffer to store error codes of the DMA read operations. |
| dest | Buffer to store destination addresses of the DMA read operations. |
Definition at line 400 of file DmaDriver.h.
|
inlinestatic |
Receive Frame, access memory mapped buffer.
This function reads a frame from a device using DMA, specifically accessing the memory-mapped buffer and retrieves the index of the received data.
| fd | File descriptor for DMA operation. |
| index | Pointer to store the index of the received data. |
| flags | Pointer to store flags after reading. |
| error | Pointer to store error code if any. |
| dest | Pointer to store destination address. |
Definition at line 365 of file DmaDriver.h.
|
inlinestatic |
Check if read is ready.
This function checks if the DMA is ready for reading.
| fd | File descriptor to use. |
Definition at line 483 of file DmaDriver.h.
|
inlinestatic |
Read a value from a DMA register.
This function reads a 32-bit value from a specified DMA register address. The read value is stored in the location pointed to by data if data is not NULL.
| fd | File descriptor for the DMA device. |
| address | The address of the register to be read. |
| data | Pointer to store the read data. |
Definition at line 916 of file DmaDriver.h.
|
inlinestatic |
Post an index back to the DMA.
This function posts a single index back to the DMA, indicating that the buffer associated with this index can be reused.
| fd | File descriptor to use. |
| index | Index to be returned. |
Definition at line 437 of file DmaDriver.h.
|
inlinestatic |
Post multiple indices back to the DMA.
This function posts multiple indices back to the DMA, indicating that the buffers associated with these indices can be reused.
| fd | File descriptor to use. |
| count | Number of indices to be returned. |
| indexes | Array of indices to be returned. |
Definition at line 455 of file DmaDriver.h.
|
inlinestatic |
Set debugging level for DMA operations.
This function sets the specified debugging level for DMA operations using an IOCTL command.
| fd | File descriptor for the DMA device. |
| level | Debugging level to be set. |
Definition at line 767 of file DmaDriver.h.
|
inlinestatic |
Set DMA mask.
Sets a DMA mask using an IOCTL command.
| fd | File descriptor for the DMA device. |
| mask | DMA mask to be set. |
Definition at line 806 of file DmaDriver.h.
|
inlinestatic |
Set mask byte array to the driver.
Sets the DMA mask byte array using an IOCTL command.
| fd | File descriptor for the DMA device. |
| mask | Pointer to the DMA mask byte array. |
Definition at line 853 of file DmaDriver.h.
|
inlinestatic |
Unmap user space from DMA buffers.
This function unmaps DMA buffers from user space, releasing the resources.
| fd | File descriptor to use. |
| buffer | Array of pointers to the mapped buffers. |
Definition at line 742 of file DmaDriver.h.
|
inlinestatic |
Unmap a DMA register space from user space.
This function unmaps a previously mapped region of memory from the user space. The fd parameter is not used but is included for symmetry with the dmaMapRegister function.
| fd | File descriptor for the DMA device. (Unused in this function, but kept for symmetry with map function) |
| ptr | Pointer to the start of the mapped memory region. |
| size | Size of the memory region to unmap. |
Definition at line 974 of file DmaDriver.h.
|
inlinestatic |
Writes data to a DMA channel.
This function writes a single frame of data to a DMA channel, specified by the file descriptor fd. The data to be written is pointed to by buf, with a specified size of size. Additional parameters include flags (flags) and a destination address (dest).
| fd | File descriptor for the DMA device. |
| buf | Pointer to the data buffer. |
| size | Size of the data to write. |
| flags | Flags for the write operation. |
| dest | Destination address for the write. |
Definition at line 169 of file DmaDriver.h.
|
inlinestatic |
Writes data to a DMA channel using an index.
Similar to dmaWrite, but uses an index (index) to specify the data buffer instead of a direct pointer. This is useful for memory-mapped I/O operations where data buffers are identified by indexes.
| fd | File descriptor for the DMA device. |
| index | Index of the data buffer. |
| size | Size of the data to write. |
| flags | Flags for the write operation. |
| dest | Destination address for the write. |
Definition at line 197 of file DmaDriver.h.
|
inlinestatic |
Write Frame, memory mapped from iovector.
This function writes a frame to a device, using DMA, where the frame data is described by an array of iovec structures.
| fd | File descriptor for DMA operation. |
| iov | Pointer to array of iovec structures. |
| iovlen | Length of the iov array. |
| begFlags | Flags to use for the beginning of the DMA transaction. |
| midFlags | Flags to use for the middle of the DMA transaction. |
| endFlags | Flags to use for the end of the DMA transaction. |
| dest | Destination address for the DMA write. |
Definition at line 281 of file DmaDriver.h.
|
inlinestatic |
Write to a DMA register.
Writes data to a specified register address using an IOCTL command.
| fd | File descriptor for the DMA device. |
| address | Register address. |
| data | Data to write. |
Definition at line 896 of file DmaDriver.h.
|
inlinestatic |
Writes an array of data frames to a DMA channel.
This function writes multiple data frames to a DMA channel, where each frame is specified by an iovec structure in the array pointed to by iov. The number of frames to write is specified by iovlen. Flags for the beginning, middle, and end of the data stream are specified by begFlags, midFlags, and endFlags, respectively. The destination address for the write operation is specified by dest.
| fd | File descriptor for the DMA device. |
| iov | Pointer to the array of iovec structures. |
| iovlen | Number of elements in the iov array. |
| begFlags | Flags for the beginning of the data stream. |
| midFlags | Flags for the middle of the data stream. |
| endFlags | Flags for the end of the data stream. |
| dest | Destination address for the write. |
Definition at line 229 of file DmaDriver.h.