在 put_user() 和 get_user() 函数的定义中,都可以看到: __chk_user_ptr(x) 这个宏(内核版本: 2.6.31)。 查一下这个宏的定义是: # define __chk_user_ptr(x) (void)0 我不明白这里使用了 __chk_user_ptr(x) 这个宏的用处是什么? 如我在一个测试程序里,也模拟定义这样的一个宏,但是反汇编看了一下,也没有什么对应的汇编语句: [quote] m[3] = m[3] + 1; 80483d7: 8b 45 f0 mov -0x10(%ebp),%eax 80483d...
by beyes - 内核源码 - 2009-10-22 12:04:17 阅读(2164) 回复(0)
#include #include struct cona_t{ int i; int j; int v; char t[10]; unsigned short xy; }; struct cona_t ct; unsigned short xy; int main(int argc,char * argv[]) { int xy,z,addr1,addr2; struct cona_t * p; memset(&ct,0,sizeof(struct cona_t)); ct.i = ct.j = ct.v = 10; sprintf(ct.t,"%s","sdf"); ct.xy = 20; xy = &(((struct cona_t *)0)->j); z = &((&ct)-...
__attribute__ 的语法为:__attribute__ ((语法列表)) 参数aligned(number) [number为最小对齐的字节数]是用得较多的一个。另一个是参数packed 表示“使用最小对齐”方式,即对变量是字节对齐,对于域是位对齐。 这个例子稍长了点,不过非常简单:[root@Kendo develop]# cat align.c#include struct A{ char a; int b; unsigned short c; long d; unsigned long long e; char f;}; str...
GNU C扩展的__attribute__ 机制被用来设置函数、变量、类型的属性,其用得较多的是处理字节对齐的问题。 __attribute__ 的语法为: __attribute__ ((语法列表)) 参数aligned(number) [number为最小对齐的字节数]是用得较多的一个。 另一个是参数packed 表示“使用最小对齐”方式,即对变量是字节对齐,对于域是位对齐。 这个例子稍长了点,不过非常简单: [root@Kendo develop]# cat align.c [code]#include struct A{...
__attribute__ 的语法为: __attribute__ ((语法列表)) 参数aligned(number) [number为最小对齐的字节数]是用得较多的一个。 另一个是参数packed 表示“使用最小对齐”方式,即对变量是字节对齐,对于域是位对齐。 这个例子稍长了点,不过非常简单: [root@Kendo develop]# cat align.c [code]#include struct A{ char a; int b; unsigned short c; long d; unsigned long long e; ...
GNU C扩展的__attribute__ 机制被用来设置函数、变量、类型的属性,其用得较多的是处理字节对齐的问题。 __attribute__ 的语法为: [code]__attribute__ ((语法列表))[/code] 参数aligned(number) [number为最小对齐的字节数]是用得较多的一个。 另一个是参数packed 表示“使用最小对齐”方式,即对变量是字节对齐,对于域是位对齐。 这个例子稍长了点,不过非常简单: [root@Kendo develop]# cat align.c [code]#include struct ...
在模块A中定义了一个函数 func,这个函数要在模块B中使用,但是模块A不一定会被加载到内核中,所以将函数 func声明为 一个weak符号 int __attribute__((weak)) func(const char *name, int flag); 在模块B中使用的时候,会做判断,再调用。 if (func()) func(name, flag); 现在遇到一个问题,有两套编译环境(都是mips的交叉编译环境),在第一套编译环境中编译后(mips-linux-gcc-4.3.3),加载模块B是正常的,在第二套...
GNU C扩展的__attribute__ 机制被用来设置函数、变量、类型的属性,其用得较多的是处理字节对齐的问题。 __attribute__ 的语法为: [code]__attribute__ ((语法列表))[/code] 参数aligned(number) [number为最小对齐的字节数]是用得较多的一个。 另一个是参数packed 表示“使用最小对齐”方式,即对变量是字节对齐,对于域是位对齐。 这个例子稍长了点,不过非常简单: [root@Kendo develop]# cat align.c [code]#include struct ...