我正在阅读@Resource
private Operator airtel;
@Resource
private Operator idea;
以了解Linux/arch/tile/lib/strlen_32.c
的成就。但是我遇到了两个名为strlen_32
和macro
的{{1}},其中我不知道其含义。函数__insn_seqb
如下:
__insn_ctz
我在Google上搜索过它们,但只发现了另一个宏定义:
strlen_32
glib-ports string-endian.h中的size_t strlen(const char*s)
{
const uintptr_t s_int = (uintptr_t)s;
const uint32_t *p = (const uint32_t*)(s_int&-4);
uint32_t v = *p | ((1<<(s_int<<3))-1);
uint32_t bits;
while((bits=__insn_seqb(v,0))==0)
v = *++p;
return ((const char*)p)+(__insn_ctz(bits)>>3)-s;
}
有人能告诉我清晰的定义在哪里或者这两个宏的真正含义和用法吗?
答案 0 :(得分:3)
它们似乎是Tilera processors的指令内在函数。
我猜测__insn_ctz
是一个“计数尾随零”指令。
__insn_seqb
似乎正在测试4字节字中的0字节。
Tilera指令显然是somewhat similar to MIPS。