8 kz_thread_id_t kz_run(kz_func_t func, char *name, int priority, int stacksize,
9 int argc, char *argv[])
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, ¶m);
19 return param.un.run.ret;
24 kz_syscall(KZ_SYSCALL_TYPE_EXIT, NULL);
29 kz_syscall_param_t param;
30 kz_syscall(KZ_SYSCALL_TYPE_WAIT, ¶m);
31 return param.un.wait.ret;
36 kz_syscall_param_t param;
37 kz_syscall(KZ_SYSCALL_TYPE_SLEEP, ¶m);
38 return param.un.sleep.ret;
41 int kz_wakeup(kz_thread_id_t id)
43 kz_syscall_param_t param;
44 param.un.wakeup.id = id;
45 kz_syscall(KZ_SYSCALL_TYPE_WAKEUP, ¶m);
46 return param.un.wakeup.ret;
49 kz_thread_id_t kz_getid(void)
51 kz_syscall_param_t param;
52 kz_syscall(KZ_SYSCALL_TYPE_GETID, ¶m);
53 return param.un.getid.ret;
56 int kz_chpri(int priority)
58 kz_syscall_param_t param;
59 param.un.chpri.priority = priority;
60 kz_syscall(KZ_SYSCALL_TYPE_CHPRI, ¶m);
61 return param.un.chpri.ret;
64 void *kz_kmalloc(int size)
66 kz_syscall_param_t param;
67 param.un.kmalloc.size = size;
68 kz_syscall(KZ_SYSCALL_TYPE_KMALLOC, ¶m);
69 return param.un.kmalloc.ret;
72 int kz_kmfree(void *p)
74 kz_syscall_param_t param;
75 param.un.kmfree.p = p;
76 kz_syscall(KZ_SYSCALL_TYPE_KMFREE, ¶m);
77 return param.un.kmfree.ret;
80 int kz_send(kz_msgbox_id_t id, int size, char *p)
82 kz_syscall_param_t param;
83 param.un.send.id = id;
84 param.un.send.size = size;
86 kz_syscall(KZ_SYSCALL_TYPE_SEND, ¶m);
87 return param.un.send.ret;
90 kz_thread_id_t kz_recv(kz_msgbox_id_t id, int *sizep, char **pp)
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, ¶m);
97 return param.un.recv.ret;
100 int kz_setintr(softvec_type_t type, kz_handler_t handler)
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, ¶m);
106 return param.un.setintr.ret;
109 /* ¥µ¡¼¥Ó¥¹¡¦¥³¡¼¥ë */
111 int kx_wakeup(kz_thread_id_t id)
113 kz_syscall_param_t param;
114 param.un.wakeup.id = id;
115 kz_srvcall(KZ_SYSCALL_TYPE_WAKEUP, ¶m);
116 return param.un.wakeup.ret;
119 void *kx_kmalloc(int size)
121 kz_syscall_param_t param;
122 param.un.kmalloc.size = size;
123 kz_srvcall(KZ_SYSCALL_TYPE_KMALLOC, ¶m);
124 return param.un.kmalloc.ret;
127 int kx_kmfree(void *p)
129 kz_syscall_param_t param;
130 param.un.kmfree.p = p;
131 kz_srvcall(KZ_SYSCALL_TYPE_KMFREE, ¶m);
132 return param.un.kmfree.ret;
135 int kx_send(kz_msgbox_id_t id, int size, char *p)
137 kz_syscall_param_t param;
138 param.un.send.id = id;
139 param.un.send.size = size;
141 kz_srvcall(KZ_SYSCALL_TYPE_SEND, ¶m);
142 return param.un.send.ret;