Что такое __VMKLNX__ в заголовочных файлах Linux?
Во многих модулях ядра Linux (аппаратных драйверах) их исходные заголовочные файлы можно выделить такие строки:
#ifndef __VMKLNX__
__VMKLNX__
не определен в исходном коде этого модуля. Предположение таково, что __VMKLNX__
предопределенный макрос для системы "C" Может быть, связано с виртуальными машинами или даже VMware. Однако я не могу найти какой-либо авторитетный источник, чтобы подтвердить это.
Что и как / где я могу найти значение этого __VMKLNX__
часть?
1 ответ
Это означает, что драйвер поддерживает сборку для ядра VMware ESX, документация и исходный код которого не являются общедоступными. Ядро VMware ESX - это гипервизор, обычно называемый "vmkernel". Вы можете сделать вывод, что __VMKLNX__
это для просмотра комментариев к коду в существующих драйверах, как в bnx2.c:
#if defined(__VMKLNX__)
/* On VMware ESX there is a possibility that that netdev watchdog thread
* runs before the reset task if the machine is loaded. If this occurs
* too many times, these premature watchdog triggers will cause a PSOD
* on a VMware ESX beta build */
#define TX_TIMEOUT (20*HZ)
#else
#define TX_TIMEOUT (5*HZ)
#endif /* defined(__VMKLNX__) */
VMware ESX не Linux. Ядро ESX просто реализует интерфейс, позволяющий запускать драйверы устройств Linux.