Multiple changes (Module Interopability, Timers, FDD Driver, VFS Bugs)
[tpg/acess2.git] / Kernel / include / modules.h
1 /*
2  * AcessOS 2
3  * - Module Loader
4  */
5 #ifndef _MODULE_H
6 #define _MODULE_H
7
8 #define MODULE_MAGIC    ('A'|('M'<<8)|('D'<<16)|('\2'<<24))
9
10 // IA32 - Architecture 1
11 #if ARCH == i386 || ARCH == i586
12 # define MODULE_ARCH_ID 1
13 // IA64 - Architecture 2
14 #elif ARCH == x64 || ARCH == x86_64
15 # define MODULE_ARCH_ID 2
16 #else
17 # error "Unknown architecture when determining MODULE_ARCH_ID ('" #ARCH "')"
18 #endif
19
20 #define MODULE_DEFINE(_flags,_ver,_ident,_entry,_deps...)       char *_DriverDeps_##_ident[]={_deps};\
21         tModule __attribute__ ((section ("KMODULES"),unused)) _DriverInfo_##_ident=\
22         {MODULE_MAGIC,MODULE_ARCH_ID,_flags,_ver,NULL,#_ident,_entry,_DriverDeps_##_ident}
23
24 typedef struct sModule {
25         Uint32  Magic;
26         Uint8   Arch;
27         Uint8   Flags;
28         Uint16  Version;
29         struct sModule  *Next;
30         char    *Name;
31          int    (*Init)(char **Arguments);
32         char    **Dependencies; // NULL Terminated List
33 } __attribute__((packed)) tModule;
34
35 #endif

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