Qihua Wu
2009-Aug-07 13:48 UTC
[dtrace-discuss] function of semtimedop is not in syscall provider in dtrace
If use truss on an oracle process. we could see something like the following, so semtimedop should be a syscall 22459/1: semtimedop(9, 0xFFFFFD7FFFDFE648, 1, 0xFFFFFD7FFFDFE488) EAGAIN 22459/1: semnum=15 semop=-1 semflg=0 22459/1: timeout: 2.060000000 sec but the following command shows nothing. How can I trace semtimedop using dtrace ? dtrace -l|grep semtimedop Thanks, Daniel -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/dtrace-discuss/attachments/20090807/97c4ac17/attachment.html>
Jon Haslam
2009-Aug-07 18:34 UTC
[dtrace-discuss] function of semtimedop is not in syscall provider in dtrace
Hi Daniel,> If use truss on an oracle process. we could see something like the > following, so semtimedop should be a syscall > > 22459/1: semtimedop(9, 0xFFFFFD7FFFDFE648, 1, 0xFFFFFD7FFFDFE488) EAGAIN > 22459/1: semnum=15 semop=-1 semflg=0 > 22459/1: timeout: 2.060000000 sec > > > > but the following command shows nothing. How can I trace semtimedop > using dtrace ? > dtrace -l|grep semtimedopUnfortunately you are going to have to deal with a bit more syscall implementation than you should have to with SYS-V semphore operations. Under the covers a semtimedop(2) is a sub-operation for the undocumented semsys call. The case you are dealing with here is actually documented in the user guide: http://wikis.sun.com/display/DTrace/syscall+Provider Simply do something like: syscall::semsys:entry /arg0 == 4/ { /* SEMTIMEDOP */ } There is a piece of work we''re thinking of doing to improve this situation but it would be a non-trivial undertaking. Jon.
Qihua Wu
2009-Aug-10 00:15 UTC
[dtrace-discuss] function of semtimedop is not in syscall provider in dtrace
Thanks Jon, That''s really helpful. Thanks, Daniel On Sat, Aug 8, 2009 at 2:34 AM, Jon Haslam <Jonathan.Haslam at sun.com> wrote:> Hi Daniel, > > > If use truss on an oracle process. we could see something like the >> following, so semtimedop should be a syscall >> >> 22459/1: semtimedop(9, 0xFFFFFD7FFFDFE648, 1, 0xFFFFFD7FFFDFE488) EAGAIN >> 22459/1: semnum=15 semop=-1 semflg=0 >> 22459/1: timeout: 2.060000000 sec >> >> >> >> but the following command shows nothing. How can I trace semtimedop using >> dtrace ? >> dtrace -l|grep semtimedop >> > > Unfortunately you are going to have to deal with a bit more > syscall implementation than you should have to with SYS-V > semphore operations. Under the covers a semtimedop(2) is a > sub-operation for the undocumented semsys call. The case you > are dealing with here is actually documented in the user guide: > > http://wikis.sun.com/display/DTrace/syscall+Provider > > Simply do something like: > > syscall::semsys:entry > /arg0 == 4/ > { > /* SEMTIMEDOP */ > } > > There is a piece of work we''re thinking of doing to improve > this situation but it would be a non-trivial undertaking. > > Jon. >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.opensolaris.org/pipermail/dtrace-discuss/attachments/20090810/af3ba455/attachment.html>