linux/include/linux/miscdevice.h
<<
>>
Prefs
   1#ifndef _LINUX_MISCDEVICE_H
   2#define _LINUX_MISCDEVICE_H
   3#include <linux/major.h>
   4#include <linux/list.h>
   5#include <linux/types.h>
   6#include <linux/device.h>
   7
   8/*
   9 *      These allocations are managed by device@lanana.org. If you use an
  10 *      entry that is not in assigned your entry may well be moved and
  11 *      reassigned, or set dynamic if a fixed value is not justified.
  12 */
  13
  14#define PSMOUSE_MINOR           1
  15#define MS_BUSMOUSE_MINOR       2       /* unused */
  16#define ATIXL_BUSMOUSE_MINOR    3       /* unused */
  17/*#define AMIGAMOUSE_MINOR      4       FIXME OBSOLETE */
  18#define ATARIMOUSE_MINOR        5       /* unused */
  19#define SUN_MOUSE_MINOR         6       /* unused */
  20#define APOLLO_MOUSE_MINOR      7       /* unused */
  21#define PC110PAD_MINOR          9       /* unused */
  22/*#define ADB_MOUSE_MINOR       10      FIXME OBSOLETE */
  23#define WATCHDOG_MINOR          130     /* Watchdog timer     */
  24#define TEMP_MINOR              131     /* Temperature Sensor */
  25#define APM_MINOR_DEV           134
  26#define RTC_MINOR               135
  27#define EFI_RTC_MINOR           136     /* EFI Time services */
  28#define VHCI_MINOR              137
  29#define SUN_OPENPROM_MINOR      139
  30#define DMAPI_MINOR             140     /* unused */
  31#define NVRAM_MINOR             144
  32#define SGI_MMTIMER             153
  33#define STORE_QUEUE_MINOR       155     /* unused */
  34#define I2O_MINOR               166
  35#define HWRNG_MINOR             183
  36#define MICROCODE_MINOR         184
  37#define IRNET_MINOR             187
  38#define VFIO_MINOR              196
  39#define TUN_MINOR               200
  40#define CUSE_MINOR              203
  41#define MWAVE_MINOR             219     /* ACP/Mwave Modem */
  42#define MPT_MINOR               220
  43#define MPT2SAS_MINOR           221
  44#define MPT3SAS_MINOR           222
  45#define UINPUT_MINOR            223
  46#define MISC_MCELOG_MINOR       227
  47#define HPET_MINOR              228
  48#define FUSE_MINOR              229
  49#define KVM_MINOR               232
  50#define BTRFS_MINOR             234
  51#define AUTOFS_MINOR            235
  52#define MAPPER_CTRL_MINOR       236
  53#define LOOP_CTRL_MINOR         237
  54#define VHOST_NET_MINOR         238
  55#define UHID_MINOR              239
  56#define USERIO_MINOR            240
  57#define MISC_DYNAMIC_MINOR      255
  58
  59struct device;
  60struct attribute_group;
  61
  62struct miscdevice  {
  63        int minor;
  64        const char *name;
  65        const struct file_operations *fops;
  66        struct list_head list;
  67        struct device *parent;
  68        struct device *this_device;
  69        const struct attribute_group **groups;
  70        const char *nodename;
  71        umode_t mode;
  72};
  73
  74extern int misc_register(struct miscdevice *misc);
  75extern void misc_deregister(struct miscdevice *misc);
  76
  77/*
  78 * Helper macro for drivers that don't do anything special in the initcall.
  79 * This helps in eleminating of boilerplate code.
  80 */
  81#define builtin_misc_device(__misc_device) \
  82        builtin_driver(__misc_device, misc_register)
  83
  84/*
  85 * Helper macro for drivers that don't do anything special in module init / exit
  86 * call. This helps in eleminating of boilerplate code.
  87 */
  88#define module_misc_device(__misc_device) \
  89        module_driver(__misc_device, misc_register, misc_deregister)
  90
  91#define MODULE_ALIAS_MISCDEV(minor)                             \
  92        MODULE_ALIAS("char-major-" __stringify(MISC_MAJOR)      \
  93        "-" __stringify(minor))
  94#endif
  95