perfstat_netbuffer 子例程

用途

检索网络缓冲区分配使用情况统计信息。

Perfstat 库 (libperfstat.a)

语法

#include <libperfstat.h>

int perfstat_netbuffer (name, userbuff, sizeof_struct, desired_number)
perfstat_id_t *name;
perfstat_netbuffer_t *userbuff;
size_t sizeof_struct;
int desired_number;

描述

perfstat_netbuffer 子例程检索有关每个可能的缓冲区大小的网络缓冲区分配的统计信息。 返回的计数是对应于缓冲区大小的所有处理器的分配统计信息总和 (内核统计信息按每个处理器的大小保留)。

要获取一组或多组网络缓冲区分配使用情况度量,请将 name 参数设置为需要统计信息的网络缓冲区大小,并设置 desired_number 参数。 要从第一个网络缓冲区大小开始,请在 name 参数中指定 "" 或 FIRST_NETBUFFER。 userbuff 参数必须指向足够大的内存区域,以包含此函数将复制的所需数目的 perfstat_netbuffer_t 结构。

返回时, name 参数将设置为下一个缓冲区类型的 ASCII 大小,或者设置为 "" (如果已复制所有结构)。 仅返回已使用的网络缓冲区大小的统计信息。 因此,在返回的统计信息数组中可以存在孔,并且大小为 4096 的分配对应的结构可以直接遵循大小为 256 的结构 (在尚未使用 512 , 1024 和 2048 的情况下)。 当直接按名称要求时,将返回与尚未使用的缓冲区大小相对应的结构 (所有字段都设置为 0)。

要检索网络缓冲区使用情况度量的可用集合数,请将 nameuserbuff 参数设置为 NULL ,并将 desired_number 参数设置为 0。 返回的值将是可用集的数目。

此子例程在 工作负载分区 (WPAR) 中不受支持。 它不知道 WPAR

参数

描述
名称 包含 "" , FIRST_NETBUFFER 或 ASCII 格式的网络缓冲区大小。 它是 2 的幂。 例如:
32, 64, 128, ..., 16384
用户缓冲区 指向要使用一个或多个 perfstat_netbuffer_t 结构填充的内存区域。
大小结构 指定 perfstat_netbuffer_t 结构的大小: sizeof(perfstat_netbuffer_t)
期望数 (desired_number) 指定要复制到 userbuffperfstat_netbuffer_t 结构的数目。

返回值

成功完成后,将返回可填充的结构数。 如果不成功,则返回值为-1并设置errno全局变量。

错误代码

如果以下情况成立,那么 perfstat_netbuffer 子例程不成功:
描述
EINVAL 其中一个参数无效。

文件

libperfstat.h 文件定义标准宏,数据类型和子例程。