linux 内核线程
来源:互联网 发布:淘宝买家怎么切换卖家 编辑:程序博客网 时间:2024/04/30 11:05
内核经常需要在后台执行一些操作。这种任务可以通过内核线程(kernel thread)完成------独立运行在内核空间的标准进程。内核线程和普通的进程的区别在于内核线程没有独立的地址空间(实际上指向地址空间的mm指针被设置为NULL)。 它们只在内核空间运行,从来不切换到用户空间去。内核进程和普通进程一样,可以被调度,也可以被抢占。
像flush 和 ksoftirqd 就是内核线程。
创建内核线程使用以下方法:
struct task_struct *kthread_create(int (*threadfn)(void *data), void *data, const char namefmt[], ...)__attribute__((format(printf, 3, 4)));
新创建的进程处于不可运行状态,如果不通过调用wake_up_process()明确地唤醒它,它不会主动运行。
创建一个进程并让它运行起来,可以通过kthread_run()函数达到:
/** * kthread_run - create and wake a thread. * @threadfn: the function to run until signal_pending(current). * @data: data ptr for @threadfn. * @namefmt: printf-style name for the thread. * * Description: Convenient wrapper for kthread_create() followed by * wake_up_process(). Returns the kthread or ERR_PTR(-ENOMEM). */#define kthread_run(threadfn, data, namefmt, ...) \({ \struct task_struct *__k \= kthread_create(threadfn, data, namefmt, ## __VA_ARGS__); \if (!IS_ERR(__k)) \wake_up_process(__k); \__k; \})它只是简单的调用kthread_create() 和 wake_up_process()。
- Linux内核-内核线程
- 开启linux 内核线程
- linux 内核进程 线程
- linux内核线程相关
- Linux内核线程
- linux 内核线程
- linux 内核线程实例
- linux 内核线程
- Linux内核线程
- linux 内核线程
- linux 内核线程
- Linux内核线程列表
- Linux内核线程
- Linux内核线程
- Linux内核线程
- linux 内核线程创建
- Linux内核线程
- Linux内核线程
- 我的程序员日记01
- Direct3d 实现输入法
- CoreAnimation编程指南(简介)
- 《黑马程序员》java中this关键字的用法
- iOS多线程编程指南-前言
- linux 内核线程
- iOS多线程编程指南-目录
- iOS多线程编程指南(一)关于多线程编程
- iOS多线程编程指南(二)线程管理
- iOS多线程编程指南(三)Run Loop
- Stay Hungry, Stay Foolish--2005斯坦福大学05年毕业演讲
- iOS多线程编程指南(四)线程同步
- iOS多线程编程指南(附录)
- 校园网络视频直播系统应用方案