当前位置: 技术问答>linux和unix
问个__get_free_pages的问题
来源: 互联网 发布时间:2016-12-08
本文导语: char *pagemem=__get_free_page(4); printk("pagemem length is %dn",strlen(pagemem)); char *pagesmem =__get_free_pages(GFP_KERNEL,2); printk("pagesmem length is %dn",strlen(pagemems)); 我发现输出的长度在不断的变化,这是为什么呢??? ...
char *pagemem=__get_free_page(4);
printk("pagemem length is %dn",strlen(pagemem));
char *pagesmem =__get_free_pages(GFP_KERNEL,2);
printk("pagesmem length is %dn",strlen(pagemems));
我发现输出的长度在不断的变化,这是为什么呢???
|
这样获取出长度肯定不行了-_-!
应该是像楼上说的一样返回一个固定长度的了
其实分配内存这种东西,要么你把你要求的长度传过去,要么给你返回一个固定长度的。长度变来变去也太危险了吧。
另外普通用途使用kmalloc就可以了把,不要是get_page这个底层的
应该是像楼上说的一样返回一个固定长度的了
其实分配内存这种东西,要么你把你要求的长度传过去,要么给你返回一个固定长度的。长度变来变去也太危险了吧。
另外普通用途使用kmalloc就可以了把,不要是get_page这个底层的
|
__get_free_page与__get_free_pages是不会清零分配的页面。
strlen()是遇到''字符就结束的。
如果每次分配的页面位置不一样,'的位置也不一样,所以长度也不一样啦。
strlen()是遇到''字符就结束的。
如果每次分配的页面位置不一样,'的位置也不一样,所以长度也不一样啦。
|
LDD3 上面的
__get_free_page(flags) 分配一个页面
__get_free_pages(flags,order) 分配若干(物理连续的)页面
flags通常使用GFP_KERNEL或GFP_ATOMIC
order是要申请或释放的页面数的以2为底的对数(log2N)
__get_free_page(flags) 分配一个页面
__get_free_pages(flags,order) 分配若干(物理连续的)页面
flags通常使用GFP_KERNEL或GFP_ATOMIC
order是要申请或释放的页面数的以2为底的对数(log2N)
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。