37#define VMWARE_MAX_COUNTERS 256
39#define VMWARE_CPU_LIMIT_MHZ 0
40#define VMWARE_CPU_RESERVATION_MHZ 1
41#define VMWARE_CPU_SHARES 2
42#define VMWARE_CPU_STOLEN_MS 3
43#define VMWARE_CPU_USED_MS 4
44#define VMWARE_ELAPSED_MS 5
46#define VMWARE_MEM_ACTIVE_MB 6
47#define VMWARE_MEM_BALLOONED_MB 7
48#define VMWARE_MEM_LIMIT_MB 8
49#define VMWARE_MEM_MAPPED_MB 9
50#define VMWARE_MEM_OVERHEAD_MB 10
51#define VMWARE_MEM_RESERVATION_MB 11
52#define VMWARE_MEM_SHARED_MB 12
53#define VMWARE_MEM_SHARES 13
54#define VMWARE_MEM_SWAPPED_MB 14
55#define VMWARE_MEM_TARGET_SIZE_MB 15
56#define VMWARE_MEM_USED_MB 16
58#define VMWARE_HOST_CPU_MHZ 17
62#define VMWARE_HOST_TSC 18
63#define VMWARE_ELAPSED_TIME 19
64#define VMWARE_ELAPSED_APPARENT 20
73struct _vmware_register {
74 unsigned int selector;
96 __asm__ __volatile__(
"rdpmc" :
"=a" (low),
"=d" (high) :
"c" (
c));
97 return (uint64_t)high << 32 | (uint64_t)low;
104#include "vmGuestLib.h"
107char const * (*GuestLib_GetErrorText)(VMGuestLibError);
108VMGuestLibError (*GuestLib_OpenHandle)(VMGuestLibHandle*);
109VMGuestLibError (*GuestLib_CloseHandle)(VMGuestLibHandle);
110VMGuestLibError (*GuestLib_UpdateInfo)(VMGuestLibHandle
handle);
111VMGuestLibError (*GuestLib_GetSessionId)(VMGuestLibHandle
handle, VMSessionId *id);
112VMGuestLibError (*GuestLib_GetCpuReservationMHz)(VMGuestLibHandle
handle, uint32 *cpuReservationMHz);
113VMGuestLibError (*GuestLib_GetCpuLimitMHz)(VMGuestLibHandle
handle, uint32 *cpuLimitMHz);
114VMGuestLibError (*GuestLib_GetCpuShares)(VMGuestLibHandle
handle, uint32 *cpuShares);
115VMGuestLibError (*GuestLib_GetCpuUsedMs)(VMGuestLibHandle
handle,
uint64 *cpuUsedMs);
116VMGuestLibError (*GuestLib_GetHostProcessorSpeed)(VMGuestLibHandle
handle, uint32 *mhz);
117VMGuestLibError (*GuestLib_GetMemReservationMB)(VMGuestLibHandle
handle, uint32 *memReservationMB);
118VMGuestLibError (*GuestLib_GetMemLimitMB)(VMGuestLibHandle
handle, uint32 *memLimitMB);
119VMGuestLibError (*GuestLib_GetMemShares)(VMGuestLibHandle
handle, uint32 *memShares);
120VMGuestLibError (*GuestLib_GetMemMappedMB)(VMGuestLibHandle
handle, uint32 *memMappedMB);
121VMGuestLibError (*GuestLib_GetMemActiveMB)(VMGuestLibHandle
handle, uint32 *memActiveMB);
122VMGuestLibError (*GuestLib_GetMemOverheadMB)(VMGuestLibHandle
handle, uint32 *memOverheadMB);
123VMGuestLibError (*GuestLib_GetMemBalloonedMB)(VMGuestLibHandle
handle, uint32 *memBalloonedMB);
124VMGuestLibError (*GuestLib_GetMemSwappedMB)(VMGuestLibHandle
handle, uint32 *memSwappedMB);
125VMGuestLibError (*GuestLib_GetMemSharedMB)(VMGuestLibHandle
handle, uint32 *memSharedMB);
126VMGuestLibError (*GuestLib_GetMemSharedSavedMB)(VMGuestLibHandle
handle, uint32 *memSharedSavedMB);
127VMGuestLibError (*GuestLib_GetMemUsedMB)(VMGuestLibHandle
handle, uint32 *memUsedMB);
128VMGuestLibError (*GuestLib_GetElapsedMs)(VMGuestLibHandle
handle,
uint64 *elapsedMs);
129VMGuestLibError (*GuestLib_GetResourcePoolPath)(VMGuestLibHandle
handle,
size_t *bufferSize,
char *pathBuffer);
130VMGuestLibError (*GuestLib_GetCpuStolenMs)(VMGuestLibHandle
handle,
uint64 *cpuStolenMs);
131VMGuestLibError (*GuestLib_GetMemTargetSizeMB)(VMGuestLibHandle
handle,
uint64 *memTargetSizeMB);
132VMGuestLibError (*GuestLib_GetHostNumCpuCores)(VMGuestLibHandle
handle, uint32 *hostNumCpuCores);
133VMGuestLibError (*GuestLib_GetHostCpuUsedMs)(VMGuestLibHandle
handle,
uint64 *hostCpuUsedMs);
134VMGuestLibError (*GuestLib_GetHostMemSwappedMB)(VMGuestLibHandle
handle,
uint64 *hostMemSwappedMB);
135VMGuestLibError (*GuestLib_GetHostMemSharedMB)(VMGuestLibHandle
handle,
uint64 *hostMemSharedMB);
136VMGuestLibError (*GuestLib_GetHostMemUsedMB)(VMGuestLibHandle
handle,
uint64 *hostMemUsedMB);
137VMGuestLibError (*GuestLib_GetHostMemPhysMB)(VMGuestLibHandle
handle,
uint64 *hostMemPhysMB);
138VMGuestLibError (*GuestLib_GetHostMemPhysFreeMB)(VMGuestLibHandle
handle,
uint64 *hostMemPhysFreeMB);
139VMGuestLibError (*GuestLib_GetHostMemKernOvhdMB)(VMGuestLibHandle
handle,
uint64 *hostMemKernOvhdMB);
140VMGuestLibError (*GuestLib_GetHostMemMappedMB)(VMGuestLibHandle
handle,
uint64 *hostMemMappedMB);
141VMGuestLibError (*GuestLib_GetHostMemUnmappedMB)(VMGuestLibHandle
handle,
uint64 *hostMemUnmappedMB);
144static void *dlHandle = NULL;
151#define LOAD_ONE_FUNC(funcname) \
153funcname = dlsym(dlHandle, "VM" #funcname); \
154if ((dlErrStr = dlerror()) != NULL) { \
155fprintf(stderr, "Failed to load \'%s\': \'%s\'\n", \
156#funcname, dlErrStr); \
175 VMGuestLibHandle glHandle;
217 char const *dlErrStr;
218 char filename[BUFSIZ];
220 sprintf(filename,
"%s",
"libvmGuestLib.so");
221 dlHandle = dlopen(filename, RTLD_NOW);
223 dlErrStr = dlerror();
224 fprintf(
stderr,
"dlopen of %s failed: \'%s\'\n", filename,
227 sprintf(filename,
"%s/lib/lib64/libvmGuestLib.so",VMWARE_INCDIR);
228 dlHandle = dlopen(filename, RTLD_NOW);
230 dlErrStr = dlerror();
231 fprintf(
stderr,
"dlopen of %s failed: \'%s\'\n", filename,
234 sprintf(filename,
"%s/lib/lib32/libvmGuestLib.so",VMWARE_INCDIR);
235 dlHandle = dlopen(filename, RTLD_NOW);
237 dlErrStr = dlerror();
238 fprintf(
stderr,
"dlopen of %s failed: \'%s\'\n", filename,
246 LOAD_ONE_FUNC(GuestLib_GetErrorText);
247 LOAD_ONE_FUNC(GuestLib_OpenHandle);
248 LOAD_ONE_FUNC(GuestLib_CloseHandle);
249 LOAD_ONE_FUNC(GuestLib_UpdateInfo);
250 LOAD_ONE_FUNC(GuestLib_GetSessionId);
251 LOAD_ONE_FUNC(GuestLib_GetCpuReservationMHz);
252 LOAD_ONE_FUNC(GuestLib_GetCpuLimitMHz);
253 LOAD_ONE_FUNC(GuestLib_GetCpuShares);
254 LOAD_ONE_FUNC(GuestLib_GetCpuUsedMs);
255 LOAD_ONE_FUNC(GuestLib_GetHostProcessorSpeed);
256 LOAD_ONE_FUNC(GuestLib_GetMemReservationMB);
257 LOAD_ONE_FUNC(GuestLib_GetMemLimitMB);
258 LOAD_ONE_FUNC(GuestLib_GetMemShares);
259 LOAD_ONE_FUNC(GuestLib_GetMemMappedMB);
260 LOAD_ONE_FUNC(GuestLib_GetMemActiveMB);
261 LOAD_ONE_FUNC(GuestLib_GetMemOverheadMB);
262 LOAD_ONE_FUNC(GuestLib_GetMemBalloonedMB);
263 LOAD_ONE_FUNC(GuestLib_GetMemSwappedMB);
264 LOAD_ONE_FUNC(GuestLib_GetMemSharedMB);
265 LOAD_ONE_FUNC(GuestLib_GetMemSharedSavedMB);
266 LOAD_ONE_FUNC(GuestLib_GetMemUsedMB);
267 LOAD_ONE_FUNC(GuestLib_GetElapsedMs);
268 LOAD_ONE_FUNC(GuestLib_GetResourcePoolPath);
269 LOAD_ONE_FUNC(GuestLib_GetCpuStolenMs);
270 LOAD_ONE_FUNC(GuestLib_GetMemTargetSizeMB);
271 LOAD_ONE_FUNC(GuestLib_GetHostNumCpuCores);
272 LOAD_ONE_FUNC(GuestLib_GetHostCpuUsedMs);
273 LOAD_ONE_FUNC(GuestLib_GetHostMemSwappedMB);
274 LOAD_ONE_FUNC(GuestLib_GetHostMemSharedMB);
275 LOAD_ONE_FUNC(GuestLib_GetHostMemUsedMB);
276 LOAD_ONE_FUNC(GuestLib_GetHostMemPhysMB);
277 LOAD_ONE_FUNC(GuestLib_GetHostMemPhysFreeMB);
278 LOAD_ONE_FUNC(GuestLib_GetHostMemKernOvhdMB);
279 LOAD_ONE_FUNC(GuestLib_GetHostMemMappedMB);
280 LOAD_ONE_FUNC(GuestLib_GetHostMemUnmappedMB);
315 static VMSessionId sessionId = 0;
316 VMSessionId tmpSession;
319 VMGuestLibError glError;
323 glError = GuestLib_UpdateInfo(context->glHandle);
324 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
325 fprintf(
stderr,
"UpdateInfo failed: %s\n",
326 GuestLib_GetErrorText(glError));
331 glError = GuestLib_GetSessionId(context->glHandle, &tmpSession);
332 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
333 fprintf(
stderr,
"Failed to get session ID: %s\n",
334 GuestLib_GetErrorText(glError));
338 if (tmpSession == 0) {
339 fprintf(
stderr,
"Error: Got zero sessionId from GuestLib\n");
343 if (sessionId == 0) {
344 sessionId = tmpSession;
345 }
else if (tmpSession != sessionId) {
346 sessionId = tmpSession;
349 glError = GuestLib_GetCpuLimitMHz(context->glHandle,&temp32);
351 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
352 fprintf(
stderr,
"Failed to get CPU limit: %s\n",
353 GuestLib_GetErrorText(glError));
357 glError = GuestLib_GetCpuReservationMHz(context->glHandle,&temp32);
359 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
360 fprintf(
stderr,
"Failed to get CPU reservation: %s\n",
361 GuestLib_GetErrorText(glError));
365 glError = GuestLib_GetCpuShares(context->glHandle,&temp32);
367 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
368 fprintf(
stderr,
"Failed to get cpu shares: %s\n",
369 GuestLib_GetErrorText(glError));
373 glError = GuestLib_GetCpuStolenMs(context->glHandle,&temp64);
375 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
376 if (glError == VMGUESTLIB_ERROR_UNSUPPORTED_VERSION) {
378 fprintf(
stderr,
"Skipping CPU stolen, not supported...\n");
380 fprintf(
stderr,
"Failed to get CPU stolen: %s\n",
381 GuestLib_GetErrorText(glError));
386 glError = GuestLib_GetCpuUsedMs(context->glHandle,&temp64);
388 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
389 fprintf(
stderr,
"Failed to get used ms: %s\n",
390 GuestLib_GetErrorText(glError));
394 glError = GuestLib_GetElapsedMs(context->glHandle, &temp64);
396 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
397 fprintf(
stderr,
"Failed to get elapsed ms: %s\n",
398 GuestLib_GetErrorText(glError));
402 glError = GuestLib_GetMemActiveMB(context->glHandle, &temp32);
404 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
405 fprintf(
stderr,
"Failed to get active mem: %s\n",
406 GuestLib_GetErrorText(glError));
410 glError = GuestLib_GetMemBalloonedMB(context->glHandle, &temp32);
412 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
413 fprintf(
stderr,
"Failed to get ballooned mem: %s\n",
414 GuestLib_GetErrorText(glError));
418 glError = GuestLib_GetMemLimitMB(context->glHandle, &temp32);
420 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
421 fprintf(
stderr,
"Failed to get mem limit: %s\n",
422 GuestLib_GetErrorText(glError));
426 glError = GuestLib_GetMemMappedMB(context->glHandle, &temp32);
428 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
429 fprintf(
stderr,
"Failed to get mapped mem: %s\n",
430 GuestLib_GetErrorText(glError));
434 glError = GuestLib_GetMemOverheadMB(context->glHandle, &temp32);
436 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
437 fprintf(
stderr,
"Failed to get overhead mem: %s\n",
438 GuestLib_GetErrorText(glError));
442 glError = GuestLib_GetMemReservationMB(context->glHandle, &temp32);
444 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
445 fprintf(
stderr,
"Failed to get mem reservation: %s\n",
446 GuestLib_GetErrorText(glError));
450 glError = GuestLib_GetMemSharedMB(context->glHandle, &temp32);
452 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
453 fprintf(
stderr,
"Failed to get swapped mem: %s\n",
454 GuestLib_GetErrorText(glError));
458 glError = GuestLib_GetMemShares(context->glHandle, &temp32);
460 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
461 if (glError == VMGUESTLIB_ERROR_NOT_AVAILABLE) {
463 fprintf(
stderr,
"Skipping mem shares, not supported...\n");
465 fprintf(
stderr,
"Failed to get mem shares: %s\n",
466 GuestLib_GetErrorText(glError));
471 glError = GuestLib_GetMemSwappedMB(context->glHandle, &temp32);
473 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
474 fprintf(
stderr,
"Failed to get swapped mem: %s\n",
475 GuestLib_GetErrorText(glError));
479 glError = GuestLib_GetMemTargetSizeMB(context->glHandle, &temp64);
481 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
482 if (glError == VMGUESTLIB_ERROR_UNSUPPORTED_VERSION) {
484 fprintf(
stderr,
"Skipping target mem size, not supported...\n");
486 fprintf(
stderr,
"Failed to get target mem size: %s\n",
487 GuestLib_GetErrorText(glError));
492 glError = GuestLib_GetMemUsedMB(context->glHandle, &temp32);
494 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
495 fprintf(
stderr,
"Failed to get swapped mem: %s\n",
496 GuestLib_GetErrorText(glError));
500 glError = GuestLib_GetHostProcessorSpeed(context->glHandle, &temp32);
502 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
503 fprintf(
stderr,
"Failed to get host proc speed: %s\n",
504 GuestLib_GetErrorText(glError));
536 VMGuestLibError glError;
541 glError = GuestLib_OpenHandle(&(context->glHandle));
542 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
543 fprintf(
stderr,
"OpenHandle failed: %s\n",
544 GuestLib_GetErrorText(glError));
567 SUBDBG(
"_vmware_init_component..." );
575 "GuestLibTest: Failed to load shared library",
598 VMGuestLibError glError;
599 VMGuestLibHandle glHandle;
604 glError = GuestLib_OpenHandle(&glHandle);
605 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
606 fprintf(
stderr,
"OpenHandle failed: %s\n",
607 GuestLib_GetErrorText(glError));
611 glError = GuestLib_UpdateInfo(glHandle);
612 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
613 fprintf(
stderr,
"UpdateInfo failed: %s\n",
614 GuestLib_GetErrorText(glError));
621 glError = GuestLib_CloseHandle(glHandle);
634 "Retrieves the upper limit of processor use in MHz "
635 "available to the virtual machine.",
646 "Retrieves the minimum processing power in MHz "
647 "reserved for the virtual machine.",
658 "Retrieves the number of CPU shares allocated "
659 "to the virtual machine.",
670 "Retrieves the number of milliseconds that the "
671 "virtual machine was in a ready state (able to "
672 "transition to a run state), but was not scheduled to run.",
683 "Retrieves the number of milliseconds during which "
684 "the virtual machine has used the CPU. This value "
685 "includes the time used by the guest operating system "
686 "and the time used by virtualization code for tasks for "
687 "this virtual machine. You can combine this value with "
688 "the elapsed time (VMWARE_ELAPSED) to estimate the "
689 "effective virtual machine CPU speed. This value is a "
690 "subset of elapsedMs.",
701 "Retrieves the number of milliseconds that have passed "
702 "in the virtual machine since it last started running on "
703 "the server. The count of elapsed time restarts each time "
704 "the virtual machine is powered on, resumed, or migrated "
705 "using VMotion. This value counts milliseconds, regardless "
706 "of whether the virtual machine is using processing power "
707 "during that time. You can combine this value with the CPU "
708 "time used by the virtual machine (VMWARE_CPU_USED) to "
709 "estimate the effective virtual machine xCPU speed. "
710 "cpuUsedMS is a subset of this value.",
721 "Retrieves the amount of memory the virtual machine is "
722 "actively using in MB - Its estimated working set size.",
733 "Retrieves the amount of memory that has been reclaimed "
734 "from this virtual machine by the vSphere memory balloon "
735 "driver (also referred to as the 'vmemctl' driver) in MB.",
746 "Retrieves the upper limit of memory that is available "
747 "to the virtual machine in MB.",
758 "Retrieves the amount of memory that is allocated to "
759 "the virtual machine in MB. Memory that is ballooned, "
760 "swapped, or has never been accessed is excluded.",
771 "Retrieves the amount of 'overhead' memory associated "
772 "with this virtual machine that is currently consumed "
773 "on the host system in MB. Overhead memory is additional "
774 "memory that is reserved for data structures required by "
775 "the virtualization layer.",
786 "Retrieves the minimum amount of memory that is "
787 "reserved for the virtual machine in MB.",
798 "Retrieves the amount of physical memory associated "
799 "with this virtual machine that is copy-on-write (COW) "
800 "shared on the host in MB.",
811 "Retrieves the number of memory shares allocated to "
812 "the virtual machine.",
823 "Retrieves the amount of memory that has been reclaimed "
824 "from this virtual machine by transparently swapping "
825 "guest memory to disk in MB.",
836 "Retrieves the size of the target memory allocation "
837 "for this virtual machine in MB.",
848 "Retrieves the estimated amount of physical host memory "
849 "currently consumed for this virtual machine's "
861 "Retrieves the speed of the ESX system's physical "
874 if ( getenv(
"PAPI_VMWARE_PSEUDOPERFORMANCE" ) ) {
892 "Elapsed real time in ns.",
901 "ELAPSED_APPARENT" );
903 "Elapsed apparent time in ns.",
914 "VMware SDK not installed, and PAPI_VMWARE_PSEUDOPERFORMANCE not set",
946 switch ( modifier ) {
955 int index = *EventCode;
958 *EventCode = *EventCode + 1;
975 int index = EventCode;
986 sizeof(info->
units));
1000 int index = EventCode;
1016 int index = EventCode;
1100 report_difference) {
1126 SUBDBG(
"_vmware_write... %p %p", ctx, ctrl );
1150 VMGuestLibError glError;
1156 glError = GuestLib_CloseHandle(context->glHandle);
1157 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
1158 fprintf(
stderr,
"Failed to CloseHandle: %s\n",
1159 GuestLib_GetErrorText(glError));
1174 if (dlclose(dlHandle)) {
1175 fprintf(
stderr,
"dlclose failed\n");
1176 return EXIT_FAILURE;
1197 SUBDBG(
"_vmware_ctl..." );
1217 SUBDBG(
"_vmware_set_domain..." );
1219 SUBDBG(
" PAPI_DOM_USER " );
1223 SUBDBG(
" PAPI_DOM_KERNEL " );
1227 SUBDBG(
" PAPI_DOM_OTHER " );
1231 SUBDBG(
" PAPI_DOM_ALL " );
1245 .short_name =
"vmware",
1246 .description =
"Provide support for VMware vmguest and pseudo counters",
1257 .fast_real_timer = 0,
1258 .fast_virtual_timer = 0,
1260 .attach_must_ptrace = 0,
1266 .reg_value =
sizeof (
struct _vmware_register ),
static papi_handle_t handle
unsigned long long uint64
struct papi_vectors * _papi_hwd[]
#define PAPI_HUGE_STR_LEN
char events[MAX_EVENTS][BUFSIZ]
static double c[MATRIX_SIZE][MATRIX_SIZE]
unsigned long AO_t __attribute__((__aligned__(4)))
Return codes and api definitions.
#define SUBDBG(format, args...)
char units[MAX_EVENTS][BUFSIZ]
char name[PAPI_MAX_STR_LEN]
char disabled_reason[PAPI_HUGE_STR_LEN]
char units[PAPI_MIN_STR_LEN]
char symbol[PAPI_HUGE_STR_LEN]
char long_descr[PAPI_HUGE_STR_LEN]
long long start_values[VMWARE_MAX_COUNTERS]
long long values[VMWARE_MAX_COUNTERS]
int which_counter[VMWARE_MAX_COUNTERS]
long long value[VMWARE_MAX_COUNTERS]
char units[PAPI_MIN_STR_LEN]
char name[PAPI_MAX_STR_LEN]
char description[PAPI_HUGE_STR_LEN]
struct _vmware_register ra_bits
PAPI_component_info_t cmp_info
int _vmware_ctl(hwd_context_t *ctx, int code, _papi_int_option_t *option)
#define VMWARE_CPU_USED_MS
static int LoadFunctions(void)
int _vmware_start(hwd_context_t *ctx, hwd_control_state_t *ctl)
#define VMWARE_MEM_MAPPED_MB
#define VMWARE_MEM_SHARED_MB
int _vmware_read(hwd_context_t *ctx, hwd_control_state_t *ctl, long_long **events, int flags)
int _vmware_update_control_state(hwd_control_state_t *ctl, NativeInfo_t *native, int count, hwd_context_t *ctx)
#define VMWARE_CPU_RESERVATION_MHZ
int _vmware_init_control_state(hwd_control_state_t *ctl)
#define VMWARE_ELAPSED_MS
#define VMWARE_MEM_OVERHEAD_MB
#define VMWARE_ELAPSED_TIME
#define VMWARE_MAX_COUNTERS
int _vmware_ntv_code_to_descr(unsigned int EventCode, char *name, int len)
#define VMWARE_MEM_LIMIT_MB
#define VMWARE_MEM_ACTIVE_MB
#define VMWARE_MEM_SWAPPED_MB
static struct _vmware_native_event_entry * _vmware_native_table
#define VMWARE_CPU_LIMIT_MHZ
#define VMWARE_CPU_STOLEN_MS
int _vmware_init_thread(hwd_context_t *ctx)
int _vmware_ntv_code_to_name(unsigned int EventCode, char *name, int len)
#define VMWARE_MEM_USED_MB
int _vmware_reset(hwd_context_t *ctx, hwd_control_state_t *ctl)
#define VMWARE_ELAPSED_APPARENT
int _vmware_init_component(int cidx)
int _vmware_shutdown_thread(hwd_context_t *ctx)
int _vmware_ntv_code_to_info(unsigned int EventCode, PAPI_event_info_t *info)
static long long _vmware_hardware_read(struct _vmware_context *context, int starting)
#define VMWARE_MEM_BALLOONED_MB
papi_vector_t _vmware_vector
void(* _dl_non_dynamic_init)(void)
int _vmware_ntv_enum_events(unsigned int *EventCode, int modifier)
int _vmware_set_domain(hwd_control_state_t *ctl, int domain)
#define VMWARE_HOST_CPU_MHZ
#define VMWARE_MEM_SHARES
int _vmware_shutdown_component(void)
int _vmware_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long_long events[])
int _vmware_stop(hwd_context_t *ctx, hwd_control_state_t *ctl)
#define VMWARE_MEM_TARGET_SIZE_MB
#define VMWARE_CPU_SHARES
#define VMWARE_MEM_RESERVATION_MB