2 * Hyper Operating System Application Framework
5 * @brief %jp{キャラクタ型デバイスドライバ用ファイルディスクリプタ}
7 * %jp{ファイルディスクリプタとして機能するクラス}
9 * Copyright (C) 2006-2007 by Project HOS
10 * http://sourceforge.jp/projects/hos/
15 #include "chrdrv_local.h"
18 /** 書込み可能になった可能性があるまで待つ */
19 FILE_ERR ChrDrv_WaitWriteSignal(C_CHRDRV *self, C_CHRFILE *pFile)
23 SysMtx_Lock(self->hMtx); /* クリティカルセクションに入る */
26 if ( (pFile->cWriteMode & FILE_WMODE_POLING) || pFile->hPrcWrite != SYSPRC_HANDLE_NULL )
28 SysMtx_Unlock(self->hMtx); /* クリティカルセクションを出る */
29 return FILE_ERR_NG; /* ポーリングモードならブロックしない */
33 if ( self->iStatus & CHRDRV_STATUS_WRITE )
35 SysMtx_Unlock(self->hMtx); /* クリティカルセクションを出る */
36 return FILE_ERR_OK; /* 即時成功 */
40 hPrc = SysPrc_GetCurrentHandle();
43 pFile->hPrcWrite = hPrc;
45 SysMtx_Unlock(self->hMtx); /* クリティカルセクションを出る */