From 16e1e718e6093115de2a5a8f81406b00d090452b Mon Sep 17 00:00:00 2001 From: Vyacheslav Cherkashin Date: Thu, 4 Jul 2013 12:52:36 +0400 Subject: [PATCH] [REFACTOR] redesing driver new --- driver_new/Kbuild | 3 +-- driver_new/device_driver.c | 32 ++++++++++++++++++++++---------- driver_new/device_driver.h | 10 +++------- driver_new/swap_driver_module.c | 35 ----------------------------------- driver_new/swap_driver_module.h | 9 --------- 5 files changed, 26 insertions(+), 63 deletions(-) delete mode 100644 driver_new/swap_driver_module.c delete mode 100644 driver_new/swap_driver_module.h diff --git a/driver_new/Kbuild b/driver_new/Kbuild index b276966..2a8e7ae 100644 --- a/driver_new/Kbuild +++ b/driver_new/Kbuild @@ -1,6 +1,5 @@ EXTRA_CFLAGS := $(extra_cflags) obj-m := swap_driver_new.o -swap_driver_new-y := swap_driver_module.o \ - device_driver.o \ +swap_driver_new-y := device_driver.o \ driver_to_buffer.o diff --git a/driver_new/device_driver.c b/driver_new/device_driver.c index 4140179..8690ef5 100644 --- a/driver_new/device_driver.c +++ b/driver_new/device_driver.c @@ -56,10 +56,7 @@ static splice_to_pipe_p_t splice_to_pipe_p = NULL; static splice_shrink_spd_p_t splice_shrink_spd_p = NULL; static splice_grow_spd_p_t splice_grow_spd_p = NULL; -/* Typedef for swap_message_parser handler func */ -typedef int(*swap_message_parser_handler_t)(unsigned int cmd, void __user * arg); - -static swap_message_parser_handler_t swap_message_parser_handler = NULL; +static msg_handler_t msg_handler = NULL; /* Device numbers */ static dev_t swap_device_no = 0; @@ -321,8 +318,8 @@ static long swap_device_ioctl(struct file *filp, unsigned int cmd, } default: { - if (swap_message_parser_handler) { - result = swap_message_parser_handler(cmd, (void __user *) arg); + if (msg_handler) { + result = msg_handler((void __user *)arg); } else { // print_warn("Unknown command %d\n", cmd); result = -EINVAL; @@ -449,10 +446,25 @@ void swap_device_wake_up_process(void) wake_up_interruptible(&swap_device_wait); } -int register_message_handler(void *s_m_p_h) +void set_msg_handler(msg_handler_t mh) { - print_debug("Register message handler\n"); + msg_handler = mh; +} +EXPORT_SYMBOL_GPL(set_msg_handler); - swap_message_parser_handler = s_m_p_h; - return E_SD_SUCCESS; +static int __init swap_driver_init(void) +{ + swap_device_init(); + + return 0; } + +static void __exit swap_driver_exit(void) +{ + swap_device_exit(); +} + +module_init(swap_driver_init); +module_exit(swap_driver_exit); + +MODULE_LICENSE("GPL"); diff --git a/driver_new/device_driver.h b/driver_new/device_driver.h index b9aa9c8..738f46b 100644 --- a/driver_new/device_driver.h +++ b/driver_new/device_driver.h @@ -1,13 +1,9 @@ #ifndef __SWAP_DRIVER_DEVICE_DRIVER__ #define __SWAP_DRIVER_DEVICE_DRIVER__ -/* Create and register device */ -int swap_device_init(void); +typedef int (*msg_handler_t)(void __user *data); -/* Delete device */ -void swap_device_exit(void); - -/* Register swap_message_parser handler */ -int register_message_handler(void *s_m_p_h); +/* Set the message handler */ +void set_msg_handler(msg_handler_t mh); #endif /* __SWAP_DRIVER_DEVICE_DRIVER__ */ diff --git a/driver_new/swap_driver_module.c b/driver_new/swap_driver_module.c deleted file mode 100644 index 84c79c7..0000000 --- a/driver_new/swap_driver_module.c +++ /dev/null @@ -1,35 +0,0 @@ -#include - -#include "driver_defs.h" -#include "device_driver.h" - -int register_swap_message_parser_handler(void *s_m_p_h) -{ - return register_message_handler(s_m_p_h); -} -EXPORT_SYMBOL_GPL(register_swap_message_parser_handler); - -static int __init swap_driver_init(void) -{ - print_msg("Module init\n"); - -#ifdef TEST_MODE - print_msg("Test mode on\n"); -#endif - - swap_device_init(); - - return 0; -} - -static void __exit swap_driver_exit(void) -{ - //TODO Kill userspace daemon process - swap_device_exit(); - print_msg("Module exit\n"); -} - -module_init(swap_driver_init); -module_exit(swap_driver_exit); - -MODULE_LICENSE("GPL"); diff --git a/driver_new/swap_driver_module.h b/driver_new/swap_driver_module.h deleted file mode 100644 index a464b10..0000000 --- a/driver_new/swap_driver_module.h +++ /dev/null @@ -1,9 +0,0 @@ -/* SWAP Device Driver interface module */ - -#ifndef __SWAP_DRIVER_MODULE_H__ -#define __SWAP_DRIVER_MODULE_H__ - -/* Register swap_message_parser messages handler */ -int register_swap_message_parser_handler(void *s_m_p_h); - -#endif /* __SWAP_DRIVER_MODULE_H__ */ -- 2.7.4