diff options
| author | nthnluu <nate1299@me.com> | 2024-01-28 21:20:27 -0500 |
|---|---|---|
| committer | nthnluu <nate1299@me.com> | 2024-01-28 21:20:27 -0500 |
| commit | c63f340d90800895f007de64b7d2d14624263331 (patch) | |
| tree | 2c0849fa597dd6da831c8707b6f2603403778d7b /user/include/weenix | |
Created student weenix repository
Diffstat (limited to 'user/include/weenix')
| l--------- | user/include/weenix/config.h | 1 | ||||
| -rw-r--r-- | user/include/weenix/debug.h | 12 | ||||
| l--------- | user/include/weenix/syscall.h | 1 | ||||
| -rw-r--r-- | user/include/weenix/trap.h | 26 |
4 files changed, 40 insertions, 0 deletions
diff --git a/user/include/weenix/config.h b/user/include/weenix/config.h new file mode 120000 index 0000000..a92e33c --- /dev/null +++ b/user/include/weenix/config.h @@ -0,0 +1 @@ +../../../kernel/include/config.h
\ No newline at end of file diff --git a/user/include/weenix/debug.h b/user/include/weenix/debug.h new file mode 100644 index 0000000..a30641e --- /dev/null +++ b/user/include/weenix/debug.h @@ -0,0 +1,12 @@ +#include "stdio.h" + +int debug(const char *str); + +#define dbg(fmt, args...) \ + do \ + { \ + char temp[2048]; \ + snprintf(temp, sizeof(temp), "%s:%d %s(): " fmt, __FILE__, __LINE__, \ + __func__, ##args); \ + debug(temp); \ + } while (0); diff --git a/user/include/weenix/syscall.h b/user/include/weenix/syscall.h new file mode 120000 index 0000000..0a85ee5 --- /dev/null +++ b/user/include/weenix/syscall.h @@ -0,0 +1 @@ +../../../kernel/include/api/syscall.h
\ No newline at end of file diff --git a/user/include/weenix/trap.h b/user/include/weenix/trap.h new file mode 100644 index 0000000..fade1eb --- /dev/null +++ b/user/include/weenix/trap.h @@ -0,0 +1,26 @@ +#pragma once + +#include "errno.h" +#include "stddef.h" +#include "sys/types.h" +#include "weenix/syscall.h" + +#define TRAP_INTR_STRING QUOTE(INTR_SYSCALL) + +/* ssize_t will be 32 bits or 64 bits wide as appropriate. + args are passed via %(r/e)ax and %(r/e)dx, so they need + to be the size of a register. */ + +static inline ssize_t trap(ssize_t num, ssize_t arg) +{ + ssize_t ret; + __asm__ volatile("int $" TRAP_INTR_STRING + : "=a"(ret) + : "a"(num), "d"(arg)); + + /* Copy in errno */ + __asm__ volatile("int $" TRAP_INTR_STRING + : "=a"(errno) + : "a"(SYS_errno)); + return ret; +} |
