OSDN Git Service

(none)
[hos/hos-v4a.git] / aplfw / driver / misc / memdrv / memdrv_read.c
1 /** 
2  *  Hyper Operating System  Application Framework
3  *
4  * @file  memdrv.h
5  * @brief %jp{メモリマップドファイル用デバイスドライバ}
6  *
7  * Copyright (C) 2006-2007 by Project HOS
8  * http://sourceforge.jp/projects/hos/
9  */
10
11
12 #include <string.h>
13 #include "memdrv_local.h"
14
15
16
17 FILE_SIZE MemDrv_Read(C_DRVOBJ *pDrvObj, C_FILEOBJ *pFileObj, void *pBuf, FILE_SIZE Size)
18 {
19         C_MEMDRV                *self;
20         C_MEMDRVFILE    *pFile;
21         
22         /* upper cast */
23         self  = (C_MEMDRV *)pDrvObj;
24         pFile = (C_MEMDRVFILE *)pFileObj;
25         
26         SysMtx_Lock(self->hMtx);
27         
28         /* サイズクリップ */
29         if ( Size > self->FileSize - pFile->FilePos )
30         {
31                 Size = self->FileSize - pFile->FilePos;
32         }
33         
34         /* 読み出し */
35         memcpy(pBuf, self->pubMemAddr + pFile->FilePos, Size);
36         pFile->FilePos += Size;
37         
38         SysMtx_Unlock(self->hMtx);
39         
40         return Size;
41 }
42
43
44 /* end of file */