Subversion Repositories Kolibri OS

Rev

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