当前位置: 首页> 文旅> 美景 > 成都微商城开发公司_开发安卓app_沈阳网站关键词排名_如何查看网站收录情况

成都微商城开发公司_开发安卓app_沈阳网站关键词排名_如何查看网站收录情况

时间:2025/7/12 23:27:55来源:https://blog.csdn.net/qq_33689469/article/details/147047824 浏览次数:0次
成都微商城开发公司_开发安卓app_沈阳网站关键词排名_如何查看网站收录情况

本文介绍如何在 qemu 中运行我们写的测试代码

1. 驱动相关

1.1 代码准备阶段

# 创建测试目录
mkdir -p drivers/test/buddy# 创建如下文件
touch  drivers/test/Makefiledrivers/test/buddy/Makefile
diff --git a/drivers/Makefile b/drivers/Makefile
index aaef17cc6..915b52736 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -186,3 +186,4 @@ obj-$(CONFIG_SIOX)          += siox/obj-$(CONFIG_GNSS)             += gnss/obj-$(CONFIG_INTERCONNECT)     += interconnect/obj-$(CONFIG_COUNTER)          += counter/
+obj-y +=test/
diff --git a/drivers/test/Makefile b/drivers/test/Makefile
new file mode 100644
index 000000000..e0102fce3
--- /dev/null
+++ b/drivers/test/Makefile
@@ -0,0 +1 @@
+obj-y  += buddy/
diff --git a/drivers/test/buddy/Makefile b/drivers/test/buddy/Makefile
new file mode 100644
index 000000000..831b5c3ca
--- /dev/null
+++ b/drivers/test/buddy/Makefile
@@ -0,0 +1 @@
+obj-m  += buddy_test_alloc_free.o

我们增加 如下源码文件 drivers/test/buddy/buddy_test_alloc_free.c

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/gfp.h>
#include <linux/mm.h>#define ORDER 3  // 分配8个页面(2^3)static int __init buddy_test_init(void)
{struct page *page;unsigned long addr;printk(KERN_INFO "Buddy system test module loaded\n");// 分配页面addr = __get_free_pages(GFP_KERNEL, ORDER);if (!addr) {printk(KERN_ERR "Failed to allocate pages\n");return -ENOMEM;}printk(KERN_INFO "Allocated %lu pages at address 0x%lx\n", (1UL << ORDER), addr);// 获取page结构page = virt_to_page(addr);printk(KERN_INFO "Page info: pfn=%lx, flags=%lx\n", page_to_pfn(page), page->flags);// 释放页面free_pages(addr, ORDER);printk(KERN_INFO "Pages freed\n");return 0;
}static void __exit buddy_test_exit(void)
{printk(KERN_INFO "Buddy system test module unloaded\n");
}module_init(buddy_test_init);
module_exit(buddy_test_exit);MODULE_LICENSE("GPL");
MODULE_AUTHOR("cbx");
MODULE_DESCRIPTION("Buddy System Test Module");

1.2 编译对应驱动

这里选择单独编译这个 驱动

make CROSS_COMPILE=aarch64-linux-gnu- ARCH=arm64 O=build INSTALL_PATH=build/arch/$ARCH/boot drivers/test/buddy/buddy_test_alloc_free.ko
file build/drivers/test/buddy/buddy_test_alloc_free.kobuild/drivers/test/buddy/buddy_test_alloc_free.ko: ELF 64-bit LSB relocatable, ARM aarch64, version 1 (SYSV), BuildID[sha1]=4eee30c29424e99fb92e3d1a64c140d24805a8dc, with debug_info, not stripped

1.3 打包进文件系统

我们将我们的 buddy_test_alloc_free.ko 直接打包进入 我们的文件系统。

我们在之前已经做好了我们的文件系统 initrd.ext4, 我们只需要挂载 ,然后将 ko 拷贝进入即可


# 挂载
sudo mount initrd.ext4 mntleo@leo:~/data_4t/github/kernel_version/mnt$ ls
bin  dev  etc  linuxrc  lost+found  mnt  proc  sbin  sys  tmp  usr# 创建目录 拷贝到 文件系统中
mnt$ sudo mkdir test
mnt$ sudo cp ../linux-5.4/build/drivers/test/buddy/buddy_test_alloc_free.ko test/# 卸载
kernel_version$ sudo umount mnt

1.4 运行

/test # 
/test # insmod buddy_test_alloc_free.ko 
[   32.305024] buddy_test_alloc_free: module verification failed: signature and/or required key missing - tainting kernel
[   32.319391] Buddy system test module loaded
[   32.319755] Allocated 8 pages at address 0xffffff807c3d8000
[   32.320079] Page info: pfn=bc3d8, flags=ffff000000000
[   32.320344] Pages freed
/test # 

2. 应用侧

// 查看伙伴系统状态
#include <stdio.h>
#include <stdlib.h>int main() {printf("test app.\n");system("cat /proc/buddyinfo");system("cat /proc/pagetypeinfo");return 0;
}
all:aarch64-linux-gnu-gcc -static test_main.c -o test_appclean:rm test_app *.o
  • 这里使用 static 方式编译, 由于我们的 busybox 也是使用静态的方式编译的,里面没有 * .so 所以我们的测试程序 也使用 静态编译的方式。不然找不到库。
  • 打包参考 1.3 小节。
    在这里插入图片描述
关键字:成都微商城开发公司_开发安卓app_沈阳网站关键词排名_如何查看网站收录情况

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: