问题描述
我一直在尝试在Android上进行一些轻量级的内核开发。
我对使用内置的方式感到困惑
let pass = '11223322345666600222222';
function CompressPass (string) {
string += '-';
let str = '';
for (let i = 1; i < string.length; i++) {
const nextItem = string[i];
const item = string[i - 1];
if (item != nextItem){
str += item;
}
};
return str;
}
console.log(CompressPass(pass))
内核模块使用obj-y += module_name.o
宏而不是module_init()
函数。
我有以下两个简单的模块,第一个一个:
init_module()
和第二一个
#include <linux/module.h>
#include <linux/kernel.h>
int init_module(void){
printk(KERN_ALERT "This is our first program.");
return 0;
}
void cleanup_module(void){
printk(KERN_ALERT "End of our first program.");
}
当我用两个内置模块编译内核时,第二个模块就是在#include <linux/init.h>
#include <linux/module.h>
#include <linux/printk.h>
static int __init test_module_init(void)
{
pr_warn("Hello,world\n");
return 0;
}
module_init(test_module_init);
static void __exit test_module_exit(void)
{
pr_warn("Goodbye\n");
}
module_exit(test_module_exit);
中显示一条消息的模块。但是,第一个模块没有。
但是,如果单独编译第一个模块并使用dmesg
加载 *。ko 文件,则第一个模块会将消息打印到insmod ./module_name.ko
。
这是因为在启动时需要dmesg
宏来加载内核模块的ELF吗?尽管module_init()
是从 *。ko 文件中动态加载ELF的,所以我们不需要使用insmod
宏对其进行“注册”吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)