Messages in this thread | | | Date | Sun, 19 Sep 2004 10:41:21 +0200 | From | Remi Colinet <> | Subject | Re: init_tss problem |
| |
Cyril Wattebled wrote:
> Hi, > I'm trying to understand some piece of kernel code and I've come to > this : > In arch/i386/kernel/process.c: > struct tss_struct *tss = &per_cpu(init_tss, cpu); > I don't know what init_tss is. > It's defined in asm/processor.h with the macro DEFINE_PER_CPU > (tss_struct, init_tss) > which basically does extern tss_struct init_tss. > But this init_tss has to be declared somewhere to be used as extern ... > I've searched the entire code for any reference to it but I only found > it in > arch/x86_64/kernel/init_task.c which is normaly not compiled on my > system. > I'm in a dead end ... anyone .. help ? > Thanks
TSS is a Task State Segment. It is defined in include/asm-i386/processor.h. init_tss is the Task State Segment used by the statically forked init process. (process 0)
Each CPU has its own tss.
This segment is used by i386 and x86_64 CPUs to store the CPU/process context. Could be used to have hardware context switch (not used by Linux).
In order to have a clean understanding about TSS (and more generally i386), you should have a look at the i386 Intel specifiction, manual vol 3 (system programming manual) Then, you could also read the AMD64 specification if you wish to understand x86_64...
Regards Remi
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |