I recently downloaded the GPL components from the VMware VI3 download site. One of the tarballs in that file is the Open Source pieces of the ESX drivers. Along with this is a script called build-vmkdrivers.sh. I've tried running this script, and it results in many, many errors and absolutely no correct builds. I'm running it on a CentOS 3.9 system, similar to the RHEL3 base that is used for the Service Console, and I've tried using GCC 3.2.3 (included in CentOS3) and GCC 3.3.6, to no avail. Here's a very small sample of the types of errors I get:
Compiling drivers/block/cciss/cciss.c
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h:124: error: syntax error before '*' token
src/include/linux/spinlock.h: In function `vmk_spin_is_locked_by_my_cpu':
src/include/linux/spinlock.h:126: error: `lock' undeclared (first use in this function)
src/include/linux/spinlock.h:126: error: (Each undeclared identifier is reported only once
src/include/linux/spinlock.h:126: error: for each function it appears in.)
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h: At top level:
src/include/linux/spinlock.h:230: error: syntax error before "spinlock_t"
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h:237: error: syntax error before "spinlock_t"
src/include/linux/spinlock.h:239: error: syntax error before '}' token
In file included from src/include/linux/fs.h:12,
from src/include/linux/capability.h:17,
from src/include/linux/binfmts.h:4,
from src/include/linux/sched.h:10,
from src/include/linux/mm.h:22,
from src/include/linux/slab.h:14,
from src/drivers/block/cciss/cciss.c:29:
src/include/linux/wait.h:90: error: syntax error before "spinlock_t"
src/include/linux/wait.h:102: error: syntax error before '}' token
src/include/linux/wait.h: In function `init_waitqueue_head':
src/include/linux/wait.h:194: error: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: error: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: error: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: error: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: error: dereferencing pointer to incomplete type
src/include/linux/wait.h:205: error: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `waitqueue_active':
src/include/linux/wait.h:253: error: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `__add_wait_queue':
src/include/linux/wait.h:266: error: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `__add_wait_queue_tail':
src/include/linux/wait.h:283: error: dereferencing pointer to incomplete type
I've also tried building these in the service console on one of my ESX hosts, but I get similar errors:
Compiling drivers/block/cciss/cciss.c
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h:124: syntax error before '*' token
src/include/linux/spinlock.h: In function `vmk_spin_is_locked_by_my_cpu':
src/include/linux/spinlock.h:126: `lock' undeclared (first use in this function)
src/include/linux/spinlock.h:126: (Each undeclared identifier is reported only once
src/include/linux/spinlock.h:126: for each function it appears in.)
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h: At top level:
src/include/linux/spinlock.h:230: syntax error before "spinlock_t"
In file included from src/include/linux/module.h:11,
from src/drivers/block/cciss/cciss.c:24:
src/include/linux/spinlock.h:237: syntax error before "spinlock_t"
src/include/linux/spinlock.h:239: syntax error before '}' token
In file included from src/include/linux/fs.h:12,
from src/include/linux/capability.h:17,
from src/include/linux/binfmts.h:4,
from src/include/linux/sched.h:10,
from src/include/linux/mm.h:22,
from src/include/linux/slab.h:14,
from src/drivers/block/cciss/cciss.c:29:
src/include/linux/wait.h:90: syntax error before "spinlock_t"
src/include/linux/wait.h:102: syntax error before '}' token
src/include/linux/wait.h: In function `init_waitqueue_head':
src/include/linux/wait.h:194: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: dereferencing pointer to incomplete type
src/include/linux/wait.h:199: dereferencing pointer to incomplete type
src/include/linux/wait.h:205: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `waitqueue_active':
src/include/linux/wait.h:253: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `__add_wait_queue':
src/include/linux/wait.h:266: dereferencing pointer to incomplete type
src/include/linux/wait.h: In function `__add_wait_queue_tail':
src/include/linux/wait.h:283: dereferencing pointer to incomplete type
I was wondering if anyone has successfully built these drivers from the provided source, or if you're even supposed to be able to build from these sources, and how, or if providing this is just VMware complying with a formality and you're not really supposed to be able to do anything with those sources?
Thanks - Nick
Nick,
Do you still develop drivers for ESX? I'm hoping your still around.. I am completely confused and could really use a voice of experience... Thanks in advance!