summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2010-06-07 16:39:45 -0500
committerPatrick Williams <iawillia@us.ibm.com>2010-06-07 16:39:45 -0500
commit9a4698af6ee4c095a97b8800d2d5f0a4bb282b15 (patch)
tree9f5241ee1f91d21c8043b359d7bfaeb309ecd5b8 /src/lib
parentaa1db69f1de27bba8ee5e128f717557780f21e0d (diff)
downloadtalos-hostboot-9a4698af6ee4c095a97b8800d2d5f0a4bb282b15.tar.gz
talos-hostboot-9a4698af6ee4c095a97b8800d2d5f0a4bb282b15.zip
Add task control syscalls.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/makefile3
-rw-r--r--src/lib/syscall_task.C26
2 files changed, 28 insertions, 1 deletions
diff --git a/src/lib/makefile b/src/lib/makefile
index 9ea27377e..1071dc75e 100644
--- a/src/lib/makefile
+++ b/src/lib/makefile
@@ -1,7 +1,8 @@
OBJDIR = ../../obj
include ../../config.mk
-OBJS = string.o stdlib.o syscall_stub.o
+OBJS = string.o stdlib.o
+OBJS += syscall_stub.o syscall_task.o
OBJECTS = $(addprefix ${OBJDIR}/, ${OBJS})
all: ${OBJECTS}
diff --git a/src/lib/syscall_task.C b/src/lib/syscall_task.C
new file mode 100644
index 000000000..bfd522933
--- /dev/null
+++ b/src/lib/syscall_task.C
@@ -0,0 +1,26 @@
+#include <sys/task.h>
+#include <kernel/task.H>
+
+using namespace Systemcalls;
+
+void task_yield()
+{
+ _syscall0(TASK_YIELD);
+ return;
+}
+
+int task_create(void(*fn)(void*), void* ptr)
+{
+ return (int64_t) _syscall2(TASK_START, (void*)fn, ptr);
+}
+
+void task_end()
+{
+ _syscall0(TASK_END); // no return.
+ return;
+}
+
+uint64_t task_gettid()
+{
+ return (uint64_t)_syscall0(TASK_GETTID);
+}
OpenPOWER on IntegriCloud