get_fs_byte头文件
时间: 2023-10-25 19:08:07 浏览: 142
得到硬盘序列号的头文件
`get_fs_byte` 不是一个标准的头文件,它实际上是一个内核函数,用于在用户空间地址空间中获取一个字节。在 Linux 内核源代码中,它的原型定义在 `include/asm-generic/uaccess.h` 头文件中,其定义如下:
```c
static inline unsigned char get_fs_byte(const char __user *addr)
{
unsigned register char _v;
__asm__ volatile("movb %1,%0\n\t"
"1: cmpl %[max],%2\n\t"
"jae 2f\n\t"
"jmp 3f\n"
"2: xorl %0,%0\n\t"
"jmp 4f\n"
"3:\n\t"
"cmpb %1,%0\n\t"
"je 1b\n\t"
"inc %0\n\t"
"jmp 1b\n"
"4:"
: "=q" (_v)
: "m" (*addr), "r" (current_thread_info()->addr_limit.seg), [max] "i" (0xffff)
: "memory");
return _v;
}
```
`get_fs_byte` 的功能是从用户空间地址 `addr` 处读取一个字节,它使用了内嵌汇编语言实现。这个函数首先将用户空间地址 `addr` 处的值读入 `_v` 变量中,然后使用 `cmpl` 和 `jae` 指令检查地址是否越界,如果越界则返回 0,否则返回读取的字节。
阅读全文