X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Finclude%2Fcommon.h;h=398724da75b57d369958e95c03a5a62307412fa8;hb=75e87cf46a3899f76bae5c64e130cfc033562e9a;hp=7bf59382f9080622709eae0a8cf3dcaa499290c7;hpb=49337730d17bb690fef6fc4429b25b84e6a44479;p=tpg%2Facess2.git diff --git a/Kernel/include/common.h b/Kernel/include/common.h index 7bf59382..398724da 100644 --- a/Kernel/include/common.h +++ b/Kernel/include/common.h @@ -10,13 +10,19 @@ #include #include +enum eConfigTypes { + CFGT_NULL, + CFGT_INT, + CFGT_HEAPSTR, + CFGT_PTR +}; enum eConfigs { CFG_VFS_CWD, CFG_VFS_MAXFILES, NUM_CFG_ENTRIES }; -#define CFGINT(_idx) (*(Uint*)(MM_PPD_CFG+(_idx)*sizeof(void*))) -#define CFGPTR(_idx) (*(void**)(MM_PPD_CFG+(_idx)*sizeof(void*))) +#define CFGINT(id) (*Threads_GetCfgPtr(id)) +#define CFGPTR(id) (*(void**)Threads_GetCfgPtr(id)) // === CONSTANTS === // --- Memory Flags -- @@ -37,12 +43,13 @@ typedef struct sKernelSymbol { // === FUNCTIONS === // --- Core --- extern void System_Init(char *ArgString); -extern int IRQ_AddHandler(int Num, void (*Callback)(void)); +extern int IRQ_AddHandler(int Num, void (*Callback)(int)); // --- Debug --- extern void Panic(char *Msg, ...); extern void Warning(char *Msg, ...); extern void Log(char *Fmt, ...); extern void LogV(char *Fmt, va_list Args); +extern void LogF(char *Fmt, ...); extern void Debug_Enter(char *FuncName, char *ArgTypes, ...); extern void Debug_Log(char *FuncName, char *Fmt, ...); extern void Debug_Leave(char *FuncName, char RetType, ...); @@ -67,9 +74,10 @@ extern Uint32 ind(Uint16 Port); extern Uint64 inq(Uint16 Port); // --- Memory --- extern tPAddr MM_Allocate(Uint VAddr); -extern void MM_Deallocate(Uint VAddr); -extern int MM_Map(Uint VAddr, tPAddr PAddr); -extern tPAddr MM_GetPhysAddr(Uint VAddr); +extern void MM_Deallocate(Uint VAddr); //!< Deallocate a page +extern int MM_Map(Uint VAddr, tPAddr PAddr); //!< Map a page +extern tPAddr MM_GetPhysAddr(Uint VAddr); //!< Get the physical address of a page +extern int MM_IsUser(Uint VAddr, int Length); //!< Checks if a memory address is valid user memory extern void MM_SetFlags(Uint VAddr, Uint Flags, Uint Mask); extern Uint MM_MapTemp(tPAddr PAddr); extern void MM_FreeTemp(Uint PAddr); @@ -78,25 +86,31 @@ extern void MM_UnmapHWPage(Uint VAddr, Uint Number); extern tPAddr MM_AllocPhys(); extern void MM_RefPhys(tPAddr Addr); extern void MM_DerefPhys(tPAddr Addr); -extern void *memcpy(void *dest, void *src, Uint count); -extern void *memcpyd(void *dest, void *src, Uint count); +extern int memcmp(const void *m1, const void *m2, Uint count); +extern void *memcpy(void *dest, const void *src, Uint count); +extern void *memcpyd(void *dest, const void *src, Uint count); extern void *memset(void *dest, int val, Uint count); extern void *memsetd(void *dest, Uint val, Uint count); +extern Uint16 LittleEndian16(Uint16 Val); +extern Uint16 BigEndian16(Uint16 Val); +extern Uint32 LittleEndian32(Uint32 Val); +extern Uint32 BigEndian32(Uint32 Val); // --- Strings --- -extern Uint strlen(char *Str); -extern char *strcpy(char *__dest, char *__src); -extern int strcmp(char *__dest, char *__src); -extern int strncmp(char *Str1, char *Str2, size_t num); -extern int strucmp(char *Str1, char *Str2); -extern char *strdup(char *__str); -extern int strpos(char *Str, char Ch); -extern int strpos8(char *str, Uint32 search); +extern Uint strlen(const char *Str); +extern char *strcpy(char *__dest, const char *__src); +extern int strcmp(const char *__str1, const char *__str2); +extern int strncmp(const char *Str1, const char *Str2, size_t num); +extern int strucmp(const char *Str1, const char *Str2); +extern char *strdup(const char *__str); +extern int strpos(const char *Str, char Ch); +extern int strpos8(const char *str, Uint32 search); extern void itoa(char *buf, Uint num, int base, int minLength, char pad); extern int ReadUTF8(Uint8 *str, Uint32 *Val); extern int WriteUTF8(Uint8 *str, Uint32 Val); extern Uint rand(); // --- Heap --- extern void *malloc(size_t size); +extern void *calloc(size_t num, size_t size); extern void *realloc(void *ptr, size_t size); extern void free(void *Ptr); extern int IsHeap(void *Ptr); @@ -110,14 +124,17 @@ extern int Time_CreateTimer(int Delta, void *Callback, void *Argument); extern void Time_RemoveTimer(int ID); extern void Time_Delay(int Delay); // --- Threads --- +extern int Proc_SpawnWorker(); extern int Proc_Spawn(char *Path); extern void Threads_Exit(); extern void Threads_Yield(); extern void Threads_Sleep(); -extern int Threads_GetCfg(int Index); extern int Threads_GetUID(); extern int Threads_GetGID(); extern int SpawnTask(tThreadFunction Function, void *Arg); +extern Uint *Threads_GetCfgPtr(int Id); +// --- Simple Math --- +extern int DivUp(int num, int dem); #include #include