Kernel - Misc cleanup in PCI
[tpg/acess2.git] / Kernel / include / modules.h
index 8862112..d728133 100644 (file)
@@ -36,7 +36,7 @@
 #if ARCHDIR == x86
 # define MODULE_ARCH_ID        1
 // IA64 - Architecture 2
-#elif ARCHDIR == x64
+#elif ARCHDIR == x86_64
 # define MODULE_ARCH_ID        2
 #else
 # error "Unknown architecture when determining MODULE_ARCH_ID ('" #ARCHDIR "')"
@@ -53,7 +53,7 @@
  *                     Contains the identifiers of the required modules.
  */
 #define MODULE_DEFINE(_flags,_ver,_ident,_entry,_deinit,_deps...) \
-       char *EXPAND_CONCAT(_DriverDeps_,_ident)[]={_deps};\
+       const char *EXPAND_CONCAT(_DriverDeps_,_ident)[]={_deps};\
        tModule __attribute__ ((section ("KMODULES"),unused))\
        EXPAND_CONCAT(_DriverInfo_,_ident)=\
        {MODULE_MAGIC,MODULE_ARCH_ID,_flags,_ver,NULL,EXPAND_STR(_ident),\
@@ -71,10 +71,10 @@ typedef struct sModule
        Uint8   Flags;  //!< Module Flags
        Uint16  Version;        //!< Module Version in Major.Minor 8.8 form
        struct sModule  *Next;  //!< Next module in list (not to be touched by the driver)
-       char    *Name;  //!< Module Name/Identifier
+       const char      *Name;  //!< Module Name/Identifier
         int    (*Init)(char **Arguments);      //!< Module initialiser / entrypoint
-       void    (*Deinit)();    //!< Cleanup Function
-       char    **Dependencies; //!< NULL terminated list of dependencies
+       void    (*Deinit)(void);        //!< Cleanup Function
+       const char      **Dependencies; //!< NULL terminated list of dependencies
 } PACKED tModule;
 
 /**
@@ -87,6 +87,7 @@ enum eModuleErrors
        MODULE_ERR_NOTNEEDED,   //!< Module not needed
        MODULE_ERR_MALLOC,      //!< Error with malloc/realloc/calloc
        
+       MODULE_ERR_BADMODULE,   //!< Bad module (only used by loader)
        MODULE_ERR_MAX  //!< Maximum defined error code
 };
 
@@ -112,4 +113,11 @@ typedef struct sModuleLoader
  */
 extern int     Module_RegisterLoader(tModuleLoader *Loader);
 
+/**
+ * \brief Initialises (if needed) a named module
+ * \param Name Module name to initialise
+ * \return -1 on not existing, 0 if the module initialised (or if it was already initialised)
+ */
+extern int     Module_EnsureLoaded(const char *Name);
+
 #endif

UCC git Repository :: git.ucc.asn.au