Wolfgang Grandegger wrote:
> Jan Kiszka wrote:
>> Wolfgang Grandegger wrote:
>>> ...
>>> Index: ksrc/drivers/can/rtcan_internal.h
>>> ===================================================================
>>> --- ksrc/drivers/can/rtcan_internal.h    (revision 1695)
>>> +++ ksrc/drivers/can/rtcan_internal.h    (working copy)
>>> @@ -111,6 +111,10 @@
>>>  
>>>  #ifndef compat_module_int_param_array
>>>  #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,10)
>>> +# define compat_module_int_param(name) \
>>> +    MODULE_PARM(name, "i")
>>> +# define compat_module_charp_param(name) \
>>> +    MODULE_PARM(name, "s")
>>>  # define compat_module_byte_param_array(name, count) \
>>>      MODULE_PARM(name, "1-" __MODULE_STRING(count) "b")
>>>  # define compat_module_short_param_array(name, count) \
>>> @@ -118,6 +122,10 @@
>>>  # define compat_module_int_param_array(name, count) \
>>>      MODULE_PARM(name, "1-" __MODULE_STRING(count) "i")
>>>  #else
>>> +# define compat_module_int_param(name) \
>>> +    module_param(name, int, 0444)
>>> +# define compat_module_charp_param(name) \
>>> +    module_param(name, charp, 0444)
>>>  # define compat_module_byte_param_array(name, count) \
>>>      module_param_array(name, byte, NULL, 0444)
>>>  # define compat_module_short_param_array(name, count) \
>>
>> No need, module_param comes even with 2.4. We only need wrapping for
>> parameter arrays (due to different semantics of the macro arguments).
> 
> But with limitations, unfortunately:
> 
>   /* type is byte, short, ushort, int, uint, long, ulong, bool. (2.6
>      has more, but they are not supported).  perm is permissions when
>      it appears in sysfs: 0 means doens't appear, 0444 means read-only
>      by everyone, 0644 means changable dynamically by root, etc.  name
>      must be in scope (unlike MODULE_PARM).
>   */
>   #define module_param(name, type, perm) \
>         static inline void *__check_existence_##name(void) { return
>              &name; } \
>         MODULE_PARM(name, _MODULE_PARM_STRING_ ## type)
> 
>   #define _MODULE_PARM_STRING_byte "b"
>   #define _MODULE_PARM_STRING_short "h"
>   #define _MODULE_PARM_STRING_ushort "h"
>   #define _MODULE_PARM_STRING_int "i"
>   #define _MODULE_PARM_STRING_uint "i"
>   #define _MODULE_PARM_STRING_long "l"
>   #define _MODULE_PARM_STRING_ulong "l"
>   #define _MODULE_PARM_STRING_bool "i"
> 
> Especially "s" is missing. But it could be wrapped with:
> 
>   #define _MODULE_PARM_STRING_charp "s"
> 
> Any idea why this is not already done?

Likely because you mostly don't need it? I think mscan is an exception
here, at least from my experience.

When _MODULE_PARM_STRING_charp helps to enhance module_param on 2.4,
lets put it in Xenomai's wrapping header. I think we should also move
the parameter array over (directing it officially through the RTDM layer
can still be done later, at the latest when providing user-space
support). I would support a patch doing this as well.

> 
> I also want to replace the compat_module_*_param_array functions with
> the attached code snippet.

Ok, I'm awaiting a revised patch.

Jan

Attachment: signature.asc
Description: OpenPGP digital signature

_______________________________________________
Xenomai-help mailing list
[email protected]
https://mail.gna.org/listinfo/xenomai-help

Reply via email to