]> git.buserror.net Git - polintos/scott/priv.git/commitdiff
GCC 4.2.1 fixes, plus a couple library functions.
authorScott Wood <scott@thor.buserror.net>
Sun, 5 Aug 2007 03:22:52 +0000 (22:22 -0500)
committerScott Wood <scott@thor.buserror.net>
Sun, 5 Aug 2007 03:25:20 +0000 (22:25 -0500)
kernel/arch/x86/descriptors.cc
kernel/core/thread.cc
kernel/include/kern/console.h
kernel/include/kern/libc.h
kernel/include/kern/sched.h
kernel/io/console/misc.cc
kernel/lib/libc.cc

index 65b146e00c715567f9d6ef6466dec0474ce0c9b5..35e11f974e14dc8e8f21fe3b9091e83b4764f78d 100644 (file)
@@ -37,7 +37,7 @@ Descriptor x86_gdt[1024] = {
                user: 1,
                dpl: 0,
                present: 1,
-               limit_high: 0xff,
+               limit_high: 0xf,
                sw: 0,
                reserved: 0,
                opsize: 1,
@@ -52,7 +52,7 @@ Descriptor x86_gdt[1024] = {
                user: 1,
                dpl: 0,
                present: 1,
-               limit_high: 0xff,
+               limit_high: 0xf,
                sw: 0,
                reserved: 0,
                opsize: 1,
@@ -82,7 +82,7 @@ Descriptor x86_gdt[1024] = {
                user: 1,
                dpl: 3,
                present: 1,
-               limit_high: 0x7f,
+               limit_high: 0x7,
                sw: 0,
                reserved: 0,
                opsize: 1,
@@ -97,7 +97,7 @@ Descriptor x86_gdt[1024] = {
                user: 1,
                dpl: 3,
                present: 1,
-               limit_high: 0x7f,
+               limit_high: 0x7,
                sw: 0,
                reserved: 0,
                opsize: 1,
index 80451c0f8a3c5e5157a64c68b24fd9d62750f663..3358f0fb52f7ce36356dc2cd4088b76083789947 100644 (file)
@@ -245,7 +245,7 @@ namespace Threads {
        }
        
        Thread *Sched::new_thread(thread_func func, void *arg1,
-                                 void *arg2, char *name)
+                                 void *arg2, const char *name)
        {
                // Allocate a page for the thread's stack, and stick the thread
                // struct at the top of the stack.  It's placed at the top rather
index 34683a475de7ffe7733590658ca2ef12e48c4b35..9da6977cf27ff4d428793a18ffe66ab5a348224a 100644 (file)
@@ -12,7 +12,7 @@ namespace Console {
                }
        
                virtual void write(Array<octet> buf, u64 *len) = 0;
-               void write(char *data, size_t len);
+               void write(const char *data, size_t len);
        };
        
        extern Console *primary_console;
index 8bca620845ee6dda379682467d554d83f9f6023f..05f398b8d9ee837fda7c4232412a3eb2dfb55eaa 100644 (file)
@@ -25,6 +25,8 @@ extern "C" {
 
        char *strcpy(char *dest, const char *src);
        char *strncpy(char *dest, const char *src, size_t len);
+       char *strcat(char *dest, const char *src);
+       char *strncat(char *dest, const char *src, size_t len);
 
        void bzero(void *b, size_t len);
        
index 4d743382ee23ba91b6916f136df859eb54b4441b..692162103b1979e6fd8bf37a905db8bfdfd056ec 100644 (file)
@@ -82,7 +82,7 @@ namespace Threads {
                typedef void (*thread_func)(void *arg1, void *arg2);
        
                Thread *new_thread(thread_func func, void *arg1, void *arg2 = NULL,
-                                  char *name = NULL);
+                                  const char *name = NULL);
                void schedule();
                void sched_new_thread();
                
index 518e38bf0410ab88e5ed64d9a64a1d11c6b44aba..09f8623edf1eb0f6097a82341bb503cb61c2d0d9 100644 (file)
@@ -18,7 +18,7 @@
 
 namespace IO {
 namespace Console {
-       void Console::write(char *data, size_t len)
+       void Console::write(const char *data, size_t len)
        {
                u64 len64 = len;
                write(Array<octet>((octet *)data, len), &len64);
index e571384048458bf9d9ee49e0e593900affd30fe4..9c458572db35724d5b833e48a4e1b45b9d4dc33f 100644 (file)
@@ -15,6 +15,7 @@
 
 #include <kern/types.h>
 #include <kern/libc.h>
+#include <kern/console.h>
 
 #include <stdarg.h>
 #include <limits.h>
@@ -39,7 +40,7 @@ static const int num_signed =      0x4000;
 static const int has_precision =   0x8000;
 
 static void printf_string(char *buf, size_t &opos, size_t limit,
-                          char *src, size_t len)
+                          const char *src, size_t len)
 {
        if (opos < limit) {
                size_t olen = opos + len <= limit ? len : limit - opos;
@@ -356,7 +357,7 @@ size_t vsnprintf(char *buf, size_t size, const char *str, va_list args)
                                        break;
                                
                                case 's': {
-                                       char *arg = va_arg(args, char *);
+                                       const char *arg = va_arg(args, const char *);
                                        
                                        if (!arg)
                                                arg = "(null)";
@@ -368,7 +369,7 @@ size_t vsnprintf(char *buf, size_t size, const char *str, va_list args)
                                }
                                
                                case 'p': {
-                                       void *arg = va_arg(args, void *);
+                                       const void *arg = va_arg(args, const void *);
 
                                        printf_num(buf, opos, size, (ulong)arg, 16,
                                                   fieldwidth, precision, flags);
@@ -515,6 +516,37 @@ char *strncpy(char *dest, const char *src, size_t len)
        return orig;
 }
 
+char *strcat(char *dest, const char *src)
+{
+       char *orig = dest;
+       dest += strlen(dest);
+
+       do {
+               *dest = *src++;
+       } while (*dest++);
+
+       return orig;
+}
+
+char *strncat(char *dest, const char *src, size_t len)
+{
+       char *orig = dest;
+       int orig_len = strlen(dest);
+       
+       len -= orig_len;
+       dest += orig_len;
+
+       while (len--) {
+               *dest = *src++;
+               
+               if (!*dest++)
+                       break;
+       }
+       
+       bzero(dest, len);
+       return orig;
+}
+
 void bzero(void *b, size_t len)
 {
        char *c = static_cast<char *>(b);