#define INIT_WORK(_work, _func) \
do { \
__INIT_WORK((_work), (_func), 0); \
} while (0)
#define __INIT_WORK(_work, _func, _onstack) \
do { \
__init_work((_work), _onstack); \
(_work)->data = (atomic_long_t) WORK_DATA_INIT(); \
INIT_LIST_HEAD(&(_work)->entry); \
PREPARE_WORK((_work), (_func)); \
} while (0)
__init_work(struct work_struct working, int onstack);
从源码来看,其功能应该是用work_struct来查找其对应的object,获取object的oom的debug信息。
(_work)->data = (atomic_long_t) WORK_DATA_INIT();
对work中的data进行出示化, 为0
INIT_LIST_HEAD(&(_work)->entry);
生成一个空链
PREPARE_WORK((_work), (_func));
调用work的func;
总体来说INIT_WORK是在当前任务中建立一个新的task,其功能取决于func。<为什么之前要获取该任务debug信息呢?why?>
阅读(3557) | 评论(0) | 转发(0) |