08 2009存档

      “书非借不能读也”,从图书馆借了《linux设备驱动开发详解》,虽然时间紧迫,但还是重点看了里面的前几章,包括块设备驱动,其它章节不太可能用到,飘过。
      总体感觉是写得比较详细的,例子也很具体,如果是学嵌入式做驱动的人很适合;但缺点也就是大而全,厚厚的一本,幸亏是借的,要是买的心痛死了。个人觉得可 以和《linux设备驱动程序(第三版)》一起学习,效果应该不错。不过最好也最便宜的驱动学习方法还是去看linux源代码,比如ext3。

accept

| | Comments (0) | TrackBacks (0)
      想限制对远程连接的accept个数,于是在连接数大于MAX的时候不accpet(异步IO,收到EPOLLIN后不accept),结果错误。
      正确的做法是先accept,如果发现此时连接数大于MAX再close它。

大师?

| | Comments (4) | TrackBacks (0)
      chinaunix上的一则新闻《编程大师Bruce Eckel不看好HTML5》。我对HTML5没有兴趣,对Bruce Eckel也没有兴趣,但我感兴趣的是他老人家什么时候成了“大师”了??
      c++ 初起的时候,Bruce写了本《c++编程思想》,普及c++编程,于是满大街都是c++程序员;java风靡的时候,Bruce又写了本《java编程 思想》,普及java“大道”,于是满大街又都变成了java程序员。如此见风使舵之人,称他为“大师”我很难赞同,充其量一个有编程能力的投机作家。
      能够创造系统、理解系统的方可称为大师,如果仅仅掌握几门语言的人也算,那Ken Thompson(unix的缔造者)该怎么称呼?Richard Stallman(GNU的缔造者)又该如何称呼呢?
      最近做项目用了epoll,于是打算深究一下,看了看linux内核的代码,凑成浅文一篇,欢迎指正。

       《poll和epoll内核源码剖析》(一)
       《poll和epoll内核源码剖析》(二)
       《poll和epoll内核源码剖析》(三)

      ====== 2010.5.14 ======

      基于qixinkui同学的疑问,我修改了“poll是轮询”这一错误提法(在第二篇里),然后增加了对EPOLLET的代码分析(第三篇)。poll和epoll的区别在于fd数量很大时,两者的事件模型效率不同,而NAPI,它是驱动程序的功能,只会影响某个fd的通知速度,所以这里就不补充讨论了。有了NAPI,对poll和epoll都一样有利。
  
      ====== 2010.6.8 ======
      问:当你讲sys_epoll_wait()->ep_poll()这个函数时,里面有个for循环。你说它除了睡觉和判断ep->rdllist是否为空外什么也没干。我的疑问是既然它睡觉了,也就是阻塞了,它还怎么进行判断?这两者的关系是怎样的?
      答:下面的代码是ep_poll里的那个“循环”,1531行的代码是判断rdllist是否为空的,1539行是睡觉用的。
      你所说,睡觉了,也就阻塞了,也就是1539行的schedule_timeout,当前进程自动放弃CPU,但是,是用的schedule_timeout而不是schedule。用了schedule,当前进程放弃CPU,直到内核在以后的某次进程调度中重新选择该进程;而schedule_timeout,那就是经过一个时间后(这里是jtimeout),进程会重新被唤醒获得CPU,然后从schedule_timeout函数返回。返回后继续循环,继续判断rdllist是否为空,为空就接着 schedule_timeout......
      说白了,这个“睡觉”,不是永远睡下去,是一定会醒来的,醒来了再接着判断。不是说他边睡觉边判断。

 1524         for (;;) {
 1525             /*
 1526              * We don't want to sleep if the ep_poll_callback() sends us
 1527              * a wakeup in between. That's why we set the task state
 1528              * to TASK_INTERRUPTIBLE before doing the checks.
 1529              */
 1530             set_current_state(TASK_INTERRUPTIBLE);
 1531             if (!list_empty(&ep->rdllist) || !jtimeout)
 1532                 break;
 1533             if (signal_pending(current)) {
 1534                 res = -EINTR;
 1535                 break;
 1536             }
 1537
 1538             write_unlock_irqrestore(&ep->lock, flags);
 1539             jtimeout = schedule_timeout(jtimeout);
 1540             write_lock_irqsave(&ep->lock, flags);
 1541         }
 1542         __remove_wait_queue(&ep->wq, &wait);
 1543
 1544         set_current_state(TASK_RUNNING);
 1545     }

