bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 64bit GNU Mach


From: Samuel Thibault
Subject: Re: 64bit GNU Mach
Date: Mon, 2 Apr 2012 14:54:17 +0200
User-agent: Mutt/1.5.21+34 (58baf7c9f32f) (2010-12-30)

Richard Braun, le Mon 02 Apr 2012 14:44:45 +0200, a écrit :
> On Mon, Apr 02, 2012 at 02:39:05PM +0200, Samuel Thibault wrote:
> > > 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.
> 
> I was wondering why you referred to segmentation in the first place.
> I guess segmentation is what you referred to as "the trick".

No, I mentioned segmentation as the way to have both kernel and user
being able to use 4GiB pointers without limiting themselves in the same
linear address area.

> > > 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.
> 
> I believe we're thinking of two different things here. My current idea
> of the solution is to directly convert names (32-bits) to ports or other
> IPC objects (e.g. port sets, 64-bits).

That's what I'm suggesting from the beginning. That needs two differents
types (64bit mach_port_t and 32bit mach_port_name_t), where there is
currently just one (vm_offset_t mach_port_t).

> You may be thinking of converting user names (32-bits) to kernel names
> (64-bits), then kernel names to IPC objects. Am I right ?

No, I thought you were suggesting to convert usernames (32bits) to
kernel pseudo-pointers (32bit), then use some trick to convert these to
real pointers (64bit).

Samuel



reply via email to

[Prev in Thread] Current Thread [Next in Thread]