Changeset 3578 for trunk/kStuff/include/k/kLdr.h
- Timestamp:
- Sep 2, 2007, 10:55:51 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kStuff/include/k/kLdr.h
r3573 r3578 161 161 typedef const KLDRPU *PCKLDRPU; 162 162 163 164 /** Pointer to a loader segment. */ 165 typedef struct KLDRSEG *PKLDRSEG; 166 /** Pointer to a loader segment. */ 167 typedef const struct KLDRSEG *PCKLDRSEG; 168 169 /** @} */ 170 171 172 /** @defgroup grp_kLdrRdr kLdrRdr - The file provider 173 * @{ */ 174 175 /** Pointer to a file provider instance core. */ 176 typedef struct KLDRRDR *PKLDRRDR; 177 /** Pointer to a file provider instance core pointer. */ 178 typedef struct KLDRRDR **PPKLDRRDR; 179 180 /** 181 * File provider instance operations. 182 */ 183 typedef struct KLDRRDROPS 184 { 185 /** The name of this file provider. */ 186 const char *pszName; 187 /** Pointer to the next file provider. */ 188 const struct KLDRRDROPS *pNext; 189 190 /** Try create a new file provider instance. 191 * 192 * @returns 0 on success, OS specific error code on failure. 193 * @param ppRdr Where to store the file provider instance. 194 * @param pszFilename The filename to open. 195 */ 196 int (* pfnCreate)( PPKLDRRDR ppRdr, const char *pszFilename); 197 /** Destroy the file provider instance. 198 * 199 * @returns 0 on success, OS specific error code on failure. 200 * On failure, the file provider instance will be in an indeterminate state - don't touch it! 201 * @param pRdr The file provider instance. 202 */ 203 int (* pfnDestroy)( PKLDRRDR pRdr); 204 /** @copydoc kLdrRdrRead */ 205 int (* pfnRead)( PKLDRRDR pRdr, void *pvBuf, KSIZE cb, KLDRFOFF off); 206 /** @copydoc kLdrRdrAllMap */ 207 int (* pfnAllMap)( PKLDRRDR pRdr, const void **ppvBits); 208 /** @copydoc kLdrRdrAllUnmap */ 209 int (* pfnAllUnmap)(PKLDRRDR pRdr, const void *pvBits); 210 /** @copydoc kLdrRdrSize */ 211 KLDRFOFF (* pfnSize)( PKLDRRDR pRdr); 212 /** @copydoc kLdrRdrTell */ 213 KLDRFOFF (* pfnTell)( PKLDRRDR pRdr); 214 /** @copydoc kLdrRdrName */ 215 const char * (* pfnName)(PKLDRRDR pRdr); 216 /** @copydoc kLdrRdrPageSize */ 217 KSIZE (* pfnPageSize)(PKLDRRDR pRdr); 218 /** @copydoc kLdrRdrMap */ 219 int (* pfnMap)( PKLDRRDR pRdr, void **ppvBase, KU32 cSegments, PCKLDRSEG paSegments, unsigned fFixed); 220 /** @copydoc kLdrRdrRefresh */ 221 int (* pfnRefresh)( PKLDRRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments); 222 /** @copydoc kLdrRdrProtect */ 223 int (* pfnProtect)( PKLDRRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments, unsigned fUnprotectOrProtect); 224 /** @copydoc kLdrRdrUnmap */ 225 int (* pfnUnmap)( PKLDRRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments); 226 /** @copydoc kLdrRdrDone */ 227 void (* pfnDone)( PKLDRRDR pRdr); 228 /** The usual non-zero dummy that makes sure we've initialized all members. */ 229 KU32 u32Dummy; 230 } KLDRRDROPS; 231 /** Pointer to file provider operations. */ 232 typedef KLDRRDROPS *PKLDRRDROPS; 233 /** Pointer to const file provider operations. */ 234 typedef const KLDRRDROPS *PCKLDRRDROPS; 235 236 237 /** 238 * File provider instance core. 239 */ 240 typedef struct KLDRRDR 241 { 242 /** Magic number (KLDRRDR_MAGIC). */ 243 KU32 u32Magic; 244 /** Pointer to the file provider operations. */ 245 PCKLDRRDROPS pOps; 246 } KLDRRDR; 247 248 /** The magic for KLDRRDR::u32Magic. (Katsu Aki (Katsuaki Nakamura)) */ 249 #define KLDRRDR_MAGIC 0x19610919 250 251 void kLdrRdrAddProvider(PKLDRRDROPS pAdd); 252 253 int kLdrRdrOpen( PPKLDRRDR ppRdr, const char *pszFilename); 254 int kLdrRdrClose( PKLDRRDR pRdr); 255 int kLdrRdrRead( PKLDRRDR pRdr, void *pvBuf, KSIZE cb, KLDRFOFF off); 256 int kLdrRdrAllMap( PKLDRRDR pRdr, const void **ppvBits); 257 int kLdrRdrAllUnmap(PKLDRRDR pRdr, const void *pvBits); 258 KLDRFOFF kLdrRdrSize( PKLDRRDR pRdr); 259 KLDRFOFF kLdrRdrTell( PKLDRRDR pRdr); 260 const char *kLdrRdrName(PKLDRRDR pRdr); 261 KSIZE kLdrRdrPageSize(PKLDRRDR pRdr); 262 int kLdrRdrMap( PKLDRRDR pRdr, void **ppvBase, KU32 cSegments, PCKLDRSEG paSegments, unsigned fFixed); 263 int kLdrRdrRefresh( PKLDRRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments); 264 int kLdrRdrProtect( PKLDRRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments, unsigned fUnprotectOrProtect); 265 int kLdrRdrUnmap( PKLDRRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments); 266 void kLdrRdrDone( PKLDRRDR pRdr); 267 268 /** @} */ 269 163 /** @} */ 270 164 271 165 … … 613 507 PCKLDRMODOPS pOps; 614 508 /** Pointer to the read instance. (Can be NULL after kLdrModDone().)*/ 615 PK LDRRDRpRdr;509 PKRDR pRdr; 616 510 /** The module data. */ 617 511 void *pvData; … … 798 692 799 693 int kLdrModOpen(const char *pszFilename, PPKLDRMOD ppMod); 800 int kLdrModOpenFromRdr(PK LDRRDR pRdr, PPKLDRMOD ppMod);694 int kLdrModOpenFromRdr(PKRDR pRdr, PPKLDRMOD ppMod); 801 695 int kLdrModOpenNative(const char *pszFilename, PPKLDRMOD ppMod); 802 696 int kLdrModOpenNativeByHandle(KUPTR uHandle, PPKLDRMOD ppMod); … … 865 759 * @param ppMod Where to store the module instance pointer. 866 760 */ 867 int (* pfnCreate)(PCKLDRMODOPS pOps, PK LDRRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod);761 int (* pfnCreate)(PCKLDRMODOPS pOps, PKRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod); 868 762 /** 869 763 * Destroys an loader module instance. … … 911 805 int (* pfnAllocTLS)(PKLDRMOD pMod); 912 806 /** @copydoc kLdrModFreeTLS */ 913 void (* 807 void (*pfnFreeTLS)(PKLDRMOD pMod); 914 808 /** @copydoc kLdrModReload */ 915 809 int (* pfnReload)(PKLDRMOD pMod);
Note:
See TracChangeset
for help on using the changeset viewer.