您正在查看 "默认分类" 分类下的文章
2007年06月11日 星期一 上午 09:10
自今年年初起,由于一些个人原因,本博客暂停更新,目前还有UDP版、TCP版未发布,在一段时间后,会补充完整。具体时间未定。
如果现有的内容能够对你的工作,学习有所帮助,我会感到非常高兴。但由于技术的东西本身具有特殊性,我目前在暂时不关注这一块的情况下,很难一下子跟您进行深入的探讨,所以,所有关于技术咨询的来信,恕不回复,还望谅解。 |
2006年12月31日 星期日 下午 06:10
跌跌撞撞把TCP/IP协议栈的实现搞了一年,其间得到了很多朋友的帮助和支持,在这里衷心地感谢大家。12月由于家里有些事情,以至于未能在月底如期完成IP完整版,目前还差IGMP有部分未完成,看来只能等2007年了。
希望在新的一年里,我们能一如既往的互相帮助,互相支持,共同提高,谢谢大家。 |
2006年08月31日 星期四 下午 07:21
我们以gettimeofday系统调用为例,来讲述系统调用实现的原理与流程。在用户空间,是这样调用该系统调用的: #include <sys/time.h> int gettimeofday(struct timeval *tv, struct timezone *tz); 而真正调用的内核函数的定义是这样的: asmlinkage long sys_gettimeofday(struct timeval __user *tv, struct timezone __user *tz); 它们之间的联系是通过封装例程来实现的,Linux定义了从_syscall0到_syscall5共6个宏。数字0到5对应着系统调用所用的参数数量,所以,任何一个系统调用,其参数的数量是不能超过5个的。gettimeofday的参数有两个,所以它使用宏_syscall2封装,在用户空间,宏_syscall2这样定义(linux/unistd.h文件中): #define _syscall2(type,name,type1,arg1,type2,arg2) \ type name(type1 arg1,type2 arg2) \ {\ |
2006年08月31日 星期四 上午 07:04
接下来介绍struct module结构体的成员struct module_kobject mkobj,该成员是一个结构体类型,结构体的定义如下: struct module_kobject{ struct kobject kobj; struct module *mod; }; mod指向包容它的struct module成员,kobj是一个struct kobjecy结构体,kobject是组成设备模型的基本结构。设备模型是在2.6内核中出现的新的概念,因为随着拓扑结构越来越复杂,以及要支持诸如电源管理等新特性的要求,向新版本的内核明确提出了这样的要求:需要有一个对系统的一般性抽象描述。设备模型提供了这样的抽象。 设备模型是一个较为复杂的概念,首先来理解kobject。kobject最初只是被理解为一个简单的引用计数,但现在也有了很多成员,它所能处理的任务以及它所支持的代码包括:对象的引用计数;sysfs表述;结构关联;热插拔事件处理。下面是kobjec |
2006年08月29日 星期二 下午 08:55
结构体struct module在内核中代表一个内核模块,通过insmod(实际执行init_module系统调用)把自己编写的内核模块插入内核时,模块便与一个struct module结构体相关联,并成为内核的一部分。下面是结构体struct module的完整定义,接下来会逐个解释: struct module { enum module_state state; struct list_head list; char name[MODULE_NAME_LEN]; struct module_kobject mkobj; struct module_param_attrs *param_attrs; const char *version; const char *srcversion; const struct kernel_symbol *syms; unsigned int num_syms; |
|
|