Hey Michael,

I can reproduce that on the latest bits as well. Please file a bug and we'll
try to get this fixed. In the meantime, you can work around the problem by
using the fbt provider:

fbt::kaio:entry
/args[0][0] == 0/ /* AIOREAD */
{
        printf("*** dtrace: kaio read %d %d 0x%x %d %d %d 0x%x\n",
            args[0][0], args[0][1], args[0][2], args[0][3],
            args[0][4], args[0][5], args[0][6]);
}

*** dtrace: kaio read 0 3 0x8061280 2048 4096 0 0x804777c

Note that the offset is a 64-bit that's split between the 4th and 5th
parameters.

Please file a bug on bugs.opensolaris.org.

Adam

On Fri, Feb 27, 2009 at 01:24:16PM +0100, Michael Mueller wrote:
> I tried on these systems, all with the same result:
> 
>   Solaris 10 6/06 SPARC, kernel 64 bit, app 32 bit, large file support
>   Solaris 10 10/08 i386, kernel 64 bit, app 32 bit, large file support
>   Solaris 10 10/08 i386, kernel 64 bit, app 64 bit
> 
> Michael
> 
> Adam Leventhal wrote:
> > 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
> > 
> > 
> 
> 
> -- 
> 
> === Michael Mueller ==================
> Web: http://www.michael-mueller-it.de
> ======================================

-- 
Adam Leventhal, Fishworks                     http://blogs.sun.com/ahl
_______________________________________________
dtrace-discuss mailing list
dtrace-discuss@opensolaris.org

Reply via email to