POK(kernelpart)
/home/jaouen/pok_official/pok/trunk/kernel/arch/x86/thread.h
Go to the documentation of this file.
00001 /*
00002  *                               POK header
00003  * 
00004  * The following file is a part of the POK project. Any modification should
00005  * made according to the POK licence. You CANNOT use this file or a part of
00006  * this file is this part of a file for your own project
00007  *
00008  * For more information on the POK licence, please see our LICENCE FILE
00009  *
00010  * Please follow the coding guidelines described in doc/CODING_GUIDELINES
00011  *
00012  *                                      Copyright (c) 2007-2009 POK team 
00013  *
00014  * Created by julien on Thu Jan 15 23:34:13 2009 
00015  */
00016 
00017 
00018 #ifndef __POK_X86_THREAD_H__
00019 #define __POK_X86_THREAD_H__
00020 
00021 #include <types.h>
00022 
00023 typedef struct
00024 {
00025   uint32_t edi;
00026   uint32_t esi;
00027   uint32_t ebp;
00028   uint32_t __esp;
00029   uint32_t ebx;
00030   uint32_t edx;
00031   uint32_t ecx;
00032   uint32_t eax;
00033 
00034   uint32_t eip;
00035   uint32_t cs;
00036   uint32_t eflags;
00037 
00038 } context_t;
00039 
00040 typedef struct
00041 {
00042   context_t ctx;
00043   uint32_t fake_ret;
00044   uint32_t entry;
00045   uint32_t id;
00046 } start_context_t;
00047 
00048 uint32_t                pok_context_create(uint32_t id,
00049                                            uint32_t stack_size,
00050                                            uint32_t entry);
00051 
00052 void                    pok_context_switch(uint32_t* old_sp,
00053                                            uint32_t new_sp);
00054 
00055 void                    pok_context_reset(uint32_t stack_size,
00056                                           uint32_t stack_addr);
00057 
00058 #endif /* !__POK_X86_THREAD_H__ */
00059