(Linux风格)ioctl代码,难懂

Posted

技术标签:

【中文标题】(Linux风格)ioctl代码,难懂【英文标题】:(Linux Style) Ioctl code, Hard to understand 【发布时间】:2020-03-05 08:29:59 【问题描述】:

我正在使用 infini** 芯片。

在他们的基本代码中,每个 [XXX_ioctl].c 代码在上面都有下面的代码。XXX表示我要使用的驱动。)

typedef void (*PFUNCTION)(void); 

#define FUNCTION_COUNT 5

struct IoctlInterface 
    uint8_t count;
    PFUNCTION functionArray[FUNCTION_COUNT]; //function pointer array
 __STATIC const XxxInterface = 
    FUNCTION_COUNT,
    
        (PFUNCTION) IFX_XXX_Open,
        (PFUNCTION) IFX_XXX_Close,
        (PFUNCTION) IFX_XXX_Ioctl,
        (PFUNCTION) IFX_XXX_CancleIO,
        (PFUNCTION) IFX_XXX_DriverInit,
    
;

我知道structIoctlInterface有成员array[5],返回类型是函数指针。 但是,the following 是什么意思?

__STATIC const XxxInterface = 
FUNCTION_COUNT,

    (PFUNCTION) IFX_XXX_Open,
    (PFUNCTION) IFX_XXX_Close,
    (PFUNCTION) IFX_XXX_Ioctl,
    (PFUNCTION) IFX_XXX_CancleIO,
    (PFUNCTION) IFX_XXX_DriverInit,

;

先谢谢了。

※此帖如有侵犯芯片技术机密,我会立即删除。

【问题讨论】:

【参考方案1】:

我认为您可能需要阅读更多关于 C 的内容。但是,在这一部分中,您只是声明了一个名为 XxxInterface 类型为 IoctlInterface 的(可能)全局(可能)静态变量并填写结构的成员。

__STATIC const XxxInterface = 
FUNCTION_COUNT,

    (PFUNCTION) IFX_XXX_Open,
    (PFUNCTION) IFX_XXX_Close,
    (PFUNCTION) IFX_XXX_Ioctl,
    (PFUNCTION) IFX_XXX_CancleIO,
    (PFUNCTION) IFX_XXX_DriverInit,

;

【讨论】:

以上是关于(Linux风格)ioctl代码,难懂的主要内容,如果未能解决你的问题,请参考以下文章

linux device driver —— ioctl

linux 中的 sys/ioctl.h 问题

linux下用ioctl重新映射键盘

在linux中使用ioctl()调用设置串口的DTR RTS引脚时遇到问题

C Linux ioctl TCGETS 和 TCSETS errno 25

`ioctl` 读写 GPIO:无效参数