From fd78c94ba1a4f20349f3c3474106296fddba2c1d Mon Sep 17 00:00:00 2001 From: nisy Date: Sun, 24 Aug 2025 00:35:13 +0800 Subject: [PATCH 1/3] add workspace file for vscode,add .gitignore and 'V=1' to display build detail --- .gitignore | 38 ++++++++ run_debian_arm64.sh | 2 +- run_debian_riscv.sh | 2 +- run_debian_x86_64.sh | 2 +- runninglinuxkernel_5.0.code-workspace | 132 ++++++++++++++++++++++++++ 5 files changed, 173 insertions(+), 3 deletions(-) create mode 100644 .gitignore create mode 100644 runninglinuxkernel_5.0.code-workspace diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..bf48c7b7feb9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +.tmp* +*.map +*.dtb +*.so +*.so.dbg +*.ko +*.mod.c +*.cmd +*.d +*.a +*.order +*.tmp +*.builtin +*.o +scripts/basic/modules.order +scripts/kconfig/zconf.* +_output_arm64/ +_output_x86_64/ +_output_riscv/ +.config +vmlinux +*generated* +Module.symvers +.version +arch/arm64/kernel/asm-offsets.s +certs/signing_key.x509 +crypto/asymmetric_keys/ +crypto/rsaprivkey.asn1.c +crypto/rsaprivkey.asn1.h +crypto/rsapubkey.asn1.c +crypto/rsapubkey.asn1.h +include/config/ +kernel/bounds.s +scripts/dtc/dtc-lexer.lex.c +scripts/dtc/dtc-parser.tab.* +scripts/genksyms/lex.lex.c +scripts/genksyms/parse.tab.* +scripts/mod/devicetable-offsets.s diff --git a/run_debian_arm64.sh b/run_debian_arm64.sh index e40028645d7b..7b831a9305b9 100755 --- a/run_debian_arm64.sh +++ b/run_debian_arm64.sh @@ -42,7 +42,7 @@ fi make_kernel_image(){ echo "start build kernel image..." make debian_defconfig - make -j $JOBCOUNT + make -j $JOBCOUNT V=1 } make_menuconfig(){ diff --git a/run_debian_riscv.sh b/run_debian_riscv.sh index c09e81f4c8b3..2b2c1ebe0c66 100755 --- a/run_debian_riscv.sh +++ b/run_debian_riscv.sh @@ -31,7 +31,7 @@ fi make_kernel_image(){ echo "start build kernel image..." make debian_defconfig - make -j $JOBCOUNT + make -j $JOBCOUNT V=1 } make_menuconfig(){ diff --git a/run_debian_x86_64.sh b/run_debian_x86_64.sh index 357ceed2aba3..1157fd6b1ef3 100755 --- a/run_debian_x86_64.sh +++ b/run_debian_x86_64.sh @@ -33,7 +33,7 @@ fi make_kernel_image(){ echo "start build kernel image..." make debian_defconfig - make -j $JOBCOUNT + make -j $JOBCOUNT V=1 } prepare_rootfs(){ diff --git a/runninglinuxkernel_5.0.code-workspace b/runninglinuxkernel_5.0.code-workspace new file mode 100644 index 000000000000..bd09f802a496 --- /dev/null +++ b/runninglinuxkernel_5.0.code-workspace @@ -0,0 +1,132 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": { + "search.exclude": { + "arch/alpha" :true, + "arch/m68k" :true, + "arch/arc" :true, + "arch/arm" :true, + "arch/blackfin" :true, + "arch/c6x" :true, + "arch/cris" :true, + "arch/frv" :true, + "arch/h8300" :true, + "arch/hexagon" :true, + "arch/ia64" :true, + "arch/m32r" :true, + "arch/metag" :true, + "arch/microblaze" :true, + "arch/mn10300" :true, + "arch/nios2" :true, + "arch/mips" :true, + "arch/openrisc" :true, + "arch/parisc" :true, + "arch/powerpc" :true, + "arch/s390" :true, + "arch/score" :true, + "arch/sh" :true, + "arch/sparc" :true, + "arch/tile" :true, + "arch/um" :true, + "arch/unicore32" :true, + "arch/x86" :true, + "arch/xtensa" :true, + "arch/arm64/boot/dts/actions" :true, + "arch/arm64/boot/dts/allwinner" :true, + "arch/arm64/boot/dts/amd" :true, + "arch/arm64/boot/dts/apm" :true, + "arch/arm64/boot/dts/broadcom" :true, + "arch/arm64/boot/dts/exynos" :true, + "arch/arm64/boot/dts/hisilicon" :true, + "arch/arm64/boot/dts/qcom" :true, + "arch/arm64/boot/dts/renesas" :true, + "arch/arm64/boot/dts/socionext" :true, + "arch/arm64/boot/dts/xilinx" :true, + "arch/arm64/boot/dts/al" :true, + "arch/arm64/boot/dts/altera" :true, + "arch/arm64/boot/dts/amlogic" :true, + "arch/arm64/boot/dts/arm" :false + "arch/arm64/boot/dts/cavium" :true, + "arch/arm64/boot/dts/freescale" :true, + "arch/arm64/boot/dts/lg" :true, + "arch/arm64/boot/dts/marvell" :true, + "arch/arm64/boot/dts/nvidia" :true, + "arch/arm64/boot/dts/realtek" :true, + "arch/arm64/boot/dts/rockchip" :true, + "arch/arm64/boot/dts/marvell" :true, + "arch/arm64/boot/dts/mediatek" :true, + "arch/arm64/boot/dts/nvidia" :true, + "arch/arm64/boot/dts/realtek" :true, + "arch/arm64/boot/dts/rockchip" :true, + "arch/arm64/boot/dts/sprd" :true, + "arch/arm64/boot/dts/synaptics" :true, + "arch/arm64/boot/dts/ti" :true, + "arch/arm64/boot/dts/zte" :true, + "arch/arm64/boot/dts/riscv" :true, + }, + "files.exclude": { + "arch/alpha" :true, + "arch/m68k" :true, + "arch/arc" :true, + "arch/arm" :true, + "arch/blackfin" :true, + "arch/c6x" :true, + "arch/cris" :true, + "arch/frv" :true, + "arch/h8300" :true, + "arch/hexagon" :true, + "arch/ia64" :true, + "arch/m32r" :true, + "arch/metag" :true, + "arch/microblaze" :true, + "arch/mn10300" :true, + "arch/nios2" :true, + "arch/mips" :true, + "arch/openrisc" :true, + "arch/parisc" :true, + "arch/powerpc" :true, + "arch/s390" :true, + "arch/score" :true, + "arch/sh" :true, + "arch/sparc" :true, + "arch/tile" :true, + "arch/um" :true, + "arch/unicore32" :true, + "arch/x86" :true, + "arch/xtensa" :true, + "arch/arm64/boot/dts/actions" :true, + "arch/arm64/boot/dts/allwinner" :true, + "arch/arm64/boot/dts/amd" :true, + "arch/arm64/boot/dts/apm" :true, + "arch/arm64/boot/dts/broadcom" :true, + "arch/arm64/boot/dts/exynos" :true, + "arch/arm64/boot/dts/hisilicon" :true, + "arch/arm64/boot/dts/qcom" :true, + "arch/arm64/boot/dts/renesas" :true, + "arch/arm64/boot/dts/socionext" :true, + "arch/arm64/boot/dts/xilinx" :true, + "arch/arm64/boot/dts/al" :true, + "arch/arm64/boot/dts/altera" :true, + "arch/arm64/boot/dts/amlogic" :true, + "arch/arm64/boot/dts/arm" :false + "arch/arm64/boot/dts/cavium" :true, + "arch/arm64/boot/dts/freescale" :true, + "arch/arm64/boot/dts/lg" :true, + "arch/arm64/boot/dts/marvell" :true, + "arch/arm64/boot/dts/mediatek" :true, + "arch/arm64/boot/dts/nvidia" :true, + "arch/arm64/boot/dts/realtek" :true, + "arch/arm64/boot/dts/rockchip" :true, + "arch/arm64/boot/dts/sprd" :true, + "arch/arm64/boot/dts/synaptics" :true, + "arch/arm64/boot/dts/ti" :true, + "arch/arm64/boot/dts/zte" :true, + "arch/arm64/boot/dts/riscv" :true, + } + } +} + From 06e80e63b08dd39bad5a39598ead77ce211011eb Mon Sep 17 00:00:00 2001 From: nisy Date: Mon, 25 Aug 2025 23:09:43 +0800 Subject: [PATCH 2/3] =?UTF-8?q?.gitignore=20=E5=8E=BB=E6=8E=89=E4=B8=8D?= =?UTF-8?q?=E7=94=A8=E7=9A=84=E8=B7=AF=E5=BE=84=EF=BC=8C=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E8=AE=BE=E5=A4=87=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=8A=82=E7=82=B9=EF=BC=8C=E9=81=BF=E5=85=8D=E6=89=8B?= =?UTF-8?q?=E5=B7=A5=20mknod=20=E5=88=9B=E5=BB=BA=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E8=8A=82=E7=82=B9=20=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 4 +--- .../lab1_simple_driver/simple_char.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index bf48c7b7feb9..781c5d954e27 100644 --- a/.gitignore +++ b/.gitignore @@ -14,9 +14,6 @@ *.o scripts/basic/modules.order scripts/kconfig/zconf.* -_output_arm64/ -_output_x86_64/ -_output_riscv/ .config vmlinux *generated* @@ -36,3 +33,4 @@ scripts/dtc/dtc-parser.tab.* scripts/genksyms/lex.lex.c scripts/genksyms/parse.tab.* scripts/mod/devicetable-offsets.s +rootfs_debian_* \ No newline at end of file diff --git a/kmodules/rlk_lab/rlk_basic/chapter_6_device_driver/lab1_simple_driver/simple_char.c b/kmodules/rlk_lab/rlk_basic/chapter_6_device_driver/lab1_simple_driver/simple_char.c index b3a65e7d6e6c..739c6e030c17 100755 --- a/kmodules/rlk_lab/rlk_basic/chapter_6_device_driver/lab1_simple_driver/simple_char.c +++ b/kmodules/rlk_lab/rlk_basic/chapter_6_device_driver/lab1_simple_driver/simple_char.c @@ -8,6 +8,9 @@ static dev_t dev; static struct cdev *demo_cdev; static signed count = 1; +static struct class *demo_class = NULL; +static int demo_major; + static int demodrv_open(struct inode *inode, struct file *file) { @@ -64,6 +67,7 @@ static int __init simple_char_init(void) goto unregister_chrdev; } + demo_major = MAJOR(dev); cdev_init(demo_cdev, &demodrv_fops); ret = cdev_add(demo_cdev, dev, count); @@ -72,6 +76,9 @@ static int __init simple_char_init(void) goto cdev_fail; } + demo_class = class_create(THIS_MODULE, "demo_class"); + device_create(demo_class, NULL, MKDEV(demo_major, 0), NULL, "demo_drv"); + printk("succeeded register char device: %s\n", DEMO_NAME); printk("Major number = %d, minor number = %d\n", MAJOR(dev), MINOR(dev)); @@ -90,6 +97,12 @@ static void __exit simple_char_exit(void) { printk("removing device\n"); + if( demo_class != NULL ) + { + device_destroy(demo_class, MKDEV(demo_major, 0)); + class_destroy(demo_class); + } + if (demo_cdev) cdev_del(demo_cdev); From 538ed929850de94f79bc47a1c87146de140eed0e Mon Sep 17 00:00:00 2001 From: nisy Date: Tue, 26 Aug 2025 23:25:43 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=96=87=E4=BB=B6=E8=8A=82=E7=82=B9?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E4=B8=BA666=EF=BC=9Bdemodrv=5Fwrite()=20?= =?UTF-8?q?=E4=B8=8D=E8=83=BDreturn=200=EF=BC=8C=E5=90=A6=E5=88=99?= =?UTF-8?q?=E4=B8=80=E7=9B=B4=E9=87=8D=E8=AF=95=EF=BC=8C=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E5=86=99=E6=96=87=E4=BB=B6=E4=B8=8D=E9=80=80=E5=87=BA=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lab1_simple_driver/simple_char.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/kmodules/rlk_lab/rlk_basic/chapter_6_device_driver/lab1_simple_driver/simple_char.c b/kmodules/rlk_lab/rlk_basic/chapter_6_device_driver/lab1_simple_driver/simple_char.c index 739c6e030c17..77768ed20df7 100755 --- a/kmodules/rlk_lab/rlk_basic/chapter_6_device_driver/lab1_simple_driver/simple_char.c +++ b/kmodules/rlk_lab/rlk_basic/chapter_6_device_driver/lab1_simple_driver/simple_char.c @@ -38,7 +38,7 @@ static ssize_t demodrv_write(struct file *file, const char __user *buf, size_t count, loff_t *f_pos) { printk("%s enter\n", __func__); - return 0; + return count; } @@ -51,6 +51,15 @@ static const struct file_operations demodrv_fops = { }; +// devnode 回调函数 +static char *demo_devnode(struct device *dev, umode_t *mode) +{ + if (mode != NULL) { + *mode = 0666; // 所有用户可读写 + } + return NULL; +} + static int __init simple_char_init(void) { int ret; @@ -77,6 +86,10 @@ static int __init simple_char_init(void) } demo_class = class_create(THIS_MODULE, "demo_class"); + + // 设置设备节点权限 + demo_class->devnode = demo_devnode; + device_create(demo_class, NULL, MKDEV(demo_major, 0), NULL, "demo_drv"); printk("succeeded register char device: %s\n", DEMO_NAME);