Changeset 3543 for trunk/kStuff/include/k/kRdr.h
- Timestamp:
- Aug 25, 2007, 8:10:29 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kStuff/include/k/kRdr.h
r3542 r3543 29 29 30 30 #include <k/kDefs.h> 31 #ifndef ___k_kLdr___ 32 /* avoid dragging in kLdr.h */ 33 typedef enum KLDRPROT { KLDRPROT_32BIT_HACK = 0x7fffffff } KLDRPROT; 34 typedef const struct KLDRSEG *PCKLDRSEG; 35 #endif 31 #include <k/kTypes.h> 36 32 37 33 #ifdef __cplusplus … … 43 39 * @{ */ 44 40 45 /** Pointer to a file provider instance core. */41 /** Pointer to a file provider instance. */ 46 42 typedef struct KRDR *PKRDR; 47 /** Pointer to a file provider instance corepointer. */43 /** Pointer to a file provider instance pointer. */ 48 44 typedef struct KRDR **PPKRDR; 49 50 /**51 * File provider instance operations.52 */53 typedef struct KRDROPS54 {55 /** The name of this file provider. */56 const char *pszName;57 /** Pointer to the next file provider. */58 const struct KRDROPS *pNext;59 60 /** Try create a new file provider instance.61 *62 * @returns 0 on success, OS specific error code on failure.63 * @param ppRdr Where to store the file provider instance.64 * @param pszFilename The filename to open.65 */66 int (* pfnCreate)( PPKRDR ppRdr, const char *pszFilename);67 /** Destroy the file provider instance.68 *69 * @returns 0 on success, OS specific error code on failure.70 * On failure, the file provider instance will be in an indeterminate state - don't touch it!71 * @param pRdr The file provider instance.72 */73 int (* pfnDestroy)( PKRDR pRdr);74 /** @copydoc kRdrRead */75 int (* pfnRead)( PKRDR pRdr, void *pvBuf, size_t cb, KLDRFOFF off);76 /** @copydoc kRdrAllMap */77 int (* pfnAllMap)( PKRDR pRdr, const void **ppvBits);78 /** @copydoc kRdrAllUnmap */79 int (* pfnAllUnmap)(PKRDR pRdr, const void *pvBits);80 /** @copydoc kRdrSize */81 KFOFF (* pfnSize)( PKRDR pRdr);82 /** @copydoc kRdrTell */83 KFOFF (* pfnTell)( PKRDR pRdr);84 /** @copydoc kRdrName */85 const char * (* pfnName)(PKRDR pRdr);86 /** @copydoc kRdrPageSize */87 KSIZE (* pfnPageSize)(PKRDR pRdr);88 /** @copydoc kRdrMap */89 int (* pfnMap)( PKRDR pRdr, void **ppvBase, KU32 cSegments, PCKLDRSEG paSegments, unsigned fFixed);90 /** @copydoc kRdrRefresh */91 int (* pfnRefresh)( PKRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments);92 /** @copydoc kRdrProtect */93 int (* pfnProtect)( PKRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments, unsigned fUnprotectOrProtect);94 /** @copydoc kRdrUnmap */95 int (* pfnUnmap)( PKRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments);96 /** @copydoc kRdrDone */97 void (* pfnDone)( PKRDR pRdr);98 /** The usual non-zero dummy that makes sure we've initialized all members. */99 KU32 u32Dummy;100 } KRDROPS;101 /** Pointer to file provider operations. */102 typedef KRDROPS *PKRDROPS;103 /** Pointer to const file provider operations. */104 typedef const KRDROPS *PCKRDROPS;105 106 107 /**108 * File provider instance core.109 */110 typedef struct KRDR111 {112 /** Magic number (KLDRRDR_MAGIC). */113 KU32 u32Magic;114 /** Pointer to the file provider operations. */115 PCKRDROPS pOps;116 } KRDR;117 118 /** The magic for KRDR::u32Magic. (Katsu Aki (Katsuaki Nakamura)) */119 #define KRDR_MAGIC 0x19610919120 121 void kRdrAddProvider(PKRDROPS pAdd);122 45 123 46 int kRdrOpen(PPKRDR ppRdr, const char *pszFilename); 124 47 int kRdrOpenBuffered(PPKRDR ppRdr, const char *pszFilename); 125 126 48 int kRdrClose( PKRDR pRdr); 127 int kRdrRead( PKRDR pRdr, void *pvBuf, size_t cb, KLDRFOFF off);49 int kRdrRead( PKRDR pRdr, void *pvBuf, KSIZE cb, KFOFF off); 128 50 int kRdrAllMap( PKRDR pRdr, const void **ppvBits); 129 51 int kRdrAllUnmap(PKRDR pRdr, const void *pvBits); … … 132 54 const char *kRdrName(PKRDR pRdr); 133 55 KIPTR kRdrNativeFH(PKRDR pRdr); 134 135 56 KSIZE kRdrPageSize(PKRDR pRdr); 57 #ifndef ___k_kLdr___ 136 58 int kRdrMap( PKRDR pRdr, void **ppvBase, KU32 cSegments, PCKLDRSEG paSegments, unsigned fFixed); 137 59 int kRdrRefresh( PKRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments); 138 60 int kRdrProtect( PKRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments, unsigned fUnprotectOrProtect); 139 61 int kRdrUnmap( PKRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments); 62 #endif /* !___k_kLdr___ */ 140 63 void kRdrDone( PKRDR pRdr); 141 64
Note:
See TracChangeset
for help on using the changeset viewer.