tasklet_trylock函数功能描述:函数tasklet_trylock( )在实现过程中调用了函数test_and_set_bit( ),此函数完成将参数tasklet_struct结构体类型的变量的state成员中的bit[1]设置成1,同时返回原bit[1]的“非”。如果state字段bit[1]原值为1(表示此中断已在另一个CPU上执行),则函数tasklet_trylock( )返回0,也就表示此中断不可在此CPU上调度执行;如果state字段bit[1]原值为0,那么函数tasklet_trylock( )将返回1,表示此中断可在此CPU上调度执行。
tasklet_trylock文件包含
#include<linux/interrupt.h>
tasklet_trylock函数定义
在内核源码中的位置:linux-3.19.3/include/linux/interrupt.h
函数定义格式:
static inline int tasklet_trylock(struct tasklet_struct *t)
{
return ! test_and_set_bit(TASKLET_STATE_RUN, &(t)->state);
}
tasklet_trylock输入参数说明
此函数的输入参数是struct tasklet_struct结构体类型的指针变量,代表软中断的描述符信息,其定义及详细解释参考函数__tasklet_hi_schedule( )分析文档的输入参数说明部分。
tasklet_trylock返回参数说明
函数tasklet_trylock ( )的返回值是int型的变量,可能的取值是0和1,与tasklet_struct结构体变量中的state字段的bit[1]的“非”相对应,如果bit[1]=1,则函数返回0,如果bit[1]=0,则函数返回1;返回0表示此中断不可在此CPU上执行,返回1表示此中断可在此CPU上执行。
tasklet_trylock实例解析
此函数没有单独测试,为了与函数tasklet_unlock( )进行比较,保证程序的正确执行,二者配对使用,所以测试程序及结果分析参考函数tasklet_unlock( )分析文档的实例解析部分。