Linux系统开发专栏

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  Linux内核开发理论帖

上一页 1 2

本分类介绍了linux内核开发的基本理论知识,这部分知识是linux开发和驱动开发必备的基本知识.
摘要:算了,既然给你那么多秘籍了,也不在乎这剩下的两三招: 出招表五:顺序锁(seqlock) 使用顺序锁,读执行单元绝不会被写执行单元阻塞,同时写执行单元也不需要等待所有读执行单元完成读操作后才进行写操作。但是写执行单元之间仍然是互斥的。如果读执行单元在读操作期间,写执行单元已经发生了操作,那么,读执行单元必须重新读取数据,以便确保得到的数据是完整的。 致命弱点:顺序锁有一个限制,就是它必须要求被保护的共享资源不含有指针。因为写执行单元可能使得指针失效,但读执行单元如果正要访问该指针,将导致Oops。 在Linux内核中。读执行单元设计如下顺序读操作。 1)读开始 unsigned read_se 阅读全文
posted @ 2010-10-07 21:49 ☆&寒 烟☆ 阅读(2223) 评论(0) 推荐(0) 编辑

摘要:上集说到哪儿了呢?瞧这记性,什么?说到"天要下雨,娘要嫁人"那段。。 这是谁在答话,废话,我当然知道讲到这里了,我是说驱动讲到哪里了。算了,不管了.. 话说Linux开源社区的开发者们做了什么工作呢,很简单: 利用spin_lock()/spin_unlock()作为自旋锁的基础,将它们和关中断local_irq_disable()/开中断local_irq_enable(),关底半部local_bh_disable()/开底半部local_ bh_enable(),关中断并保存状态字local_irq_save()/开中断并恢复状态local_irq_restore()结 阅读全文
posted @ 2010-10-07 17:44 ☆&寒 烟☆ 阅读(3311) 评论(0) 推荐(0) 编辑

摘要:“小涛,你说十一黄金周,火车站,飞机场那些售票系统咋没一个宕掉的呢。你不宕掉也没关系,来两个卖错票的,说不定哥就去上海看世博,去北京看青梅竹马的表妹了…”小王抱怨道。 “晕死..哥鄙视你,你说都老大不小的人了,怎么脑子里天天都是MM之类的事了,能不能有点男子气概啊..”。 “靠,能跟你比啊,你是饱汉不知饿汉饥,要是像你一样十一和…” "嗯,啊,哼哼.."没等他说完,我赶忙塞了双臭袜子(哪天的也记不住了)。“得得,I 服了 you,ok”。 “不过话说回来,小王,你说的还真是个问题,想想这样的问题,你和GF两个要去西湖看白娘子,偏偏遇到老天跟你过不去,就只剩下一张票了,你和G 阅读全文
posted @ 2010-10-06 16:44 ☆&寒 烟☆ 阅读(3174) 评论(0) 推荐(1) 编辑

摘要:在上一篇中,我们介绍了有关简单字符设备驱动中那些简单但又必须要掌握的结构体和一些源码中核心的操作函数,这一节我们继续介绍有关源码部分的后续相关内容及测试使用的方法(在本文中同时也会给出完整的Makefile文件,方便大家调试)。 static const struct file_operations globalmem_fops ={ //这些就是上篇中所实现的所有操作该字符设备的函数接口,这些最终都会被用户程序中的open(),read()所调用 .owner= THIS_MODULE, .llseek = globalmem_llseek, .read = globalmem_read,. 阅读全文
posted @ 2010-10-05 19:35 ☆&寒 烟☆ 阅读(3511) 评论(1) 推荐(2) 编辑

摘要:废话少说,先来介绍几个必须要知道的和字符设备有关的结构体,然后结合代码详细讲解。第一部分 必要的设备结构体1)linux 2.6内核中使用cdev结构体表示字符设备:struct cdev{ struct kobject kobj;//内嵌的kobject对象 struct module *owner;//所属模块 struct file_operations *ops;//文件操作结构体 struct list_head list; dev_t dev;//设备号,长度为32位,其中高12为主设备号,低20位为此设备号 unsigned int count;};可以使用下列... 阅读全文
posted @ 2010-10-05 18:46 ☆&寒 烟☆ 阅读(5423) 评论(1) 推荐(2) 编辑

摘要:学了那么多程序语言,总是有一个Hello world开头,不禁感叹Hello world的强大。呵呵,废话少说,咋们的故事当然要从这个Hello world开始。 (1)linux开源当然少不了源代码的贡献,请看下边(至于什么是开源,悲剧的我现在也没整明白): #include <linux/init.h>#include <linux/module.h>MODULE_LICENSE("Dual BSD/GPL"); static int hello_init(void){ printk(KERN_ALERT "Hello,world\n& 阅读全文
posted @ 2010-10-01 10:18 ☆&寒 烟☆ 阅读(11496) 评论(6) 推荐(5) 编辑

上一页 1 2