diff options
Diffstat (limited to 'gprofng/libcollector/hwprofile.c')
-rw-r--r-- | gprofng/libcollector/hwprofile.c | 81 |
1 files changed, 53 insertions, 28 deletions
diff --git a/gprofng/libcollector/hwprofile.c b/gprofng/libcollector/hwprofile.c index 3ca89d1..092d665 100644 --- a/gprofng/libcollector/hwprofile.c +++ b/gprofng/libcollector/hwprofile.c @@ -25,6 +25,7 @@ #include <dlfcn.h> #include <stdlib.h> #include <stdio.h> +#include <stddef.h> #include <unistd.h> #include <errno.h> #include <sys/syscall.h> @@ -823,66 +824,90 @@ hwclogwrite0 () collector_interface->writeLog ("<profdata fname=\"%s\"/>\n", module_interface.description); /* Record Hwcntr_packet description */ - Hwcntr_packet *pp = NULL; collector_interface->writeLog ("<profpckt kind=\"%d\" uname=\"" STXT ("Hardware counter profiling data") "\">\n", HW_PCKT); collector_interface->writeLog (" <field name=\"LWPID\" uname=\"" STXT ("Lightweight process id") "\" offset=\"%d\" type=\"%s\"/>\n", - &pp->comm.lwp_id, sizeof (pp->comm.lwp_id) == 4 ? "INT32" : "INT64"); + (int) offsetof (Hwcntr_packet, comm.lwp_id), + fld_sizeof (Hwcntr_packet, comm.lwp_id) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"THRID\" uname=\"" STXT ("Thread number") "\" offset=\"%d\" type=\"%s\"/>\n", - &pp->comm.thr_id, sizeof (pp->comm.thr_id) == 4 ? "INT32" : "INT64"); + (int) offsetof (Hwcntr_packet, comm.thr_id), + fld_sizeof (Hwcntr_packet, comm.thr_id) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"CPUID\" uname=\"" STXT ("CPU id") "\" offset=\"%d\" type=\"%s\"/>\n", - &pp->comm.cpu_id, sizeof (pp->comm.cpu_id) == 4 ? "INT32" : "INT64"); + (int) offsetof (Hwcntr_packet, comm.cpu_id), + fld_sizeof (Hwcntr_packet, comm.cpu_id) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"TSTAMP\" uname=\"" STXT ("High resolution timestamp") "\" offset=\"%d\" type=\"%s\"/>\n", - &pp->comm.tstamp, sizeof (pp->comm.tstamp) == 4 ? "INT32" : "INT64"); + (int) offsetof (Hwcntr_packet, comm.tstamp), + fld_sizeof (Hwcntr_packet, comm.tstamp) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"FRINFO\" offset=\"%d\" type=\"%s\"/>\n", - &pp->comm.frinfo, sizeof (pp->comm.frinfo) == 4 ? "INT32" : "INT64"); + (int) offsetof (Hwcntr_packet, comm.frinfo), + fld_sizeof (Hwcntr_packet, comm.frinfo) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"HWCTAG\" uname=\"" STXT ("Hardware counter index") "\" offset=\"%d\" type=\"%s\"/>\n", - &pp->tag, sizeof (pp->tag) == 4 ? "INT32" : "INT64"); + (int) offsetof (Hwcntr_packet, tag), + fld_sizeof (Hwcntr_packet, tag) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"HWCINT\" uname=\"" STXT ("Hardware counter interval") "\" offset=\"%d\" type=\"%s\"/>\n", - &pp->interval, sizeof (pp->interval) == 4 ? "INT32" : "INT64"); + (int) offsetof (Hwcntr_packet, interval), + fld_sizeof (Hwcntr_packet, interval) == 4 ? "INT32" : "INT64"); collector_interface->writeLog ("</profpckt>\n"); if (hwcdef_has_memspace) { /* Record MHwcntr_packet description */ - MHwcntr_packet *xpp = NULL; collector_interface->writeLog ("<profpckt kind=\"%d\" uname=\"" STXT ("Hardware counter profiling data") "\">\n", MHWC_PCKT); collector_interface->writeLog (" <field name=\"LWPID\" uname=\"" STXT ("Lightweight process id") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->comm.lwp_id, sizeof (xpp->comm.lwp_id) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, comm.lwp_id), + fld_sizeof (MHwcntr_packet, comm.lwp_id) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"THRID\" uname=\"" STXT ("Thread number") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->comm.thr_id, sizeof (xpp->comm.thr_id) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, comm.thr_id), + fld_sizeof (MHwcntr_packet, comm.thr_id) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"CPUID\" uname=\"" STXT ("CPU id") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->comm.cpu_id, sizeof (xpp->comm.cpu_id) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, comm.cpu_id), + fld_sizeof (MHwcntr_packet, comm.cpu_id) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"TSTAMP\" uname=\"" STXT ("High resolution timestamp") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->comm.tstamp, sizeof (xpp->comm.tstamp) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, comm.tstamp), + fld_sizeof (MHwcntr_packet, comm.tstamp) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"FRINFO\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->comm.frinfo, sizeof (xpp->comm.frinfo) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, comm.frinfo), + fld_sizeof (MHwcntr_packet, comm.frinfo) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"HWCTAG\" uname=\"" STXT ("Hardware counter index") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->tag, sizeof (xpp->tag) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, tag), + fld_sizeof (MHwcntr_packet, tag) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"HWCINT\" uname=\"" STXT ("Hardware counter interval") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->interval, sizeof (xpp->interval) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, interval), + fld_sizeof (MHwcntr_packet, interval) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"VADDR\" uname=\"" STXT ("Virtual address (data)") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->ea_vaddr, sizeof (xpp->ea_vaddr) == 4 ? "UINT32" : "UINT64"); + (int) offsetof (MHwcntr_packet, ea_vaddr), + fld_sizeof (MHwcntr_packet, ea_vaddr) == 4 ? "UINT32" : "UINT64"); collector_interface->writeLog (" <field name=\"PADDR\" uname=\"" STXT ("Physical address (data)") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->ea_paddr, sizeof (xpp->ea_paddr) == 4 ? "UINT32" : "UINT64"); + (int) offsetof (MHwcntr_packet, ea_paddr), + fld_sizeof (MHwcntr_packet, ea_paddr) == 4 ? "UINT32" : "UINT64"); collector_interface->writeLog (" <field name=\"VIRTPC\" uname=\"" STXT ("Virtual address (instruction)") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->pc_vaddr, sizeof (xpp->pc_vaddr) == 4 ? "UINT32" : "UINT64"); + (int) offsetof (MHwcntr_packet, pc_vaddr), + fld_sizeof (MHwcntr_packet, pc_vaddr) == 4 ? "UINT32" : "UINT64"); collector_interface->writeLog (" <field name=\"PHYSPC\" uname=\"" STXT ("Physical address (instruction)") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->pc_paddr, sizeof (xpp->pc_paddr) == 4 ? "UINT32" : "UINT64"); + (int) offsetof (MHwcntr_packet, pc_paddr), + fld_sizeof (MHwcntr_packet, pc_paddr) == 4 ? "UINT32" : "UINT64"); collector_interface->writeLog (" <field name=\"EA_PAGESIZE\" uname=\"" STXT ("Page size (data)") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->ea_pagesz, sizeof (xpp->ea_pagesz) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, ea_pagesz), + fld_sizeof (MHwcntr_packet, ea_pagesz) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"PC_PAGESIZE\" uname=\"" STXT ("Page size (instruction)") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->pc_pagesz, sizeof (xpp->pc_pagesz) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, pc_pagesz), + fld_sizeof (MHwcntr_packet, pc_pagesz) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"EA_LGRP\" uname=\"" STXT ("Page locality group (data)") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->ea_lgrp, sizeof (xpp->ea_lgrp) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, ea_lgrp), + fld_sizeof (MHwcntr_packet, ea_lgrp) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"PC_LGRP\" uname=\"" STXT ("Page locality group (instruction)") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->pc_lgrp, sizeof (xpp->pc_lgrp) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, pc_lgrp), + fld_sizeof (MHwcntr_packet, pc_lgrp) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"LWP_LGRP_HOME\" uname=\"" STXT ("LWP home lgroup id") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->lgrp_lwp, sizeof (xpp->lgrp_lwp) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, lgrp_lwp), + fld_sizeof (MHwcntr_packet, lgrp_lwp) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"PS_LGRP_HOME\" uname=\"" STXT ("Process home lgroup id") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->lgrp_ps, sizeof (xpp->lgrp_ps) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, lgrp_ps), + fld_sizeof (MHwcntr_packet, lgrp_ps) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"MEM_LAT\" uname=\"" STXT ("Memory Latency Cycles") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->latency, sizeof (xpp->latency) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, latency), + fld_sizeof (MHwcntr_packet, latency) == 4 ? "INT32" : "INT64"); collector_interface->writeLog (" <field name=\"MEM_SRC\" uname=\"" STXT ("Memory Data Source") "\" offset=\"%d\" type=\"%s\"/>\n", - &xpp->data_source, sizeof (xpp->data_source) == 4 ? "INT32" : "INT64"); + (int) offsetof (MHwcntr_packet, data_source), + fld_sizeof (MHwcntr_packet, data_source) == 4 ? "INT32" : "INT64"); collector_interface->writeLog ("</profpckt>\n"); } } |