instance Storable AIOCB where<br><br> sizeOf _ = (#const sizeof (struct aiocb))<br><br> alignment _ = 1<br><br> poke p_AIOCB (AIOCB aioFd aioLioOpcode aioReqPrio aioOffset aioBuf aioBytes aioSigevent) = do<br><br>
(#poke struct aiocb, aio_fildes) p_AIOCB aioFd<br><br> (#poke struct aiocb, aio_lio_opcode) p_AIOCB aioLioOpcode<br><br> (#poke struct aiocb, aio_reqprio) p_AIOCB aioReqPrio<br><br> (#poke struct aiocb, aio_offset) p_AIOCB aioOffset<br>
<br> (#poke struct aiocb, aio_buf) p_AIOCB aioBuf<br><br> (#poke struct aiocb, aio_nbytes) p_AIOCB aioBytes<br><br> (#poke struct aiocb, aio_sigevent) p_AIOCB aioSigevent<br><br> peek p_AIOCB = do<br>
<br> aioFd <- (#peek struct aiocb, aio_fildes) p_AIOCB<br><br> aioLioOpcode <- (#peek struct aiocb, aio_lio_opcode) p_AIOCB<br><br> aioReqPrio <- (#peek struct aiocb, aio_reqprio) p_AIOCB<br><br>
aioOffset <- (#peek struct aiocb, aio_offset) p_AIOCB<br><br> aioBuf <- (#peek struct aiocb, aio_buf) p_AIOCB<br><br> aioBytes <- (#peek struct aiocb, aio_nbytes) p_AIOCB<br><br> aioSigevent <- (#peek struct aiocb, aio_sigevent) p_AIOCB<br>
<br> return (AIOCB aioFd aioLioOpcode aioReqPrio aioOffset aioBuf aioBytes aioSigevent)<br><br><br><br><div class="gmail_quote">On Tue, Jul 1, 2008 at 2:48 AM, Bulat Ziganshin <<a href="mailto:bulat.ziganshin@gmail.com">bulat.ziganshin@gmail.com</a>> wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Hello Vasili,<br>
<br>
Tuesday, July 1, 2008, 11:42:26 AM, you wrote:<br>
<br>
looks ok, show us your peek/poke code<br>
<div><div></div><div class="Wj3C7c"><br>
<br>
> Hello,<br>
<br>
> I am also testing my aio support. The aio_write binding<br>
> seems to work ok .. as well as aio_error, Aio_return is a problem<br>
> child. I think I wrote a really simple binding. I always receive<br>
> nbytes as 0. I have been staring at the code hoping to catch a<br>
> stupid mistake. I put putStrLn's in the code. .....Here is the code ...<br>
><br>
> aioReturn :: AIOCB -> IO (AIOCB, ByteCount)<br>
> aioReturn aiocb = do<br>
> allocaBytes (#const sizeof(struct aiocb)) $ \ p_aiocb -> do<br>
> poke p_aiocb aiocb<br>
> count <- throwErrnoIfMinus1 "aioReturn" (c_aio_return p_aiocb)<br>
> aiocb <- peek p_aiocb<br>
> return (aiocb, fromIntegral count)<br>
<br>
> foreign import ccall safe "aio.h aio_return"<br>
> c_aio_return :: Ptr AIOCB -> IO CInt<br>
<br>
> Maybe someone can spot something that I haven't.<br>
><br>
> Thanks, Vasili<br>
><br>
<br>
<br>
</div></div><font color="#888888">--<br>
Best regards,<br>
Bulat mailto:<a href="mailto:Bulat.Ziganshin@gmail.com">Bulat.Ziganshin@gmail.com</a><br>
<br>
</font></blockquote></div><br>