Ядро Linux имеет следующее определение внутри определения структуры sched_class.
#ifdef CONFIG_SMP
int (*select_task_rq)(struct task_struct *p, int task_cpu, int sd_flag, int flags);
.......
.......
Теперь, что означает эта линия, у меня довольно хорошие знания в C & C++. Но мне трудно было понять эту конструкцию объявления:
int (*select_task_rq)(struct task_struct *p, int task_cpu, int sd_flag, int flags);
Может кто-нибудь объяснить, что это значит и что он делает.
благодаря
Это указатель на функцию.
int (*select_task_rq)(struct task_struct *p, int task_cpu, int sd_flag, int flags);
означает, что select_task_rq
является указателем на функцию, возвращающую int
и принимающую все эти типы параметров.
Он может быть установлен на любую совместимую функцию и называется так, как если бы это было фиксированное имя функции. Он иногда используется для обеспечения примитивной формы полиморфизма в C или для обеспечения простого переключения между функциями на основе другой информации.