diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000..781c5d954e274 --- /dev/null +++ b/.gitignore @@ -0,0 +1,36 @@ +.tmp* +*.map +*.dtb +*.so +*.so.dbg +*.ko +*.mod.c +*.cmd +*.d +*.a +*.order +*.tmp +*.builtin +*.o +scripts/basic/modules.order +scripts/kconfig/zconf.* +.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 +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 b3a65e7d6e6ce..77768ed20df7e 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) { @@ -35,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; } @@ -48,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; @@ -64,6 +76,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 +85,13 @@ static int __init simple_char_init(void) goto cdev_fail; } + 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); printk("Major number = %d, minor number = %d\n", MAJOR(dev), MINOR(dev)); @@ -90,6 +110,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); diff --git a/run_debian_arm64.sh b/run_debian_arm64.sh index e40028645d7bb..7b831a9305b92 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 c09e81f4c8b38..2b2c1ebe0c66f 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 357ceed2aba3b..1157fd6b1ef39 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 0000000000000..bd09f802a4961 --- /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, + } + } +} +