LeoReadWrite.htm 2.75 KB
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>

<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.03j">
</HEAD>
<BODY>
<P>
<B><FONT FACE="Arial">LeoReadWrite(3P)<BR>
</FONT></B>
<P>
<B>関数名</B>
<P>
LeoReadWrite
<P>
→64DDからの読み出し、書き込み<BR>

<P>
<B>構文</B> 
<PRE>
<FONT SIZE=4>#include &lt;PR/leo.h&gt;

s32 LeoReadWrite(LEOCmd *<U>cmdBlock</U>, s32 <U>direction</U>, u32 <U>startLBA</U>, 
                 void *<U>vaddr</U>, u32 <U>nLBAs</U>, OSMesgQueue *<U>mq</U>);
</FONT>
</PRE>
<P>
<B>説明</B>
<P>
<B>注意:</B>64DD関係の命令はすべて、rom DMA(ドライブ内ROM対象のDMAを含む)が行われて
いない、また行われないという仮定で設計されています。そのための注意点に関しては、64DD
プログラミングマニュアル「第12章 禁止事項、注意事項のまとめ」を参照してください。 <BR>
<BR>
<P>
<b>LeoReadWrite</b>関数は、RDRAM-64DD間のリード/ライトをします。この関数は、呼び出し
側で指定した転送の方向<U>direction</U>, 開始 LBA <U>startLBA</U>,  RDRAM アドレス
<U>vaddr</U>,  転送LBA数<U>nLBAs</U>, およびコマンドが完了したことを知らせるためのメッ
セージキュー<U>mq</U>といった引数にしたがって、コマンドブロック<U>cmdBlock</U>の種々の
パラメータのセットアップをします。
<P>
<U>nLBAs</U> には転送したい論理ブロック数を指定します。
<P>
RDRAM 仮想アドレス <U>vaddr</U> は 16バイトに整列しておいて下さい。これは
OS_DCACHE_ROUNDUP_ADDR(3P)を使用すると簡単に実現できます。
<P>
<U>cmdBlock</U>._nbytes には現在どこまでRead/Writeが行なわれたかが格納されます。たとえ
エラーが返ってきても、この位置までのデータは正常に読めたものとして使用することができます。
<BR>
<P>
引数で与えるコマンドブロック <U>cmdBlock</U> には何も設定する必要はありません。この関数
は処理を終了すると待ち行列<U>mq</U>にエラーコードを返します。エラーが起こる可能性がある
ので、プログラマは必ずこのエラーコードをチェックしなければいけません。
<BR>
<P>
返ってくる可能性のあるエラーとその原因、対処法は64DDプログラミングマニュアル
「第10章 エラー処理シーケンス」を参照して下さい。<BR>
<P>
返り値は、leo マネージャがまだ作成されていないとき -1、作成されていれば
0 となります。通常はチェックする必要はありません。<BR>
<P>
<B></B>
<P>
<PRE>
<FONT FACE="Courier">LEOCmd cmdBlock;</FONT>
<FONT FACE="Courier">u32 error;</FONT>
<FONT FACE="Courier">.....</FONT>
<FONT FACE="Courier">LeoReadWrite(&amp;cmdBlock, OS_READ, 5, (void*)0x80200000,</FONT>
<FONT FACE="Courier">             100, &amp;diskQ);</FONT>
<FONT FACE="Courier">osRecvMesg(&amp;diskQ, (OSMesg *)&amp;error, OS_MESG_BLOCK);<BR>
</FONT>
</PRE>
<P>
<B>参照</B>
<P>
<A HREF="LeoCreateLeoManager.htm">Leo*CreateLeoManager</A>(3P)
<BR>
<HR>
<P>
<A HREF="64dd_INDEX.htm">64DDのマニュアルページのメニューへ</A>
<P>
<A HREF="../n64man.htm">N64のマニュアルページのトップメニューへ</A>
<P>
 
</BODY>
</HTML>