Changeset 1066041 in mainline for kernel/generic/include
- Timestamp:
- 2012-07-11T07:58:03Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 935e28c
- Parents:
- b68ae24
- Location:
- kernel/generic/include
- Files:
-
- 6 edited
-
arch.h (modified) (5 diffs)
-
cpu.h (modified) (1 diff)
-
mm/as.h (modified) (1 diff)
-
preemption.h (modified) (1 diff)
-
proc/task.h (modified) (1 diff)
-
proc/thread.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/generic/include/arch.h
rb68ae24 r1066041 36 36 #define KERN_ARCH_H_ 37 37 38 #include <arch/arch.h> 39 #include <proc/thread.h> 40 #include <proc/task.h> 41 #include <mm/as.h> 38 #include <arch/arch.h> /* arch_pre_main() */ 39 #include <arch/asm.h> /* get_stack_base() */ 40 42 41 43 42 /* … … 49 48 #define THE ((the_t * )(get_stack_base())) 50 49 51 #define CPU THE->cpu52 #define THREAD THE->thread53 #define TASK THE->task54 #define AS THE->as55 #define PREEMPTION_DISABLED (0 != THE->preemption_disabled)56 #define PREEMPTION_ENABLED (0 == THE->preemption_disabled)57 50 #define MAGIC UINT32_C(0xfacefeed) 58 51 … … 63 56 ((THE->task) ? (THE->task->container) : (DEFAULT_CONTAINER)) 64 57 58 /* Fwd decl. to avoid include hell. */ 59 struct thread; 60 struct task; 61 struct cpu; 62 struct as; 63 65 64 /** 66 65 * For each possible kernel stack, structure … … 69 68 */ 70 69 typedef struct { 71 size_t preemption _disabled; /**< Preemption disabled counter. */72 thread_t *thread;/**< Current thread. */73 task_t *task;/**< Current task. */74 cpu_t *cpu;/**< Executing cpu. */75 as_t *as;/**< Current address space. */76 uint32_t magic; /**< Magic value */70 size_t preemption; /**< Preemption disabled counter and flag. */ 71 struct thread *thread; /**< Current thread. */ 72 struct task *task; /**< Current task. */ 73 struct cpu *cpu; /**< Executing cpu. */ 74 struct as *as; /**< Current address space. */ 75 uint32_t magic; /**< Magic value */ 77 76 } the_t; 78 77 … … 92 91 extern void *arch_construct_function(fncptr_t *, void *, void *); 93 92 93 94 94 #endif 95 95 -
kernel/generic/include/cpu.h
rb68ae24 r1066041 43 43 #include <arch/context.h> 44 44 #include <adt/list.h> 45 #include <arch.h> 46 47 #define CPU THE->cpu 48 45 49 46 50 /** CPU structure. -
kernel/generic/include/mm/as.h
rb68ae24 r1066041 48 48 #include <adt/btree.h> 49 49 #include <lib/elf.h> 50 #include <arch.h> 51 52 #define AS THE->as 53 50 54 51 55 /** -
kernel/generic/include/preemption.h
rb68ae24 r1066041 36 36 #define KERN_PREEMPTION_H_ 37 37 38 extern void preemption_disable(void); 39 extern void preemption_enable(void); 40 extern void preemption_enable_noresched(void); 41 extern void preemption_enabled_scheduler(void); 38 #include <arch.h> 39 #include <compiler/barrier.h> 40 #include <debug.h> 41 42 #define PREEMPTION_INC (1 << 1) 43 #define PREEMPTION_NEEDED_FLAG (1 << 0) 44 #define PREEMPTION_NEEDED (THE->preemption & PREEMPTION_NEEDED_FLAG) 45 #define PREEMPTION_DISABLED (PREEMPTION_INC <= THE->preemption) 46 #define PREEMPTION_ENABLED (!PREEMPTION_DISABLED) 47 48 /** Increment preemption disabled counter. */ 49 #define preemption_disable() \ 50 do { \ 51 THE->preemption += PREEMPTION_INC; \ 52 compiler_barrier(); \ 53 } while (0) 54 55 /** Restores preemption and reschedules if out time slice already elapsed.*/ 56 #define preemption_enable() \ 57 do { \ 58 preemption_enable_noresched(); \ 59 \ 60 if (PREEMPTION_ENABLED && PREEMPTION_NEEDED) { \ 61 preemption_enabled_scheduler(); \ 62 } \ 63 } while (0) 64 65 /** Restores preemption but never reschedules. */ 66 #define preemption_enable_noresched() \ 67 do { \ 68 ASSERT(PREEMPTION_DISABLED); \ 69 compiler_barrier(); \ 70 THE->preemption -= PREEMPTION_INC; \ 71 } while (0) 42 72 43 73 74 extern void preemption_enabled_scheduler(void); 75 extern void preemption_set_needed(void); 76 extern void preemption_clear_needed(void); 44 77 45 78 #endif -
kernel/generic/include/proc/task.h
rb68ae24 r1066041 57 57 #include <mm/as.h> 58 58 #include <abi/sysinfo.h> 59 #include <arch.h> 60 61 #define TASK THE->task 62 59 63 60 64 struct thread; -
kernel/generic/include/proc/thread.h
rb68ae24 r1066041 49 49 #include <udebug/udebug.h> 50 50 #include <abi/sysinfo.h> 51 #include <arch.h> 52 53 54 #define THREAD THE->thread 51 55 52 56 #define THREAD_NAME_BUFLEN 20 … … 155 159 state_t state; 156 160 157 /** The thread would have been rescheduled had it not disabled preemption.*/158 bool need_resched;159 160 161 /** Thread CPU. */ 161 162 cpu_t *cpu;
Note:
See TracChangeset
for help on using the changeset viewer.
