Ignore:
Timestamp:
Oct 28, 2006, 5:59:21 AM (19 years ago)
Author:
bird
Message:

in progress...

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kLdr/kLdrInternal.h

    r2836 r2837  
    7777    /** The module been mapped.
    7878     * Prev state: OPEN
    79      * Next state: LOADED_DEPS, DESTROYED
     79     * Next state: LOADED_PREREQUISITES, DESTROYED
    8080     */
    8181    KLDRSTATE_MAPPED,
    82     /** The immediate dependencies has been loaded.
    83      * Prev state: MAPPED
     82    /** The module has been reloaded and needs to be fixed up again.
     83     * (The loader can still be in a re-entrant mode.)
     84     * Prev state: PENDING_GC
     85     * Next state: LOADED_PREREQUISITES, PENDING_GC
     86     */
     87    KLDRSTATE_RELOADED,
     88    /** The immediate prerequisites have been loaded.
     89     * Prev state: MAPPED, RELOADED
    8490     * Next state: FIXED_UP, DESTROYED
    8591     */
    86     KLDRSTATE_LOADED_DEPS,
     92    KLDRSTATE_LOADED_PREREQUISITES,
    8793    /** Fixups has been applied.
    88      * Prev state: LOADED_DEPS
     94     * Prev state: LOADED_PREREQUISITES
    8995     * Next state: PENDING_INIT, DESTROYED
    9096     */
     
    124130     * (The loader can still be in a re-entrant mode.)
    125131     * Prev state: TERMINATING, INITIALIZING, PENDING_INITIALIZATION
    126      * Next state: GC, RELOADING
     132     * Next state: GC, RELOADED
    127133     */
    128134    KLDRSTATE_PENDING_GC,
    129135    /** Being garbage collected.
    130      * (The loader can still be in a re-entrant mode.)
    131136     * Prev state: PENDING_GC
     137     * Next state: PENDING_DESTROY, DESTROYED
     138     */
     139    KLDRSTATE_GC,
     140    /** The module has be unlinked, but there are still stack references to it.
     141     * Prev state: GC
    132142     * Next state: DESTROYED
    133143     */
    134     KLDRSTATE_GC,
    135     /** The module is being reloaded after having been scheduled for termination or/and GC.
    136      * (The loader can still be in a re-entrant mode.)
    137      * Prev state: PENDING_GC
    138      * Next state: PENDING_INITIALIZATION
    139      */
    140     KLDRSTATE_RELOADING,
     144    KLDRSTATE_PENDING_DESTROY,
    141145    /** The module has been destroyed and is no longer valid.
    142      * Prev state: GC
     146     * Prev state: GC, PENDING_DESTROY
    143147     */
    144148    KLDRSTATE_DESTROYED,
     
    163167    /** The module handle. */
    164168    HKLDRMOD            hMod;
    165     /** The number of references. */
     169    /** The total number of references. */
    166170    uint32_t            cRefs;
    167     /** The number of dynamic references. */
     171    /** The number of dependency references. */
     172    uint32_t            cDepRefs;
     173    /** The number of dynamic load references. */
    168174    uint32_t            cDynRefs;
    169     /** The number of dynamic load operations in progress.
    170      * This is used to reject anyone trying to unload a module before the load has
    171      * been completed. An alternative to this would be to not add the cDynRefs until
    172      * the load operation has completed... */
    173     uint32_t            cDynRefsInProgress;
    174175    /** Set if this is the executable module.
    175176     * When clear, the module is a shared object or relocatable object. */
     
    180181    uint32_t            fBindable : 1;
    181182    /** Reserved for future use. */
    182     uint32_t            fReserved : 29;
     183    uint32_t            fReserved : 28;
     184    /** Already checked dependencies.
     185     * This is flag used when resolving module dependencies during a load, it
     186     * deals with modules in the KLDRSTATE_PENDING_INITIALIZATION state. */
     187    uint32_t            fAlreadySeen : 1;
    183188    /** The load list linkage. */
    184189    struct
     
    233238int kldrDyldModCreate(PKLDRRDR pRdr, PPKLDRDYLDMOD ppMod);
    234239int kldrDyldModDestroy(PKLDRDYLDMOD pMod);
    235 int kldrDyldModAddDep(PKLDRDYLDMOD pMod, PKLDRDYLDMOD pModDep);
    236 int kldrDyldModRemoveDep(PKLDRDYLDMOD pMod, PKLDRDYLDMOD pModDep);
     240int kldrDyldModAddRef(PKLDRDYLDMOD pMod);
     241void kldrDyldModDeref(PKLDRDYLDMOD pMod);
     242int kldrDyldModAddDep(PKLDRDYLDMOD pMod, PKLDRDYLDMOD pDep);
     243void kldrDyldModRemoveDep(PKLDRDYLDMOD pMod, PKLDRDYLDMOD pDep);
    237244int kldrDyldModDynamicLoad(PKLDRDYLDMOD pMod);
    238245int kldrDyldModDynamicUnload(PKLDRDYLDMOD pMod);
     
    245252int kldrDyldModMap(PKLDRDYLDMOD pMod);
    246253int kldrDyldModUnmap(PKLDRDYLDMOD pMod);
    247 int kldrDyldModLoadDependencies(PKLDRDYLDMOD pMod);
     254int kldrDyldModLoadPrerequisites(PKLDRDYLDMOD pMod, const char *pszName, const char *pszDefPrefix, const char *pszDefSuffix,
     255                                 KLDRDYLDSEARCH enmSearch, unsigned fFlags);
     256int kldrDyldModCheckPrerequisites(PKLDRDYLDMOD pMod);
     257void kldrDyldModUnloadPrerequisites(PKLDRDYLDMOD pMod);
    248258int kldrDyldModFixup(PKLDRDYLDMOD pMod);
    249259int kldrDyldModCallInit(PKLDRDYLDMOD pMod);
    250 int kldrDyldModCallTerm(PKLDRDYLDMOD pMod);
     260void kldrDyldModCallTerm(PKLDRDYLDMOD pMod);
     261int kldrDyldModReload(PKLDRDYLDMOD pMod);
    251262int kldrDyldModAttachThread(PKLDRDYLDMOD pMod);
    252263int kldrDyldModDetachThread(PKLDRDYLDMOD pMod);
Note: See TracChangeset for help on using the changeset viewer.