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 73 struct _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" 107 char const * (*GuestLib_GetErrorText)(VMGuestLibError);
108 VMGuestLibError (*GuestLib_OpenHandle)(VMGuestLibHandle*);
109 VMGuestLibError (*GuestLib_CloseHandle)(VMGuestLibHandle);
110 VMGuestLibError (*GuestLib_UpdateInfo)(VMGuestLibHandle handle);
111 VMGuestLibError (*GuestLib_GetSessionId)(VMGuestLibHandle handle, VMSessionId *id);
112 VMGuestLibError (*GuestLib_GetCpuReservationMHz)(VMGuestLibHandle handle, uint32 *cpuReservationMHz);
113 VMGuestLibError (*GuestLib_GetCpuLimitMHz)(VMGuestLibHandle handle, uint32 *cpuLimitMHz);
114 VMGuestLibError (*GuestLib_GetCpuShares)(VMGuestLibHandle handle, uint32 *cpuShares);
115 VMGuestLibError (*GuestLib_GetCpuUsedMs)(VMGuestLibHandle handle, uint64 *cpuUsedMs);
116 VMGuestLibError (*GuestLib_GetHostProcessorSpeed)(VMGuestLibHandle handle, uint32 *mhz);
117 VMGuestLibError (*GuestLib_GetMemReservationMB)(VMGuestLibHandle handle, uint32 *memReservationMB);
118 VMGuestLibError (*GuestLib_GetMemLimitMB)(VMGuestLibHandle handle, uint32 *memLimitMB);
119 VMGuestLibError (*GuestLib_GetMemShares)(VMGuestLibHandle handle, uint32 *memShares);
120 VMGuestLibError (*GuestLib_GetMemMappedMB)(VMGuestLibHandle handle, uint32 *memMappedMB);
121 VMGuestLibError (*GuestLib_GetMemActiveMB)(VMGuestLibHandle handle, uint32 *memActiveMB);
122 VMGuestLibError (*GuestLib_GetMemOverheadMB)(VMGuestLibHandle handle, uint32 *memOverheadMB);
123 VMGuestLibError (*GuestLib_GetMemBalloonedMB)(VMGuestLibHandle handle, uint32 *memBalloonedMB);
124 VMGuestLibError (*GuestLib_GetMemSwappedMB)(VMGuestLibHandle handle, uint32 *memSwappedMB);
125 VMGuestLibError (*GuestLib_GetMemSharedMB)(VMGuestLibHandle handle, uint32 *memSharedMB);
126 VMGuestLibError (*GuestLib_GetMemSharedSavedMB)(VMGuestLibHandle handle, uint32 *memSharedSavedMB);
127 VMGuestLibError (*GuestLib_GetMemUsedMB)(VMGuestLibHandle handle, uint32 *memUsedMB);
128 VMGuestLibError (*GuestLib_GetElapsedMs)(VMGuestLibHandle handle, uint64 *elapsedMs);
129 VMGuestLibError (*GuestLib_GetResourcePoolPath)(VMGuestLibHandle handle,
size_t *bufferSize,
char *pathBuffer);
130 VMGuestLibError (*GuestLib_GetCpuStolenMs)(VMGuestLibHandle handle, uint64 *cpuStolenMs);
131 VMGuestLibError (*GuestLib_GetMemTargetSizeMB)(VMGuestLibHandle handle, uint64 *memTargetSizeMB);
132 VMGuestLibError (*GuestLib_GetHostNumCpuCores)(VMGuestLibHandle handle, uint32 *hostNumCpuCores);
133 VMGuestLibError (*GuestLib_GetHostCpuUsedMs)(VMGuestLibHandle handle, uint64 *hostCpuUsedMs);
134 VMGuestLibError (*GuestLib_GetHostMemSwappedMB)(VMGuestLibHandle handle, uint64 *hostMemSwappedMB);
135 VMGuestLibError (*GuestLib_GetHostMemSharedMB)(VMGuestLibHandle handle, uint64 *hostMemSharedMB);
136 VMGuestLibError (*GuestLib_GetHostMemUsedMB)(VMGuestLibHandle handle, uint64 *hostMemUsedMB);
137 VMGuestLibError (*GuestLib_GetHostMemPhysMB)(VMGuestLibHandle handle, uint64 *hostMemPhysMB);
138 VMGuestLibError (*GuestLib_GetHostMemPhysFreeMB)(VMGuestLibHandle handle, uint64 *hostMemPhysFreeMB);
139 VMGuestLibError (*GuestLib_GetHostMemKernOvhdMB)(VMGuestLibHandle handle, uint64 *hostMemKernOvhdMB);
140 VMGuestLibError (*GuestLib_GetHostMemMappedMB)(VMGuestLibHandle handle, uint64 *hostMemMappedMB);
141 VMGuestLibError (*GuestLib_GetHostMemUnmappedMB)(VMGuestLibHandle handle, uint64 *hostMemUnmappedMB);
144 static void *dlHandle = NULL;
151 #define LOAD_ONE_FUNC(funcname) \ 153 funcname = dlsym(dlHandle, "VM" #funcname); \ 154 if ((dlErrStr = dlerror()) != NULL) { \ 155 fprintf(stderr, "Failed to load \'%s\': \'%s\'\n", \ 156 #funcname, dlErrStr); \ 175 VMGuestLibHandle glHandle;
217 char const *dlErrStr;
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",
596 VMGuestLibError glError;
597 VMGuestLibHandle glHandle;
602 glError = GuestLib_OpenHandle(&glHandle);
603 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
604 fprintf(stderr,
"OpenHandle failed: %s\n",
605 GuestLib_GetErrorText(glError));
609 glError = GuestLib_UpdateInfo(glHandle);
610 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
611 fprintf(stderr,
"UpdateInfo failed: %s\n",
612 GuestLib_GetErrorText(glError));
619 glError = GuestLib_CloseHandle(glHandle);
632 "Retrieves the upper limit of processor use in MHz " 633 "available to the virtual machine.",
644 "Retrieves the minimum processing power in MHz " 645 "reserved for the virtual machine.",
656 "Retrieves the number of CPU shares allocated " 657 "to the virtual machine.",
668 "Retrieves the number of milliseconds that the " 669 "virtual machine was in a ready state (able to " 670 "transition to a run state), but was not scheduled to run.",
681 "Retrieves the number of milliseconds during which " 682 "the virtual machine has used the CPU. This value " 683 "includes the time used by the guest operating system " 684 "and the time used by virtualization code for tasks for " 685 "this virtual machine. You can combine this value with " 686 "the elapsed time (VMWARE_ELAPSED) to estimate the " 687 "effective virtual machine CPU speed. This value is a " 688 "subset of elapsedMs.",
699 "Retrieves the number of milliseconds that have passed " 700 "in the virtual machine since it last started running on " 701 "the server. The count of elapsed time restarts each time " 702 "the virtual machine is powered on, resumed, or migrated " 703 "using VMotion. This value counts milliseconds, regardless " 704 "of whether the virtual machine is using processing power " 705 "during that time. You can combine this value with the CPU " 706 "time used by the virtual machine (VMWARE_CPU_USED) to " 707 "estimate the effective virtual machine xCPU speed. " 708 "cpuUsedMS is a subset of this value.",
719 "Retrieves the amount of memory the virtual machine is " 720 "actively using in MB - Its estimated working set size.",
731 "Retrieves the amount of memory that has been reclaimed " 732 "from this virtual machine by the vSphere memory balloon " 733 "driver (also referred to as the 'vmemctl' driver) in MB.",
744 "Retrieves the upper limit of memory that is available " 745 "to the virtual machine in MB.",
756 "Retrieves the amount of memory that is allocated to " 757 "the virtual machine in MB. Memory that is ballooned, " 758 "swapped, or has never been accessed is excluded.",
769 "Retrieves the amount of 'overhead' memory associated " 770 "with this virtual machine that is currently consumed " 771 "on the host system in MB. Overhead memory is additional " 772 "memory that is reserved for data structures required by " 773 "the virtualization layer.",
784 "Retrieves the minimum amount of memory that is " 785 "reserved for the virtual machine in MB.",
796 "Retrieves the amount of physical memory associated " 797 "with this virtual machine that is copy-on-write (COW) " 798 "shared on the host in MB.",
809 "Retrieves the number of memory shares allocated to " 810 "the virtual machine.",
821 "Retrieves the amount of memory that has been reclaimed " 822 "from this virtual machine by transparently swapping " 823 "guest memory to disk in MB.",
834 "Retrieves the size of the target memory allocation " 835 "for this virtual machine in MB.",
846 "Retrieves the estimated amount of physical host memory " 847 "currently consumed for this virtual machine's " 859 "Retrieves the speed of the ESX system's physical " 872 if (
getenv(
"PAPI_VMWARE_PSEUDOPERFORMANCE" ) ) {
890 "Elapsed real time in ns.",
899 "ELAPSED_APPARENT" );
901 "Elapsed apparent time in ns.",
912 "VMware SDK not installed, and PAPI_VMWARE_PSEUDOPERFORMANCE not set",
939 switch ( modifier ) {
948 int index = *EventCode;
951 *EventCode = *EventCode + 1;
968 int index = EventCode;
979 sizeof(info->
units));
993 int index = EventCode;
1009 int index = EventCode;
1093 report_difference) {
1119 SUBDBG(
"_vmware_write... %p %p", ctx, ctrl );
1143 VMGuestLibError glError;
1149 glError = GuestLib_CloseHandle(context->glHandle);
1150 if (glError != VMGUESTLIB_ERROR_SUCCESS) {
1151 fprintf(stderr,
"Failed to CloseHandle: %s\n",
1152 GuestLib_GetErrorText(glError));
1167 if (dlclose(dlHandle)) {
1168 fprintf(stderr,
"dlclose failed\n");
1169 return EXIT_FAILURE;
1190 SUBDBG(
"_vmware_ctl..." );
1210 SUBDBG(
"_vmware_set_domain..." );
1212 SUBDBG(
" PAPI_DOM_USER " );
1216 SUBDBG(
" PAPI_DOM_KERNEL " );
1220 SUBDBG(
" PAPI_DOM_OTHER " );
1224 SUBDBG(
" PAPI_DOM_ALL " );
1238 .short_name =
"vmware",
1239 .description =
"Provide support for VMware vmguest and pseudo counters",
1250 .fast_real_timer = 0,
1251 .fast_virtual_timer = 0,
1253 .attach_must_ptrace = 0,
1259 .reg_value =
sizeof (
struct _vmware_register ),
int _vmware_ntv_code_to_name(unsigned int EventCode, char *name, int len)
char disabled_reason[PAPI_MAX_STR_LEN]
#define VMWARE_MEM_OVERHEAD_MB
void(* _dl_non_dynamic_init)(void)
int _vmware_stop(hwd_context_t *ctx, hwd_control_state_t *ctl)
#define VMWARE_MEM_TARGET_SIZE_MB
char units[PAPI_MIN_STR_LEN]
#define VMWARE_MEM_SHARES
int _vmware_ntv_enum_events(unsigned int *EventCode, int modifier)
int _vmware_set_domain(hwd_control_state_t *ctl, int domain)
#define VMWARE_ELAPSED_APPARENT
#define VMWARE_ELAPSED_MS
char long_descr[PAPI_HUGE_STR_LEN]
char filename[MAXNAMESIZE]
#define VMWARE_CPU_USED_MS
int _vmware_init_control_state(hwd_control_state_t *ctl)
char units[MAX_EVENTS][BUFSIZ]
PAPI_component_info_t cmp_info
#define VMWARE_MEM_SWAPPED_MB
int _vmware_init_thread(hwd_context_t *ctx)
static struct _vmware_native_event_entry * _vmware_native_table
Return codes and api definitions.
int _vmware_ntv_code_to_descr(unsigned int EventCode, char *name, int len)
int _vmware_write(hwd_context_t *ctx, hwd_control_state_t *ctrl, long_long events[])
char events[MAX_EVENTS][BUFSIZ]
long long values[VMWARE_MAX_COUNTERS]
#define VMWARE_HOST_CPU_MHZ
#define VMWARE_CPU_RESERVATION_MHZ
int _vmware_ctl(hwd_context_t *ctx, int code, _papi_int_option_t *option)
int _vmware_read(hwd_context_t *ctx, hwd_control_state_t *ctl, long_long **events, int flags)
#define VMWARE_ELAPSED_TIME
#define VMWARE_MEM_LIMIT_MB
static long long _vmware_hardware_read(struct _vmware_context *context, int starting)
char symbol[PAPI_HUGE_STR_LEN]
#define PAPI_HUGE_STR_LEN
int which_counter[VMWARE_MAX_COUNTERS]
__attribute__((constructor))
#define VMWARE_CPU_LIMIT_MHZ
int _vmware_shutdown_component(void)
#define SUBDBG(format, args...)
int _vmware_update_control_state(hwd_control_state_t *ctl, NativeInfo_t *native, int count, hwd_context_t *ctx)
int _vmware_start(hwd_context_t *ctx, hwd_control_state_t *ctl)
#define VMWARE_MAX_COUNTERS
char name[PAPI_MAX_STR_LEN]
int _vmware_reset(hwd_context_t *ctx, hwd_control_state_t *ctl)
#define VMWARE_MEM_ACTIVE_MB
char description[PAPI_HUGE_STR_LEN]
#define VMWARE_MEM_BALLOONED_MB
int _vmware_ntv_code_to_info(unsigned int EventCode, PAPI_event_info_t *info)
char name[PAPI_MAX_STR_LEN]
#define VMWARE_MEM_SHARED_MB
struct _vmware_register ra_bits
static int LoadFunctions(void)
long long start_values[VMWARE_MAX_COUNTERS]
#define VMWARE_MEM_USED_MB
char units[PAPI_MIN_STR_LEN]
#define VMWARE_MEM_MAPPED_MB
papi_vector_t _vmware_vector
int _vmware_init_component(int cidx)
int _vmware_shutdown_thread(hwd_context_t *ctx)
#define VMWARE_CPU_SHARES
#define VMWARE_CPU_STOLEN_MS
#define VMWARE_MEM_RESERVATION_MB
long long value[VMWARE_MAX_COUNTERS]