00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __CONVEN_THREAD_H__
00011 #define __CONVEN_THREAD_H__ 1
00012 #include <libc.h>
00013
00017 #define THREADOPT_SCHED (1<<0u)
00018 #define THREADOPT_SERVICE (1<<1u)
00019 #define THREADOPT_REALTIME (1<<2u)
00020 #define THREADOPT_KERNEL (1<<3u)
00021 #define THREADOPT_TRACED (1<<4u)
00022 #define THREADOPT_HEAPSTK (1<<5u)
00023 #define THREADOPT_FIXEDSEL (1<<6u)
00024 #define THREADOPT_NOSTK (1<<7u)
00025 #define THREADOPT_COPYTSS (1<<8u)
00026 #define THREADOPT_DONTSIMCALL (1<<9u)
00027 #define THREADOPT_IOMAP (1<<10u)
00028 #define THREADOPT_DONTRUN (1<<11u)
00029 #define THREADOPT_VERBOSE (1<<16u)
00032
00033
00034
00035 typedef enum
00036 {
00037 THREAD_EZERO = 0,
00039 THREAD_PRSV_TCB = 100,
00040 THREAD_KRSV_TCB,
00041 THREAD_WIRE_TCB,
00042 THREAD_TCBREG,
00043 THREAD_PRSV_STK,
00044 THREAD_VRSV_STK,
00045 THREAD_MAP_STK,
00046 THREAD_BAD_PL,
00047 THREAD_RUN,
00048 THREAD_ASCREATE,
00049 THREAD_ASATTACH_FAILED,
00050 THREAD_INVALID_CLASS,
00051 THREAD_COPY_PARAMS,
00052 THREAD_COPY_EIPZERO,
00053 THREAD_EBP_NOT_ZERO,
00054 THREAD_NO_CLASS,
00056 THREAD_LCLASS = 200,
00057 THREAD_LNAME,
00058 THREAD_LSTATUS,
00059 THREAD_LTSS,
00060 THREAD_LTRACE,
00061 THREAD_LEP,
00063 } t_thread_status;
00064
00065
00066
00067 int param_gen(char **argv, int argc, char **params, int *paramlen);
00068 t_thread_status thread_create(char *name, asid_t asid, u_int32_t eip, int nbstkpgs, int for_cpu, u_int sel, u_int32_t threadopts, char *parambuf, int paramlen, struct s_tcb_export *tcb);
00069 #endif