OS_TryLockCard

構文

#include <nitro/os.h>
s32 OS_TryLockCard( u16 lockID );
  

引数

lockID カードのロックに用いるID

返り値

正の値ならば、現在ロック中であることを表します。値は直前に格納されていたIDです。
OS_LOCK_SUCCESS ならばロック成功を表します。(0に定義されています)

説明

プロセッサ間やモジュール間で共有リソース(この関数ではカード)を排他制御するためにスピンロックを1回だけ試行します。

ロックに成功した場合にはEXMEMCNTレジスタへアクセスし、カードバスへのアクセス権を取得します。プロセッサ間の共有リソースは必ずロック後に使用して下さい。プロセッサ専有のリソースはタイミング的に調整できるのであればロックしなくても構いません。

lockID はロックのためのIDで、プロセッサ間やモジュール間で重らないように OS_GetLockID() を用いてIDを取得するとよいでしょう。

内部動作

IOレジスタの、EXMEMCNT(0x4000204)にアクセスしています。

参照

OS_LockCard, OS_UnlockCard, OS_TryLockCartridge, OS_GetLockID

履歴

2004/07/22 引数の型を u32 → u16 に変更
2004/06/21 初版