Phil,
On Wed, Jan 17, 2007 at 07:32:03PM +0100, Philip J. Mucci wrote:
>
> Another problem I had spotted was with self notification, but that
> didn't show up in the libpfm test suite, In PAPI I use the sigpoll.si_fd
> value from the signal handler to find out which FD I should read() the
> data from. If you look in notify_self, you'll see that Stefane cheats
> and stores it in a global variable. ;-) (BTW, Stefane this should be
> changed to read it from the context...it's more useful to users that way
> and tests more of the system) Now, I'm using a 64 bit 2.6.15 kernel with
> 64 bit user land and the si_fd was zero according to the sig handler.
> Inspecting the signal context indicated that there was an wrong offset
> somewhere...because the correct FD was in the structure, just at an
> offset I didn't expect.
>
If you look at notify_self2.c, you'll have the example you are looking for,i.e.,
one that uses si_fd. Note that on some arch, you MUST set:
sigaction.sa_flags = SA_SIGINFO;
in order to have valid siginfo data, otherwise you'll get zeroes.
> I would recommend that on your system, you try digging out the si_fd
> from the signal context and see if that value is 0 or if it is a valid
> context. That would be a linux bug (maybe in the libc headers) and needs
> to be fixed.
>
One of the reasons why I have 3 notify_self examples is to show three different
ways of getting notification for yourself.
--
-Stephane
_______________________________________________
perfmon mailing list
[email protected]
http://www.hpl.hp.com/hosted/linux/mail-archives/perfmon/