On Wed, 2013-04-03 at 18:29 +0100, John Stultz wrote:On 04/03/2013 10:19 AM, Pawel Moll wrote:To make myself clear: I consider the code as it is a hack.On Tue, 2013-04-02 at 17:19 +0100, John Stultz wrote:#2 makes my nose wrinkle.But if we're going to have to doOk, so how about the code below?
this via a clockid, I'm going to want it to be done via a dynamic posix
clockid, so its clear its tightly tied with perf and not considered a
generic interface (and I can clearly point folks having problems to the
perf maintainers ;).
There are two distinct parts of the "solution":
1. The dynamic posix clock, as you suggested. Then one can get the perf
timestamp by doing:
clock_fd = open("/dev/perf-clock", O_RDONLY);
clock_gettime(FD_TO_CLOCKID(clock_fd), &ts)
2. A sort-of-hack in the get_posix_clock() function making it possible
to do the same using the perf event file descriptor, eg.:
fd = sys_perf_event_open(&attr, -1, 0, -1, 0);
clock_gettime(FD_TO_CLOCKID(fd), &ts)
Forgive me for being somewhat ignorant on theMy thinking: the perf syscall returns a file descriptor already, so it
perf interfaces, but why is the second portion necessary or beneficial?
would make sense to re-use it in the clock_gettime() call instead of
jumping through loops to open a character device file, which may not
exist at all (eg. no udev) or may be placed or named in a random way
(eg. some local udev rule).
I'm open for different opinions :-)