hdr->hdr_version = PFM_DEFAULT_SMPL_VERSION;
hdr->hdr_buf_size = arg->buf_size;
- hdr->hdr_cur_pos = (void *)((unsigned long)buf)+sizeof(*hdr);
- hdr->hdr_last_pos = (void *)((unsigned long)buf)+arg->buf_size;
+ hdr->hdr_cur_offs = sizeof(*hdr);
hdr->hdr_overflows = 0UL;
hdr->hdr_count = 0UL;
- DPRINT(("[%d] buffer=%p buf_size=%lu hdr_size=%lu hdr_version=%u\n",
+ DPRINT(("[%d] buffer=%p buf_size=%lu hdr_size=%lu hdr_version=%u cur_offs=%lu\n",
task->pid,
buf,
hdr->hdr_buf_size,
sizeof(*hdr),
- hdr->hdr_version));
+ hdr->hdr_version,
+ hdr->hdr_cur_offs));
return 0;
}
}
hdr = (pfm_default_smpl_hdr_t *)buf;
- cur = hdr->hdr_cur_pos;
- last = hdr->hdr_last_pos;
+ cur = buf+hdr->hdr_cur_offs;
+ last = buf+hdr->hdr_buf_size;
ovfl_pmd = arg->ovfl_pmd;
ovfl_notify = arg->ovfl_notify;
/*
* update position for next entry
*/
- hdr->hdr_cur_pos = cur + sizeof(*ent) + (npmds << 3);
+ hdr->hdr_cur_offs += sizeof(*ent) + (npmds << 3);
/*
* keep same ovfl_pmds, ovfl_notify
hdr->hdr_overflows++;
/*
- * if no notification is needed, then we saturate the buffer
+ * if no notification requested, then we saturate the buffer
*/
if (ovfl_notify == 0) {
- hdr->hdr_count = 0UL;
arg->ovfl_ctrl.bits.notify_user = 0;
arg->ovfl_ctrl.bits.block_task = 0;
arg->ovfl_ctrl.bits.mask_monitoring = 1;
hdr = (pfm_default_smpl_hdr_t *)buf;
- hdr->hdr_count = 0UL;
- hdr->hdr_cur_pos = (void *)((unsigned long)buf)+sizeof(*hdr);
+ hdr->hdr_count = 0UL;
+ hdr->hdr_cur_offs = sizeof(*hdr);
ctrl->bits.mask_monitoring = 0;
ctrl->bits.reset_ovfl_pmds = 1; /* uses long-reset values */
*/
typedef struct {
unsigned long hdr_count; /* how many valid entries */
- void *hdr_cur_pos; /* current position in the buffer */
- void *hdr_last_pos; /* first byte beyond buffer */
+ unsigned long hdr_cur_offs; /* current offset from top of buffer */
+ unsigned long hdr_reserved2; /* reserved for future use */
unsigned long hdr_overflows; /* how many times the buffer overflowed */
unsigned long hdr_buf_size; /* how many bytes in the buffer */
+
unsigned int hdr_version; /* contains perfmon version (smpl format diffs) */
unsigned int hdr_reserved1; /* for future use */
unsigned long hdr_reserved[10]; /* for future use */