[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: about default_ldt
Hi,
> struct desc_struct default_ldt[] = { { 0, 0 }, { 0, 0 }, { 0, 0 },
> { 0, 0 }, { 0, 0 } };
> why does default_ldt have five elements?
> why this size? 5*sizeof(desc_struct)
I can't find exact explanation, however I saw this in trap_init() in
arch/i386/kernel/traps.c (kernel 2.4.20):
#if 0
set_call_gate(&default_ldt[0],lcall7);
set_call_gate(&default_ldt[4],lcall27);
#endif 0
So, seems like "5" is a magic number to support some archaic
requirements, since I can't find similar one in 2.6.x series (to be
precise, 2.6.11.1)
IIRC, LDT was used to support non-NPTL based LinuxThreads, since it
creates segments in LDT and created in process-wide style (all threads
in same thread group refer to different LDT entry in the same LDT
table). But now, the segments are created/updated in GDT (i am talking
about TLS) since TLS entry are made per thread.
LDT is also used in Wine, since Windows applications assume segmentation
during runtime, but I don't know the detail. Maybe this isn't true for
latest Windows version (NT above) since many OS are now using flat
addresing and rely more in paging mechanism.
Somebody, please CMIIW.
regards,
Mulyadi
--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive: http://mail.nl.linux.org/kernelnewbies/
FAQ: http://kernelnewbies.org/faq/