1. 如果想在rpm安装时执行一些脚本,可以在%post块里面写这些脚本
2. rpm_build时会为包里的二进制文件找出对应的共享库(.so)依赖,打成rpm包后在安装时会提示缺少依赖并退出。要避免rpm_build帮你找共享库依赖,可以在spec文件里加"Autoreq: no"
      初中的时候看某集《军事天地》,讲外军的体力训练,里面有一段配乐,像笛子吹的,很好听,我就想能再听听就好了,但是很遗憾,那时还没有mp3没有网络,况且我连着曲子的名字都不知道。我当时的想法是:以后长大了,去电视台,哼一哼曲调,再问问他们是什么曲子,他们自己放的他们肯定知道....
      后来在很多科教、军事、体育节目的背景音乐里常听见它。读高中的时候,一次在书店外听到了喜多郎的曲子,发觉有几分相似,就跑到柜台问,但毕竟柜台有那么多的磁带,总不能都放出来听一遍吧?
      再后来就是大学了,我学会上网了,但网络再大、搜索引擎再强,也还没先进到我哼个曲子它就能找到的地步。但我一直相信,这首曲子既然经常被引用,一定很有名。
      07年的时候,找到个网页,上面收集了电视台上经常放的背景音乐,我全部down下来听了一遍,可惜,没有那首。
      前天,电影台介绍Hans Zimmer,我知道他的,我所钟爱的《断箭》里的配乐就是他做的,很棒。电视里说,他还是《雨人》的配乐者,真是厉害....咦?!我隐约想起以前看《雨人》的介绍片,好像就是放的那首配乐,难道那是《雨人》里的曲子?
      噢,天哪。那么久了,终于找到了,就是《雨人》里的"leaving wallbrook, on the road"


《异域》

| | Comments (0) | TrackBacks (0)
      大概是上小学的时候,某天和表弟表哥一起看厂电视台放的录像,是个蛮惨也蛮真实的片子,讲的是49年国名党的逃兵没人管,只好跑到缅甸去贩毒。
      去年才知道那部电影叫《异域》(见识不够啊),朱延平拍的,集合了众多影星,电影在台湾很有名,是小说改编的。
      昨天才知道《异域》小说居然是柏杨写的!太出乎我意料了。看多了先生风趣幽默的杂文,没想到写小说可以写出这么真实这么惨的。

寻厕记

| | Comments (0) | TrackBacks (0)
      上周五早上坐车去上班,突然肚子疼,拉肚子,只好下车找地方上厕所。我是挑好站下车的——新世界商场,来到地下一层的超市,一问,该死居然没厕所!说一楼 有,但现在没到9点,没开呢。超市边没厕所?我憋的难受,跑到一楼一看,确实没开,商场内用绳子拦出一条过道,仅供去往超市的顾客走动,旁边只有一个女厕 所,我只好问一个胖子保安男厕所在哪里,他一副嫌弃的样子:“没有!”我本想回他两句,但无奈肚子疼,找厕所要紧,一句没说就匆匆出了商场。我边走边默默 的祝福那个死胖子,祝他以后出门就拉肚子,拉肚子就找不着厕所。

      我苦着脸来到商场旁的索尼爱立信大厦,这次我不打算问啥了,写字楼肯定有厕所,直接进去好了。刚一进门还没开始找,一个保安就警惕的迎了过来,问我有何贵干,唉,我说啥呢,说上厕所,他说没有。放你的屁!没厕所?索尼爱立信的员工都随地大小便不成?
       “旁边新世界商场有厕所”,索爱的保安说
       “他也说没有!”,我边回答边又无奈的匆匆出了索尼爱立信大厦。

      他妈的!他妈的!他妈的!
      我憋得心里直骂这些保安,在这个四周大楼林立,貌似无比繁华的地方,却连个厕所都没有!难道都是一群吃人饭不拉人屎的家伙!?

       边骂边继续找,只能去隔一个街区的医院找找了,我边走边苦着脸(憋得难受啊!)路过西门子大厦,噢~~,这个天天回家都要看到的大厦,更是光鲜,但我也知 道他保安更严,周末不上班的时候门卫都一副如临大敌的架势,这会儿肯定是不让进了。突然发现进西门子大厦的员工都瘦小且脸黑,一副愁苦疲劳的样子,而门卫 都虎视眈眈的盯着进去的人——这很像课文《包身工》里的场景,而不像一个大都市白领进写字楼的样子。和我对西门子的想象差太远了。说不定大厦里不是什么写 字楼,而是生产车间呢——制造业么。

       拐过西门子,终于来到了医院边的公共厕所,此时离我下车已经过了40分钟。我那个激动啊,感谢市政府啊!感谢公共厕所啊!什么商场、什么外企,都是靠不住的混蛋!

关于存档

This page is an archive of entries from 08 2009 listed from newest to oldest.

07 2009 is the previous archive.

09 2009 is the next archive.

Find recent content on the main index or look in the 存档 to find all content.