- 论坛徽章:
- 0
|
回复 2# philarlala
谢谢大佬回复。
目前的解决方案用的也是container_of这样,
结构定义如下,
struct bfd_delayed_work {
struct delayed_work work; /* 封装 delayed_work 结构体 */
struct session *bfd_session; /* 传递的参数 */
};
获取参数
void bfd_xmit_timeout(struct work_struct *work) {
struct bfd_delayed_work *bfd_work = NULL;
struct delayed_work *dwork = NULL;
struct bfd_session *session = NULL;
dwork = container_of(work, struct delayed_work, work); /* 先提取 delayed_wrok 指针 */
bfd_work = container_of(dwork, struct bfd_delayed_work, work); /* 再提取bfd_delayed_work指针*/
bfd_session = bfd_work->bfd_session; /* 获取参数 */
...
}
这里因为使用的是delayed_work结构体而不是work_struct结构体,所以使用了两次container_of,看别人的例子都是用一次。
|
|