X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=kern%2Fkfile.h;h=d59f7fb93f57d090f6ad83507cb602055ddac9e8;hb=9440bf5d1e06bbbecd17da05a2be5705e3503a47;hp=974502e62297a42c7d43eef190cf0b2b8e44de5d;hpb=1f1cc18019bbaf2509ab5f11096bd019bb9c780b;p=bertos.git diff --git a/kern/kfile.h b/kern/kfile.h old mode 100755 new mode 100644 index 974502e6..d59f7fb9 --- a/kern/kfile.h +++ b/kern/kfile.h @@ -1,9 +1,34 @@ /** * \file * * * \brief Virtual KFile I/O interface. @@ -12,33 +37,6 @@ * \author Bernardo Innocenti */ -/*#* - *#* $Log$ - *#* Revision 1.1 2007/06/14 14:42:48 batt - *#* Move kfile to kern/ directory; remove duplicate file.h. - *#* - *#* Revision 1.7 2007/06/08 14:25:43 batt - *#* Merge from project_ks. - *#* - *#* Revision 1.6 2006/07/19 12:56:28 bernie - *#* Convert to new Doxygen style. - *#* - *#* Revision 1.5 2005/11/04 16:20:02 bernie - *#* Fix reference to README.devlib in header. - *#* - *#* Revision 1.4 2005/04/11 19:10:28 bernie - *#* Include top-level headers from cfg/ subdir. - *#* - *#* Revision 1.3 2004/12/31 16:43:23 bernie - *#* Move seek function last in VT. - *#* - *#* Revision 1.2 2004/08/25 14:12:09 rasky - *#* Aggiornato il comment block dei log RCS - *#* - *#* Revision 1.1 2004/08/04 02:40:25 bernie - *#* Add virtual file I/O interface. - *#* - *#*/ #ifndef MWARE_KFILE_H #define MWARE_KFILE_H @@ -47,14 +45,29 @@ /* fwd decl */ struct _KFile; -typedef size_t (*ReadFunc_t) (struct _KFile *fd, char *buf, size_t size); -typedef size_t (*WriteFunc_t) (struct _KFile *fd, const char *buf, size_t size); -typedef bool (*SeekFunc_t) (struct _KFile *fd, int32_t offset); -typedef bool (*OpenFunc_t) (struct _KFile *fd, const char *name, int mode); -typedef bool (*CloseFunc_t) (struct _KFile *fd); +typedef int32_t kfile_off_t; +/** + * Costants for repositioning read/write file offset. + * These are needed because on some embedded platforms + * ANSI I/O library may not be present. + */ +typedef enum KSeekMode +{ + KSM_SEEK_SET, ///< Seek from file beginning. + KSM_SEEK_CUR, ///< Seek from file current position. + KSM_SEEK_END, ///< Seek from file end. +} KSeekMode; -/* Context data for callback functions which operate on + +typedef size_t (*ReadFunc_t) (struct _KFile *fd, void *buf, size_t size); +typedef size_t (*WriteFunc_t) (struct _KFile *fd, const void *buf, size_t size); +typedef int32_t (*SeekFunc_t) (struct _KFile *fd, kfile_off_t offset, KSeekMode whence); +typedef bool (*OpenFunc_t) (struct _KFile *fd, const char *name, int mode); +typedef bool (*CloseFunc_t) (struct _KFile *fd); + +/** + * Context data for callback functions which operate on * pseudo files. */ typedef struct _KFile @@ -70,4 +83,15 @@ typedef struct _KFile uint32_t size; } KFile; + +/* + * Generic implementation of seek function. + */ +int32_t kfile_seek(struct _KFile *fd, kfile_off_t offset, KSeekMode whence); + +/* + * Kfile test function + */ +bool kfile_test(uint8_t *buf, size_t _size , uint8_t *save_buf, size_t * save_buf_size); + #endif /* MWARE_KFILE_H */