悟空学Linux专栏----第12篇

来源:互联网 发布:手机怎么改淘宝中差评 编辑:程序博客网 时间:2024/05/22 12:05

  为了提高上课的学习效率,悟空在上课之前先预习一下,预习的时候发现了两个问题。一个是struct clocksource结构体中的read函数,这个函数是一个挂钩函数,那么这个挂钩函数最后调用的是什么函数呢?Linux内核又为什么要设计这个挂钩函数呢?直接调用不就得了吗?第二个就是这个函数返回的是一个cycle计数值,也就是时钟周期的计数值,要将这个值转换为时间,就必须知道时钟频率,而这个结构体中却找不到时钟频率。

  带着这两个问题,悟空来到课堂。悟空比较猴急,一上来就直奔主题。

  悟空:老师,为什么struct clocksource结构体中的read函数是一个挂钩函数?这个函数最后调用的是那个函数呢?

  达人:敏捷软件开发中有一个设计原则:依赖倒置原则(DIP),这个原则的意思就是抽象不应该依赖于细节,细节应该依赖于抽象。打个比方,思想这些抽象的东西不应该依赖于具体某个人的头,而是具体某个人的头应该依赖于思想。而这个函数之所以这么设计就是为了遵守这个原则。

  悟空听完达人的解释之后,感觉自己在腾云,没有听明白达人的意思,但是想再问,又不知道如何问。悟空想想还是不管这些原则的定义了,直接问这个原则有什么好处吧。

  悟空:老师,那么这样设计有什么好处呢?

  达人:遵守这个原则之后,设计的时候如果需要添加新的时钟驱动,设计新的读取时间的函数的时候,只需要修改这个挂钩函数就可以实现,而不需要修改太多的地方,这样就增强了代码的移植性。

  悟空:哦,原来是这样啊。原来一个小小的挂钩函数的背后还隐藏了这么多东西啊。

  待悟空准备问第二个问题的时候,下课的铃声响起了。

  达人大怒:你这猴头,每次都来课堂捣乱,这节课又害得我没有讲完。

  说完重重的敲了悟空四下之后离开了。

0 0
原创粉丝点击