电脑技术学习

FreeBSD系统内核对象

dn001

  内核对象,也就是Kobj,为操作系统内核提供了一种面向对象的C语言编程方式。被操作的数据也承载操作它的方法。这使得在不破坏二进制兼容性的前提下,某一个接口能够增/减相应的操作。Kobj工作时,产生方法的描述。每个描述有一个唯一的标识和一个缺省函数。某个描述的地址被用来在一个类的方法表里唯一的标识方法。 构建一个类,就是要建立一张方法表,并将这张表关联到一个或多个函数(方法);这些函数(方法)都带有方法描述。使用前,类要被编译。编译时要为这个类分配一些缓存。在方法表中的每个方法描述都会被指派一个唯一的标识,除非已经被其它引用它的类在编译时指派了标识。对于每个将要被使用的方法,都会由脚本生成一个函数(方法查找函数),以解析外来参数,并在被查询时给出方法描述的地址。被生成的函数(方法查找函数)凭着那个方法描述的唯一标识按Hash的方法查找对象的类的缓存。如果这个方法不在缓存中,函数会查找使用类的方法表。如果这个方法被找到了,类里的相关函数(也就是某个方法的实现代码)就会被使用。否则,这个方法描述的缺省函数将被使用。 这些过程可被表示如下: 对象->缓存<->类

  如何使用Kobj

  结构

  struct kobj_method

  函数void kobj_class_compile(kobj_class_t cls);
void kobj_class_compile_static(kobj_class_t cls, kobj_ops_t ops);
void kobj_class_free(kobj_class_t cls);
kobj_t kobj_create(kobj_class_t cls, struct malloc_type *mtype, int mflags);
void kobj_init(kobj_t obj, kobj_class_t cls);
void kobj_delete(kobj_t obj, struct malloc_type *mtype);
KOBJ_CLASS_FIELDS
KOBJ_FIELDS
DEFINE_CLASS(name, methods, size)
KOBJMETHOD(NAME, FUNC)
头文件<SYS param.h>
<SYS kobj.h>

  建立一个接口的模板

标签: