Subversion Repositories Kolibri OS

Rev

Rev 6082 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. #ifndef _LINUX_MODULE_PARAMS_H
  2. #define _LINUX_MODULE_PARAMS_H
  3. /* (C) Copyright 2001, 2002 Rusty Russell IBM Corporation */
  4. #include <linux/init.h>
  5. #include <linux/kernel.h>
  6. /**
  7.  * module_param - typesafe helper for a module/cmdline parameter
  8.  * @value: the variable to alter, and exposed parameter name.
  9.  * @type: the type of the parameter
  10.  * @perm: visibility in sysfs.
  11.  *
  12.  * @value becomes the module parameter, or (prefixed by KBUILD_MODNAME and a
  13.  * ".") the kernel commandline parameter.  Note that - is changed to _, so
  14.  * the user can use "foo-bar=1" even for variable "foo_bar".
  15.  *
  16.  * @perm is 0 if the the variable is not to appear in sysfs, or 0444
  17.  * for world-readable, 0644 for root-writable, etc.  Note that if it
  18.  * is writable, you may need to use kernel_param_lock() around
  19.  * accesses (esp. charp, which can be kfreed when it changes).
  20.  *
  21.  * The @type is simply pasted to refer to a param_ops_##type and a
  22.  * param_check_##type: for convenience many standard types are provided but
  23.  * you can create your own by defining those variables.
  24.  *
  25.  * Standard types are:
  26.  *      byte, short, ushort, int, uint, long, ulong
  27.  *      charp: a character pointer
  28.  *      bool: a bool, values 0/1, y/n, Y/N.
  29.  *      invbool: the above, only sense-reversed (N = true).
  30.  */
  31. #define module_param(name, type, perm)                          \
  32.         module_param_named(name, name, type, perm)
  33.  
  34. /**
  35.  * module_param_unsafe - same as module_param but taints kernel
  36.  */
  37. #define module_param_unsafe(name, type, perm)                   \
  38.         module_param_named_unsafe(name, name, type, perm)
  39.  
  40. /**
  41.  * module_param_named - typesafe helper for a renamed module/cmdline parameter
  42.  * @name: a valid C identifier which is the parameter name.
  43.  * @value: the actual lvalue to alter.
  44.  * @type: the type of the parameter
  45.  * @perm: visibility in sysfs.
  46.  *
  47.  * Usually it's a good idea to have variable names and user-exposed names the
  48.  * same, but that's harder if the variable must be non-static or is inside a
  49.  * structure.  This allows exposure under a different name.
  50.  */
  51. #define module_param_named(name, value, type, perm)
  52. /**
  53.  * module_param_named_unsafe - same as module_param_named but taints kernel
  54.  */
  55.  
  56. #define module_param_named_unsafe(name, value, type, perm)
  57.  
  58. #define MODULE_PARM_DESC(_parm, desc)
  59.  
  60. #ifdef CONFIG_SYSFS
  61. extern void kernel_param_lock(struct module *mod);
  62. extern void kernel_param_unlock(struct module *mod);
  63. #else
  64. static inline void kernel_param_lock(struct module *mod)
  65. {
  66. }
  67. static inline void kernel_param_unlock(struct module *mod)
  68. {
  69. }
  70. #endif
  71. #endif
  72.