Ignore:
Timestamp:
Aug 25, 2007, 8:10:29 AM (18 years ago)
Author:
bird
Message:

kRdr hacking.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kStuff/include/k/kRdr.h

    r3542 r3543  
    2929
    3030#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>
    3632
    3733#ifdef __cplusplus
     
    4339 * @{ */
    4440
    45 /** Pointer to a file provider instance core. */
     41/** Pointer to a file provider instance. */
    4642typedef struct KRDR *PKRDR;
    47 /** Pointer to a file provider instance core pointer. */
     43/** Pointer to a file provider instance pointer. */
    4844typedef struct KRDR **PPKRDR;
    49 
    50 /**
    51  * File provider instance operations.
    52  */
    53 typedef struct KRDROPS
    54 {
    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 KRDR
    111 {
    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   0x19610919
    120 
    121 void    kRdrAddProvider(PKRDROPS pAdd);
    12245
    12346int     kRdrOpen(PPKRDR ppRdr, const char *pszFilename);
    12447int     kRdrOpenBuffered(PPKRDR ppRdr, const char *pszFilename);
    125 
    12648int     kRdrClose(   PKRDR pRdr);
    127 int     kRdrRead(    PKRDR pRdr, void *pvBuf, size_t cb, KLDRFOFF off);
     49int     kRdrRead(    PKRDR pRdr, void *pvBuf, KSIZE cb, KFOFF off);
    12850int     kRdrAllMap(  PKRDR pRdr, const void **ppvBits);
    12951int     kRdrAllUnmap(PKRDR pRdr, const void *pvBits);
     
    13254const char *kRdrName(PKRDR pRdr);
    13355KIPTR   kRdrNativeFH(PKRDR pRdr);
    134 
    13556KSIZE   kRdrPageSize(PKRDR pRdr);
     57#ifndef ___k_kLdr___
    13658int     kRdrMap(     PKRDR pRdr, void **ppvBase, KU32 cSegments, PCKLDRSEG paSegments, unsigned fFixed);
    13759int     kRdrRefresh( PKRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments);
    13860int     kRdrProtect( PKRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments, unsigned fUnprotectOrProtect);
    13961int     kRdrUnmap(   PKRDR pRdr, void *pvBase, KU32 cSegments, PCKLDRSEG paSegments);
     62#endif /* !___k_kLdr___ */
    14063void    kRdrDone(    PKRDR pRdr);
    14164
Note: See TracChangeset for help on using the changeset viewer.