X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=AcessNative%2Facesskernel_src%2Fhelpers.c;h=6396d1666c755eb92d7d99e1466604509c60ebfa;hb=7ba570fe3cc5418f42decf5b72ac2295cce9e60f;hp=ef5f1db13df6290e7608732f1837c2946253085e;hpb=02cbaac1233be9c5228973a787431fa5e0aa178e;p=tpg%2Facess2.git diff --git a/AcessNative/acesskernel_src/helpers.c b/AcessNative/acesskernel_src/helpers.c index ef5f1db1..6396d166 100644 --- a/AcessNative/acesskernel_src/helpers.c +++ b/AcessNative/acesskernel_src/helpers.c @@ -4,11 +4,14 @@ * * Kernel Main */ -#include +#include #include #include +#include #include +#include +#if 0 void LogF(const char *Fmt, ...) { va_list args; @@ -50,7 +53,29 @@ void Panic(const char *Format, ...) void Debug_SetKTerminal(const char *Path) { - // Ignored, kernel debug goes to stdout + // Ignored, kernel debug goes to stdout instead of a virtual terminal +} +#endif + +void KernelPanic_SetMode(void) +{ + // NOP - No need +} +void KernelPanic_PutChar(char ch) +{ + fprintf(stderr, "%c", ch); +} +void Debug_PutCharDebug(char ch) +{ + printf("%c", ch); + if( ch == '\n' ) + fflush(stdout); +} +void Debug_PutStringDebug(const char *String) +{ + printf("%s", String); + if( strchr(String, '\n') ) + fflush(stdout); } void *Heap_Allocate(const char *File, int Line, int ByteCount) @@ -58,11 +83,40 @@ void *Heap_Allocate(const char *File, int Line, int ByteCount) return malloc(ByteCount); } +void *Heap_AllocateZero(const char *File, int Line, int ByteCount) +{ + return calloc(ByteCount, 1); +} + +void *Heap_Reallocate(const char *File, int Line, void *Ptr, int Bytes) +{ + return realloc(Ptr, Bytes); +} + +void Heap_Deallocate(void *Ptr) +{ + free(Ptr); +} + +char *Heap_StringDup(const char *File, int Line, const char *Str) +{ + return strdup(Str); +} + +void Heap_Dump(void) +{ +} + tPAddr MM_GetPhysAddr(tVAddr VAddr) { return VAddr; // HACK! } +int MM_IsValidBuffer(tVAddr Base, int Size) +{ + return 1; +} + Uint MM_GetFlags(tVAddr VAddr) { return 0; @@ -81,3 +135,64 @@ Sint64 now(void) return tv.tv_sec * 1000 + tv.tv_usec/1000; } +void IPStack_SendDebugText(const char *str) +{ + // nop +} + +int strpos(const char *str, char ch) +{ + const char *retptr = strchr(str, ch); + int rv = retptr ? retptr - str : -1; + return rv; +} + +int CheckString(const char *string) +{ + if( (intptr_t)string < 0x1000 ) + return 0; + return 1; +} + +int CheckMem(const void *buf, size_t len) +{ + if( (intptr_t)buf < 0x1000 ) + return 0; + return 1; +} + +void itoa(char *buf, Uint64 num, int base, int minLength, char pad) +{ + static const char cUCDIGITS[] = "0123456789ABCDEF"; + char tmpBuf[64+1]; + int pos=0, i; + Uint64 rem; + + // Sanity check + if(!buf) return; + + // Sanity Check + if(base > 16 || base < 2) { + buf[0] = 0; + return; + } + + // Convert + while(num > base-1) { + rem = num % base; + num = num / base; // Shift `num` and get remainder + tmpBuf[pos] = cUCDIGITS[ rem ]; + pos++; + } + tmpBuf[pos++] = cUCDIGITS[ num ]; // Last digit of `num` + + // Put in reverse + i = 0; + minLength -= pos; + while(minLength-- > 0) + buf[i++] = pad; + while(pos-- > 0) + buf[i++] = tmpBuf[pos]; // Reverse the order of characters + buf[i] = 0; +} +