

#include <nitro/os.h>
s32 OS_LockCard( u16 lockID );
| lockID | カードのロックに用いるID |
OS_LOCK_SUCCESS ならば成功です。( 0に定義されています )
成功するまで試行しつづけるので、返り値は必ずこの値になります。
プロセッサ間やモジュール間で共有リソース(この関数ではカード)を排他制御するためにスピンロックを行ないます。
この関数はロックが成功するまで試行しつづけます。ロックに成功した場合にはEXMEMCNTレジスタへアクセスし、カードバスへのアクセス権を取得します。プロセッサ間の共有リソースは必ずロック後に使用して下さい。プロセッサ専有のリソースはタイミング的に調整できるのであればロックしなくても構いません。
lockID はロックのためのIDで、プロセッサ間やモジュール間で重らないようにOS_GetLockID() を用いてIDを取得するとよいでしょう。
IOレジスタの、EXMEMCNT(0x4000204)にアクセスしています。
OS_UnlockCard, OS_TryLockCard, OS_LockCartridge, OS_GetLockID
2004/11/04 内部動作を追加
2004/07/22 引数の型を u32 → u16 に変更
2004/06/21 初版