PCIE-MIS/MSIX中断
+ -

PCIE-MSI中断LINUX应用-gdma_app.h

2025-07-16 0 0
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>


///<支持的ioctrl 命令

#define GDMA_TEST_IOC_SUBMIT _IOW('p', 1, unsigned int)        ///< 提交任务
#define GDMA_TEST_IOC_SUBMIT_CTL _IOW('p', 2, unsigned int)        ///< 提交任务
#define GDMA_TEST_IOC_TDE_HW _IOW('p', 3, unsigned int)        ///< 提交任务
#define GDMA_TEST_IOC_SUBMIT_TAIL _IOW('p', 4, unsigned int)        ///< 提交任务

///<打开定时器,自动搬运
#define GDMA_TEST_IOC_START_TIMER _IOW('p', 10, unsigned int)        ///< 
#define GDMA_TEST_IOC_TIMER_TYPE _IOW('p', 11, unsigned int)        ///< 
#define GDMA_TEST_IOC_TIMER_MS _IOW('p', 12, unsigned int)        ///< 

#define GDMA_TEST_IOC_TDQ_INFO _IOW('p', 20, unsigned int)        ///< 修改TDQ的size,即TDE个数
#define GDMA_TEST_IOC_TCQ_SIZE _IOW('p', 21, unsigned int)        ///< 修改TCQ的size,即TCE个数
#define GDMA_TEST_IOC_TDQ_CLEAR _IOW('p', 22, unsigned int)        ///< 
#define GDMA_TEST_IOC_TDQ_ABORT _IOW('p', 23, unsigned int)        ///< 
#define GDMA_TEST_IOC_TDQ_RESET _IOW('p', 24, unsigned int)        ///< 
#define GDMA_TEST_IOC_TCQ_RESET _IOW('p', 25, unsigned int)        ///< 

#define GDMA_TEST_IOC_TEST_SRC _IOW('p', 30, unsigned int)        ///< 
#define GDMA_TEST_IOC_TEST_DST _IOW('p', 31, unsigned int)        ///< 

#define GDMA_USER_SUBMIT_CTL_NORMAL 0
#define GDMA_USER_SUBMIT_CTL_INT 2
#define GDMA_USER_SUBMIT_CTL_RO 4
#define GDMA_USER_SUBMIT_CTL_DROP 8


typedef struct gdma_user_tde
{
    unsigned int tdq_id;
    unsigned long pos;
    unsigned int len;
    union{
        struct
        {
            unsigned int task_id:16;
            unsigned int int_en:1;
            unsigned int ro:1;
            unsigned int drop:1;
            unsigned int reserve:13;
        }bit;
        unsigned int uint;
    }ctrl;
}gdma_user_tde_s;   ///< 0x20, 索引左移5位得到地址

0 篇笔记 写笔记

PCIE MSI-X
MSI-XCA 结构MSI-X和MSI最大的不同是messagedata、message address和status字段没有存放在设备的配置空间中,而是使用MSI-XTable structure和MSI-X PBA structure来存放这些字段。MSI-X Table structur......
PCIe 中断机制介绍(MSI
前面的文章中介绍过,MSI本质上是一种Memory Write,和PCIe总线中的Message概念半毛钱关系都没有。并且,MSI的Data Payload也是固定的,始终为1DW。由于MSI也是从PCI总线继承而来的,因此MSI相关的寄存器也存在于配置空间中的PCI兼容部分(前256个字节)。如......
PCIe 中断机制介绍(MSI-X)
PCI总线自3.0版本开始支持MSI-X机制,对MSI做出了一些升级和改进,以克服MSI机制的三个主要的缺陷:随着系统的发展,对于特定的大型应用,32个中断向量不够用了(参考前一篇文章);只有一个目标地址使得多核CPU情况下的,静态中断分配变得困难。如果能够使每个向量对应不同的唯一的地址,便会灵......
PCIE-MSI中断LINUX驱动-imt_driv.h
#ifndef __IMT_TEST__H__ #define __IMT_TEST__H__#include #include #include "linux/pci.h"#incl......
PCIE-MSI中断LINUX驱动-imt_driv.c
#include #include #include #include #include
all: make -C /lib/modules/$(shell uname -r)/build/ M=$(PWD) modules#make -C $(KDIR) M=$(PWD) modulesclean: make -C /lib/modules/$(shell una......
#include #include #include ///<支持的ioctrl 命令#define GDMA_TEST_IOC_SUBMIT _IOW('p', ......
#include #include #include #include #include "gdma_app.h"#include <......
关注公众号
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!