WSL内核更换为自定义版本(解决微软安装的内核版本源码找不到的问题)
- 编译自定义内核参考连接
- 替换自定义内核参考
- 效果
- 安装:
sudo insmod <模块文件名> - 卸载:
rmmod <模块文件名> - 查看模块信息
modinfo <模块文件名> - 参考链接
- 打开系统日志可见效果;
在/proc下创建文件并且通过读写该文件实现与内核的交互
- 参考链接
- 参考链接
- 参考连接
- 上述参考链接由一些错误之处,比如需要include
#include <linux/uaccess.h>proc_ops的结构体ing不是file_operations,而是自己的结构struct proc_ops procOps =
{
.proc_open = demo_open,
.proc_write = demo_set,
// .read = seq_read,
};
create_proc_entry函数往往找不到需要替换成proc_create函数single_open实际上是simple_open等等- 需要自己通过查看相应的头文件进行修正
添加内核服务器并连接
- 参考链接
- 参考链接
- 基本方法与创建Socket类似,用户需要自己定义一个内核端口号用于跟用户程序通信,用户程序只要跟相同端口号通信即可。
内核线程的创建
- 参考链接
- 主要是
struct task_struct *kthread_create(int (*threadfn)(void *data),
void *data,
const char namefmt[], ...); - 和
int wake_up_process(struct task_struct *tsk);
- 两个函数
- 因为使用
kthread_create创建线程之后并不会立即开始执行,需要通过wake_up_process函数使其开始执行才可以。
内核互斥锁等
- 参考链接
- 加锁
void mutex_lock(struct mutex *lock);
- 解锁
void mutex_unlock(struct mutex *lock);
内核动态内存分配
- 参考链接
static __always_inline void *kmalloc(size_t size, gfp_t flags)
内核延时
- 参考链接