摘要: 就从添加一个work_sturt到工作队列开始讲起吧,有两个函数可达到该目的:schedule_work、queue_work,只看queue_work吧,因为看了下面这些代码,就不用说啥了 1、events内核线程创建 那就先看看这个函数里面提到的keventd_wq变量,该变量的初始化在 上面这 阅读全文
posted @ 2017-03-21 21:50 一天能写一篇就好啦 阅读(1412) 评论(0) 推荐(0)
摘要: 前言:之前一直以为等待队列是什么高大上的机制,其实也就那么回事,搞明白进程调度的问题,等待队列完全就是链表操作和进程状态改变啦,下面就着重说一下“wait_event”和“wake_up”这一对等待和唤醒操作。 1. wait_event,什么都不说,贴上代码一切明了。 关于等待的代码就这么多,很明 阅读全文
posted @ 2017-03-21 19:54 一天能写一篇就好啦 阅读(427) 评论(0) 推荐(0)
摘要: 一、semaphore信号量分析 不同于有些书上所说的结构,该结构是3.10.104内核中的结构,两个结构实际上是一样的,只是mutex结构增加了一些debug的时候使用到的变量 3. 信号量初始化 初始化操作很好理解,就是__SEMAPHORE_INITIALIZER宏实现的,重点是后面两个初始化 阅读全文
posted @ 2016-11-12 22:02 一天能写一篇就好啦 阅读(872) 评论(0) 推荐(0)
摘要: 优化屏障:该原语保证编译程序不会混淆元语操作前后的汇编语言指令。优化屏障即barrier(),翻译成汇编就是asm volatile("":::"memory")。memory关键字强制编译器假定RAM中的所有内存单元已经被汇编语言指令修改,volatile关键字进制把asm指令与程序中的其他指令重 阅读全文
posted @ 2016-11-08 21:00 一天能写一篇就好啦 阅读(260) 评论(0) 推荐(0)
摘要: 内核是否能被抢占在内核编译的时候是可选的 看了《深入理解linux内核》一书,作者认为很难对内核抢占下一个定义,我也不想强行下一个定义,始终是新手嘛,那就说一下内核抢占的现象,通过现象来理解内核抢占机制 内核抢占的一个现象:正在内核态运行的进程。可能在运行期间被另外一个进程替代。 上述现象是允许内核 阅读全文
posted @ 2016-11-08 20:44 一天能写一篇就好啦 阅读(1082) 评论(0) 推荐(1)