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?
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.
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.
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.
IMHO this __gnu_mbind_setup is a very good design to be generic enough and not be very specific/basic/fundamental runtime support.
-- Supra