# OS_TryLockCartridge

## 構文

      #include <nitro/os.h>

      s32 OS_TryLockCartridge( u16 lockID );

## 引数

lockID | カートリッジのロックに用いるID

## 返り値

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

## 説明

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

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

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

## 内部動作

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

## 参照

`OS_LockCartridge, OS_UnlockCartridge, OS_TryLockCard, OS_GetLockID
`

## 履歴

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