1<?xml version="1.0" encoding="utf-8"?> 2<html><head> 3 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 4 <meta http-equiv="Content-Style-Type" content="text/css" /> 5 <title>CTR-SDK API</title> 6 <link rel="stylesheet" href="../css/page.css" type="text/css" /> 7 <style> 8 h4 9 { 10 margin-left: 0.8em; 11 padding-left: 0.3em; 12 border-bottom: solid 1px #4499FF; 13 width: 20em; 14 } 15 </style> 16</head><body> 17 18 <h1>CTR-SDK API</h1> 19 20 <h2>Overview</h2> 21 <p> 22 This section describes general assumptions regarding the CTR-SDK API. 23 </p> 24 25 26<!-- <h2>スレッドセーフティ</h2> <p> 特に記載のない限り CTR-SDK の API はスレッドセーフではありません。 複数のスレッドから API を呼び出す場合は排他制御等の適切な対応を行ってください。 </p> <h3>スレッドセーフな範囲</h3> <p> API のスレッドセーフティにはいくつかの種類の範囲があります。 </p> <h4>関数単位で排他が必要</h4> <p> 対象となる関数の呼び出しのみを複数のスレッドから 同時に行われないようにすればよいタイプです。 対象の関数を一つのスレッドのみで呼び出すようにすることでも対応できます。 </p> <p> <ref def="nn::os::SetDeviceMemorySize"/> などが該当します。 </p> <h4>名前空間単位で排他が必要</h4> <p> 関数単位の排他制御では不十分で 同じ名前空間に存在する全ての API 間でも排他制御が必要なタイプです。 </p> <p> <ref def="nn::cec::CTR"/> などが該当します。 </p> <h4>カテゴリ単位で排他が必要</h4> <p> 関数単位の排他制御では不十分で 特定の API 間でも排他制御が必要なタイプです。 </p> <p> <ref def="nn::cec::CTR::CecControl"/> などが該当します。 </p> <h4>クラス単位で排他が必要</h4> <p> あるクラスのメンバ間での排他制御が必要なタイプです。 </p> <p> <ref def="nn::fs::FileStream"/> などが該当します。 </p> <h4>インスタンス単位で排他が必要</h4> <p> あるクラスに対して、インスタンスの使用全般について排他制御が必要なものの、 異なるインスタンスとの同時使用は排他制御が不要なタイプです。 一つのインスタンスに対して複数のスレッドから同時に使用してはいけませんが、 異なるインスタンスを異なるスレッドが同時に使用することは可能です。 <br/> 以下では「インスタンス間でスレッドセーフ」と表現します。 </p> <p> <ref def="nn::fs::FileStream"/> などが該当します。 </p> <h3>スレッドセーフな API</h3> <p> 以下の API はスレッドセーフです。 </p> <ul> <li><ref def="nn::enc"/> 名前空間の API。</li> <li><ref def="nn::nstd"/> 名前空間の API</li> <li><ref def="nn::tpl"/> 名前空間の API。</li> <li><ref def="nn::crypto"/> 名前空間のクラスはインスタンス間でスレッドセーフです。 またグローバル関数はスレッドセーフです。</li> <li><ref def="nn::dbg"/> 名前空間のクラスはインスタンス間でスレッドセーフです。 またグローバル関数はスレッドセーフです。</li> <li><ref def="nn::math"/> 名前空間のクラスはインスタンス間でスレッドセーフです。 またグローバル関数はスレッドセーフです。</li> <li><ref def="nn::fnd"/> 名前空間のクラスはインスタンス間でスレッドセーフです。</li> <li><ref def="nn::jpeg"/> 名前空間のクラスはインスタンス間でスレッドセーフです。</li> <li><ref def="nn::os"/> 名前空間のクラスはインスタンス間でスレッドセーフです。</li> <li><ref def="nn::util"/> 名前空間のクラスはインスタンス間でスレッドセーフです。</li> <li><ref def="nn::Result"/> はインスタンス間でスレッドセーフです。</li> </ul> <h2>API 内部でのスレッド切り替え</h2> <p> 特に記載のない限り CTR-SDK の API は内部でスレッド切り替えを発生させる可能性があります。 </p> <h3>スレッド切り替えを行わない API</h3> <p> 以下の API はスレッド切り替えを行うことがありません。 ただし、API 呼び出し中にタイマ等の他の要因により スレッドが切り替わることはあります。 </p> <ul> <li><ref def="nn::crypto"/> 名前空間の API</li> <li><ref def="nn::cx"/> 名前空間の API</li> <li><ref def="nn::enc"/> 名前空間の API</li> <li><ref def="nn::fnd"/> 名前空間の API</li> <li><ref def="nn::gr"/> 名前空間の API</li> <li><ref def="nn::jpeg"/> 名前空間の API</li> <li><ref def="nn::math"/> 名前空間の API</li> <li><ref def="nn::nstd"/> 名前空間の API</li> <li><ref def="nn::tpl"/> 名前空間の API</li> <li><ref def="nn::util"/> 名前空間の API</li> <li><ref def="nn::Result"/></li> クラス </ul> --> 27 28 29 <h2>Use of Private APIs is Prohibited</h2> 30 <p> 31 Do not use private APIs. <br /> Private APIs may be added/deleted/changed without any prior or later notice. 32 </p> 33 34 35 <h2>Header <CODE>include</CODE></h2> 36 <p> 37 Unless otherwise specified, put <CODE>include</CODE> headers directly under <CODE>nn</CODE> directories (for example, <CODE>nn/os.h</CODE>). The structure of headers at a level below this may change. 38 </p> 39 40 41 <h2>Revision History</h2> 42 <div class="section"> 43 <dl class="history"> 44 <dt>2012/04/23</dt> 45 <dd>Initial version.</dd> 46 </dl> 47 </div> 48 49 50<hr><p>CONFIDENTIAL</p></body></html>