* 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),\
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;
/**
*/
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