OSDN Git Service

Moved the junk codes to junk directory.
[kozos-expbrd/kozos_expbrd.git] / firm / junk / 10 / os / syscall.c
1 #include "defines.h"
2 #include "kozos.h"
3 #include "interrupt.h"
4 #include "syscall.h"
5
6 /* ¥·¥¹¥Æ¥à¡¦¥³¡¼¥ë */
7
8 kz_thread_id_t kz_run(kz_func_t func, char *name, int priority, int stacksize,
9                       int argc, char *argv[])
10 {
11   kz_syscall_param_t param;
12   param.un.run.func = func;
13   param.un.run.name = name;
14   param.un.run.priority = priority;
15   param.un.run.stacksize = stacksize;
16   param.un.run.argc = argc;
17   param.un.run.argv = argv;
18   kz_syscall(KZ_SYSCALL_TYPE_RUN, &param);
19   return param.un.run.ret;
20 }
21
22 void kz_exit(void)
23 {
24   kz_syscall(KZ_SYSCALL_TYPE_EXIT, NULL);
25 }
26
27 int kz_wait(void)
28 {
29   kz_syscall_param_t param;
30   kz_syscall(KZ_SYSCALL_TYPE_WAIT, &param);
31   return param.un.wait.ret;
32 }
33
34 int kz_sleep(void)
35 {
36   kz_syscall_param_t param;
37   kz_syscall(KZ_SYSCALL_TYPE_SLEEP, &param);
38   return param.un.sleep.ret;
39 }
40
41 int kz_wakeup(kz_thread_id_t id)
42 {
43   kz_syscall_param_t param;
44   param.un.wakeup.id = id;
45   kz_syscall(KZ_SYSCALL_TYPE_WAKEUP, &param);
46   return param.un.wakeup.ret;
47 }
48
49 kz_thread_id_t kz_getid(void)
50 {
51   kz_syscall_param_t param;
52   kz_syscall(KZ_SYSCALL_TYPE_GETID, &param);
53   return param.un.getid.ret;
54 }
55
56 int kz_chpri(int priority)
57 {
58   kz_syscall_param_t param;
59   param.un.chpri.priority = priority;
60   kz_syscall(KZ_SYSCALL_TYPE_CHPRI, &param);
61   return param.un.chpri.ret;
62 }
63
64 void *kz_kmalloc(int size)
65 {
66   kz_syscall_param_t param;
67   param.un.kmalloc.size = size;
68   kz_syscall(KZ_SYSCALL_TYPE_KMALLOC, &param);
69   return param.un.kmalloc.ret;
70 }
71
72 int kz_kmfree(void *p)
73 {
74   kz_syscall_param_t param;
75   param.un.kmfree.p = p;
76   kz_syscall(KZ_SYSCALL_TYPE_KMFREE, &param);
77   return param.un.kmfree.ret;
78 }
79
80 int kz_send(kz_msgbox_id_t id, int size, char *p)
81 {
82   kz_syscall_param_t param;
83   param.un.send.id = id;
84   param.un.send.size = size;
85   param.un.send.p = p;
86   kz_syscall(KZ_SYSCALL_TYPE_SEND, &param);
87   return param.un.send.ret;
88 }
89
90 kz_thread_id_t kz_recv(kz_msgbox_id_t id, int *sizep, char **pp)
91 {
92   kz_syscall_param_t param;
93   param.un.recv.id = id;
94   param.un.recv.sizep = sizep;
95   param.un.recv.pp = pp;
96   kz_syscall(KZ_SYSCALL_TYPE_RECV, &param);
97   return param.un.recv.ret;
98 }
99
100 int kz_setintr(softvec_type_t type, kz_handler_t handler)
101 {
102   kz_syscall_param_t param;
103   param.un.setintr.type = type;
104   param.un.setintr.handler = handler;
105   kz_syscall(KZ_SYSCALL_TYPE_SETINTR, &param);
106   return param.un.setintr.ret;
107 }
108
109 /* ¥µ¡¼¥Ó¥¹¡¦¥³¡¼¥ë */
110
111 int kx_wakeup(kz_thread_id_t id)
112 {
113   kz_syscall_param_t param;
114   param.un.wakeup.id = id;
115   kz_srvcall(KZ_SYSCALL_TYPE_WAKEUP, &param);
116   return param.un.wakeup.ret;
117 }
118
119 void *kx_kmalloc(int size)
120 {
121   kz_syscall_param_t param;
122   param.un.kmalloc.size = size;
123   kz_srvcall(KZ_SYSCALL_TYPE_KMALLOC, &param);
124   return param.un.kmalloc.ret;
125 }
126
127 int kx_kmfree(void *p)
128 {
129   kz_syscall_param_t param;
130   param.un.kmfree.p = p;
131   kz_srvcall(KZ_SYSCALL_TYPE_KMFREE, &param);
132   return param.un.kmfree.ret;
133 }
134
135 int kx_send(kz_msgbox_id_t id, int size, char *p)
136 {
137   kz_syscall_param_t param;
138   param.un.send.id = id;
139   param.un.send.size = size;
140   param.un.send.p = p;
141   kz_srvcall(KZ_SYSCALL_TYPE_SEND, &param);
142   return param.un.send.ret;
143 }