Removed Page directory dump, added a mention of the fault details before the table...
authorJohn Hodge <[email protected]>
Fri, 2 Oct 2009 03:22:43 +0000 (11:22 +0800)
committerJohn Hodge <[email protected]>
Fri, 2 Oct 2009 03:22:43 +0000 (11:22 +0800)
Kernel/arch/x86/mm_virt.c
Usermode/Applications/cat_src/Makefile
Usermode/Libraries/libc.so_src/stdlib.c
Usermode/include/stdlib.h

index 1fadd4b..2b7d191 100644 (file)
@@ -149,6 +149,8 @@ void MM_PageFault(Uint Addr, Uint ErrorCode, tRegs *Regs)
        if( gaPageDir[Addr>>22] & PF_PRESENT )
                Log("gaPageTable[0x%x] = 0x%x", Addr>>12, gaPageTable[Addr>>12]);
        
+       Log("Code at %p accessed %p\n", Regs->eip, Addr);
+       
        MM_DumpTables(0, -1);   
        
        Panic("Page Fault at 0x%x\n", Regs->eip);
@@ -168,6 +170,7 @@ void MM_DumpTables(tVAddr Start, tVAddr End)
        
        Start >>= 12;   End >>= 12;
        
+       #if 0
        Log("Directory Entries:");
        for(page = Start >> 10;
                page < (End >> 10)+1;
@@ -181,6 +184,7 @@ void MM_DumpTables(tVAddr Start, tVAddr End)
                                );
                }
        }
+       #endif
        
        Log("Table Entries:");
        for(page = Start, curPos = Start<<12;
index dcd326d..5774e57 100644 (file)
@@ -22,7 +22,7 @@ $(BIN): $(COBJ)
        @echo --- $(LD) -o $@\r
        @$(LD) $(LDFLAGS) -o $@ $(COBJ) -Map Map.txt\r
        objdump -d $(BIN) > $(BIN).dsm\r
-       cp $(BIN) /mnt/AcessHDD/Acess2/\r
+       cp $(BIN) /mnt/AcessHDD/Acess2/Bin/\r
 \r
 clean:\r
        $(RM) $(COBJ) $(BIN)\r
index f5acadb..850d269 100644 (file)
@@ -13,9 +13,6 @@
 #define _stdout        1\r
 #define _stdin 0\r
 \r
-// === IMPORTS ===\r
-extern int     fprintfv(FILE *fp, const char *format, va_list args);\r
-\r
 // === PROTOTYPES ===\r
 EXPORT int     atoi(const char *str);\r
 EXPORT void    exit(int status);\r
@@ -31,6 +28,34 @@ EXPORT void exit(int status)
 }\r
 \r
 /**\r
+ * \fn EXPORT void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *))\r
+ * \brief Sort an array\r
+ * \note Uses a selection sort\r
+ */\r
+EXPORT void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *))\r
+{\r
+        int    i, j, min;\r
+       for( i = 0; i < (nmemb-1); i++ )\r
+       {\r
+               min = i;\r
+               for( j = i+1; j < nmemb; j++ )\r
+               {\r
+                       if(compar(base+size*j, base + size*min) < 0) {\r
+                               min = j;\r
+                       }\r
+               }\r
+               if (i != min) {\r
+                       char    swap[size];\r
+                       memcpy(swap, base+size*i, size);\r
+                       memcpy(base+size*i, base+size*min, size);\r
+                       memcpy(base+size*i, swap, size);\r
+               }\r
+       }\r
+}\r
+\r
+/**\r
+ * \fn EXPORT int atoi(const char *str)\r
+ * \brief Convert a string to an integer\r
  */\r
 EXPORT int atoi(const char *str)\r
 {\r
index 6f745f1..9dd720e 100644 (file)
@@ -13,6 +13,9 @@ stdlib.h
 # define NULL  ((void*)0)\r
 #endif\r
 \r
+#define EXIT_FAILURE   1\r
+#define EXIT_SUCCESS   0\r
+\r
 typedef unsigned int   size_t;\r
 \r
 // --- Spinlock Macros ---\r
@@ -24,6 +27,7 @@ typedef unsigned int  size_t;
 // --- StdLib ---\r
 extern int     atoi(const char *ptr);\r
 extern void    exit(int status) __attribute__((noreturn));\r
+extern void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));\r
 \r
 // --- Environment ---\r
 extern char    *getenv(const char *name);\r

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