<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)