RFC: ABI support for special memory area
H.J. Lu
hjl.tools@gmail.com
Sun Jan 1 00:00:00 GMT 2017
On Thu, Mar 2, 2017 at 7:16 AM, Suprateeka R Hegde
<hegdesmailbox@gmail.com> wrote:
> On 23-Feb-2017 09:49 PM, H.J. Lu wrote:
>>
>> The default implementation of __gnu_mbind_setup is
>>
>> int
>> __gnu_mbind_setup (unsigned int type, void *addr, size_t length)
>> {
>> return 0;
>> }
>>
>> which can be overridden by a different implementation at link-time.
>>
>
> Since this is a design that allows vendor specific extension and
> implementation, would it OK if we make it more generic?
Yes.
> Instead of a fixed 3 arguments (type, addr, len), how about something like a
> pointer to a generic MBIND_CONTEXT struct (say of type __gnu_mbind_context
> defined)? And let the implementation define the actual struct.
We can add more arguments. But they must be predefined since
__gnu_mbind_setup is called from ld.so which must know what to
pass to __gnu_mbind_setup.
> I would like to handle NVM/NVMe (long back I had mentioned about
> PT_PERSISTENT) through this MBIND and my implementation of handling NVM/NVMe
> needs more data to be passed to such "setup" functions.
I call it MBIND since a MBIND segment is inside a LOAD segment and
my real __gnu_mbind_setup will call mbind to move a MBIND region to
a NUMA node after it has been loaded and relocated. We can give it
a different name if you have a better one.
> Or is this __gnu_mbind_setup should be considered as a very basic /
> fundamental function (used just to setup the "memory area") and
> implementations/vendors are expected to write wrapper/handler functions to
> handle other aspects of the special memory? In that case the fixed set of
> basic args looks OK.
That is correct. __gnu_mbind_setup is platform specific. We can pass as
much as we need to __gnu_mbind_setup. But they have to be fixed.
> IMHO this __gnu_mbind_setup is a very good design to be generic enough and
> not be very specific/basic/fundamental runtime support.
>
Thanks.
--
H.J.
More information about the Gnu-gabi
mailing list