lkml.org 
[lkml]   [2004]   [Sep]   [19]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 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/

\
 
 \ /
  Last update: 2005-03-22 14:06    [W:0.030 / U:0.064 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site