#include <common.h>
#include <modules.h>
+#define USE_EDI 0
+#define USE_UDI 1
+
// === PROTOTYPES ===
+ int Modules_LoadBuiltins();
int Module_LoadMem(void *Buffer, Uint Length, char *ArgString);
int Module_LoadFile(char *Path, char *ArgString);
int Module_int_ResolveDeps(tModule *Info);
int Module_IsLoaded(char *Name);
// === IMPORTS ===
+#if USE_UDI
+extern int UDI_LoadDriver(void *Base);
+#endif
extern void StartupPrint(char *Str);
extern tModule gKernelModules[];
extern void gKernelModulesEnd;
gKernelModules[i].Name,
gKernelModules[i].Version>>8, gKernelModules[i].Version & 0xFF
);
- gKernelModules[i].Init(NULL);
+ if( gKernelModules[i].Init(NULL) == 0 ) {
+ Log("Loading Failed, all modules that depend on this will also fail");
+ baIsLoaded[i] = -1;
+ }
// Mark as loaded
- baIsLoaded[i] = 1;
+ else
+ baIsLoaded[i] = 1;
numToInit --;
}
}
{
char path[VFS_MEMPATH_SIZE];
- VFS_GetMemPath(Buffer, Length, path);
+ VFS_GetMemPath(path, Buffer, Length);
return Module_LoadFile( path, ArgString );
}
}
#endif
+ #if USE_UDI
+ if( Binary_FindSymbol(base, "udi_init_info", NULL ) == 0 )
+ {
+ Binary_Relocate(base); // Relocate
+ return UDI_LoadDriver( base ); // And intialise
+ }
+ #endif
+
// Unknown module type?, return error
Binary_Unload(base);
#if USE_EDI