<linux/kernel.h>
#define container_of ( ptr, type, member) … …
指针ptr指向结构体type中的成员member,已知指针ptr,计算结构体type的起始地址。
structscull_pipe {
wait_queue_head_t inq, outq;
char *buffer, *end;
int buffersize;
char *rp, *wp;
int nreaders, nwrites;
struct semaphore sem;
struct cdev cedv;
};
例如,结构体scull_pipe中封装了结构cdev,已知cdev的地址,计算scull_pipe的地址。
container_of(inode->i_cdev, struct scull_pipe, cdev)