1

В большинстве модулей ядра Linux (аппаратные драйверы) их заголовочные файлы источника, можно определить линии нравится:Что такое __VMKLNX__ в файлах заголовков Linux?

#ifndef __VMKLNX__ 

__VMKLNX__ не определен в исходном коде этого модуля. Предполагается, что __VMKLNX__ - это предопределенный макрос системы, специфичный для системы C. Возможно, это связано с виртуальными машинами или даже с VMware. Однако я не могу найти авторитетный источник, подтверждающий это.

Что есть и как/где я могу найти значение этой части __VMKLNX__?

+0

Я бы предположил, что это означает «виртуальная память», поскольку Linux также поддерживает системы без MMU. – o11c

ответ

3

Это означает, что драйвер поддерживается для ядра 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.

Смежные вопросы