Messages in this thread | | | Date | Sun, 27 Aug 2006 10:34:46 -0700 | From | Jeremy Fitzhardinge <> | Subject | Re: [PATCH RFC 0/6] Implement per-processor data areas for i386. |
| |
Andreas Mohr wrote: > This is interesting, since even by doing a non-elegant > current->... --> struct task_struct *tsk = current; > replacement for excessive uses of current, I was able to gain almost 10kB > within a single file already! > I guess it's due to having tried that on an older installation with gcc 3.2, > which probably does less efficient opcode merging of current_thread_info() > requests compared to a current gcc version. > IOW, .text segment reduction could be quite a bit higher for older gcc:s. >
That doesn't sound likely. current_thread_info() is only about 2 instructions. Are you looking at the .text segment size, or the actual file size? The latter can be very misleading in the presence of debug info.
>> This uses the x86 segmentation stuff in a way similar to NPTL's way of >> implementing Thread-Local Storage. It relies on the fact that each CPU >> has its own Global Descriptor Table (GDT), which is basically an array >> of base-length pairs (with some extra stuff). When a segment register >> is loaded with a descriptor (approximately, an index in the GDT), and >> you use that segment register for memory access, the address has the >> base added to it, and the resulting address is used. >> > > Not a problem for more daring user-space apps (i.e. Wine), I hope? >
No. The LDT is still available for userspace use.
J - 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/
| |