(Linux Стиль) Ioctl код, трудно понять - PullRequest
0 голосов
/ 05 марта 2020

Я использую чип infini **.

В их коде Basi c, каждый [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,
    }
};

Я знаю, что struct IoctlInterface имеет массив-член [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 Ответ

0 голосов
/ 05 марта 2020

Я думаю, вам, вероятно, нужно прочитать немного больше о C. Однако в этой части вы просто объявляете (вероятно) глобальную (вероятно) переменную stati 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,
}
};
...