From: Daniel P. <phi...@in...> - 2000-12-07 08:41:00
|
On Thu, 07 Dec 2000, st...@ne... wrote: > Thanks, Jeff. I have no idea what modify_ldt does, but I straced > a run of the JVM under the normal kernel and found it was returning > 0 (at least in these two cases) so I implemented a one-line modify_ldt > in UML that returns 0. The result was that Java hung. I did not strace > that run so I don't know what was up. At that point I sent the mail. Just from the name, it modifies the local descriptor table, a deep hack into the x86 mmu. What's it doing? Defining some segment limit, probably, perhaps it's a clever way of checking array limits. The local descriptor table defines the virtual address base, size, permissions, and miscellaneous attributes for 286/386-style segments. In Linux/Unix we do everything in a flat address space so we don't have to worry about segments. There are some clever and useful things you can do with segments that are difficult to do by other means. But you will very definitely have portability problems, as we see here. Jeff, I'm not sure you really want to pollute the pristine purity of uml by emulating Intel segments. :-) Maybe this is another reason to have uml plugins. -- Daniel |