Linux内核 tasklet_trylock()

函数:tasklet_trylock( )

文件包含:

#include<linux/interrupt.h>

函数定义:

在内核源码中的位置: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( )在实现过程中调用了函数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上调度执行。

输入参数说明:

此函数的输入参数是struct tasklet_struct结构体类型的指针变量,代表软中断的描述符信息,其定义及详细解释参考函数__tasklet_hi_schedule( )分析文档的输入参数说明部分。

返回参数说明:

函数tasklet_trylock ( )的返回值是int型的变量,可能的取值是0和1,与tasklet_struct结构体变量中的state字段的bit[1]的“非”相对应,如果bit[1]=1,则函数返回0,如果bit[1]=0,则函数返回1;返回0表示此中断不可在此CPU上执行,返回1表示此中断可在此CPU上执行。

实例解析:

此函数没有单独测试,为了与函数tasklet_unlock( )进行比较,保证程序的正确执行,二者配对使用,所以测试程序及结果分析参考函数tasklet_unlock( )分析文档的实例解析部分。

酷客网相关文章:

赞(0)

评论 抢沙发

评论前必须登录!