On 02/18/11 07:55, Peter Zijlstra wrote:
quoted
Another gotcha is in perf_output_sample there is:
struct {
u32 size;
u32 data;
} raw = {
.size = sizeof(u32),
.data = 0,
};
While that meets the 8-byte stride I was concerned that changing the
size field to u64 breaks ABI.
It would.
No, what you need to do is provide data that is sized such that it
matches the 8b stride adding padding where needed.
I want to push a 64-bit counter to userspace. By definition it meets the
8-byte stride. Now how do I get sizeof(size field) + sizeof(data) to
meet an 8-byte stride? I can't when sizeof(size field) = 4. Ok, I can
pad the data with 4 bytes, but then I an api to tell the user to strip
the 4-byte pad. Seems like an odd way to go.
Why is an 8-byte stride preferred over a 4-bytes?
David
Anyway, I don't think you need RAW at all.