Как называется эта техника в ядре linux? - PullRequest
0 голосов
/ 16 июня 2020

Привет, у меня есть драйвер сторожевого пса linux, как показано ниже:

struct omap_wdt_dev { 
    struct watchdog_device wdev;
    struct device *dev;
    void __iomem *base_addr;
    uint32_t ttgr_pattern;  
};
static int omap_wdt_start(struct watchdog_device *wdev)
{
    struct omap_wdt_dev *omap_wdev = watchdog_get_drvdata(wdev);
    /*...*/
    omap_wdt_reload(omap_wdev);
    return 0;
}
static int omap_wdt_plf_probe(struct platform_device *pdev)
{
    struct omap_wdt_dev *omap_wdev;
    omap_wdev = kzalloc(sizeof(*omap_wdev), GFP_KERNEL);
    watchdog_set_drvdata(wdev, (void *)omap_wdev);
    /*...*/
    return 0;
}

В этом коде они создали структуру omap_wdt_dev, в которой есть watchdog_device. Затем в функции проверки omap_wdt_plf_probe они используют указатель void внутри watchdog_device, чтобы указать на "wdev" ​​функцией: watchdog_set_drvdata(wdev, (void *)omap_wdev). Затем в функции omap_wdt_start с входным параметром watchdog_device они получают omap_wdt_dev из watchdog_device, чтобы использовать omap_wdt_dev. Я вижу это техническое, используйте указатель void для хранения данных структуры, часто используется в linux ядре, но я не знаю названия этого метода.

Не могли бы вы объяснить мне больше об этом и покажите мне еще одну технику, которая используется в linux ядре?

...