memory-management - AIX 中的中断环境可以调用哪些内存分配函数?

标签 memory-management aix kernel-extension

xmalloc只有当我编写AIX内核扩展时才能在进程环境中使用。

AIX 中中断环境可以调用哪些内存分配函数?

谢谢。

最佳答案

网络内存分配例程。查看/usr/include/net/net_malloc.h。最低级别是net_malloc和net_free。

我在 IBM 的酒吧和互联网上都没有看到太多文档。各种头文件中有一些示例。

我找不到这些的公开原型(prototype)。

如果查看 net_malloc.h,您将看到调用它的 MALLOC 和 NET_MALLOC 宏定义。然后,如果您 grep/usr/include 下的所有文件,您将看到这些宏的使用。从这些用途中,您可以推断出宏的参数,从而推断出 net_malloc 本身的参数。我将创建一个例程,传递到您控制接口(interface)的 net_malloc。

在您的目标系统上,执行“netstat -m”。您看到的最后一个存储桶大小将是您可以使用 M_NOWAIT 标志调用 net_malloc 的最大大小。 M_WAIT 只能在进程时使用,并在必要时等待 netm 分配更多内存。如果没有足够的固定内存,M_NOWAIT 将返回 0。在中断时,必须使用M_NOWAIT。

没有对“类型”进行真正的检查,但最好选择合适的类型以供稍后调试之用。 kdb 的 netm 输出显示了类型。

以类似的方式,您可以弄清楚如何调用 net_free。

可悲的是 IBM 选择不记录这一点。正式获取此信息的另一种方法是付费询问“ISV”问题。如果您正在认真进行 AIX 开发,那么您想成为 ISV/合作伙伴。它会让你免去很多心碎的痛苦。费用我不知道,但是小公司甚至个人都可以承受。

这个book拥有它也很高兴。

关于memory-management - AIX 中的中断环境可以调用哪些内存分配函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20796740/

相关文章:

c++ - new 和 delete 超出范围的内存管理

C++:用共享和弱指针替换原始指针

c - long long integer 在 C(UNIX+AIX6.1) 中不起作用

ksh - 为什么 ksh 脚本在 while 循环后退出代码为 1?

c - 谁响应内存管理用malloc()

Python 和 Numba : incorrect checksum for freed object

c - 如何更多地调查一些给出系统错误 :exec format error in AIX 的 .so 文件

c++ - Kext OSDynamicCast 在 OSObject::free 期间失败

c++ - 在 IOKit 代码中使用 `decltype`

macos - 通过网络设置两机内核调试