From 8238a788ac34d2fc3ba8feaab55212736a438d34 Mon Sep 17 00:00:00 2001 From: gaoyang3513 Date: Tue, 16 Jan 2024 23:33:24 +0800 Subject: [PATCH] [Add] Char driver register nanually --- 01-Char/Char_Manual/Makefile | 21 ++++++++++++++++ 01-Char/Char_Manual/char_manual.c | 42 +++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 01-Char/Char_Manual/Makefile create mode 100644 01-Char/Char_Manual/char_manual.c diff --git a/01-Char/Char_Manual/Makefile b/01-Char/Char_Manual/Makefile new file mode 100644 index 000000000..3cd9b5e97 --- /dev/null +++ b/01-Char/Char_Manual/Makefile @@ -0,0 +1,21 @@ +ifeq ($(KERNELRELEASE),) + +ifeq ($(ARCH),arm) +KERNELDIR ?= /home/farsight/fs4412/linux-3.14.25-fs4412 +ROOTFS ?= /nfs/rootfs +else +KERNELDIR ?= /lib/modules/$(shell uname -r)/build +endif +PWD := $(shell pwd) + +modules: + $(MAKE) -C $(KERNELDIR) M=$(PWD) modules +modules_install: + $(MAKE) -C $(KERNELDIR) M=$(PWD) INSTALL_MOD_PATH=$(ROOTFS) modules_install +clean: + rm -rf *.o *.ko .*.cmd *.mod.* modules.order Module.symvers .tmp_versions +else + +obj-m := char_manual.o + +endif diff --git a/01-Char/Char_Manual/char_manual.c b/01-Char/Char_Manual/char_manual.c new file mode 100644 index 000000000..85166d7f8 --- /dev/null +++ b/01-Char/Char_Manual/char_manual.c @@ -0,0 +1,42 @@ +#include +#include +#include + +#include + +#define VSER_MAJOR 256 +#define VSER_MINOR 0 +#define VSER_DEV_CNT 1 +#define VSER_DEV_NAME "vser" + +static int __init vser_init(void) +{ + int ret; + dev_t dev; + + dev = MKDEV(VSER_MAJOR, VSER_MINOR); + ret = register_chrdev_region(dev, VSER_DEV_CNT, VSER_DEV_NAME); + if (ret) + goto reg_err; + return 0; + +reg_err: + return ret; +} + +static void __exit vser_exit(void) +{ + + dev_t dev; + + dev = MKDEV(VSER_MAJOR, VSER_MINOR); + unregister_chrdev_region(dev, VSER_DEV_CNT); +} + +module_init(vser_init); +module_exit(vser_exit); + +MODULE_LICENSE("GPL"); +MODULE_AUTHOR("Kevin Jiang "); +MODULE_DESCRIPTION("A simple character device driver"); +MODULE_ALIAS("virtual-serial");