void (*trigger)(struct gameport *); unsignedchar (*read)(struct gameport *); int (*cooked_read)(struct gameport *, int *, int *); int (*calibrate)(struct gameport *, int *, int *); int (*open)(struct gameport *, int); void (*close)(struct gameport *);
int gameport_open(struct gameport *gameport, struct gameport_driver *drv, int mode); void gameport_close(struct gameport *gameport);
#if IS_REACHABLE(CONFIG_GAMEPORT)
void __gameport_register_port(struct gameport *gameport, struct module *owner); /* use a define to avoid include chaining to get THIS_MODULE */ #define gameport_register_port(gameport) \
__gameport_register_port(gameport, THIS_MODULE)
/* * Use the following functions to pin gameport's driver in process context
*/ staticinlineint gameport_pin_driver(struct gameport *gameport)
{ return mutex_lock_interruptible(&gameport->drv_mutex);
}
int __must_check __gameport_register_driver(struct gameport_driver *drv, struct module *owner, constchar *mod_name);
/* use a define to avoid include chaining to get THIS_MODULE & friends */ #define gameport_register_driver(drv) \
__gameport_register_driver(drv, THIS_MODULE, KBUILD_MODNAME)
/** * module_gameport_driver() - Helper macro for registering a gameport driver * @__gameport_driver: gameport_driver struct * * Helper macro for gameport drivers which do not do anything special in * module init/exit. This eliminates a lot of boilerplate. Each module may * only use this macro once, and calling it replaces module_init() and * module_exit().
*/ #define module_gameport_driver(__gameport_driver) \
module_driver(__gameport_driver, gameport_register_driver, \
gameport_unregister_driver)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.