user: 1,
dpl: 0,
present: 1,
- limit_high: 0xff,
+ limit_high: 0xf,
sw: 0,
reserved: 0,
opsize: 1,
user: 1,
dpl: 0,
present: 1,
- limit_high: 0xff,
+ limit_high: 0xf,
sw: 0,
reserved: 0,
opsize: 1,
user: 1,
dpl: 3,
present: 1,
- limit_high: 0x7f,
+ limit_high: 0x7,
sw: 0,
reserved: 0,
opsize: 1,
user: 1,
dpl: 3,
present: 1,
- limit_high: 0x7f,
+ limit_high: 0x7,
sw: 0,
reserved: 0,
opsize: 1,
}
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
}
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;
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);
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();
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);
#include <kern/types.h>
#include <kern/libc.h>
+#include <kern/console.h>
#include <stdarg.h>
#include <limits.h>
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;
break;
case 's': {
- char *arg = va_arg(args, char *);
+ const char *arg = va_arg(args, const char *);
if (!arg)
arg = "(null)";
}
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);
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);