osPfsIsPlug.htm
2.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="mitu">
</HEAD>
<BODY>
<P>
<B><FONT FACE="Arial">osPfsIsPlug(3P)<BR>
</FONT></B>
<P>
<B>関数名<BR>
</B>
<P>
osPfsIsPlug
<P>
→ コントローラに差し込まれているコントローラパックを検出<BR>
<P>
<B>構文<BR>
</B>
<P>
#include <ultra64.h><BR>
<P>
<B>s32 osPfsIsPlug(OSMesgQueue *mq, u8 *bitpattern);<BR></B>
<P>
<B>説明<BR>
</B>
<P>
関数osPfsIsPlugは、どのコントローラにコントローラパックが挿されているのかを検出し、その結果をビットパターンとしてbitpatternに返します。bitpatternのビット0、1、2、3が、それぞれ、コントローラ0、1、2、3に対応しています。
<BR>
<P>
mqはOS_EVENT_SIイベントに関連付けられた初期化済みのメッセージ待ち行列でなければなりません。この関連付けの作成方法については<A HREF="osSetEventMesg.htm">osSetEventMesg</A>,(3P)を参照してください。
<BR>
<P>
関数osPfsIsPlugの内部では、mqでメッセージ待ちを行うので、このmqを共有してはいけません。また、OSの低レベルでの同期の初期化のため、osPfsIsPlugの呼び出しを行う前に、先に<A HREF="osContInit.htm">osContInit</A>,(3P)を呼び出しておく必要があります。
<BR>
<P>
呼び出しが成功すれば0値が返され、そうでなければ-1が返されます。
<BR>
<PRE WIDTH=132>
<FONT SIZE=6>例
</FONT><FONT SIZE=4 FACE="MS ゴシック">
main()
{
OSMesgQueue intMesgQueue;
OSMesg intMesgBuf[1];
OSContStatus sdata[MAXCONTROLLERS];
u8 cont_pattern;
u8 pak_pattern;
osCreateMesgQueue(&intMesgQueue, intMesgBuf, 1);
osSetEventMesg(OS_EVENT_SI, &intMesgQueue, dummyMessage);
osContInit(&intMesgQueue, &cont_pattern, &sdata[0]);
osPfsIsPlug(&intMesgQueue, &pak_pattern);
}
</FONT></PRE>
<P>
<B>参考<BR>
</B>
<P>
osPfsIsPlugでは、コントローラ&コントローラパックの状態を調べるリクエストコマンドを発行し、すべてのコントローラポートを調べ、その結果をビットパターンに変換して返します。
<P>
それに対して、osPfsInitPakの方は、一つのコントローラについてのみ処理をします。そして、処理の内容は、osPfsIsPlugで行っているコントローラ&コントローラパックの状態を調査すること以外にも、OSPfs構造体の初期化や、コントローラパックのID領域の取得やラベル領域の取得、osPfsCheckerの呼び出しといったことを行っています。そのため、コントローラパックが挿し込まれているかどうかを判断するのに、osPfsInitPakを使用すると、非常に時間がかかります。
<P>
単に状態を調べる場合、一番速いのは、osContStartQuery&osContGetQueryです。これらの関数はosPfsIsPlug()と行っている処理は同じで、エラーチェック等が簡素になっているためです。
<P>
<B>参照<BR>
</B>
<A HREF="osPfsInitPak.htm">osPfsInitPak</A>(3P),
<A HREF="osPfsAllocateFile.htm">osPfsAllocateFile</A>(3P),
<A HREF="osPfsChecker.htm">osPfsChecker</A>(3P),
<A HREF="osPfsFileState.htm">osPfsFileState</A>(3P),
<A HREF="osPfsFreeBlocks.htm">osPfsFreeBlocks</A>(3P),
<A HREF="osPfsInitPak.htm">osPfsInitPak</A>(3P),
<A HREF="osPfsReSizeFile.htm">osPfsReSizeFile</A>(3P),
<A HREF="osPfsReadWriteFile.htm">osPfsReadWriteFile</A>(3P),
<A HREF="osPfsSetLabel.htm">osPfsSetLabel</A>(3P),
</BODY>
</HTML>