//注册,使用
Base.h
struct Base {
const char *label;
int (*set)(struct Base *base, unsigned offset, int value);
};
Concrect.c
struct Concrect {
const char *name;
unsigned offset;
int value;
struct Base* base;
}
int myset (struct Base *base, unsigned offset, int value) {
struct Concrect *c = container_of (base, struct Concrect, base);
c.offset = offset;
c.value = value;
return 0;
}
struct base* probe () {
struct Concrect *c = kzalloc (sizeof (struct Concrect), GFP_KERNEL);
c->lable =="test";
register_base (c->base);
return c->base;
}
Client.c
static struct Base *base;
int register_base (struct Base *b) {
base = b;
return 0;
}
EXPORT_SYMBOL_GPL(register_base);
static int clientest () {
base->set (b, 1, 1);
return 0;
}
框图描述: