код ядра функция native_queued_spin_lock_slowpath
В коде ядра я не могу найти определение функции native_queued_spin_lock_slowpath, __pv_queued_spin_lock_slowpath такое же, где определены эти функции? Я перерыл весь код ядра, но тщетно
1 ответ
Определение находится в "kernel/locking/qspinlock.c", используя макрос для изменения имениqueued_spin_lock_slowpath
кnative_queued_spin_lock_slowpath
когдаCONFIG_PARAVIRT_SPINLOCKS
определено:
#ifdef CONFIG_PARAVIRT_SPINLOCKS
#define queued_spin_lock_slowpath native_queued_spin_lock_slowpath
#endif
…
void __lockfunc queued_spin_lock_slowpath(struct qspinlock *lock, u32 val)
{
Определение__pv_queued_spin_lock_slowpath
также находится в «kernel/locking/qspinlock.c», используя тот же трюк с макросом переименования с изюминкой — файл «qspinlock.c» включает себя еще раз, используя макрос защиты_GEN_PV_LOCK_SLOWPATH
чтобы избежать бесконечного рекурсивного включения:
#if !defined(_GEN_PV_LOCK_SLOWPATH) && defined(CONFIG_PARAVIRT_SPINLOCKS)
#define _GEN_PV_LOCK_SLOWPATH
…
#undef queued_spin_lock_slowpath
#define queued_spin_lock_slowpath __pv_queued_spin_lock_slowpath
#include "qspinlock_paravirt.h"
#include "qspinlock.c"
…
#endif