s390/Kconfig: sort config S390 select list once again
[linux-2.6-microblaze.git] / include / linux / moduleparam.h
index 1ad5aa3..eed280f 100644 (file)
 #define MAX_PARAM_PREFIX_LEN (64 - sizeof(unsigned long))
 
 #define __MODULE_INFO(tag, name, info)                                   \
-static const char __UNIQUE_ID(name)[]                                    \
-  __used __attribute__((section(".modinfo"), unused, aligned(1)))        \
-  = __MODULE_INFO_PREFIX __stringify(tag) "=" info
+       static const char __UNIQUE_ID(name)[]                             \
+               __used __section(".modinfo") __aligned(1)                 \
+               = __MODULE_INFO_PREFIX __stringify(tag) "=" info
 
 #define __MODULE_PARM_TYPE(name, _type)                                          \
-  __MODULE_INFO(parmtype, name##type, #name ":" _type)
+       __MODULE_INFO(parmtype, name##type, #name ":" _type)
 
 /* One for each parameter, describing how to use it.  Some files do
    multiple of these per line, so can't just use MODULE_INFO. */
@@ -118,7 +118,7 @@ struct kparam_array
  * you can create your own by defining those variables.
  *
  * Standard types are:
- *     byte, short, ushort, int, uint, long, ulong
+ *     byte, hexint, short, ushort, int, uint, long, ulong
  *     charp: a character pointer
  *     bool: a bool, values 0/1, y/n, Y/N.
  *     invbool: the above, only sense-reversed (N = true).
@@ -288,8 +288,8 @@ struct kparam_array
        /* Default value instead of permissions? */                     \
        static const char __param_str_##name[] = prefix #name;          \
        static struct kernel_param __moduleparam_const __param_##name   \
-       __used                                                          \
-    __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \
+       __used __section("__param")                                     \
+       __aligned(__alignof__(struct kernel_param))                     \
        = { __param_str_##name, THIS_MODULE, ops,                       \
            VERIFY_OCTAL_PERMISSIONS(perm), level, flags, { arg } }
 
@@ -448,6 +448,11 @@ extern int param_set_ullong(const char *val, const struct kernel_param *kp);
 extern int param_get_ullong(char *buffer, const struct kernel_param *kp);
 #define param_check_ullong(name, p) __param_check(name, p, unsigned long long)
 
+extern const struct kernel_param_ops param_ops_hexint;
+extern int param_set_hexint(const char *val, const struct kernel_param *kp);
+extern int param_get_hexint(char *buffer, const struct kernel_param *kp);
+#define param_check_hexint(name, p) param_check_uint(name, p)
+
 extern const struct kernel_param_ops param_ops_charp;
 extern int param_set_charp(const char *val, const struct kernel_param *kp);
 extern int param_get_charp(char *buffer, const struct kernel_param *kp);