Richard Braun, le Mon 02 Apr 2012 14:34:25 +0200, a écrit : > On Mon, Apr 02, 2012 at 02:18:34PM +0200, Samuel Thibault wrote: > > But then it needs some trick to convert to pointer everywhere needed. > > Trying to manage low-4GiB allocation to avoid the trick would make > > things nasty: remember that x86_64 does not have segmentation any more, > > only flat addressing space, so we'd still need a 4GiB User/Kernel > > separation, which was precisely what I wanted to avoid. > > I'm not following there. The conversion to pointer would be a simple > lookup (changing all occurrences in the kernel can be tedious, agreed).
That's what I'm a bit reluctant to do. > I don't see the relation with segmentation and the 4GiB split. I said: "to avoid the trick", i.e. just use 32bit pointers, to just use the same type as in userland as you suggested. > What is the layout you expect for the kernel space ? First 4 GiB user > then kernel ? First 4GiB user, last 4GiB kernel. > And you thought of segmentation to implicitely shift addresses ? Again, there is no segmentation in x86_64. > IMHO, changing GNU Mach to cleanly convert port names where needed > remains the sane choice. That is, use 32bit port names for userland, and convert to 64bit port addresses for kernelland. But that can only work if using different types. Samuel