3

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

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

谢谢。

4

1 回答 1

2

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

我在 IBM 的 pubs 和 Internet 上都没有看到太多的文档。各种头文件中有一些示例。

对于这些,我找不到公开的原型。

如果您查看 net_malloc.h,您将看到定义了调用它的 MALLOC 和 NET_MALLOC 宏。然后,如果您在 /usr/include 下的所有文件中使用 grep,您将看到这些宏的使用。从这些用途中,您可以推断出宏的参数,从而推断出 net_malloc 本身的参数。我会做一个例程,它是您控制接口的 net_malloc 的通行证。

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

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

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

可悲的是,IBM 选择不记录这一点。正式获取此信息的另一种方法是支付“ISV”问题的费用。如果您正在做认真的 AIX 开发,那么您想成为 ISV / 合作伙伴。它将为您节省很多心碎。我不知道成本,但小公司甚至个人都可以负担得起。

本书也很不错。

于 2013-12-27T16:07:23.020 回答