阅读:1602回复:11
关于linux上的内存分配(内存管理)的问题:
请问有谁知道什么函数可以做到:
1> 在linux用户进程中分配内核空间内存 2> 在linux内核模块中分配用户空间内存 ----------------------------------------- :) |
|
沙发#
发布于:2002-11-15 09:33
1,在上层用ioctl,下层在ioctl程序里kmalloc。
2,下层分配的buf供上层用,应该就是你要的内存吧! |
|
板凳#
发布于:2002-11-15 13:29
这种方法是我现在采用的,问题是它们具有相关性:
-------------------------------------------------- 互相依赖性太强,比较被动,我想知道有没有更加主动点的方法可以减少这种以来关系,现在的方法是可行的,这个我承认,不过我想用更好的方法,高手请赐教。 -------------------------------------------------- Target Functions Work on RedHat Linux 7.3 -------------------------------------------------- :) |
|
地板#
发布于:2002-11-15 13:47
想必你也知道,在用户空间只能访问PAGE_OFFSET分界线以下的内存。
你想分配分界线以下的内存? 为了稳定性考虑,我估计不会有你想要的函数的。 |
|
地下室#
发布于:2002-11-15 13:54
恩~,我也知道机会比较少,不过我的重点并不是应用,而是内核,
在内核模块里自己分配用户空间的内存,把数据往应用发,呵呵~ 我只是随便把两个方向的方法都问上而已--- :) |
|
5楼#
发布于:2002-11-15 13:59
而且就内核模块来说,我估计它应该具有分配用户空间内存的权限,所以就先请教一下,因为我在linux上编程的时间不长。
------------------------------------------------------------ 多想点怪主意也不是坏事吧--- :) |
|
6楼#
发布于:2002-11-15 14:40
多想点怪主意也不是坏事吧---
当然不是坏事。 :D 为了保持稳定性,linux上下层的接口做的很好,比如 file_operation指针。 其实你在编程序的时候无需考虑过多的内存问题,linux提供了几个函数,供你使用。你只要知道内存映射是怎么回事就差不多了。 你看看这个函数: copy_from_user 实际内核把数据存在某个地址,上层来取得,不是说你送到上面的。 |
|
7楼#
发布于:2002-11-16 08:48
你说的那个函数的参数是两个地址和一个长度吧,不过在事前也要先分配空间,是吧?谢谢,你的回答,你回答很耐心,谢谢。 :)
|
|
8楼#
发布于:2002-11-18 08:40
你说的那个函数的参数是两个地址和一个长度吧,不过在事前也要先分配空间,是吧?谢谢,你的回答,你回答很耐心,谢谢。 :) 对。内部调用了access_ok函数。 int access_ok(int type,const void *addr,unsigned long size) |
|
9楼#
发布于:2002-11-18 16:49
虽然我的问题还是没有得到解决,但是还是谢谢你的回答 :)
|
|
10楼#
发布于:2002-11-18 17:04
虽然我的问题还是没有得到解决,但是还是谢谢你的回答 :) 没帮上你。 :( 不好意思。 |
|
11楼#
发布于:2002-11-18 19:33
哪里哪里~~谢了 :)
|
|