код ядра функция 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
Другие вопросы по тегам