
Linux driver & kernel
henni386
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux 内核基本概念(一)----PerCPU变量
在linux SMP环境中,某些变量在CPU同时时,并不需要进行互斥操作,为了支持这种功能,引入了percpu变量的概念。 这些变量在每个CPU上有一个副本,它们相互没有影响,但是它们拥有相同的类型和名字。这样在编码的时候,只需要变量名称就可以访问,但是可能访问的是不同的拷贝,这由当前程序运行在哪个CPU决定的。 在实际使用中,首先都要获取当前CPU上的值,然后在操作改变量。原创 2012-04-16 20:19:00 · 1405 阅读 · 0 评论 -
Linux 中的IPC(三)----work和workqueue
workqueue实际上就是方便内核中简单的执行某个函数。其本质上在内核创建kthread,由kthread在运行相应的cpu_workqueue_struct中的work。 workqueue中涉及的主要对象有: Ø work_queue Ø cpu_workqueue_struct Ø work_struct/ delayed_work 三者关系如下图所示: 数据原创 2012-04-17 20:56:08 · 1453 阅读 · 0 评论 -
Linux 中的IPC(二)-----内核线程(Kthread)
简介 kthread只在内核态运行的,由于在内核态,它没有独立的地址空间,但是有独立的栈。 API (1) kthread_create struct task_struct *kthread_create(int(*threadfn)(void *data), void *data, co原创 2012-04-16 20:37:35 · 2481 阅读 · 0 评论 -
Linux 中的IPC(五)----定时器(Timer)
在内核中,当需要定时实现某个功能时,可以使用timer来实现该功能。 timer是一种softirq,所以对timer handler的要求与softirq一样。 timer_list的定义如下: structtimer_list { struct list_head entry; unsigned long expires; void (*function)(原创 2012-04-19 22:14:28 · 1781 阅读 · 0 评论 -
Linux 中的IPC(四)----softirq
linux中断分为上下两部分,两部分的区别就是,上半部分中断是关闭的,防止中断嵌套,但为了提高实时响应,上半部分的执行时间一般都很短,大部分的处理放在下半部分来实现,下半部主要就是softirq来实现的。 执行softirq的时候,上下文环境是中断环境,但是中断是打开的。 softirq中调用的函数必须满足irq相同的条件。 linux中定义了softirq类型包括: HI_SOFTIRQ原创 2012-04-18 20:32:44 · 790 阅读 · 0 评论