Well, I must eat my own shorts, it works now. I've updated to a
current kernel and at least cannot reproduce the problem with the
simple test cases we are having.
I've corrected one problem with the code, fixed a few typos which the
more recent gas I'm using now found. None of these changes explain
the behaviour I saw before (namely, that it worked 50% of the time
without problems). I can use %gs now. The special signal handlers
which were necessary before are removed.
Now is the question: when did it get fixed? I haven't tested this for
quite some time. Maybe I'll simply define 2.3.99 as the first version
where it works.
This leaves only one more thing to do: convince Linus to make the
modify_ldt syscall cheaper by not allocating all the entry at once.
If we count always have one entry (which can be statically allocated
in the task structure) this would help to always use the segment
register for things like errno. Lots of function calls would go away.
I understand that this is a problem since LDT of all threads must be
set before the old memory can go away. But I think it is possible to
implement a special case for one pre-allocated entry.
Sorry for wasting everybody's time.
-- ---------------. drepper at gnu.org ,-. 1325 Chesapeake Terrace Ulrich Drepper \ ,-------------------' \ Sunnyvale, CA 94089 USA Red Hat `--' drepper at redhat.com `------------------------
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to email@example.com Please read the FAQ at http://www.tux.org/lkml/
This archive was generated by hypermail 2b29 : Sun Apr 30 2000 - 21:00:09 EST