e39fae61f926d44eac46214cfbc6c60135e05517
[bertos.git] / kern / file.h
1 /*!
2  * \file
3  * <!--
4  * Copyright 2003,2004 Develer S.r.l. (http://www.develer.com/)
5  * Copyright 1999,2001,2003 Bernardo Innocenti <bernie@develer.com>
6  * All Rights Reserved.
7  * -->
8  *
9  * \brief Interface to KFile virtual class
10  *
11  * \version $Id$
12  *
13  * \author Bernardo Innocenti <bernie@develer.com>
14  */
15
16 /*
17  *      $Log$
18  *      Revision 1.1  2004/05/23 17:27:00  bernie
19  *      Import kern/ subdirectory.
20  *
21  */
22 #ifndef KERN_KFILE_H
23 #define KERN_KFILE_H
24
25 #ifndef COMPILER_H
26 #include <compiler.h>
27 #endif
28
29 struct _KFile;
30
31 typedef size_t  (*ReadFunc_t)   (struct _KFile *fd, char *buf, size_t size);
32 typedef size_t  (*WriteFunc_t)  (struct _KFile *fd, const char *buf, size_t size);
33 typedef bool    (*SeekFunc_t)   (struct _KFile *fd, int32_t offset);
34 typedef bool    (*CloseFunc_t)  (struct _KFile *fd);
35 typedef bool    (*OpenFunc_t)   (struct _KFile *fd, const char *name, int mode);
36
37
38 /* Context data for callback functions which operate on
39  * pseudo files.
40  */
41 typedef struct _KFile
42 {
43         ReadFunc_t              Read;
44         WriteFunc_t             Write;
45         SeekFunc_t              Seek;
46 /*      OpenFunc_t              Open;   unused */
47         CloseFunc_t             Close;
48
49         /* NOTE: these must _NOT_ be size_t on 16bit CPUs! */
50         uint32_t                SeekPos;
51         uint32_t                Size;
52 } KFile;
53
54
55 #endif /* KERN_KFILE_H */