linux中创建模块,调用do_fork,插入模块的时候,显示失败
#include <linux/init.h>
#include <linux/module.h>
#include <asm/pgalloc.h>
#include <asm/pgtable.h>
#include <linux/thread_info.h>
#include <linux/slab.h>
#include <linux/sched.h>
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Sun");
static int __init myModule_init(void)
{
struct pt_regs *regs;
long id=do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD, regs->sp, regs, NULL, NULL);
printk(KERN_ALERT"myModule init----fork_id:%d.\r\n",id);
return 0;
}
static void __exit myModule_exit(void)
{
printk(KERN_ALERT"myModule exit.\r\n");
}
module_init(myModule_init);
module_exit(myModule_exit);
然后编译成功后,insmod page.ko,出现下面错误:
insmod: ERROR: could not insert module page.ko: Unknown symbol in module
查看 dmesg | tail :
[108843.437019] page: Unknown symbol do_fork (err 0)
查看依赖关系:
modinfo page.ko
filename: /home/sun/kernel_code/page.ko
author: colorfulshark@hotmail.com
license: GPL
rhelversion: 7.4
srcversion: 3913DBD14892947BDDCE568
depends:
vermagic: 3.10.0-693.el7.x86_64 SMP mod_unload modversions
看了相关资料,是不是要要在kernelfork.c修改,添加:
EXPORT_SYMOBL(do_fork)
然后重新编译linux内核,但是我的是x86平台,虚拟机重新编译运行比较慢,我就不知道linux内核代码是如何调用do_fork函数的?
#include <linux/sched.h>已经含有do_fork函数了,为什么不能调用?
相关推荐
Linux进程创建与终止:fork()和exit()系统调用详解
进程是操作系统资源分配与调度的基本单位,其生命周期始于创建、终于终止。理解fork()系统调用的写时复制(COW)原理,有助于掌握父子进程间内存隔离与共享的本质;而exit()与_exit()的分层设计,则体现了用户空间清理逻辑与内核资源回收的职责分离。这类底层机制直接支撑多进程编程、服务守护、并发任务调度等核心场景,在嵌入式开发、后台服务及系统工具编写中具有不可替代的技术价值。本文围绕fork()创建、PID识别、文件描述符继承、退出状态传递等关键环节,结合POSIX规范与Linux内核行为,提供可验证的
fork(),vfork(),clone()的区别
一、fork() 1、fork()调用一次返回两次 返回值:成功(父进程:返回子进程的PID,子进程:返回0); 失败(父进程返回-1) fork创建一个进程时,子进程只是完全复制父进程的资源,复制出来的子进程有自己的task_struct结构和pid,但却复制父进程其它所有的资源。例如,要是父进程打开了五个文件,那么子进程也有五个打开的文件,而且这些文件的当前读写指针也停在相同的地方。这样
Linux进程生命周期详解:从fork到僵尸进程的完整排查指南
在Linux系统中,程序是静态的磁盘文件,而进程是程序的一次动态执行实例。理解这一区别,是掌握进程管理的基础。进程的创建并非从零开始,而是通过fork复制父进程环境,再通过exec加载新程序,这一设计为shell重定向、环境变量设置等操作提供了灵活空间。进程运行期间,信号机制允许外部干预,SIGTERM可被捕获以实现优雅退出,而SIGKILL则强制终止。进程退出后,退出码向父进程传递成败状态,非0值往往意味着异常。若父进程未及时调用wait回收,子进程便成为僵尸进程,长期堆积会耗尽进程表项。本文从底层原理出
前端开发组件示例源码_f1b6a91d详解
前端开发组件示例源码_f1b6a91d,内容包含源码/脚本与使用说明文档,结构清晰、注释完整,适合学习参考与二次开发,下载解压即可查看。
前端开发基于history.js的HTML5与HTML4浏览器兼容方案:单页应用无刷新历史状态管理技术实现-Gjl4Gf1792158475
内容概要:本文系统介绍了如何利用history.js实现单页应用(SPA)在HTML5c与HTML4浏览器间s草错发的无缝历史状态管理。通过封装原生History API并在不支持的浏览器中自动降级为哈希路由,history.js解决了因浏览器兼容性导致的后退按钮失效、URL混乱等问题。文章详细讲解了其核心机制,包括状态对象管理、自动模式切换(HTML5 pushState vs HTML4 哈希)、状态数据持久化以及针,对Safari、IE等浏\览器的兼容性修复方案,并提供了从入门到实战的完整示例,涵盖初始化、事,件监听、页面加载及性能优化技巧。;Gjl4Gf1792158475 www.gblp.net www.gsctlq.com gezhixq.cn www.greendalian.com wap.gxqnm.com


