Hey Michael,

What version of Solaris are you running, and what bitness (32 or 64) are your process and kernel?
Thanks.

Adam

On Feb 26, 2009, at 3:34 AM, Michael Mueller wrote:

Hi,

For the kaio sys call (aioread) I found that the sycall provider does not show all arguments correctly, while good old truss does. Is this a bug?:

DTrace script:

 /usr/sbin/dtrace -q -c tst -s /dev/fd/0 <<eof
 syscall::kaio:entry
 /arg0 == 0/ /* AIOREAD */
 {
   printf("*** dtrace: kaio read %d %d 0x%x %d %d %d 0x%x %d %d %d\n",
         arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
 }
 eof

DTrace output:
-------

 *** dtrace: kaio read 0 3 0x20f70 2048 0 4096 0x1182001a03 178 0 0
                                        ^ strange from arg4 on

Truss output:
-------------

 kaio(AIOREAD, 3, 0x00020F70, 2048, 4096, 0xFFBFF920) = 0
                                           ^ this is the correct
                                             address passed by tst.c

Test program output:
--------------------

 aioread(fd 3, bufp 20f70, bufs 2048, offset 4096, whence 0,
        resultp ffbff920)


C Program tst.c:
----------------

 #include <stdio.h>
 #include <sys/types.h>
 #include <sys/asynch.h>
 #include <sys/stat.h>
 #include <fcntl.h>
 #include <unistd.h>

 #define OFF 4096
 #define L (2048)
 char buf[L];

 int
 main()
 {
       int fd;
       aio_result_t r, *p;

       fd = open("/dbspaces/michaelm/RAW1", O_RDONLY);
       printf("aioread(fd %d, bufp %p, bufs %d, offset %d,"
" whence %d, resultp %p)\n", fd, buf, L, OFF, SEEK_SET, &r);
       if (aioread(fd, buf, L, OFF, SEEK_SET, &r))
           perror("aioread");
 }
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org


--
Adam Leventhal, Fishworks                        http://blogs.sun.com/ahl

_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to