OS161 System Calls Implementation Notes
Author: 咳嗽di小鱼 Date: October 30, 2011 Category: Sum Up 12 Comments
这篇文章的目的是记录CS350 Assignment2中, 我编写各种System Calls时所采用的思路. 实际coding的时候, 同一种System Call的实现方式很可能不止一种, 但殊途同归.
注1: 文章顺序和实际coding顺序并不一定一致, 请参考Assignment中的Strategy部分.
注2: 如果没有仔细读过code和Assignment...这里很有些东西你可能读的似懂非懂.
欢迎在评论中提问...
General Tips
- 别管写什么function, 第一步永远是检查parameter是否有效!!!
(比如, pointer是不是NULL, string是不是空, etc) - 不要放过任何一个warning...需要explicit cast的时候, 千万不要偷懒.
- function一般使用parameter中的pointer进行value return, 正常的return用来return errno.
- 开始coding之前, 除了读Assignment, 读code, 还要好好读Assignment Hint! 解答了很多FAQ
- 注意在header file里用#ifndef, 保证header不会出现重复include
- kmalloc了的东西...在destroy的时候一定要kfree. 不然A3里, 你会发现各种memory leak
(Create某些data structure的中间, 如果出现error, 则需要首先free已经allocated的内存, 然后返回error) - 善用spl解决mutex问题. 当然, 首先你要明白什么样的操作需要mutex!
我会边写这个Note边添加Tips...