osSyncPrintf.htm
2.17 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
<HTML>
<HEAD>
<TITLE>HTML 文書</TITLE>
<META NAME="GENERATOR" CONTENT="Internet Assistant for Microsoft Word 2.03j">
</HEAD>
<BODY>
<P>
<B>osSyncPrintf(3P) <BR>
</B>
<P>
<B>関数名<BR>
</B>
<P>
osSyncPrintf
<P>
→ 書式付きテキストをデバッグポートに出力
<P>
<B>構文<BR>
</B>
<P>
#include <os.h>
<P>
void osSyncPrintf(const char *format, .../* args
*/); <BR>
<P>
<B>説明<BR>
</B>
<P>
<B>osSyncPrintf</B> コールは
libc 関数 printf と同様のテキスト変換を実行します。テキストの出力は、ターゲットシステムからデバッグポート経由でデバッグホスト上の<A HREF="gload.htm">gload</A>プロセスに送信されます。テキストは、<A HREF="gload.htm">gload</A>
プロセスが稼働中の stdout デバイス(通常シェルウインドウ)に書き込まれます。
<BR>
</FONT>
<P>
<B>osSyncPrintf</B>の効率を上げるために、<A HREF="../os/osInitRdb.htm">osInitRdb</A>を最初にコールしてrdb出力バッファを作成することをお勧めします。<B>osSyncPrintf</B>を使用するより前に割り込みサービスハンドラを機能させる必要があります。したがって、<B>osSyncPrintf</B>はbootスレッドから呼ぶべきではありません。
<BR>
</FONT>
<P>
複数のスレッドが容易に出力機能を使用できるので、データをスレッド切り替えしても混在させることが出来ます。
release2.0fでは、<B>osSyncPrintf</B>がゲームのパフォーマンスへ与える影響をすくなくするように変更しました。これまでは、<B>osSyncPrintf</B>を呼ぶと、ホストのIndyに全データを転送し終わるまでスレッドを停止させるので、そのスレッド停止の為の割り込み処理とスレッド切り替を引き起こしていたようです。こういったことはもう起こらないです。
<BR>
<P>
<B>警告<BR>
</B>
<P>
一度に大量のデータを表示した場合、カーネルのprintfバッファがオーバーフローすることがあります。この場合、システムはコンソールにワーニングメッセージを表示しようとします。頻繁にストリームデータを出力した場合、割り込みサービスの全ての時間を費やすような割り込みをIndyに引き起こすことがあります。この場合、Indyがフリーズしたようになり、その後、割り込みによりプライオリティオーバーでユーザインタラクション処理されます。<B>osSyncPrintf</B>の処理の流れが止められた場合、Indyは復帰して普通の関数処理をするでしょう。
<BR>
<P>
<B>参照<BR>
</B>
<P>
sprintf(3),<A HREF="../os/osInitialize.htm">osInitalize(3P)</A>,printf(3S)
<P>
</BODY>
</HTML>