2014-10-09 32 views
1

在很多Linux內核模塊(硬件驅動)它們的源頭文件,一個可以當場線喜歡:什麼是Linux頭文件中的__VMKLNX__?

#ifndef __VMKLNX__ 

__VMKLNX__未在此模塊的源代碼中定義。猜測是__VMKLNX__是一個「C」系統特定的預定義宏。可能與虛擬機甚至VMware有關。但是我找不到任何權威來源來證實這一點。

什麼是和如何/在哪裏可以找到這個__VMKLNX__部件的含義?

+0

我猜它代表「虛擬內存」,因爲Linux也支持沒有MMU的系統。 – o11c 2014-10-09 23:11:25

回答

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設備驅動程序的接口。

相關問題