root/include/linux/miscdevice.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


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

/* [<][>][^][v][top][bottom][index][help] */