DOCA 2.9.0 API 参考

2. 模块

DOCA AES-GCM 库。有关更多详细信息,请参阅 DOCA 开发专区的用户指南。

类型定义

typedef void  ( *doca_aes_gcm_task_decrypt_completion_cb_t )( doca_aes_gcm_task_decrypt*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
在 aes_gcm 解密任务完成时执行的函数。
typedef void  ( *doca_aes_gcm_task_encrypt_completion_cb_t )( doca_aes_gcm_task_encrypt*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
在 aes_gcm 加密任务完成时执行的函数。

枚举

enum doca_aes_gcm_key_type
AES-GCM 密钥类型。

函数

DOCA_EXPERIMENTAL doca_ctx* doca_aes_gcm_as_ctx ( doca_aes_gcm* aes_gcm )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_get_max_num_tasks ( doca_aes_gcm* aes_gcm, uint32_t* max_num_tasks )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 aes_gcm 解密最大缓冲区大小。
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_iv_len ( const doca_devinfo* devinfo, uint32_t* max_iv_len )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_list_buf_num_elem ( const doca_devinfo* devinfo, uint32_t* max_list_num_elem )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_key_type_supported ( const doca_devinfo* devinfo, doca_aes_gcm_key_type key_type )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 aes_gcm 解密任务。
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_tag_128_supported ( const doca_devinfo* devinfo )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_tag_96_supported ( const doca_devinfo* devinfo )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 aes_gcm 加密最大缓冲区大小。
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_iv_len ( const doca_devinfo* devinfo, uint32_t* max_iv_len )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_list_buf_num_elem ( const doca_devinfo* devinfo, uint32_t* max_list_num_elem )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_key_type_supported ( const doca_devinfo* devinfo, doca_aes_gcm_key_type key_type )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 aes_gcm 加密任务。
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_tag_128_supported ( const doca_devinfo* devinfo )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_tag_96_supported ( const doca_devinfo* devinfo )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_create ( doca_dev* dev, doca_aes_gcm** aes_gcm )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_destroy ( doca_aes_gcm* aes_gcm )
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_key_create ( doca_aes_gcm* aes_gcm, const void* raw_key, doca_aes_gcm_key_type raw_key_type, doca_aes_gcm_key** key )
从用户原始密钥创建 AES-GCM 密钥,以便与任务一起发送,从而允许加密/解密操作。
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_key_destroy ( doca_aes_gcm_key* key )
销毁在 doca_aes_gcm_key_create 中创建的 AES-GCM 密钥。
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_decrypt_alloc_init ( doca_aes_gcm* aes_gcm, const doca_buf* src_buff, doca_buf* dst_buff, doca_aes_gcm_key* key, const uint8_t* iv, uint32_t iv_length, uint32_t tag_size, uint32_t aad_size, doca_data user_data, doca_aes_gcm_task_decrypt** task )
分配 aes_gcm 解密任务。
DOCA_EXPERIMENTAL doca_task* doca_aes_gcm_task_decrypt_as_task ( doca_aes_gcm_task_decrypt* task )
将 aes_gcm 解密任务转换为 doca_task
DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_decrypt_get_aad_size ( const doca_aes_gcm_task_decrypt* task )
获取 aes_gcm 解密任务的附加认证数据大小
DOCA_EXPERIMENTAL doca_buf* doca_aes_gcm_task_decrypt_get_dst ( const doca_aes_gcm_task_decrypt* task )
获取 aes_gcm 解密任务目标
const DOCA_EXPERIMENTAL uint8_t* doca_aes_gcm_task_decrypt_get_iv ( const doca_aes_gcm_task_decrypt* task, uint32_t* iv_length )
获取 aes_gcm 解密任务初始化向量
DOCA_EXPERIMENTAL doca_aes_gcm_key* doca_aes_gcm_task_decrypt_get_key ( const doca_aes_gcm_task_decrypt* task )
获取 aes_gcm 解密任务 doca_aes_gcm_key
const DOCA_EXPERIMENTAL doca_buf* doca_aes_gcm_task_decrypt_get_src ( const doca_aes_gcm_task_decrypt* task )
获取 aes_gcm 解密任务源
DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_decrypt_get_tag_size ( const doca_aes_gcm_task_decrypt* task )
获取 aes_gcm 解密任务身份验证标签大小
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_aad_size ( doca_aes_gcm_task_decrypt* task, uint32_t aad_size )
设置 aes_gcm 解密任务的附加认证数据大小
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_decrypt_set_conf ( doca_aes_gcm* aes_gcm, doca_aes_gcm_task_decrypt_completion_cb_t task_completion_cb, doca_aes_gcm_task_decrypt_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 aes_gcm 解密任务配置。
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_dst ( doca_aes_gcm_task_decrypt* task, doca_buf* dst_buff )
设置 aes_gcm 解密任务目标
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_iv ( doca_aes_gcm_task_decrypt* task, const uint8_t* iv, uint32_t iv_length )
设置 aes_gcm 解密任务初始化向量
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_key ( doca_aes_gcm_task_decrypt* task, doca_aes_gcm_key* key )
设置 aes_gcm 解密任务 doca_aes_gcm_key
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_src ( doca_aes_gcm_task_decrypt* task, const doca_buf* src_buff )
设置 aes_gcm 解密任务源
DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_tag_size ( doca_aes_gcm_task_decrypt* task, uint32_t tag_size )
设置 aes_gcm 解密任务身份验证标签大小
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_encrypt_alloc_init ( doca_aes_gcm* aes_gcm, const doca_buf* src_buff, doca_buf* dst_buff, doca_aes_gcm_key* key, const uint8_t* iv, uint32_t iv_length, uint32_t tag_size, uint32_t aad_size, doca_data user_data, doca_aes_gcm_task_encrypt** task )
分配 aes_gcm 加密任务。
DOCA_EXPERIMENTAL doca_task* doca_aes_gcm_task_encrypt_as_task ( doca_aes_gcm_task_encrypt* task )
将 aes_gcm 加密任务转换为 doca_task
DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_encrypt_get_aad_size ( const doca_aes_gcm_task_encrypt* task )
获取 aes_gcm 加密任务的附加认证数据大小
DOCA_EXPERIMENTAL doca_buf* doca_aes_gcm_task_encrypt_get_dst ( const doca_aes_gcm_task_encrypt* task )
获取 aes_gcm 加密任务目标
const DOCA_EXPERIMENTAL uint8_t* doca_aes_gcm_task_encrypt_get_iv ( const doca_aes_gcm_task_encrypt* task, uint32_t* iv_length )
获取 aes_gcm 加密任务初始化向量
DOCA_EXPERIMENTAL doca_aes_gcm_key* doca_aes_gcm_task_encrypt_get_key ( const doca_aes_gcm_task_encrypt* task )
获取 aes_gcm 加密任务 doca_aes_gcm_key
const DOCA_EXPERIMENTAL doca_buf* doca_aes_gcm_task_encrypt_get_src ( const doca_aes_gcm_task_encrypt* task )
获取 aes_gcm 加密任务源
DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_encrypt_get_tag_size ( const doca_aes_gcm_task_encrypt* task )
获取 aes_gcm 加密任务身份验证标签大小
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_aad_size ( doca_aes_gcm_task_encrypt* task, uint32_t aad_size )
设置 aes_gcm 加密任务的附加认证数据大小
DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_encrypt_set_conf ( doca_aes_gcm* aes_gcm, doca_aes_gcm_task_encrypt_completion_cb_t task_completion_cb, doca_aes_gcm_task_encrypt_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 aes_gcm 加密任务配置。
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_dst ( doca_aes_gcm_task_encrypt* task, doca_buf* dst_buff )
设置 aes_gcm 加密任务目标
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_iv ( doca_aes_gcm_task_encrypt* task, const uint8_t* iv, uint32_t iv_length )
设置 aes_gcm 加密任务初始化向量
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_key ( doca_aes_gcm_task_encrypt* task, doca_aes_gcm_key* key )
设置 aes_gcm 加密任务 doca_aes_gcm_key
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_src ( doca_aes_gcm_task_encrypt* task, const doca_buf* src_buff )
设置 aes_gcm 加密任务源
DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_tag_size ( doca_aes_gcm_task_encrypt* task, uint32_t tag_size )
设置 aes_gcm 加密任务身份验证标签大小

类型定义

void ( *doca_aes_gcm_task_decrypt_completion_cb_t )( doca_aes_gcm_task_decrypt*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

在 aes_gcm 解密任务完成时执行的函数。

参数
task
aes_gcm 解密任务。实现可以假定此值不为 NULL。
union doca_data task_user_data
union doca_data ctx_user_data

void ( *doca_aes_gcm_task_encrypt_completion_cb_t )( doca_aes_gcm_task_encrypt*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

在 aes_gcm 加密任务完成时执行的函数。

参数
task
aes_gcm 加密任务。实现可以假定此值不为 NULL。
union doca_data task_user_data
union doca_data ctx_user_data

枚举

enum doca_aes_gcm_key_type

DOCA_AES_GCM_KEY_128 = 1
128 位密钥大小
DOCA_AES_GCM_KEY_256 = 2
256 位密钥大小

函数

DOCA_EXPERIMENTAL doca_ctx* doca_aes_gcm_as_ctx ( doca_aes_gcm* aes_gcm )

参数
aes_gcm
AES-GCM 实例。在不再需要上下文之后,此实例必须保持有效。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_aes_gcm 实例适配为通用上下文,以便与 doca 核心对象一起使用。

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_get_max_num_tasks ( doca_aes_gcm* aes_gcm, uint32_t* max_num_tasks )

参数
aes_gcm
要从中获取最大任务数的 AES-GCM 上下文
max_num_tasks
任务数之和不应超过此数字 (

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取最大任务数

此方法检索设备的最大任务数。任务数之和不应超过此数字。

另请参阅

doca_aes_gcm_set_aes_gcm_encrypt_task_conf, doca_aes_gcm_set_aes_gcm_decrypt_task_conf)

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 aes_gcm 解密最大缓冲区大小。
参数
devinfo
要检查的 doca 设备信息
max_buffer_size
aes_gcm 解密操作的最大缓冲区大小(以字节为单位)。

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务或无法查询设备功能。
描述

此方法检索 aes_gcm 解密最大大小

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_iv_len ( const doca_devinfo* devinfo, uint32_t* max_iv_len )

参数
devinfo
要检查的 doca 设备信息
max_iv_len
最大 iv 长度(以字节为单位)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持解密任务或无法查询设备功能。
描述

获取设备的 aes_gcm 解密最大初始化向量长度

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_get_max_list_buf_num_elem ( const doca_devinfo* devinfo, uint32_t* max_list_num_elem )

参数
devinfo
DOCA 设备信息。
max_list_num_elem
DOCA 链表缓冲区中支持的最大元素数量。值 1 表示仅支持单个元素。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务或无法查询设备功能。
描述

获取 aes_gcm 解密任务的 DOCA 链表缓冲区中支持的最大元素数量。

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_key_type_supported ( const doca_devinfo* devinfo, doca_aes_gcm_key_type key_type )

参数
devinfo
要检查的 doca 设备信息
key_type
要检查的密钥类型。请参阅枚举 doca_aes_gcm_key_type。

返回值

DOCA_SUCCESS - 在设备支持解密任务的 AES-GCM 密钥类型时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 设备不支持解密任务的 AES-GCM 密钥类型,或者 devinfo 不支持解密任务或无法查询设备功能。
描述

检查设备是否支持给定的解密任务 AES-GCM 密钥类型

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 aes_gcm 解密任务。
参数
devinfo
要检查的 doca 设备信息

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务或无法查询设备功能。
描述

此方法检查设备是否支持 aes_gcm 解密任务

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_tag_128_supported ( const doca_devinfo* devinfo )

参数
devinfo
要检查的 doca 设备信息

返回值

DOCA_SUCCESS - 在设备支持 128 位大小的身份验证标签时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 设备不支持 128 位大小的身份验证标签,或者 devinfo 不支持解密任务或无法查询设备功能。
描述

检查设备是否支持解密任务的 128 位大小的身份验证标签

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_decrypt_is_tag_96_supported ( const doca_devinfo* devinfo )

参数
devinfo
要检查的 doca 设备信息

返回值

DOCA_SUCCESS - 在设备支持 96 位大小的身份验证标签时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 设备不支持 96 位大小的身份验证标签,或者 devinfo 不支持解密任务或无法查询设备功能。
描述

检查设备是否支持解密任务的 96 位大小的身份验证标签

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 aes_gcm 加密最大缓冲区大小。
参数
devinfo
要检查的 doca 设备信息
max_buffer_size
aes_gcm 加密操作的最大缓冲区大小(以字节为单位)。

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务或无法查询设备功能。
描述

此方法检索设备的 aes_gcm 加密最大大小

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_iv_len ( const doca_devinfo* devinfo, uint32_t* max_iv_len )

参数
devinfo
要检查的 doca 设备信息
max_iv_len
最大 iv 长度(以字节为单位)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持加密任务或无法查询设备功能。
描述

获取设备的 aes_gcm 加密最大初始化向量长度

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_get_max_list_buf_num_elem ( const doca_devinfo* devinfo, uint32_t* max_list_num_elem )

参数
devinfo
DOCA 设备信息。
max_list_num_elem
DOCA 链表缓冲区中支持的最大元素数量。值 1 表示仅支持单个元素。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务或无法查询设备功能。
描述

获取 aes_gcm 加密任务的 DOCA 链表缓冲区中支持的最大元素数量。

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_key_type_supported ( const doca_devinfo* devinfo, doca_aes_gcm_key_type key_type )

参数
devinfo
要检查的 doca 设备信息
key_type
要检查的密钥类型。请参阅枚举 doca_aes_gcm_key_type。

返回值

DOCA_SUCCESS - 在设备支持加密任务的 AES-GCM 密钥类型时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 设备不支持加密任务的 AES-GCM 密钥类型,或者 devinfo 不支持加密任务或无法查询设备功能。
描述

检查设备是否支持给定的加密任务 AES-GCM 密钥类型

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 aes_gcm 加密任务。
参数
devinfo
要检查的 doca 设备信息

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务或无法查询设备功能。
描述

此方法检查设备是否支持 aes_gcm 加密任务

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_tag_128_supported ( const doca_devinfo* devinfo )

参数
devinfo
要检查的 doca 设备信息

返回值

DOCA_SUCCESS - 在设备支持 128 位大小的身份验证标签时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 设备不支持 128 位大小的身份验证标签,或者 devinfo 不支持加密任务或无法查询设备功能。
描述

检查设备是否支持加密任务的 128 位大小的身份验证标签

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_cap_task_encrypt_is_tag_96_supported ( const doca_devinfo* devinfo )

参数
devinfo
要检查的 doca 设备信息

返回值

DOCA_SUCCESS - 在设备支持 96 位大小的身份验证标签时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 设备不支持 96 位大小的身份验证标签,或者 devinfo 不支持加密任务或无法查询设备功能。
描述

检查设备是否支持加密任务的 96 位大小的身份验证标签

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_create ( doca_dev* dev, doca_aes_gcm** aes_gcm )

参数
dev
要附加到 aes_gcm 上下文的设备
aes_gcm
要设置为指向创建的 doca_aes_gcm 实例的指针的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 一个或多个参数为空。
  • DOCA_ERROR_NOT_SUPPORTED - 无法查询设备功能。
  • DOCA_ERROR_NO_MEMORY - 无法分配 doca_aes_gcm。
描述

创建 DOCA AES-GCM 实例。

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_destroy ( doca_aes_gcm* aes_gcm )

参数
aes_gcm
要销毁的实例的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_IN_USE - 如果无法获得对 aes_gcm 实例的独占访问权限,或者存在未销毁的 DOCA AES-GCM 密钥。
  • DOCA_ERROR_BAD_STATE - aes_gcm 上下文不处于空闲状态,请尝试停止上下文。
描述

销毁 DOCA AES-GCM 实例。

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_key_create ( doca_aes_gcm* aes_gcm, const void* raw_key, doca_aes_gcm_key_type raw_key_type, doca_aes_gcm_key** key )
从用户原始密钥创建 AES-GCM 密钥,以便与任务一起发送,从而允许加密/解密操作。
参数
aes_gcm
AES_GCM 实例。
raw_key
用户给定的原始密钥,仅支持 128 位或 256 位密钥
raw_key_type
用户给定的原始密钥类型。请参阅枚举 doca_aes_gcm_key_type。
key
要设置为指向创建的 AES-GCM 密钥的指针的指针,以允许加密/解密操作。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 如果设备不支持密钥类型,或者无法创建 DOCA AES-GCM 密钥。
描述
注意

在调用此函数之前,需要将设备附加到上下文


DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_key_destroy ( doca_aes_gcm_key* key )
销毁在 doca_aes_gcm_key_create 中创建的 AES-GCM 密钥。
参数
key
允许加密/解密操作的 AES-GCM 密钥。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_DRIVER - 底层驱动程序故障。
描述

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_decrypt_alloc_init ( doca_aes_gcm* aes_gcm, const doca_buf* src_buff, doca_buf* dst_buff, doca_aes_gcm_key* key, const uint8_t* iv, uint32_t iv_length, uint32_t tag_size, uint32_t aad_size, doca_data user_data, doca_aes_gcm_task_decrypt** task )
分配 aes_gcm 解密任务。
参数
aes_gcm
从中分配任务的 aes_gcm 上下文
src_buff
源缓冲区
dst_buff
目标缓冲区
key
DOCA AES-GCM 密钥
iv
初始化向量
iv_length
初始化向量长度(以字节为单位),支持 0B-12B 值
tag_size
身份验证标签大小(以字节为单位),仅支持 12B 和 16B 值
aad_size
附加认证数据大小(以字节为单位)
user_data
可以从任务中检索的 doca_data(通常在任务完成时)。
task
分配的任务

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 所有 aes_gcm 解密任务已分配。
  • DOCA_ERROR_BAD_STATE - aes_gcm 上下文未处于运行状态,请尝试启动上下文。
描述

此方法分配并初始化 aes_gcm 解密任务。任务参数可以在以后通过设置器设置。

DOCA_EXPERIMENTAL doca_task* doca_aes_gcm_task_decrypt_as_task ( doca_aes_gcm_task_decrypt* task )
将 aes_gcm 解密任务转换为 doca_task
参数
task
要转换的任务

返回值

doca_task

描述

DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_decrypt_get_aad_size ( const doca_aes_gcm_task_decrypt* task )
获取 aes_gcm 解密任务的附加认证数据大小
参数
task
要从中获取附加认证数据大小的任务

返回值

附加认证数据大小(以字节为单位)

描述

DOCA_EXPERIMENTAL doca_buf* doca_aes_gcm_task_decrypt_get_dst ( const doca_aes_gcm_task_decrypt* task )
获取 aes_gcm 解密任务目标
参数
task
要从中获取目标的任务

返回值

目标缓冲区

描述

const DOCA_EXPERIMENTAL uint8_t* doca_aes_gcm_task_decrypt_get_iv ( const doca_aes_gcm_task_decrypt* task, uint32_t* iv_length )
获取 aes_gcm 解密任务初始化向量
参数
task
要从中获取初始化向量的任务
iv_length
初始化向量长度(以字节为单位)

返回值

初始化向量

描述

DOCA_EXPERIMENTAL doca_aes_gcm_key* doca_aes_gcm_task_decrypt_get_key ( const doca_aes_gcm_task_decrypt* task )
获取 aes_gcm 解密任务 doca_aes_gcm_key
参数
task
获取 doca_aes_gcm_key 的任务

返回值

DOCA AES-GCM 密钥。

描述

const DOCA_EXPERIMENTAL doca_buf* doca_aes_gcm_task_decrypt_get_src ( const doca_aes_gcm_task_decrypt* task )
获取 aes_gcm 解密任务源
参数
task
获取源的任务

返回值

源缓冲区

描述

DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_decrypt_get_tag_size ( const doca_aes_gcm_task_decrypt* task )
获取 aes_gcm 解密任务身份验证标签大小
参数
task
获取身份验证标签大小的任务

返回值

身份验证标签大小(字节)

描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_aad_size ( doca_aes_gcm_task_decrypt* task, uint32_t aad_size )
设置 aes_gcm 解密任务的附加认证数据大小
参数
task
设置附加身份验证数据大小的任务为
aad_size
附加认证数据大小(以字节为单位)

描述

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_decrypt_set_conf ( doca_aes_gcm* aes_gcm, doca_aes_gcm_task_decrypt_completion_cb_t task_completion_cb, doca_aes_gcm_task_decrypt_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 aes_gcm 解密任务配置。
参数
aes_gcm
要配置的 aes_gcm 上下文
task_completion_cb
任务完成回调
task_error_cb
任务错误回调
num_tasks
上下文可以分配的 aes_gcm 解密任务数

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - aes_gcm 上下文不处于空闲状态,请尝试停止上下文。
描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_dst ( doca_aes_gcm_task_decrypt* task, doca_buf* dst_buff )
设置 aes_gcm 解密任务目标
参数
task
设置目标的任务为
dst_buff
要设置的目标缓冲区

描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_iv ( doca_aes_gcm_task_decrypt* task, const uint8_t* iv, uint32_t iv_length )
设置 aes_gcm 解密任务初始化向量
参数
task
设置初始化向量的任务为
iv
初始化向量
iv_length
初始化向量长度(以字节为单位)

描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_key ( doca_aes_gcm_task_decrypt* task, doca_aes_gcm_key* key )
设置 aes_gcm 解密任务 doca_aes_gcm_key
参数
task
设置 doca_aes_gcm_key 的任务为
key
DOCA AES-GCM 密钥

描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_src ( doca_aes_gcm_task_decrypt* task, const doca_buf* src_buff )
设置 aes_gcm 解密任务源
参数
task
设置源的任务为
src_buff
要设置的源缓冲区

描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_decrypt_set_tag_size ( doca_aes_gcm_task_decrypt* task, uint32_t tag_size )
设置 aes_gcm 解密任务身份验证标签大小
参数
task
设置身份验证标签大小的任务为
tag_size
身份验证标签大小(字节)

描述

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_encrypt_alloc_init ( doca_aes_gcm* aes_gcm, const doca_buf* src_buff, doca_buf* dst_buff, doca_aes_gcm_key* key, const uint8_t* iv, uint32_t iv_length, uint32_t tag_size, uint32_t aad_size, doca_data user_data, doca_aes_gcm_task_encrypt** task )
分配 aes_gcm 加密任务。
参数
aes_gcm
从中分配任务的 aes_gcm 上下文
src_buff
源缓冲区
dst_buff
目标缓冲区
key
DOCA AES-GCM 密钥
iv
初始化向量
iv_length
初始化向量长度(以字节为单位),支持 0B-12B 值
tag_size
身份验证标签大小(以字节为单位),仅支持 12B 和 16B 值
aad_size
附加认证数据大小(以字节为单位)
user_data
可以从任务中检索的 doca_data(通常在任务完成时)。
task
分配的任务

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 所有 aes_gcm 加密任务已被分配。
  • DOCA_ERROR_BAD_STATE - aes_gcm 上下文未处于运行状态,请尝试启动上下文。
描述

此方法分配并初始化一个 aes_gcm 加密任务。任务参数可以在之后通过 setter 方法设置。

DOCA_EXPERIMENTAL doca_task* doca_aes_gcm_task_encrypt_as_task ( doca_aes_gcm_task_encrypt* task )
将 aes_gcm 加密任务转换为 doca_task
参数
task
要转换的任务

返回值

doca_task

描述

DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_encrypt_get_aad_size ( const doca_aes_gcm_task_encrypt* task )
获取 aes_gcm 加密任务的附加认证数据大小
参数
task
要从中获取附加认证数据大小的任务

返回值

附加认证数据大小(以字节为单位)

描述

DOCA_EXPERIMENTAL doca_buf* doca_aes_gcm_task_encrypt_get_dst ( const doca_aes_gcm_task_encrypt* task )
获取 aes_gcm 加密任务目标
参数
task
要从中获取目标的任务

返回值

目标缓冲区

描述

const DOCA_EXPERIMENTAL uint8_t* doca_aes_gcm_task_encrypt_get_iv ( const doca_aes_gcm_task_encrypt* task, uint32_t* iv_length )
获取 aes_gcm 加密任务初始化向量
参数
task
要从中获取初始化向量的任务
iv_length
初始化向量长度(以字节为单位)

返回值

初始化向量

描述

DOCA_EXPERIMENTAL doca_aes_gcm_key* doca_aes_gcm_task_encrypt_get_key ( const doca_aes_gcm_task_encrypt* task )
获取 aes_gcm 加密任务 doca_aes_gcm_key
参数
task
获取 doca_aes_gcm_key 的任务

返回值

DOCA AES-GCM 密钥。

描述

const DOCA_EXPERIMENTAL doca_buf* doca_aes_gcm_task_encrypt_get_src ( const doca_aes_gcm_task_encrypt* task )
获取 aes_gcm 加密任务源
参数
task
获取源的任务

返回值

源缓冲区

描述

DOCA_EXPERIMENTAL uint32_t doca_aes_gcm_task_encrypt_get_tag_size ( const doca_aes_gcm_task_encrypt* task )
获取 aes_gcm 加密任务身份验证标签大小
参数
task
获取身份验证标签大小的任务

返回值

身份验证标签大小(字节)

描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_aad_size ( doca_aes_gcm_task_encrypt* task, uint32_t aad_size )
设置 aes_gcm 加密任务的附加认证数据大小
参数
task
设置附加身份验证数据大小的任务为
aad_size
附加认证数据大小(以字节为单位)

描述

DOCA_EXPERIMENTAL doca_error_t doca_aes_gcm_task_encrypt_set_conf ( doca_aes_gcm* aes_gcm, doca_aes_gcm_task_encrypt_completion_cb_t task_completion_cb, doca_aes_gcm_task_encrypt_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 aes_gcm 加密任务配置。
参数
aes_gcm
要配置的 aes_gcm 上下文
task_completion_cb
任务完成回调
task_error_cb
任务错误回调
num_tasks
上下文可以分配的 aes_gcm 加密任务数

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - aes_gcm 上下文不处于空闲状态,请尝试停止上下文。
描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_dst ( doca_aes_gcm_task_encrypt* task, doca_buf* dst_buff )
设置 aes_gcm 加密任务目标
参数
task
设置目标的任务为
dst_buff
要设置的目标缓冲区

描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_iv ( doca_aes_gcm_task_encrypt* task, const uint8_t* iv, uint32_t iv_length )
设置 aes_gcm 加密任务初始化向量
参数
task
设置初始化向量的任务为
iv
初始化向量
iv_length
初始化向量长度(以字节为单位)

描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_key ( doca_aes_gcm_task_encrypt* task, doca_aes_gcm_key* key )
设置 aes_gcm 加密任务 doca_aes_gcm_key
参数
task
设置 doca_aes_gcm_key 的任务为
key
DOCA AES-GCM 密钥

描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_src ( doca_aes_gcm_task_encrypt* task, const doca_buf* src_buff )
设置 aes_gcm 加密任务源
参数
task
设置源的任务为
src_buff
要设置的源缓冲区

描述

DOCA_EXPERIMENTAL void doca_aes_gcm_task_encrypt_set_tag_size ( doca_aes_gcm_task_encrypt* task, uint32_t tag_size )
设置 aes_gcm 加密任务身份验证标签大小
参数
task
设置身份验证标签大小的任务为
tag_size
身份验证标签大小(字节)

描述

DOCA 应用盾库允许您监控驻留在主机上的操作系统。这是通过 DPU DMA 功能完成的。请遵循程序员指南进行系统配置。

模块

 DOCA 应用盾属性
 

宏定义

#define doca_apsh_attst_info_get ( attestation, attr )
获取 attestation 的属性值。
#define doca_apsh_container_info_get ( container, attr )
获取 container 的属性值。
#define doca_apsh_envar_info_get ( envar, attr )
获取环境变量的属性值。
#define doca_apsh_handle_info_get ( handle, attr )
获取 handle 的属性值。
#define doca_apsh_injection_detect_info_get ( suspected_injection, attr )
获取 suspected_injection 的属性值。
#define doca_apsh_ldrmodule_info_get ( ldrmodule, attr )
获取 ldrmodule 的属性值。
#define doca_apsh_lib_info_get ( lib, attr )
获取 lib 的属性值。
#define doca_apsh_module_info_get ( module, attr )
获取 module 的属性值。
#define doca_apsh_netscan_info_get ( connection, attr )
获取 connection 的属性值。
#define doca_apsh_privilege_info_get ( privilege, attr )
获取 privilege 的属性值。
#define doca_apsh_process_info_get ( process, attr )
获取 process 的属性值。
#define doca_apsh_process_parameters_info_get ( process_parameters, attr )
获取 process-parameter 的属性值
#define doca_apsh_sid_info_get ( sid, attr )
获取 SID 的属性值。
#define doca_apsh_sys_config ( system, attr, value )
配置 system 的属性值,例如:hashtest 限制,符号映射 ...
#define doca_apsh_thread_info_get ( thread, attr )
获取 thread 的属性值。
#define doca_apsh_vad_info_get ( vad, attr )
获取 vad 的属性值。
#define doca_apsh_yara_info_get ( yara, attr )
获取 yara 的属性值。

函数

const DOCA_EXPERIMENTAL void* __doca_apsh_attst_info_get ( doca_apsh_attestation* attestation, doca_apsh_attestation_attr attr )
影子函数 - 获取 attestation 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_container_info_get ( doca_apsh_container* container, doca_apsh_container_attr attr )
影子函数 - 获取 container 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_envar_info_get ( doca_apsh_envar* envar, doca_apsh_envar_attr attr )
影子函数 - 获取环境变量的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_handle_info_get ( doca_apsh_handle* handle, doca_apsh_handle_attr attr )
影子函数 - 获取 handle 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_injection_detect_info_get ( doca_apsh_injection_detect* suspected_injection, doca_apsh_injection_detect_attr attr )
影子函数 - 获取 suspected_injection 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_ldrmodule_info_get ( doca_apsh_ldrmodule* ldrmodule, doca_apsh_ldrmodule_attr attr )
影子函数 - 获取 ldrmodule 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_lib_info_get ( doca_apsh_lib* lib, doca_apsh_lib_attr attr )
影子函数 - 获取 lib 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_module_info_get ( doca_apsh_module* module, doca_apsh_module_attr attr )
影子函数 - 获取 module 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_netscan_info_get ( doca_apsh_netscan* connection, doca_apsh_netscan_attr attr )
影子函数 - 获取 connection 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_privilege_info_get ( doca_apsh_privilege* privilege, doca_apsh_privilege_attr attr )
影子函数 - 获取 privilege 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_process_info_get ( doca_apsh_process* process, doca_apsh_process_attr attr )
影子函数 - 获取 process 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_process_parameters_info_get ( doca_apsh_process_parameters* process_parameters, doca_apsh_process_parameters_attr attr )
影子函数 - 获取 process-parameter 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_sid_info_get ( doca_apsh_sid* sid, doca_apsh_sid_attr attr )
影子函数 - 获取 SID 的属性值。
DOCA_EXPERIMENTAL doca_error_t __doca_apsh_sys_config ( doca_apsh_system* system, doca_apsh_system_config_attr attr, void* value )
影子函数 - 配置 system 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_thread_info_get ( doca_apsh_thread* thread, doca_apsh_thread_attr attr )
影子函数 - 获取 thread 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_vad_info_get ( doca_apsh_vad* vad, doca_apsh_vad_attr attr )
影子函数 - 获取 vad 的属性值。
const DOCA_EXPERIMENTAL void* __doca_apsh_yara_info_get ( doca_apsh_yara* yara, doca_apsh_yara_attr attr )
影子函数 - 获取 yara 的属性值。
DOCA_EXPERIMENTAL void doca_apsh_attestation_free ( doca_apsh_attestation** attestation )
销毁 attestation 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_attestation_get ( doca_apsh_process* process, const char* exec_hash_map_path, doca_apsh_attestation*** attestation, int* attestation_size )
获取当前进程的 attestation。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_attst_refresh ( doca_apsh_attestation*** attestation, int* attestation_size )
使用新快照刷新进程的单个 attestation 处理程序
DOCA_EXPERIMENTAL doca_error_t doca_apsh_container_processes_get ( doca_apsh_container* container, doca_apsh_process*** processes, int* processes_size )
获取容器上当前运行的进程数组。
DOCA_EXPERIMENTAL void doca_apsh_containers_free ( doca_apsh_container** containers )
销毁 container 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_containers_get ( doca_apsh_system* system, doca_apsh_container*** containers, int* containers_size )
获取系统上当前运行的容器数组。
DOCA_EXPERIMENTAL doca_apsh_ctx* doca_apsh_create ( void )
创建新的 apsh 处理程序。
DOCA_EXPERIMENTAL void doca_apsh_destroy ( doca_apsh_ctx* ctx )
释放 APSH 内存并关闭连接。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_dma_dev_set ( doca_apsh_ctx* ctx, doca_dev* dma_dev )
设置 apsh dma 设备。
DOCA_EXPERIMENTAL void doca_apsh_envars_free ( doca_apsh_envar** envars )
销毁 envars 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_envars_get ( doca_apsh_process* process, doca_apsh_envar*** envars, int* envars_size )
获取当前进程环境变量数组。
DOCA_EXPERIMENTAL void doca_apsh_handles_free ( doca_apsh_handle** handles )
销毁 handles 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_handles_get ( doca_apsh_process* process, doca_apsh_handle*** handles, int* handles_size )
获取当前进程句柄数组。
DOCA_EXPERIMENTAL void doca_apsh_injection_detect_free ( doca_apsh_injection_detect** suspected_injections )
销毁 injection_detect 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_injection_detect_get ( doca_apsh_process* process, doca_apsh_injection_detect*** suspected_injections, int* suspected_injections_size )
获取当前进程的可疑代码注入。
DOCA_EXPERIMENTAL void doca_apsh_ldrmodules_free ( doca_apsh_ldrmodule** ldrmodules )
销毁 ldrmodules 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_ldrmodules_get ( doca_apsh_process* process, doca_apsh_ldrmodule*** ldrmodules, int* ldrmodules_size )
获取当前进程模块数组。
DOCA_EXPERIMENTAL void doca_apsh_libs_free ( doca_apsh_lib** libs )
销毁 libs 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_libs_get ( doca_apsh_process* process, doca_apsh_lib*** libs, int* libs_size )
获取当前进程可加载库数组。
DOCA_EXPERIMENTAL void doca_apsh_module_free ( doca_apsh_module** modules )
销毁 modules 数组。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_modules_get ( doca_apsh_system* system, doca_apsh_module*** modules, int* modules_size )
获取系统上当前安装的模块数组。
DOCA_EXPERIMENTAL void doca_apsh_netscan_free ( doca_apsh_netscan** connections )
销毁 netscan 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_netscan_get ( doca_apsh_system* system, doca_apsh_netscan*** connections, int* connections_size )
获取当前连接数组。
DOCA_EXPERIMENTAL void doca_apsh_privileges_free ( doca_apsh_privilege** privileges )
销毁 privileges 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_privileges_get ( doca_apsh_process* process, doca_apsh_privilege*** privileges, int* privileges_size )
获取当前进程权限数组。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_process_netscan_get ( doca_apsh_process* process, doca_apsh_netscan*** connections, int* connections_size )
获取指定进程的当前连接数组。
DOCA_EXPERIMENTAL void doca_apsh_process_parameters_free ( doca_apsh_process_parameters* process_parameters )
销毁 process-parameters 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_process_parameters_get ( doca_apsh_process* process, doca_apsh_process_parameters** process_parameters )
获取当前进程参数。
DOCA_EXPERIMENTAL void doca_apsh_processes_free ( doca_apsh_process** processes )
销毁 process 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_processes_get ( doca_apsh_system* system, doca_apsh_process*** processes, int* processes_size )
获取系统上当前运行的进程数组。
DOCA_EXPERIMENTAL void doca_apsh_sids_free ( doca_apsh_sid** sids )
销毁 SIDs 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_sids_get ( doca_apsh_process* process, doca_apsh_sid*** sids, int* sids_size )
获取当前进程 SID 数组。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_start ( doca_apsh_ctx* ctx )
启动 apsh 处理程序。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_dev_set ( doca_apsh_system* system, doca_dev_rep* dev )
设置系统设备。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_kpgd_file_set ( doca_apsh_system* system, const char* system_kpgd_file_path )
设置系统 kpgd 文件。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_mem_region_set ( doca_apsh_system* system, const char* system_mem_region_path )
设置系统允许的内存区域。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_os_symbol_map_set ( doca_apsh_system* system, const char* system_os_symbol_map_path )
设置系统操作系统符号映射。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_os_type_set ( doca_apsh_system* system, doca_apsh_system_os os_type )
设置系统操作系统类型。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_set_scan_window_size ( doca_apsh_system* system, uint32_t scan_window_size )
设置系统 yara 扫描窗口大小。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_set_scan_window_step ( doca_apsh_system* system, uint32_t scan_window_step )
设置系统 yara 扫描窗口步长。
DOCA_EXPERIMENTAL doca_apsh_system* doca_apsh_system_create ( doca_apsh_ctx* ctx )
创建新的系统处理程序。
DOCA_EXPERIMENTAL void doca_apsh_system_destroy ( doca_apsh_system* system )
销毁系统处理程序。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_system_start ( doca_apsh_system* system )
启动系统处理程序。
DOCA_EXPERIMENTAL void doca_apsh_threads_free ( doca_apsh_thread** threads )
销毁 threads 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_threads_get ( doca_apsh_process* process, doca_apsh_thread*** threads, int* threads_size )
获取当前进程线程数组。
DOCA_EXPERIMENTAL void doca_apsh_vads_free ( doca_apsh_vad** vads )
销毁 vads 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_vads_get ( doca_apsh_process* process, doca_apsh_vad*** vads, int* vads_size )
获取当前进程 vads - 虚拟地址描述符数组。
DOCA_EXPERIMENTAL void doca_apsh_yara_free ( doca_apsh_yara** yara_matches )
销毁 yara 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_apsh_yara_get ( doca_apsh_process* process, doca_apsh_yara_rule ** yara_rules_arr, uint32_t yara_rules_arr_size, uint64_t scan_type, doca_apsh_yara*** yara_matches, int* yara_matches_size )
使用 yara 规则扫描当前进程。扫描使用 doca_apsh_sys_set_scan_window_size 和 doca_apsh_sys_set_scan_window_step 设置的窗口大小和步长完成。

宏定义

#define doca_apsh_attst_info_get ( attestation, attr )

从 attestation 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_attst_info_get(attestation, attr))

参数
attestation
单个 attestation 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_container_info_get ( container, attr )

从 container 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_container_info_get(container, attr))

参数
container
单个 container 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_envar_info_get ( envar, attr )

从 envar 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_envar_info_get(envar, attr))

参数
envar
单个 envar 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_handle_info_get ( handle, attr )

从 handle 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_handle_info_get(handle, attr))

参数
handle
单个 handle 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_injection_detect_info_get ( suspected_injection, attr )

从 suspected_injection 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_injection_detect_info_get(suspected_injection, attr))

参数
suspected_injection
单个 injection_detect 处理程序
attr
要获取可疑注入信息的属性

#define doca_apsh_ldrmodule_info_get ( ldrmodule, attr )

从 ldrmodule 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_ldrmodule_info_get(ldrmodule, attr))

参数
ldrmodule
单个 ldrmodule 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_lib_info_get ( lib, attr )

从 lib 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_lib_info_get(lib, attr))

参数
lib
单个 lib 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_module_info_get ( module, attr )

从 module 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_module_info_get(module, attr))

参数
module
单个 module 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_netscan_info_get ( connection, attr )

从 connection 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_netscan_info_get(connection, attr))

参数
connection
单个 connection 处理程序
attr
要获取连接信息的属性

#define doca_apsh_privilege_info_get ( privilege, attr )

从 privilege 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_privilege_info_get(privilege, attr))

参数
privilege
单个 privilege 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_process_info_get ( process, attr )

从 process 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_process_info_get(process, attr))

参数
process
单个 process 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_process_parameters_info_get ( process_parameters, attr )

从 process_parameters 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_process_parameters_info_get(process_parameters, attr))

参数
process_parameters
单个 process_parameters 处理程序
attr
要获取 process_parameters 信息的属性

#define doca_apsh_sid_info_get ( sid, attr )

从 SID 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_sid_info_get(sid, attr))

参数
sid
单个 SID 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_sys_config ( system, attr, value )

(__doca_apsh_sys_config(system, attr, (void *)((uintptr_t)value)))

参数
system
system 处理程序
attr
要在 system 中设置的属性
value
要设置的值

#define doca_apsh_thread_info_get ( thread, attr )

从 thread 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_thread_info_get(thread, attr))

参数
thread
单个 thread 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_vad_info_get ( vad, attr )

从 vad 处理程序获取请求的信息。信息与快照(在 get 函数调用时)一致,完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到

((attr##_TYPE)(uintptr_t)__doca_apsh_vad_info_get(vad, attr))

参数
vad
单个 vad 处理程序
attr
要获取 attestation 信息的属性

#define doca_apsh_yara_info_get ( yara, attr )

从 yara 处理程序获取请求的信息。信息与快照一致(在 get 函数被调用时)。完整列表(类型和描述)可以在 doca_apsh_attr.h 中找到。

((attr##_TYPE)(uintptr_t)__doca_apsh_yara_info_get(yara, attr))

参数
yara
单个 yara 处理程序
attr
用于获取 yara 信息的属性

函数

const DOCA_EXPERIMENTAL void* __doca_apsh_attst_info_get ( doca_apsh_attestation* attestation, doca_apsh_attestation_attr attr )
影子函数 - 获取 attestation 的属性值。
参数
attestation
单个 attestation 处理程序
attr
用于获取证明信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_attestation_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_container_info_get ( doca_apsh_container* container, doca_apsh_container_attr attr )
影子函数 - 获取 container 的属性值。
参数
container
单个 container 处理程序
attr
用于获取容器信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_container_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_envar_info_get ( doca_apsh_envar* envar, doca_apsh_envar_attr attr )
影子函数 - 获取环境变量的属性值。
参数
envar
单个 envar 处理程序
attr
用于获取环境变量信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_envar_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_handle_info_get ( doca_apsh_handle* handle, doca_apsh_handle_attr attr )
影子函数 - 获取 handle 的属性值。
参数
handle
单个 handle 处理程序
attr
用于获取句柄信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_handle_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_injection_detect_info_get ( doca_apsh_injection_detect* suspected_injection, doca_apsh_injection_detect_attr attr )
影子函数 - 获取 suspected_injection 的属性值。
参数
suspected_injection
单个 injection_detect 处理程序
attr
要获取可疑注入信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_injection_detect_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_ldrmodule_info_get ( doca_apsh_ldrmodule* ldrmodule, doca_apsh_ldrmodule_attr attr )
影子函数 - 获取 ldrmodule 的属性值。
参数
ldrmodule
单个 ldrmodule 处理程序
attr
要获取 attestation 信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_ldrmodule_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_lib_info_get ( doca_apsh_lib* lib, doca_apsh_lib_attr attr )
影子函数 - 获取 lib 的属性值。
参数
lib
单个 lib 处理程序
attr
用于获取库信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_lib_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_module_info_get ( doca_apsh_module* module, doca_apsh_module_attr attr )
影子函数 - 获取 module 的属性值。
参数
module
单个 module 处理程序
attr
要获取 attestation 信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_mod_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_netscan_info_get ( doca_apsh_netscan* connection, doca_apsh_netscan_attr attr )
影子函数 - 获取 connection 的属性值。
参数
connection
单个 connection 处理程序
attr
要获取连接信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_netscan_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_privilege_info_get ( doca_apsh_privilege* privilege, doca_apsh_privilege_attr attr )
影子函数 - 获取 privilege 的属性值。
参数
privilege
单个 privilege 处理程序
attr
用于获取特权信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_privilege_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_process_info_get ( doca_apsh_process* process, doca_apsh_process_attr attr )
影子函数 - 获取 process 的属性值。
参数
process
单个 process 处理程序
attr
用于获取进程信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_process_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_process_parameters_info_get ( doca_apsh_process_parameters* process_parameters, doca_apsh_process_parameters_attr attr )
影子函数 - 获取 process-parameter 的属性值。
参数
process_parameters
单个 process_parameters 处理程序
attr
要获取 process_parameters 信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_process_parameters_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_sid_info_get ( doca_apsh_sid* sid, doca_apsh_sid_attr attr )
影子函数 - 获取 SID 的属性值。
参数
sid
单个 SID 处理程序
attr
用于获取 SID 信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_sid_info_get

DOCA_EXPERIMENTAL doca_error_t __doca_apsh_sys_config ( doca_apsh_system* system, doca_apsh_system_config_attr attr, void* value )
影子函数 - 配置 system 的属性值。
参数
system
system 处理程序
attr
要在 system 中设置的属性
value
要设置的值

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NOT_SUPPORTED - 如果 attr 是操作系统类型,且收到了不支持的操作系统类型。
  • DOCA_ERROR_NO_MEMORY - 如果内存分配失败。
  • DOCA_ERROR_BAD_STATE - 如果系统已启动。
描述

请勿使用此函数,推荐使用 doca_apsh_sys_config

const DOCA_EXPERIMENTAL void* __doca_apsh_thread_info_get ( doca_apsh_thread* thread, doca_apsh_thread_attr attr )
影子函数 - 获取 thread 的属性值。
参数
thread
单个 thread 处理程序
attr
用于获取线程信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_thread_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_vad_info_get ( doca_apsh_vad* vad, doca_apsh_vad_attr attr )
影子函数 - 获取 vad 的属性值。
参数
vad
单个 vad 处理程序
attr
用于获取 VAD 信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_vad_info_get

const DOCA_EXPERIMENTAL void* __doca_apsh_yara_info_get ( doca_apsh_yara* yara, doca_apsh_yara_attr attr )
影子函数 - 获取 yara 的属性值。
参数
yara
单个 yara 处理程序
attr
用于获取 yara 信息的属性

返回值

返回请求的信息,需要进行类型转换

描述

请勿使用此函数,推荐使用 doca_apsh_yara_info_get

DOCA_EXPERIMENTAL void doca_apsh_attestation_free ( doca_apsh_attestation** attestation )
销毁 attestation 上下文。
参数
attestation
要销毁的进程的证明不透明指针

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_attestation_get ( doca_apsh_process* process, const char* exec_hash_map_path, doca_apsh_attestation*** attestation, int* attestation_size )
获取当前进程的 attestation。
参数
process
进程处理程序
exec_hash_map_path
包含进程的可执行文件和 dll/库的哈希计算的文件路径。请注意,更改进程代码或任何库都可能影响此文件。该文件可以通过在系统上运行 doca_exec_hash_build_map 工具来创建。
attestation
进程的证明不透明指针
attestation_size
输出参数,成功时将包含证明数组的大小。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果模块列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为模块数组分配内存。
  • DOCA_ERROR_NOT_FOUND - 如果未找到进程。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的是快照,这不是动态的,需要释放它。

DOCA_EXPERIMENTAL doca_error_t doca_apsh_attst_refresh ( doca_apsh_attestation*** attestation, int* attestation_size )
使用新快照刷新进程的单个 attestation 处理程序
参数
attestation
要刷新的单个证明处理程序
attestation_size
输出参数,成功时将包含证明数组的大小。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果模块列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为模块数组分配内存。
  • DOCA_ERROR_NOT_FOUND - 如果未找到进程。
描述

此函数与不同的系统上下文多线程兼容,刷新处理程序的快照。建议在刷新之前查询所有需要的信息。

DOCA_EXPERIMENTAL doca_error_t doca_apsh_container_processes_get ( doca_apsh_container* container, doca_apsh_process*** processes, int* processes_size )
获取容器上当前运行的进程数组。
参数
container
单个 container 处理程序
processes
系统的进程不透明指针数组
processes_size
输出参数,成功时将包含进程数组的大小。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果进程列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为进程数组分配内存。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

DOCA_EXPERIMENTAL void doca_apsh_containers_free ( doca_apsh_container** containers )
销毁 container 上下文。
参数
containers
要销毁的系统的容器不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_containers_get ( doca_apsh_system* system, doca_apsh_container*** containers, int* containers_size )
获取系统上当前运行的容器数组。
参数
system
系统处理程序
containers
系统的容器不透明指针数组
containers_size
输出参数,成功时将包含容器数组的大小。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果容器列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为容器数组分配内存。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

当前支持以下容器运行时工具

  • containerd

DOCA_EXPERIMENTAL doca_apsh_ctx* doca_apsh_create ( void )
创建新的 apsh 处理程序。
返回值

创建系统处理程序所需的 apsh 上下文,失败时返回 NULL

描述

分配内存并初始化 apsh 处理程序的不透明结构。在使用系统处理程序之前,请使用 doca_apsh_start

DOCA_EXPERIMENTAL void doca_apsh_destroy ( doca_apsh_ctx* ctx )
释放 APSH 内存并关闭连接。
参数
ctx
要销毁的 apsh 上下文

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_dma_dev_set ( doca_apsh_ctx* ctx, doca_dev* dma_dev )
设置 apsh dma 设备。
参数
ctx
apsh 处理程序
dma_dev
具有 DMA 功能的 doca 设备,请参考 doca_dev.h

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NO_MEMORY - 如果无法为 dma_dev_name 分配新缓冲区。
描述

这是一个强制性的 setter

DOCA_EXPERIMENTAL void doca_apsh_envars_free ( doca_apsh_envar** envars )
销毁 envars 上下文。
参数
envars
要销毁的进程的环境变量不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_envars_get ( doca_apsh_process* process, doca_apsh_envar*** envars, int* envars_size )
获取当前进程环境变量数组。
参数
process
进程处理程序
envars
进程的环境变量不透明指针数组。如果进程没有任何环境变量,将返回 NULL。
envars_size
输出参数,成功时将包含环境变量数组的大小。

返回值

DOCA_SUCCESS - 在成功的情况下(包括 envars_size 为零的情况)。doca_error 代码 - 在失败的情况下

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果环境变量列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为环境变量数组分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 如果系统操作系统不受支持。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,该函数会分配此数组,请使用 doca_apsh_envars_free 来释放它。

注意

目前仅支持 Windows 系统。


DOCA_EXPERIMENTAL void doca_apsh_handles_free ( doca_apsh_handle** handles )
销毁 handles 上下文。
参数
handles
要销毁的进程的句柄不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_handles_get ( doca_apsh_process* process, doca_apsh_handle*** handles, int* handles_size )
获取当前进程句柄数组。
参数
process
进程处理程序
handles
进程的句柄不透明指针数组。如果进程没有任何句柄,将返回 NULL。
handles_size
输出参数,成功时将包含句柄数组的大小。

返回值

DOCA_SUCCESS - 在成功的情况下(包括 handles_size 为零的情况)。doca_error 代码 - 在失败的情况下

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果句柄列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为句柄数组分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 如果系统操作系统不受支持。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

注意

目前仅支持 Windows 系统。


DOCA_EXPERIMENTAL void doca_apsh_injection_detect_free ( doca_apsh_injection_detect** suspected_injections )
销毁 injection_detect 上下文。
参数
suspected_injections
要销毁的进程的可疑注入不透明指针

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_injection_detect_get ( doca_apsh_process* process, doca_apsh_injection_detect*** suspected_injections, int* suspected_injections_size )
获取当前进程的可疑代码注入。
参数
process
进程处理程序
suspected_injections
进程的可疑注入不透明指针
suspected_injections_size
输出参数,成功时将包含 suspected_injections 数组的大小。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NOT_FOUND - 如果未找到进程结构。
  • DOCA_ERROR_INITIALIZATION - 如果注入列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为注入数组分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 如果系统操作系统不受支持。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的是快照,这不是动态的,需要释放它。

注意

目前仅支持 Windows 系统。


DOCA_EXPERIMENTAL void doca_apsh_ldrmodules_free ( doca_apsh_ldrmodule** ldrmodules )
销毁 ldrmodules 上下文。
参数
ldrmodules
要销毁的进程的 LDR 模块不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_ldrmodules_get ( doca_apsh_process* process, doca_apsh_ldrmodule*** ldrmodules, int* ldrmodules_size )
获取当前进程模块数组。
参数
process
进程处理程序
ldrmodules
进程的 LDR 模块不透明指针数组。如果进程没有任何模块,将返回 NULL。
ldrmodules_size
输出参数,成功时将包含 LDR 模块数组的大小。

返回值

DOCA_SUCCESS - 在成功的情况下(包括 ldrmodules_size 为零的情况)。doca_error 代码 - 在失败的情况下

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果 LDR 模块列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为 LDR 模块数组分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 如果系统操作系统不受支持。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

注意

目前仅支持 Windows 系统。


DOCA_EXPERIMENTAL void doca_apsh_libs_free ( doca_apsh_lib** libs )
销毁 libs 上下文。
参数
libs
要销毁的进程的库不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_libs_get ( doca_apsh_process* process, doca_apsh_lib*** libs, int* libs_size )
获取当前进程可加载库数组。
参数
process
进程处理程序
libs
进程的库不透明指针数组。如果进程未指向任何库,将返回 NULL。
libs_size
输出参数,成功时将包含库数组的大小。

返回值

DOCA_SUCCESS - 在成功的情况下(包括 libs_size 为零的情况)。doca_error 代码 - 在失败的情况下

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果库列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为库数组分配内存。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

DOCA_EXPERIMENTAL void doca_apsh_module_free ( doca_apsh_module** modules )
销毁 modules 数组。
参数
modules
要销毁的系统的模块不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_modules_get ( doca_apsh_system* system, doca_apsh_module*** modules, int* modules_size )
获取系统上当前安装的模块数组。
参数
system
系统处理程序
modules
系统的模块不透明指针数组
modules_size
输出参数,成功时将包含模块数组的大小。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果模块列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为模块数组分配内存。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

DOCA_EXPERIMENTAL void doca_apsh_netscan_free ( doca_apsh_netscan** connections )
销毁 netscan 上下文。
参数
connections
要销毁的系统的连接不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_netscan_get ( doca_apsh_system* system, doca_apsh_netscan*** connections, int* connections_size )
获取当前连接数组。
参数
system
系统处理程序
connections
指向系统的连接不透明指针数组的指针
connections_size
输出参数,成功时将包含连接数组的大小

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果连接列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为连接数组分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 如果收到了不支持的操作系统类型(或不支持的操作系统版本)。
    复制
    已复制!
                

    ‎ list of supported builds: Windows 10 10240 x86 Windows 10 10586 x86 Windows 10 14393 x86 Windows 10 15063 x64 Windows 10 15063 x86 Windows 10 16299 x64 Windows 10 17134 x64 Windows 10 17134 x86 Windows 10 17763 x64 Windows 10 18362 x64 Windows 10 18363 x64 Windows 10 19041 x64 Windows 10 19041 x86

  • DOCA_ERROR_BAD_STATE - 如果系统尚未启动。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

注意

目前仅支持 Windows 10 版本(例如:Windows 10 和 Windows Server 2019)的系统。


DOCA_EXPERIMENTAL void doca_apsh_privileges_free ( doca_apsh_privilege** privileges )
销毁 privileges 上下文。
参数
privileges
要销毁的进程的特权不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_privileges_get ( doca_apsh_process* process, doca_apsh_privilege*** privileges, int* privileges_size )
获取当前进程权限数组。
参数
process
进程处理程序
privileges
进程的特权不透明指针数组。如果进程没有任何特权,将返回 NULL。
privileges_size
输出参数,成功时将包含特权数组的大小。

返回值

DOCA_SUCCESS - 在成功的情况下(包括 privileges_size 为零的情况)。doca_error 代码 - 在失败的情况下

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果特权列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为特权数组分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 如果系统操作系统不受支持。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

注意

目前仅支持 Windows 系统。


DOCA_EXPERIMENTAL doca_error_t doca_apsh_process_netscan_get ( doca_apsh_process* process, doca_apsh_netscan*** connections, int* connections_size )
获取指定进程的当前连接数组。
参数
process
进程处理程序
connections
指向系统的连接不透明指针数组的指针
connections_size
输出参数,成功时将包含连接数组的大小

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果连接列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为连接数组分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 如果不支持 Windows 操作系统版本。
    复制
    已复制!
                

    ‎ list of supported windows builds: Windows 10 10240 x86 Windows 10 10586 x86 Windows 10 14393 x86 Windows 10 15063 x64 Windows 10 15063 x86 Windows 10 16299 x64 Windows 10 17134 x64 Windows 10 17134 x86 Windows 10 17763 x64 Windows 10 18362 x64 Windows 10 18363 x64 Windows 10 19041 x64 Windows 10 19041 x86

描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

注意

目前仅支持 Linux 和 Windows 10 版本系统(例如:Windows 10 和 Windows Server 2019)。


DOCA_EXPERIMENTAL void doca_apsh_process_parameters_free ( doca_apsh_process_parameters* process_parameters )
销毁 process-parameters 上下文。
参数
process_parameters
进程的进程参数不透明指针

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_process_parameters_get ( doca_apsh_process* process, doca_apsh_process_parameters** process_parameters )
获取当前进程参数。
参数
process
进程处理程序
process_parameters
指向进程的进程参数不透明指针的指针。如果进程参数数据被分页出内存,将返回 NULL。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果进程参数对象初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为进程参数对象分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 如果系统操作系统不受支持。
  • DOCA_ERROR_BAD_STATE - 如果相关内存不存在于系统内存中。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的对象是快照,不是动态对象,需要释放它。

注意

目前仅支持 Windows 系统。


DOCA_EXPERIMENTAL void doca_apsh_processes_free ( doca_apsh_process** processes )
销毁 process 上下文。
参数
processes
要销毁的系统的进程不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_processes_get ( doca_apsh_system* system, doca_apsh_process*** processes, int* processes_size )
获取系统上当前运行的进程数组。
参数
system
系统处理程序
processes
系统的进程不透明指针数组
processes_size
输出参数,成功时将包含进程数组的大小。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果进程列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为进程数组分配内存。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

DOCA_EXPERIMENTAL void doca_apsh_sids_free ( doca_apsh_sid** sids )
销毁 SIDs 上下文。
参数
sids
要销毁的进程的 SID 不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_sids_get ( doca_apsh_process* process, doca_apsh_sid*** sids, int* sids_size )
获取当前进程 SID 数组。
参数
process
进程处理程序
sids
进程的 SID 不透明指针数组。如果进程没有任何 SID,将返回 NULL。
sids_size
输出参数,成功时将包含 SID 数组的大小。

返回值

DOCA_SUCCESS - 在成功的情况下(包括 handles_size 为零的情况)。doca_error 代码 - 在失败的情况下

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果 SID 列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为 SID 数组分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 如果系统操作系统不受支持。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

注意

目前仅支持 Windows 系统。


DOCA_EXPERIMENTAL doca_error_t doca_apsh_start ( doca_apsh_ctx* ctx )
启动 apsh 处理程序。
参数
ctx
App Shield 处理程序

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

启动 apsh 处理程序并初始化与设备的连接。在启动系统之前,需要使用 setter 函数设置 apsh 参数。强制性 setter:doca_apsh_dma_dev_set。其他 setter 可以自动查询,但会花费时间。

DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_dev_set ( doca_apsh_system* system, doca_dev_rep* dev )
设置系统设备。
参数
system
system 处理程序
dev
连接到要查询的系统的设备。例如,连接到 VM 的 vf 或连接到裸机的 pf。来自在 doca_apsh_dma_dev_set 中配置的 DMA 设备的 doca representor 设备。要查询正确的设备,请参考 doca_dev.h 以获取完整选项。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果系统已启动。
描述

这是一个强制性的 setter

DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_kpgd_file_set ( doca_apsh_system* system, const char* system_kpgd_file_path )
设置系统 kpgd 文件。
参数
system
system 处理程序
system_kpgd_file_path
kpgd 文件的路径

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NOT_SUPPORTED - 如果收到了不支持的操作系统类型。
  • DOCA_ERROR_BAD_STATE - 如果系统已启动。
描述

这不是必须的 setter

DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_mem_region_set ( doca_apsh_system* system, const char* system_mem_region_path )
设置系统允许的内存区域。
参数
system
system 处理程序
system_mem_region_path
包含设备内存区域的 json 文件路径。内存区域在每个系统上是唯一的,在重启或同一系统的不同设备之间不会更改。请注意,从主机添加/删除设备可能会更改区域。json 可以通过在系统上运行 doca_system_mem_region 工具来创建。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NO_MEMORY - 如果无法为 system_os_symbol_map_path 分配新缓冲区。
  • DOCA_ERROR_BAD_STATE - 如果系统已启动。
描述

这是一个强制性的 setter

DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_os_symbol_map_set ( doca_apsh_system* system, const char* system_os_symbol_map_path )
设置系统操作系统符号映射。
参数
system
system 处理程序
system_os_symbol_map_path
操作系统内存映射数据,每个操作系统版本都是唯一的。请注意,更改 Linux 内核(添加/删除模块)将更改映射。应该通过在系统操作系统上运行 doca_system_os_symbol_map 工具来创建。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NO_MEMORY - 如果无法为 system_os_symbol_map_path 分配新缓冲区。
  • DOCA_ERROR_BAD_STATE - 如果系统已启动。
描述

这是一个强制性的 setter

DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_os_type_set ( doca_apsh_system* system, doca_apsh_system_os os_type )
设置系统操作系统类型。
参数
system
system 处理程序
os_type
系统操作系统类型 - windows/linux

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NOT_SUPPORTED - 如果收到了不支持的操作系统类型。
  • DOCA_ERROR_BAD_STATE - 如果系统已启动。
描述

这是一个必须的 setter

DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_set_scan_window_size ( doca_apsh_system* system, uint32_t scan_window_size )
设置系统 yara 扫描窗口大小。
参数
system
system 处理程序
scan_window_size
yara 扫描窗口大小(以字节为单位)。扫描窗口大小的条件是:(window_scan_size % PAGE_SIZE == 0) 或 (PAGE_SIZE % window_scan_size == 0)

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

这不是必须的 setter。默认大小为 4KB。

DOCA_EXPERIMENTAL doca_error_t doca_apsh_sys_set_scan_window_step ( doca_apsh_system* system, uint32_t scan_window_step )
设置系统 yara 扫描窗口步长。
参数
system
system 处理程序
scan_window_step
yara 扫描窗口步长(以字节为单位)。扫描窗口步长的条件是:window_scan_size % scan_window_step == 0

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

这不是必须的 setter。默认大小为 4KB。由于此 setter 依赖于 scan_window_size,请确保在 “doca_apsh_sys_set_scan_window_size” 之后调用它。

DOCA_EXPERIMENTAL doca_apsh_system* doca_apsh_system_create ( doca_apsh_ctx* ctx )
创建新的系统处理程序。
参数
ctx
apsh 处理程序

返回值

返回系统指针,失败时返回 NULL

描述

分配内存并初始化系统处理程序的不透明结构。在使用系统处理程序之前,请使用 doca_apsh_system_start

DOCA_EXPERIMENTAL void doca_apsh_system_destroy ( doca_apsh_system* system )
销毁系统处理程序。
参数
system
要销毁的系统上下文

描述

这不会销毁进程/模块/库...

DOCA_EXPERIMENTAL doca_error_t doca_apsh_system_start ( doca_apsh_system* system )
启动系统处理程序。
参数
system
system 处理程序

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果 app-shield 系统初始化失败。
描述

启动系统处理程序并初始化与系统的连接。在启动系统之前,需要使用 setter 函数设置系统参数。强制性 setter:os_symbol_map、mem_region、dev。其他 setter 可以自动查询,但会花费时间。

DOCA_EXPERIMENTAL void doca_apsh_threads_free ( doca_apsh_thread** threads )
销毁 threads 上下文。
参数
threads
要销毁的进程的线程不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_threads_get ( doca_apsh_process* process, doca_apsh_thread*** threads, int* threads_size )
获取当前进程线程数组。
参数
process
进程处理程序
threads
进程的线程不透明指针数组。如果进程没有任何线程,将返回 NULL。
threads_size
输出参数,成功时将包含线程数组的大小。

返回值

DOCA_SUCCESS - 在成功的情况下(包括 threads_size 为零的情况)。doca_error 代码 - 在失败的情况下

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果线程列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为线程数组分配内存。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

DOCA_EXPERIMENTAL void doca_apsh_vads_free ( doca_apsh_vad** vads )
销毁 vads 上下文。
参数
vads
要销毁的进程的 VAD 不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_vads_get ( doca_apsh_process* process, doca_apsh_vad*** vads, int* vads_size )
获取当前进程 vads - 虚拟地址描述符数组。
参数
process
进程处理程序
vads
进程的 VAD 不透明指针数组。如果进程未指向任何 VAD,将返回 NULL。
vads_size
输出参数,成功时将包含 VAD 数组的大小。

返回值

DOCA_SUCCESS - 在成功的情况下(包括 vads_size 为零的情况)。doca_error 代码 - 在失败的情况下

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果模块列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为模块数组分配内存。
  • DOCA_ERROR_NOT_FOUND - 如果未找到进程。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

DOCA_EXPERIMENTAL void doca_apsh_yara_free ( doca_apsh_yara** yara_matches )
销毁 yara 上下文。
参数
yara_matches
要销毁的 yara 匹配项不透明指针数组

描述

DOCA_EXPERIMENTAL doca_error_t doca_apsh_yara_get ( doca_apsh_process* process, doca_apsh_yara_rule ** yara_rules_arr, uint32_t yara_rules_arr_size, uint64_t scan_type, doca_apsh_yara*** yara_matches, int* yara_matches_size )
使用 yara 规则扫描当前进程。扫描使用 doca_apsh_sys_set_scan_window_size 和 doca_apsh_sys_set_scan_window_step 设置的窗口大小和步长完成。
参数
process
进程处理程序
yara_rules_arr
doca_apsh_yara_rule 类型的数组,包含要针对进程内存检查的规则
yara_rules_arr_size
yara_rules_arr 的长度
scan_type
YARA 扫描类型位掩码 - 用于扫描整个 VAD 树或仅扫描堆。这将影响性能,请参阅枚举 doca_apsh_yara_scan_type
yara_matches
指向 yara 匹配项不透明指针数组的指针。如果未找到任何 yara 匹配项,将返回 NULL。
yara_matches_size
输出参数,成功时将包含 YARA 数组的大小。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果 yara 匹配项列表初始化失败。
  • DOCA_ERROR_NO_MEMORY - 如果无法为 yara 匹配项数组分配内存。
  • DOCA_ERROR_NOT_FOUND - 如果未找到进程。
  • DOCA_ERROR_NOT_SUPPORTED - 如果系统操作系统或 DPU 不受支持。
描述

此函数与不同的系统上下文多线程兼容,意味着不要在同一系统上下文中同时调用此函数。返回的数组是快照,这不是动态数组,需要释放它。

注意

1. 目前仅支持 Windows 系统。 2. 目前仅在装有 Ubuntu 22.04 的 DPU 上受支持。


DOCA 应用盾属性

2.2.1. DOCA App Shield 属性

[ DOCA App Shield ]

DOCA App Shield 属性,用于使用 get 函数查询,请参阅 doca_apsh.h

类型定义
typedef char *  DOCA_APSH_ATTESTATION_COMM_TYPE
证明通信类型
typedef uint64_t  DOCA_APSH_ATTESTATION_END_ADDRESS_TYPE
证明结束地址类型
typedef bool  DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT_TYPE
证明哈希数据是否存在类型
typedef int  DOCA_APSH_ATTESTATION_MATCHING_HASHES_TYPE
证明匹配哈希类型
typedef int  DOCA_APSH_ATTESTATION_PAGES_NUMBER_TYPE
证明页面数量类型
typedef int  DOCA_APSH_ATTESTATION_PAGES_PRESENT_TYPE
证明存在页面类型
typedef char *  DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA_TYPE
证明内存区域路径类型
typedef uint32_t  DOCA_APSH_ATTESTATION_PID_TYPE
认证 pid 类型
typedef char *  DOCA_APSH_ATTESTATION_PROTECTION_TYPE
认证保护类型
typedef uint64_t  DOCA_APSH_ATTESTATION_START_ADDRESS_TYPE
认证起始地址类型
typedef char *  DOCA_APSH_CONTAINER_ID_TYPE
容器 ID 类型
typedef doca_dev *  DOCA_APSH_DMA_DEV_TYPE
DMA 设备名称
typedef uint32_t  DOCA_APSH_ENVARS_PID_TYPE
环境变量 pid 类型
typedef char *  DOCA_APSH_ENVARS_VALUE_TYPE
环境变量值类型
typedef char *  DOCA_APSH_ENVARS_VARIABLE_TYPE
环境变量变量类型
typedef uint64_t  DOCA_APSH_ENVARS_WINDOWS_BLOCK_TYPE
环境变量 Windows 块地址类型
typedef uint64_t  DOCA_APSH_HANDLE_ACCESS_TYPE
句柄访问类型
typedef char *  DOCA_APSH_HANDLE_NAME_TYPE
句柄名称类型
typedef uint32_t  DOCA_APSH_HANDLE_PID_TYPE
句柄 pid 类型
typedef uint64_t  DOCA_APSH_HANDLE_TABLE_ENTRY_TYPE
句柄表项类型
typedef char *  DOCA_APSH_HANDLE_TYPE_TYPE
句柄类型类型
typedef uint64_t  DOCA_APSH_HANDLE_VALUE_TYPE
句柄值类型
typedef int  DOCA_APSH_HASHTEST_LIMIT_TYPE
要认证的 VM 区域数量限制
typedef uint32_t  DOCA_APSH_INJECTION_DETECT_PID_TYPE
注入检测 pid 类型
typedef uint64_t  DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END_TYPE
注入检测可疑区域结束类型
typedef uint64_t  DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START_TYPE
注入检测可疑区域起始类型
typedef uint64_t  DOCA_APSH_INJECTION_DETECT_VAD_END_TYPE
注入检测 VAD 结束地址类型
typedef char *  DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH_TYPE
注入检测 VAD 文件路径类型
typedef char *  DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION_TYPE
注入检测 VAD 保护类型
typedef uint64_t  DOCA_APSH_INJECTION_DETECT_VAD_START_TYPE
注入检测 VAD 起始地址类型
typedef char *  DOCA_APSH_INJECTION_DETECT_VAD_TAG_TYPE
注入检测 VAD 池标签类型
typedef char *  DOCA_APSH_KPGD_FILE_TYPE
kpgd 文件路径
typedef uint64_t  DOCA_APSH_LDRMODULE_BASE_ADDRESS_TYPE
ldrmodule 基地址类型
typedef char *  DOCA_APSH_LDRMODULE_LIBRARY_PATH_TYPE
ldrmodule 库路径类型
typedef uint32_t  DOCA_APSH_LDRMODULE_PID_TYPE
ldrmodule pid 类型
typedef char *  DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME_TYPE
ldrmodule Windows DLL 名称类型
typedef bool  DOCA_APSH_LDRMODULE_WINDOWS_ININIT_TYPE
ldrmodule ininit 类型
typedef bool  DOCA_APSH_LDRMODULE_WINDOWS_INLOAD_TYPE
ldrmodule inload 类型
typedef bool  DOCA_APSH_LDRMODULE_WINDOWS_INMEM_TYPE
ldrmodule inmem 类型
typedef uint32_t  DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE_TYPE
ldrmodule 镜像大小类型
typedef int  DOCA_APSH_LIBS_LIMIT_TYPE
库数量限制
typedef char *  DOCA_APSH_LIB_LIBRARY_PATH_TYPE
lib 加载库路径类型
typedef uint64_t  DOCA_APSH_LIB_LINUX_LOAD_ADRESS_TYPE
lib Linux 加载地址
typedef uint64_t  DOCA_APSH_LIB_LOAD_ADRESS_TYPE
lib Windows 和 Linux 的加载地址
typedef uint32_t  DOCA_APSH_LIB_PID_TYPE
lib pid 类型
typedef char *  DOCA_APSH_LIB_WINDOWS_DLL_NAME_TYPE
lib DLL 名称类型
typedef uint32_t  DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE_TYPE
lib 镜像大小类型
typedef char *  DOCA_APSH_MEM_REGION_TYPE
内存区域路径
typedef int  DOCA_APSH_MODULES_LIMIT_TYPE
模块数量限制
typedef char *  DOCA_APSH_MODULES_NAME_TYPE
模块名称类型
typedef uint64_t  DOCA_APSH_MODULES_OFFSET_TYPE
模块偏移类型
typedef uint32_t  DOCA_APSH_MODULES_SIZE_TYPE
模块大小类型
typedef char *  DOCA_APSH_NETSCAN_COMM_TYPE
netscan 进程名称
typedef char *  DOCA_APSH_NETSCAN_LINUX_FAMILY_TYPE
netscan Linux 连接族
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_FD_TYPE
netscan Linux 连接文件描述符
typedef char *  DOCA_APSH_NETSCAN_LINUX_FILTER_TYPE
netscan Linux 连接过滤器
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_NET_NAMESPACE_TYPE
netscan Linux 连接网络命名空间
typedef uint64_t  DOCA_APSH_NETSCAN_LINUX_SOCKET_OFFSET_TYPE
netscan Linux 连接套接字偏移
typedef uint64_t  DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_ACKED_TYPE
netscan Linux 连接 TCP 确认字节数
typedef uint64_t  DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_RECEIVED_TYPE
netscan Linux 连接 TCP 接收字节数
typedef uint64_t  DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_SENT_TYPE
netscan Linux 连接 TCP 发送字节数
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_IN_TYPE
netscan Linux 连接 TCP 数据段入
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_OUT_TYPE
netscan Linux 连接 TCP 数据段出
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_IN_TYPE
netscan Linux 连接 TCP 段入
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_OUT_TYPE
netscan Linux 连接 TCP 段出
typedef char *  DOCA_APSH_NETSCAN_LINUX_TYPE_TYPE
netscan Linux 连接类型
typedef char *  DOCA_APSH_NETSCAN_LOCAL_ADDR_TYPE
netscan 连接本地地址
typedef uint16_t  DOCA_APSH_NETSCAN_LOCAL_PORT_TYPE
netscan 连接本地端口
typedef uint32_t  DOCA_APSH_NETSCAN_PID_TYPE
netscan 进程 ID
typedef char *  DOCA_APSH_NETSCAN_PROTOCOL_TYPE
netscan 连接协议
typedef char *  DOCA_APSH_NETSCAN_REMOTE_ADDR_TYPE
netscan 连接远程地址
typedef uint16_t  DOCA_APSH_NETSCAN_REMOTE_PORT_TYPE
netscan 连接远程端口
typedef char *  DOCA_APSH_NETSCAN_STATE_TYPE
netscan 连接状态
typedef char *  DOCA_APSH_NETSCAN_TIME_TYPE
netscan Windows 连接创建时间 - 已弃用
typedef char *  DOCA_APSH_NETSCAN_WINDOWS_TIME_TYPE
netscan Windows 连接创建时间
typedef char *  DOCA_APSH_OS_SYMBOL_MAP_TYPE
操作系统符号映射路径
typedef enumdoca_apsh_system_os DOCA_APSH_OS_TYPE_TYPE
操作系统类型
typedef bool  DOCA_APSH_PRIVILEGES_IS_ON_TYPE
权限启用类型
typedef char *  DOCA_APSH_PRIVILEGES_NAME_TYPE
权限名称类型
typedef uint32_t  DOCA_APSH_PRIVILEGES_PID_TYPE
权限进程 pid
typedef bool  DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT_TYPE
默认启用 Windows 权限类型
typedef bool  DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED_TYPE
启用 Windows 权限类型
typedef bool  DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT_TYPE
Windows 权限存在类型
typedef char *  DOCA_APSH_PROCESS_COMM_TYPE
进程 comm 类型
typedef uint64_t  DOCA_APSH_PROCESS_CPU_TIME_TYPE
进程 CPU 时间类型
typedef int  DOCA_APSH_PROCESS_LIMIT_TYPE
进程数量限制
typedef uint32_t  DOCA_APSH_PROCESS_LINUX_GID_TYPE
进程 GID 类型
typedef uint32_t  DOCA_APSH_PROCESS_LINUX_NS_MNT_TYPE
进程挂载命名空间类型
typedef uint32_t  DOCA_APSH_PROCESS_LINUX_NS_NET_TYPE
进程网络命名空间类型
typedef uint32_t  DOCA_APSH_PROCESS_LINUX_NS_PID_TYPE
进程 PID 命名空间类型
typedef uint64_t  DOCA_APSH_PROCESS_LINUX_STATE_TYPE
进程状态类型
typedef uint32_t  DOCA_APSH_PROCESS_LINUX_UID_TYPE
进程 UID 类型
typedef char *  DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE_TYPE
进程参数命令行
typedef uint64_t  DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR_TYPE
进程参数镜像基址
typedef char *  DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH_TYPE
进程参数镜像完整路径
typedef uint32_t  DOCA_APSH_PROCESS_PARAMETERS_PID_TYPE
进程参数 pid
typedef uint32_t  DOCA_APSH_PROCESS_PID_TYPE
进程 pid 类型
typedef uint32_t  DOCA_APSH_PROCESS_PPID_TYPE
进程 pid 类型
typedef uint32_t  DOCA_APSH_PROCESS_SID_ATTRIBUTES_TYPE
SID 属性标志。
typedef uint32_t  DOCA_APSH_PROCESS_SID_PID_TYPE
SID 进程 ID。
typedef char *  DOCA_APSH_PROCESS_SID_STRING_TYPE
SID 字符串。
typedef uint64_t  DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME_TYPE
进程退出时间类型
typedef uint64_t  DOCA_APSH_PROCESS_WINDOWS_OFFSET_TYPE
进程偏移类型
typedef uint32_t  DOCA_APSH_PROCESS_WINDOWS_THREADS_TYPE
进程线程数类型
typedef uint32_t  DOCA_APSH_SCAN_WIN_SIZE_TYPE
yara 扫描窗口大小
typedef uint32_t  DOCA_APSH_SCAN_WIN_STEP_TYPE
yara 扫描窗口步长
typedef int  DOCA_APSH_STRING_LIMIT_TYPE
apsh_read_str 的长度限制
typedef int  DOCA_APSH_THREADS_LIMIT_TYPE
线程数量限制
typedef char *  DOCA_APSH_THREAD_LINUX_PROC_NAME_TYPE
线程 proc 名称类型
typedef char *  DOCA_APSH_THREAD_LINUX_THREAD_NAME_TYPE
线程名称类型
typedef uint32_t  DOCA_APSH_THREAD_PID_TYPE
线程 pid 类型
typedef uint64_t  DOCA_APSH_THREAD_STATE_TYPE
线程状态类型
typedef uint32_t  DOCA_APSH_THREAD_TID_TYPE
线程 tid 类型
typedef uint64_t  DOCA_APSH_THREAD_WINDOWS_OFFSET_TYPE
线程偏移类型
typedef uint8_t  DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT_TYPE
线程挂起计数类型
typedef uint8_t  DOCA_APSH_THREAD_WINDOWS_WAIT_REASON_TYPE
线程等待原因类型
typedef int  DOCA_APSH_VADS_LIMIT_TYPE
VAD 数量限制
typedef doca_dev_rep *  DOCA_APSH_VHCA_ID_TYPE
VHCA ID
typedef char *  DOCA_APSH_VMA_FILE_PATH_TYPE
VMA 文件路径类型
typedef uint64_t  DOCA_APSH_VMA_OFFSET_TYPE
VMA 偏移类型
typedef uint32_t  DOCA_APSH_VMA_PID_TYPE
VMA pid 类型
typedef char *  DOCA_APSH_VMA_PROCESS_NAME_TYPE
VMA 文件路径类型
typedef char *  DOCA_APSH_VMA_PROTECTION_TYPE
VMA 保护类型
typedef uint64_t  DOCA_APSH_VMA_VM_END_TYPE
VMA VM 结束类型
typedef uint64_t  DOCA_APSH_VMA_VM_START_TYPE
VMA VM 起始类型
typedef uint32_t  DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE_TYPE
VMA 提交费用类型
typedef uint32_t  DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY_TYPE
VMA 私有内存类型
typedef char *  DOCA_APSH_VMA_WINDOWS_TAG_TYPE
VMA 标签类型
typedef int  DOCA_APSH_WINDOWS_ENVARS_LIMIT_TYPE
Windows 环境变量的长度限制
typedef char *  DOCA_APSH_YARA_COMM_TYPE
进程名称
typedef uint64_t  DOCA_APSH_YARA_MATCH_WINDOW_ADDR_TYPE
匹配扫描窗口的虚拟地址
typedef uint64_t  DOCA_APSH_YARA_MATCH_WINDOW_LEN_TYPE
匹配扫描窗口的长度
typedef uint32_t  DOCA_APSH_YARA_PID_TYPE
进程的 PID
typedef char *  DOCA_APSH_YARA_RULE_TYPE
规则名称
枚举
enum doca_apsh_attestation_attr
DOCA 应用防护认证属性
enum doca_apsh_container_attr
DOCA 应用防护进程属性
enum doca_apsh_envar_attr
DOCA 应用防护环境变量属性
enum doca_apsh_handle_attr
DOCA 应用防护句柄属性
enum doca_apsh_injection_detect_attr
DOCA 应用防护注入检测属性
enum doca_apsh_ldrmodule_attr
DOCA 应用防护 LDR 模块属性
enum doca_apsh_lib_attr
DOCA 应用防护库属性
enum doca_apsh_module_attr
DOCA 应用防护模块属性
enum doca_apsh_netscan_attr
DOCA 应用防护网络扫描属性
enum doca_apsh_privilege_attr
DOCA 应用防护权限属性,Windows 权限列表请参考:https://docs.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
enum doca_apsh_process_attr
DOCA 应用防护进程属性
enum doca_apsh_process_parameters_attr
DOCA 应用防护进程参数属性
enum doca_apsh_sid_attr
DOCA 应用防护 SID(安全标识符)属性
enum doca_apsh_system_config_attr
DOCA 应用防护配置属性
enum doca_apsh_system_os
系统操作系统类型
enum doca_apsh_thread_attr
DOCA 应用防护线程属性
enum doca_apsh_vad_attr
DOCA 应用防护虚拟地址描述符属性
enum doca_apsh_yara_attr
DOCA 应用防护 YARA 属性
enum doca_apsh_yara_rule
可用的 DOCA 应用防护 YARA 规则
enum doca_apsh_yara_scan_type
DOCA 应用防护 YARA 扫描类型位掩码
类型定义
typedef char * DOCA_APSH_ATTESTATION_COMM_TYPE

证明通信类型

typedef uint64_t DOCA_APSH_ATTESTATION_END_ADDRESS_TYPE

证明结束地址类型

typedef bool DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT_TYPE

证明哈希数据是否存在类型

typedef int DOCA_APSH_ATTESTATION_MATCHING_HASHES_TYPE

证明匹配哈希类型

typedef int DOCA_APSH_ATTESTATION_PAGES_NUMBER_TYPE

证明页面数量类型

typedef int DOCA_APSH_ATTESTATION_PAGES_PRESENT_TYPE

证明存在页面类型

typedef char * DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA_TYPE

证明内存区域路径类型

typedef uint32_t DOCA_APSH_ATTESTATION_PID_TYPE

认证 pid 类型

typedef char * DOCA_APSH_ATTESTATION_PROTECTION_TYPE

认证保护类型

typedef uint64_t DOCA_APSH_ATTESTATION_START_ADDRESS_TYPE

认证起始地址类型

typedef char * DOCA_APSH_CONTAINER_ID_TYPE

容器 ID 类型

typedef doca_dev * DOCA_APSH_DMA_DEV_TYPE

DMA 设备名称

typedef uint32_t DOCA_APSH_ENVARS_PID_TYPE

环境变量 pid 类型

typedef char * DOCA_APSH_ENVARS_VALUE_TYPE

环境变量值类型

typedef char * DOCA_APSH_ENVARS_VARIABLE_TYPE

环境变量变量类型

typedef uint64_t DOCA_APSH_ENVARS_WINDOWS_BLOCK_TYPE

环境变量 Windows 块地址类型

typedef uint64_t DOCA_APSH_HANDLE_ACCESS_TYPE

句柄访问类型

typedef char * DOCA_APSH_HANDLE_NAME_TYPE

句柄名称类型

typedef uint32_t DOCA_APSH_HANDLE_PID_TYPE

句柄 pid 类型

typedef uint64_t DOCA_APSH_HANDLE_TABLE_ENTRY_TYPE

句柄表项类型

typedef char * DOCA_APSH_HANDLE_TYPE_TYPE

句柄类型类型

typedef uint64_t DOCA_APSH_HANDLE_VALUE_TYPE

句柄值类型

typedef int DOCA_APSH_HASHTEST_LIMIT_TYPE

要认证的 VM 区域数量限制

typedef uint32_t DOCA_APSH_INJECTION_DETECT_PID_TYPE

注入检测 pid 类型

typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END_TYPE

注入检测可疑区域结束类型

typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START_TYPE

注入检测可疑区域起始类型

typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_END_TYPE

注入检测 VAD 结束地址类型

typedef char * DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH_TYPE

注入检测 VAD 文件路径类型

typedef char * DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION_TYPE

注入检测 VAD 保护类型

typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_START_TYPE

注入检测 VAD 起始地址类型

typedef char * DOCA_APSH_INJECTION_DETECT_VAD_TAG_TYPE

注入检测 VAD 池标签类型

typedef char * DOCA_APSH_KPGD_FILE_TYPE

kpgd 文件路径

typedef uint64_t DOCA_APSH_LDRMODULE_BASE_ADDRESS_TYPE

ldrmodule 基地址类型

typedef char * DOCA_APSH_LDRMODULE_LIBRARY_PATH_TYPE

ldrmodule 库路径类型

typedef uint32_t DOCA_APSH_LDRMODULE_PID_TYPE

ldrmodule pid 类型

typedef char * DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME_TYPE

ldrmodule Windows DLL 名称类型

typedef bool DOCA_APSH_LDRMODULE_WINDOWS_ININIT_TYPE

ldrmodule ininit 类型

typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INLOAD_TYPE

ldrmodule inload 类型

typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INMEM_TYPE

ldrmodule inmem 类型

typedef uint32_t DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE_TYPE

ldrmodule 镜像大小类型

typedef int DOCA_APSH_LIBS_LIMIT_TYPE

库数量限制

typedef char * DOCA_APSH_LIB_LIBRARY_PATH_TYPE

lib 加载库路径类型

typedef uint64_t DOCA_APSH_LIB_LINUX_LOAD_ADRESS_TYPE

lib Linux 加载地址

typedef uint64_t DOCA_APSH_LIB_LOAD_ADRESS_TYPE

lib Windows 和 Linux 的加载地址

typedef uint32_t DOCA_APSH_LIB_PID_TYPE

lib pid 类型

typedef char * DOCA_APSH_LIB_WINDOWS_DLL_NAME_TYPE

lib DLL 名称类型

typedef uint32_t DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE_TYPE

lib 镜像大小类型

typedef char * DOCA_APSH_MEM_REGION_TYPE

内存区域路径

typedef int DOCA_APSH_MODULES_LIMIT_TYPE

模块数量限制

typedef char * DOCA_APSH_MODULES_NAME_TYPE

模块名称类型

typedef uint64_t DOCA_APSH_MODULES_OFFSET_TYPE

模块偏移类型

typedef uint32_t DOCA_APSH_MODULES_SIZE_TYPE

模块大小类型

typedef char * DOCA_APSH_NETSCAN_COMM_TYPE

netscan 进程名称

typedef char * DOCA_APSH_NETSCAN_LINUX_FAMILY_TYPE

netscan Linux 连接族

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_FD_TYPE

netscan Linux 连接文件描述符

typedef char * DOCA_APSH_NETSCAN_LINUX_FILTER_TYPE

netscan Linux 连接过滤器

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_NET_NAMESPACE_TYPE

netscan Linux 连接网络命名空间

typedef uint64_t DOCA_APSH_NETSCAN_LINUX_SOCKET_OFFSET_TYPE

netscan Linux 连接套接字偏移

typedef uint64_t DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_ACKED_TYPE

netscan Linux 连接 TCP 确认字节数

typedef uint64_t DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_RECEIVED_TYPE

netscan Linux 连接 TCP 接收字节数

typedef uint64_t DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_SENT_TYPE

netscan Linux 连接 TCP 发送字节数

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_IN_TYPE

netscan Linux 连接 TCP 数据段入

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_OUT_TYPE

netscan Linux 连接 TCP 数据段出

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_IN_TYPE

netscan Linux 连接 TCP 段入

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_OUT_TYPE

netscan Linux 连接 TCP 段出

typedef char * DOCA_APSH_NETSCAN_LINUX_TYPE_TYPE

netscan Linux 连接类型

typedef char * DOCA_APSH_NETSCAN_LOCAL_ADDR_TYPE

netscan 连接本地地址

typedef uint16_t DOCA_APSH_NETSCAN_LOCAL_PORT_TYPE

netscan 连接本地端口

typedef uint32_t DOCA_APSH_NETSCAN_PID_TYPE

netscan 进程 ID

typedef char * DOCA_APSH_NETSCAN_PROTOCOL_TYPE

netscan 连接协议

typedef char * DOCA_APSH_NETSCAN_REMOTE_ADDR_TYPE

netscan 连接远程地址

typedef uint16_t DOCA_APSH_NETSCAN_REMOTE_PORT_TYPE

netscan 连接远程端口

typedef char * DOCA_APSH_NETSCAN_STATE_TYPE

netscan 连接状态

typedef char * DOCA_APSH_NETSCAN_TIME_TYPE

netscan Windows 连接创建时间 - 已弃用

typedef char * DOCA_APSH_NETSCAN_WINDOWS_TIME_TYPE

netscan Windows 连接创建时间

typedef char * DOCA_APSH_OS_SYMBOL_MAP_TYPE

操作系统符号映射路径

typedef enumdoca_apsh_system_os DOCA_APSH_OS_TYPE_TYPE

操作系统类型

typedef bool DOCA_APSH_PRIVILEGES_IS_ON_TYPE

权限启用类型

typedef char * DOCA_APSH_PRIVILEGES_NAME_TYPE

权限名称类型

typedef uint32_t DOCA_APSH_PRIVILEGES_PID_TYPE

权限进程 pid

typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT_TYPE

默认启用 Windows 权限类型

typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED_TYPE

启用 Windows 权限类型

typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT_TYPE

Windows 权限存在类型

typedef char * DOCA_APSH_PROCESS_COMM_TYPE

进程 comm 类型

typedef uint64_t DOCA_APSH_PROCESS_CPU_TIME_TYPE

进程 CPU 时间类型

typedef int DOCA_APSH_PROCESS_LIMIT_TYPE

进程数量限制

typedef uint32_t DOCA_APSH_PROCESS_LINUX_GID_TYPE

进程 GID 类型

typedef uint32_t DOCA_APSH_PROCESS_LINUX_NS_MNT_TYPE

进程挂载命名空间类型

typedef uint32_t DOCA_APSH_PROCESS_LINUX_NS_NET_TYPE

进程网络命名空间类型

typedef uint32_t DOCA_APSH_PROCESS_LINUX_NS_PID_TYPE

进程 PID 命名空间类型

typedef uint64_t DOCA_APSH_PROCESS_LINUX_STATE_TYPE

进程状态类型

typedef uint32_t DOCA_APSH_PROCESS_LINUX_UID_TYPE

进程 UID 类型

typedef char * DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE_TYPE

进程参数命令行

typedef uint64_t DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR_TYPE

进程参数镜像基址

typedef char * DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH_TYPE

进程参数镜像完整路径

typedef uint32_t DOCA_APSH_PROCESS_PARAMETERS_PID_TYPE

进程参数 pid

typedef uint32_t DOCA_APSH_PROCESS_PID_TYPE

进程 pid 类型

typedef uint32_t DOCA_APSH_PROCESS_PPID_TYPE

进程 pid 类型

typedef uint32_t DOCA_APSH_PROCESS_SID_ATTRIBUTES_TYPE

SID 属性标志。

typedef uint32_t DOCA_APSH_PROCESS_SID_PID_TYPE

SID 进程 ID。

typedef char * DOCA_APSH_PROCESS_SID_STRING_TYPE

SID 字符串。

typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME_TYPE

进程退出时间类型

typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_OFFSET_TYPE

进程偏移类型

typedef uint32_t DOCA_APSH_PROCESS_WINDOWS_THREADS_TYPE

进程线程数类型

typedef uint32_t DOCA_APSH_SCAN_WIN_SIZE_TYPE

yara 扫描窗口大小

typedef uint32_t DOCA_APSH_SCAN_WIN_STEP_TYPE

yara 扫描窗口步长

typedef int DOCA_APSH_STRING_LIMIT_TYPE

apsh_read_str 的长度限制

typedef int DOCA_APSH_THREADS_LIMIT_TYPE

线程数量限制

typedef char * DOCA_APSH_THREAD_LINUX_PROC_NAME_TYPE

线程 proc 名称类型

typedef char * DOCA_APSH_THREAD_LINUX_THREAD_NAME_TYPE

线程名称类型

typedef uint32_t DOCA_APSH_THREAD_PID_TYPE

线程 pid 类型

typedef uint64_t DOCA_APSH_THREAD_STATE_TYPE

线程状态类型

typedef uint32_t DOCA_APSH_THREAD_TID_TYPE

线程 tid 类型

typedef uint64_t DOCA_APSH_THREAD_WINDOWS_OFFSET_TYPE

线程偏移类型

typedef uint8_t DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT_TYPE

线程挂起计数类型

typedef uint8_t DOCA_APSH_THREAD_WINDOWS_WAIT_REASON_TYPE

线程等待原因类型

typedef int DOCA_APSH_VADS_LIMIT_TYPE

VAD 数量限制

typedef doca_dev_rep * DOCA_APSH_VHCA_ID_TYPE

VHCA ID

typedef char * DOCA_APSH_VMA_FILE_PATH_TYPE

VMA 文件路径类型

typedef uint64_t DOCA_APSH_VMA_OFFSET_TYPE

VMA 偏移类型

typedef uint32_t DOCA_APSH_VMA_PID_TYPE

VMA pid 类型

typedef char * DOCA_APSH_VMA_PROCESS_NAME_TYPE

VMA 文件路径类型

typedef char * DOCA_APSH_VMA_PROTECTION_TYPE

VMA 保护类型

typedef uint64_t DOCA_APSH_VMA_VM_END_TYPE

VMA VM 结束类型

typedef uint64_t DOCA_APSH_VMA_VM_START_TYPE

VMA VM 起始类型

typedef uint32_t DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE_TYPE

VMA 提交费用类型

typedef uint32_t DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY_TYPE

VMA 私有内存类型

typedef char * DOCA_APSH_VMA_WINDOWS_TAG_TYPE

VMA 标签类型

typedef int DOCA_APSH_WINDOWS_ENVARS_LIMIT_TYPE

Windows 环境变量的长度限制

typedef char * DOCA_APSH_YARA_COMM_TYPE

进程名称

typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_ADDR_TYPE

匹配扫描窗口的虚拟地址

typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_LEN_TYPE

匹配扫描窗口的长度

typedef uint32_t DOCA_APSH_YARA_PID_TYPE

进程的 PID

typedef char * DOCA_APSH_YARA_RULE_TYPE

规则名称

枚举
enum doca_apsh_attestation_attr

DOCA_APSH_ATTESTATION_PID = 0
证明进程 ID
DOCA_APSH_ATTESTATION_COMM = 1
证明进程名称
DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA = 2
证明内存区域路径
DOCA_APSH_ATTESTATION_PROTECTION = 3
证明保护
DOCA_APSH_ATTESTATION_START_ADDRESS = 4
证明起始地址
DOCA_APSH_ATTESTATION_END_ADDRESS = 5
证明结束地址
DOCA_APSH_ATTESTATION_PAGES_NUMBER = 6
二进制文件中的证明进程页数
DOCA_APSH_ATTESTATION_PAGES_PRESENT = 7
内存中存在的证明页数
DOCA_APSH_ATTESTATION_MATCHING_HASHES = 8
来自内存页面的证明页面哈希匹配计数
DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT = 9
证明哈希数据是否存在

enum doca_apsh_container_attr

DOCA_APSH_CONTAINER_ID = 0
容器 ID

enum doca_apsh_envar_attr

DOCA_APSH_ENVARS_PID = 0
环境变量 PID
DOCA_APSH_ENVARS_VARIABLE = 2
环境变量名
DOCA_APSH_ENVARS_VALUE = 3
环境变量值
DOCA_APSH_ENVARS_WINDOWS_BLOCK = 1000
环境变量 Windows 环境块地址

enum doca_apsh_handle_attr

DOCA_APSH_HANDLE_PID = 0
句柄进程 ID
DOCA_APSH_HANDLE_VALUE = 2
句柄值
DOCA_APSH_HANDLE_TABLE_ENTRY = 3
句柄表项
DOCA_APSH_HANDLE_TYPE = 4
句柄类型
DOCA_APSH_HANDLE_ACCESS = 5
句柄访问权限
DOCA_APSH_HANDLE_NAME = 6
句柄名称

enum doca_apsh_injection_detect_attr

DOCA_APSH_INJECTION_DETECT_PID
疑似注入进程 ID
DOCA_APSH_INJECTION_DETECT_VAD_START
疑似注入 VAD 起始地址
DOCA_APSH_INJECTION_DETECT_VAD_END
疑似注入 VAD 结束地址
DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION
疑似注入 VAD 保护
DOCA_APSH_INJECTION_DETECT_VAD_TAG
疑似注入 VAD 池标签
DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH
疑似注入 VAD 文件路径
DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START
疑似注入可疑区域起始地址
DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END
疑似注入可疑区域结束地址

enum doca_apsh_ldrmodule_attr

DOCA_APSH_LDRMODULE_PID = 0
ldrmodule 进程 PID
DOCA_APSH_LDRMODULE_BASE_ADDRESS = 2
ldrmodule 基地址
DOCA_APSH_LDRMODULE_LIBRARY_PATH = 3
ldrmodule 加载的库路径
DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME = 1000
ldrmodule dll 名称
DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE = 1001
ldrmodule 映像大小
DOCA_APSH_LDRMODULE_WINDOWS_INLOAD = 1002
ldrmodule 出现在 inload 列表中
DOCA_APSH_LDRMODULE_WINDOWS_INMEM = 1003
ldrmodule 出现在 inmem 列表中
DOCA_APSH_LDRMODULE_WINDOWS_ININIT = 1004
ldrmodule 出现在 ininit 列表中

enum doca_apsh_lib_attr

DOCA_APSH_LIB_PID = 0
lib PID
DOCA_APSH_LIB_LIBRARY_PATH = 2
lib 加载的库路径
DOCA_APSH_LIB_LOAD_ADRESS = 3
lib Windows 和 Linux 的加载地址
DOCA_APSH_LIB_WINDOWS_DLL_NAME = 1000
lib dll 名称
DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE = 1001
lib 映像大小
DOCA_APSH_LIB_LINUX_LOAD_ADRESS = 2000
lib Linux 加载地址。为向后兼容而保留,请改用 DOCA_APSH_LIB_LOAD_ADRESS-

enum doca_apsh_module_attr

DOCA_APSH_MODULES_OFFSET = 0
模块偏移
DOCA_APSH_MODULES_NAME = 1
模块名称
DOCA_APSH_MODULES_SIZE = 2
模块大小

enum doca_apsh_netscan_attr

DOCA_APSH_NETSCAN_PID = 0
netscan 连接进程 ID
DOCA_APSH_NETSCAN_COMM = 1
netscan 连接进程名称
DOCA_APSH_NETSCAN_PROTOCOL = 2
netscan 连接协议
DOCA_APSH_NETSCAN_LOCAL_ADDR = 3
netscan 连接本地地址
DOCA_APSH_NETSCAN_REMOTE_ADDR = 4
netscan 连接远程地址
DOCA_APSH_NETSCAN_LOCAL_PORT = 5
netscan 连接本地端口
DOCA_APSH_NETSCAN_REMOTE_PORT = 6
netscan 连接远程端口
DOCA_APSH_NETSCAN_STATE = 7
netscan 连接状态
DOCA_APSH_NETSCAN_TIME = 8
netscan 连接创建时间 - 仅限 Windows。已弃用 - 请改用 DOCA_APSH_NETSCAN_WINDOWS_TIME
DOCA_APSH_NETSCAN_WINDOWS_TIME = 1000
netscan Windows 连接创建时间
DOCA_APSH_NETSCAN_LINUX_FD = 2000
netscan Linux 连接文件描述符
DOCA_APSH_NETSCAN_LINUX_SOCKET_OFFSET = 2001
netscan Linux 连接套接字偏移
DOCA_APSH_NETSCAN_LINUX_FAMILY = 2002
netscan Linux 连接族
DOCA_APSH_NETSCAN_LINUX_TYPE = 2003
netscan Linux 连接类型
DOCA_APSH_NETSCAN_LINUX_FILTER = 2004
netscan Linux 连接过滤器
DOCA_APSH_NETSCAN_LINUX_NET_NAMESPACE = 2005
netscan Linux 连接网络命名空间
DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_SENT = 2006
netscan Linux 连接 TCP 发送字节数
DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_ACKED = 2007
netscan Linux 连接 TCP 确认字节数
DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_RECEIVED = 2008
netscan Linux 连接 TCP 接收字节数
DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_IN = 2009
netscan Linux 连接 TCP 段入
DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_OUT = 2010
netscan Linux 连接 TCP 段出
DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_IN = 2011
netscan Linux 连接 TCP 数据段入
DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_OUT = 2012
netscan Linux 连接 TCP 数据段出

enum doca_apsh_privilege_attr

DOCA_APSH_PRIVILEGES_PID = 0
权限进程 pid
DOCA_APSH_PRIVILEGES_NAME = 2
权限名称,例如:SeTcbPrivilege
DOCA_APSH_PRIVILEGES_IS_ON = 3
权限是否已开启。对于 Windows,这是 get(PRESENT) && (get(ENABLED) || get(DEFAULT)) 的结果
DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT = 1000
权限存在标志
DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED = 1001
权限已启用标志
DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT = 1002
权限默认启用标志

enum doca_apsh_process_attr

DOCA_APSH_PROCESS_PID = 0
进程 ID
DOCA_APSH_PROCESS_PPID = 1
进程父 ID
DOCA_APSH_PROCESS_COMM = 2
进程可执行文件名
DOCA_APSH_PROCESS_CPU_TIME = 3
进程 CPU 时间 [ps]
DOCA_APSH_PROCESS_WINDOWS_OFFSET = 1000
进程偏移量
DOCA_APSH_PROCESS_WINDOWS_THREADS = 1001
进程线程计数
DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME = 1002
进程退出时间
DOCA_APSH_PROCESS_LINUX_GID = 2000
进程组 ID
DOCA_APSH_PROCESS_LINUX_UID = 2001
进程用户 ID
DOCA_APSH_PROCESS_LINUX_STATE = 2002
进程状态
DOCA_APSH_PROCESS_LINUX_NS_PID = 2003
进程 PID 命名空间
DOCA_APSH_PROCESS_LINUX_NS_MNT = 2004
进程挂载命名空间
DOCA_APSH_PROCESS_LINUX_NS_NET = 2005
进程网络命名空间

enum doca_apsh_process_parameters_attr

DOCA_APSH_PROCESS_PARAMETERS_PID = 0
进程参数 pid
DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE = 1
进程参数命令行
DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR = 2
进程参数镜像基址
DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH = 3
进程参数镜像完整路径

enum doca_apsh_sid_attr

DOCA_APSH_PROCESS_SID_PID = 0
SID 进程 ID
DOCA_APSH_PROCESS_SID_STRING = 1
SID 字符串
DOCA_APSH_PROCESS_SID_ATTRIBUTES = 2
SID 属性标志

enum doca_apsh_system_config_attr

DOCA_APSH_OS_SYMBOL_MAP = 0
操作系统符号映射路径
DOCA_APSH_MEM_REGION = 1
内存区域路径
DOCA_APSH_KPGD_FILE = 2
kpgd 文件路径
DOCA_APSH_VHCA_ID = 3
VHCA ID
DOCA_APSH_OS_TYPE = 4
操作系统类型
DOCA_APSH_SCAN_WIN_SIZE = 5
yara 扫描窗口大小
DOCA_APSH_SCAN_WIN_STEP = 6
yara 扫描窗口步长
DOCA_APSH_HASHTEST_LIMIT = 7
要认证的 VM 区域数量限制
DOCA_APSH_MODULES_LIMIT = 8
模块数量限制
DOCA_APSH_PROCESS_LIMIT = 9
进程数量限制
DOCA_APSH_THREADS_LIMIT = 10
线程数量限制
DOCA_APSH_LDRMODULES_LIMIT = 11
windows 上 ldrmodules 数量限制
DOCA_APSH_LIBS_LIMIT = 12
库数量限制
DOCA_APSH_VADS_LIMIT = 13
VAD 数量限制
DOCA_APSH_WINDOWS_ENVARS_LIMIT = 14
Windows 环境变量的长度限制
DOCA_APSH_HANDLES_LIMIT = 15
windows 上句柄数量限制
DOCA_APSH_STRING_LIMIT = 16
apsh_read_str 的长度限制

enum doca_apsh_system_os

DOCA_APSH_SYSTEM_LINUX = 0
linux
DOCA_APSH_SYSTEM_WINDOWS = 1
windows

enum doca_apsh_thread_attr

DOCA_APSH_THREAD_PID = 0
线程进程 ID
DOCA_APSH_THREAD_TID = 1
线程 ID
DOCA_APSH_THREAD_STATE = 2
线程状态
DOCA_APSH_THREAD_WINDOWS_WAIT_REASON = 1000
线程等待原因
DOCA_APSH_THREAD_WINDOWS_OFFSET = 1001
线程偏移量
DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT = 1002
线程挂起计数
DOCA_APSH_THREAD_LINUX_PROC_NAME = 2000
线程进程名称
DOCA_APSH_THREAD_LINUX_THREAD_NAME = 2001
线程名称

enum doca_apsh_vad_attr

DOCA_APSH_VMA_PID = 0
vma 进程 ID
DOCA_APSH_VMA_OFFSET = 1
vma 偏移量
DOCA_APSH_VMA_PROTECTION = 2
vma 保护
DOCA_APSH_VMA_VM_START = 3
vma vm 起始地址
DOCA_APSH_VMA_VM_END = 4
vma vm 结束地址
DOCA_APSH_VMA_PROCESS_NAME = 5
vma 进程名称
DOCA_APSH_VMA_FILE_PATH = 6
vma 文件路径
DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE = 1000
vma 提交费用
DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY = 1001
vma 私有内存
DOCA_APSH_VMA_WINDOWS_TAG = 1002
vma 池标签

enum doca_apsh_yara_attr

DOCA_APSH_YARA_PID = 0
进程的 PID
DOCA_APSH_YARA_COMM = 1
进程名称
DOCA_APSH_YARA_RULE = 2
规则名称
DOCA_APSH_YARA_MATCH_WINDOW_ADDR = 3
匹配扫描窗口的虚拟地址
DOCA_APSH_YARA_MATCH_WINDOW_LEN = 4
匹配扫描窗口的长度

enum doca_apsh_yara_rule

DOCA_APSH_YARA_RULE_HELLO_WORLD = 0
扫描 "Hello World" 的 yara 规则。规则名称为 "Hello_World"。
DOCA_APSH_YARA_RULE_REFLECTIVE_DLL_INJECTION = 1
扫描反射式 DLL 注入攻击的 yara 规则。规则名称为 "Reflective_Dll_Injection"。
DOCA_APSH_YARA_RULE_MIMIKATZ = 2
扫描系统上运行的 Mimikatz 进程的 yara 规则。规则名称为 "Mimikatz"。

enum doca_apsh_yara_scan_type

DOCA_APSH_YARA_SCAN_VMA = 1
扫描所有 vma 树,覆盖所有其他项
DOCA_APSH_YARA_SCAN_HEAP = 1<<1
扫描堆 vads

DOCA 应用盾属性

2.2.1. DOCA App Shield 属性

[ DOCA App Shield ]

DOCA App Shield 属性,用于使用 get 函数查询,请参阅 doca_apsh.h

类型定义
typedef char *  DOCA_APSH_ATTESTATION_COMM_TYPE
证明通信类型
typedef uint64_t  DOCA_APSH_ATTESTATION_END_ADDRESS_TYPE
证明结束地址类型
typedef bool  DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT_TYPE
证明哈希数据是否存在类型
typedef int  DOCA_APSH_ATTESTATION_MATCHING_HASHES_TYPE
证明匹配哈希类型
typedef int  DOCA_APSH_ATTESTATION_PAGES_NUMBER_TYPE
证明页面数量类型
typedef int  DOCA_APSH_ATTESTATION_PAGES_PRESENT_TYPE
证明存在页面类型
typedef char *  DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA_TYPE
证明内存区域路径类型
typedef uint32_t  DOCA_APSH_ATTESTATION_PID_TYPE
认证 pid 类型
typedef char *  DOCA_APSH_ATTESTATION_PROTECTION_TYPE
认证保护类型
typedef uint64_t  DOCA_APSH_ATTESTATION_START_ADDRESS_TYPE
认证起始地址类型
typedef char *  DOCA_APSH_CONTAINER_ID_TYPE
容器 ID 类型
typedef doca_dev *  DOCA_APSH_DMA_DEV_TYPE
DMA 设备名称
typedef uint32_t  DOCA_APSH_ENVARS_PID_TYPE
环境变量 pid 类型
typedef char *  DOCA_APSH_ENVARS_VALUE_TYPE
环境变量值类型
typedef char *  DOCA_APSH_ENVARS_VARIABLE_TYPE
环境变量变量类型
typedef uint64_t  DOCA_APSH_ENVARS_WINDOWS_BLOCK_TYPE
环境变量 Windows 块地址类型
typedef uint64_t  DOCA_APSH_HANDLE_ACCESS_TYPE
句柄访问类型
typedef char *  DOCA_APSH_HANDLE_NAME_TYPE
句柄名称类型
typedef uint32_t  DOCA_APSH_HANDLE_PID_TYPE
句柄 pid 类型
typedef uint64_t  DOCA_APSH_HANDLE_TABLE_ENTRY_TYPE
句柄表项类型
typedef char *  DOCA_APSH_HANDLE_TYPE_TYPE
句柄类型类型
typedef uint64_t  DOCA_APSH_HANDLE_VALUE_TYPE
句柄值类型
typedef int  DOCA_APSH_HASHTEST_LIMIT_TYPE
要认证的 VM 区域数量限制
typedef uint32_t  DOCA_APSH_INJECTION_DETECT_PID_TYPE
注入检测 pid 类型
typedef uint64_t  DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END_TYPE
注入检测可疑区域结束类型
typedef uint64_t  DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START_TYPE
注入检测可疑区域起始类型
typedef uint64_t  DOCA_APSH_INJECTION_DETECT_VAD_END_TYPE
注入检测 VAD 结束地址类型
typedef char *  DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH_TYPE
注入检测 VAD 文件路径类型
typedef char *  DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION_TYPE
注入检测 VAD 保护类型
typedef uint64_t  DOCA_APSH_INJECTION_DETECT_VAD_START_TYPE
注入检测 VAD 起始地址类型
typedef char *  DOCA_APSH_INJECTION_DETECT_VAD_TAG_TYPE
注入检测 VAD 池标签类型
typedef char *  DOCA_APSH_KPGD_FILE_TYPE
kpgd 文件路径
typedef uint64_t  DOCA_APSH_LDRMODULE_BASE_ADDRESS_TYPE
ldrmodule 基地址类型
typedef char *  DOCA_APSH_LDRMODULE_LIBRARY_PATH_TYPE
ldrmodule 库路径类型
typedef uint32_t  DOCA_APSH_LDRMODULE_PID_TYPE
ldrmodule pid 类型
typedef char *  DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME_TYPE
ldrmodule Windows DLL 名称类型
typedef bool  DOCA_APSH_LDRMODULE_WINDOWS_ININIT_TYPE
ldrmodule ininit 类型
typedef bool  DOCA_APSH_LDRMODULE_WINDOWS_INLOAD_TYPE
ldrmodule inload 类型
typedef bool  DOCA_APSH_LDRMODULE_WINDOWS_INMEM_TYPE
ldrmodule inmem 类型
typedef uint32_t  DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE_TYPE
ldrmodule 镜像大小类型
typedef int  DOCA_APSH_LIBS_LIMIT_TYPE
库数量限制
typedef char *  DOCA_APSH_LIB_LIBRARY_PATH_TYPE
lib 加载库路径类型
typedef uint64_t  DOCA_APSH_LIB_LINUX_LOAD_ADRESS_TYPE
lib Linux 加载地址
typedef uint64_t  DOCA_APSH_LIB_LOAD_ADRESS_TYPE
lib Windows 和 Linux 的加载地址
typedef uint32_t  DOCA_APSH_LIB_PID_TYPE
lib pid 类型
typedef char *  DOCA_APSH_LIB_WINDOWS_DLL_NAME_TYPE
lib DLL 名称类型
typedef uint32_t  DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE_TYPE
lib 镜像大小类型
typedef char *  DOCA_APSH_MEM_REGION_TYPE
内存区域路径
typedef int  DOCA_APSH_MODULES_LIMIT_TYPE
模块数量限制
typedef char *  DOCA_APSH_MODULES_NAME_TYPE
模块名称类型
typedef uint64_t  DOCA_APSH_MODULES_OFFSET_TYPE
模块偏移类型
typedef uint32_t  DOCA_APSH_MODULES_SIZE_TYPE
模块大小类型
typedef char *  DOCA_APSH_NETSCAN_COMM_TYPE
netscan 进程名称
typedef char *  DOCA_APSH_NETSCAN_LINUX_FAMILY_TYPE
netscan Linux 连接族
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_FD_TYPE
netscan Linux 连接文件描述符
typedef char *  DOCA_APSH_NETSCAN_LINUX_FILTER_TYPE
netscan Linux 连接过滤器
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_NET_NAMESPACE_TYPE
netscan Linux 连接网络命名空间
typedef uint64_t  DOCA_APSH_NETSCAN_LINUX_SOCKET_OFFSET_TYPE
netscan Linux 连接套接字偏移
typedef uint64_t  DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_ACKED_TYPE
netscan Linux 连接 TCP 确认字节数
typedef uint64_t  DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_RECEIVED_TYPE
netscan Linux 连接 TCP 接收字节数
typedef uint64_t  DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_SENT_TYPE
netscan Linux 连接 TCP 发送字节数
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_IN_TYPE
netscan Linux 连接 TCP 数据段入
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_OUT_TYPE
netscan Linux 连接 TCP 数据段出
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_IN_TYPE
netscan Linux 连接 TCP 段入
typedef uint32_t  DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_OUT_TYPE
netscan Linux 连接 TCP 段出
typedef char *  DOCA_APSH_NETSCAN_LINUX_TYPE_TYPE
netscan Linux 连接类型
typedef char *  DOCA_APSH_NETSCAN_LOCAL_ADDR_TYPE
netscan 连接本地地址
typedef uint16_t  DOCA_APSH_NETSCAN_LOCAL_PORT_TYPE
netscan 连接本地端口
typedef uint32_t  DOCA_APSH_NETSCAN_PID_TYPE
netscan 进程 ID
typedef char *  DOCA_APSH_NETSCAN_PROTOCOL_TYPE
netscan 连接协议
typedef char *  DOCA_APSH_NETSCAN_REMOTE_ADDR_TYPE
netscan 连接远程地址
typedef uint16_t  DOCA_APSH_NETSCAN_REMOTE_PORT_TYPE
netscan 连接远程端口
typedef char *  DOCA_APSH_NETSCAN_STATE_TYPE
netscan 连接状态
typedef char *  DOCA_APSH_NETSCAN_TIME_TYPE
netscan Windows 连接创建时间 - 已弃用
typedef char *  DOCA_APSH_NETSCAN_WINDOWS_TIME_TYPE
netscan Windows 连接创建时间
typedef char *  DOCA_APSH_OS_SYMBOL_MAP_TYPE
操作系统符号映射路径
typedef enumdoca_apsh_system_os DOCA_APSH_OS_TYPE_TYPE
操作系统类型
typedef bool  DOCA_APSH_PRIVILEGES_IS_ON_TYPE
权限启用类型
typedef char *  DOCA_APSH_PRIVILEGES_NAME_TYPE
权限名称类型
typedef uint32_t  DOCA_APSH_PRIVILEGES_PID_TYPE
权限进程 pid
typedef bool  DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT_TYPE
默认启用 Windows 权限类型
typedef bool  DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED_TYPE
启用 Windows 权限类型
typedef bool  DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT_TYPE
Windows 权限存在类型
typedef char *  DOCA_APSH_PROCESS_COMM_TYPE
进程 comm 类型
typedef uint64_t  DOCA_APSH_PROCESS_CPU_TIME_TYPE
进程 CPU 时间类型
typedef int  DOCA_APSH_PROCESS_LIMIT_TYPE
进程数量限制
typedef uint32_t  DOCA_APSH_PROCESS_LINUX_GID_TYPE
进程 GID 类型
typedef uint32_t  DOCA_APSH_PROCESS_LINUX_NS_MNT_TYPE
进程挂载命名空间类型
typedef uint32_t  DOCA_APSH_PROCESS_LINUX_NS_NET_TYPE
进程网络命名空间类型
typedef uint32_t  DOCA_APSH_PROCESS_LINUX_NS_PID_TYPE
进程 PID 命名空间类型
typedef uint64_t  DOCA_APSH_PROCESS_LINUX_STATE_TYPE
进程状态类型
typedef uint32_t  DOCA_APSH_PROCESS_LINUX_UID_TYPE
进程 UID 类型
typedef char *  DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE_TYPE
进程参数命令行
typedef uint64_t  DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR_TYPE
进程参数镜像基址
typedef char *  DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH_TYPE
进程参数镜像完整路径
typedef uint32_t  DOCA_APSH_PROCESS_PARAMETERS_PID_TYPE
进程参数 pid
typedef uint32_t  DOCA_APSH_PROCESS_PID_TYPE
进程 pid 类型
typedef uint32_t  DOCA_APSH_PROCESS_PPID_TYPE
进程 pid 类型
typedef uint32_t  DOCA_APSH_PROCESS_SID_ATTRIBUTES_TYPE
SID 属性标志。
typedef uint32_t  DOCA_APSH_PROCESS_SID_PID_TYPE
SID 进程 ID。
typedef char *  DOCA_APSH_PROCESS_SID_STRING_TYPE
SID 字符串。
typedef uint64_t  DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME_TYPE
进程退出时间类型
typedef uint64_t  DOCA_APSH_PROCESS_WINDOWS_OFFSET_TYPE
进程偏移类型
typedef uint32_t  DOCA_APSH_PROCESS_WINDOWS_THREADS_TYPE
进程线程数类型
typedef uint32_t  DOCA_APSH_SCAN_WIN_SIZE_TYPE
yara 扫描窗口大小
typedef uint32_t  DOCA_APSH_SCAN_WIN_STEP_TYPE
yara 扫描窗口步长
typedef int  DOCA_APSH_STRING_LIMIT_TYPE
apsh_read_str 的长度限制
typedef int  DOCA_APSH_THREADS_LIMIT_TYPE
线程数量限制
typedef char *  DOCA_APSH_THREAD_LINUX_PROC_NAME_TYPE
线程 proc 名称类型
typedef char *  DOCA_APSH_THREAD_LINUX_THREAD_NAME_TYPE
线程名称类型
typedef uint32_t  DOCA_APSH_THREAD_PID_TYPE
线程 pid 类型
typedef uint64_t  DOCA_APSH_THREAD_STATE_TYPE
线程状态类型
typedef uint32_t  DOCA_APSH_THREAD_TID_TYPE
线程 tid 类型
typedef uint64_t  DOCA_APSH_THREAD_WINDOWS_OFFSET_TYPE
线程偏移类型
typedef uint8_t  DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT_TYPE
线程挂起计数类型
typedef uint8_t  DOCA_APSH_THREAD_WINDOWS_WAIT_REASON_TYPE
线程等待原因类型
typedef int  DOCA_APSH_VADS_LIMIT_TYPE
VAD 数量限制
typedef doca_dev_rep *  DOCA_APSH_VHCA_ID_TYPE
VHCA ID
typedef char *  DOCA_APSH_VMA_FILE_PATH_TYPE
VMA 文件路径类型
typedef uint64_t  DOCA_APSH_VMA_OFFSET_TYPE
VMA 偏移类型
typedef uint32_t  DOCA_APSH_VMA_PID_TYPE
VMA pid 类型
typedef char *  DOCA_APSH_VMA_PROCESS_NAME_TYPE
VMA 文件路径类型
typedef char *  DOCA_APSH_VMA_PROTECTION_TYPE
VMA 保护类型
typedef uint64_t  DOCA_APSH_VMA_VM_END_TYPE
VMA VM 结束类型
typedef uint64_t  DOCA_APSH_VMA_VM_START_TYPE
VMA VM 起始类型
typedef uint32_t  DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE_TYPE
VMA 提交费用类型
typedef uint32_t  DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY_TYPE
VMA 私有内存类型
typedef char *  DOCA_APSH_VMA_WINDOWS_TAG_TYPE
VMA 标签类型
typedef int  DOCA_APSH_WINDOWS_ENVARS_LIMIT_TYPE
Windows 环境变量的长度限制
typedef char *  DOCA_APSH_YARA_COMM_TYPE
进程名称
typedef uint64_t  DOCA_APSH_YARA_MATCH_WINDOW_ADDR_TYPE
匹配扫描窗口的虚拟地址
typedef uint64_t  DOCA_APSH_YARA_MATCH_WINDOW_LEN_TYPE
匹配扫描窗口的长度
typedef uint32_t  DOCA_APSH_YARA_PID_TYPE
进程的 PID
typedef char *  DOCA_APSH_YARA_RULE_TYPE
规则名称
枚举
enum doca_apsh_attestation_attr
DOCA 应用防护认证属性
enum doca_apsh_container_attr
DOCA 应用防护进程属性
enum doca_apsh_envar_attr
DOCA 应用防护环境变量属性
enum doca_apsh_handle_attr
DOCA 应用防护句柄属性
enum doca_apsh_injection_detect_attr
DOCA 应用防护注入检测属性
enum doca_apsh_ldrmodule_attr
DOCA 应用防护 LDR 模块属性
enum doca_apsh_lib_attr
DOCA 应用防护库属性
enum doca_apsh_module_attr
DOCA 应用防护模块属性
enum doca_apsh_netscan_attr
DOCA 应用防护网络扫描属性
enum doca_apsh_privilege_attr
DOCA 应用防护权限属性,Windows 权限列表请参考:https://docs.microsoft.com/en-us/windows/win32/secauthz/privilege-constants
enum doca_apsh_process_attr
DOCA 应用防护进程属性
enum doca_apsh_process_parameters_attr
DOCA 应用防护进程参数属性
enum doca_apsh_sid_attr
DOCA 应用防护 SID(安全标识符)属性
enum doca_apsh_system_config_attr
DOCA 应用防护配置属性
enum doca_apsh_system_os
系统操作系统类型
enum doca_apsh_thread_attr
DOCA 应用防护线程属性
enum doca_apsh_vad_attr
DOCA 应用防护虚拟地址描述符属性
enum doca_apsh_yara_attr
DOCA 应用防护 YARA 属性
enum doca_apsh_yara_rule
可用的 DOCA 应用防护 YARA 规则
enum doca_apsh_yara_scan_type
DOCA 应用防护 YARA 扫描类型位掩码
类型定义
typedef char * DOCA_APSH_ATTESTATION_COMM_TYPE

证明通信类型

typedef uint64_t DOCA_APSH_ATTESTATION_END_ADDRESS_TYPE

证明结束地址类型

typedef bool DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT_TYPE

证明哈希数据是否存在类型

typedef int DOCA_APSH_ATTESTATION_MATCHING_HASHES_TYPE

证明匹配哈希类型

typedef int DOCA_APSH_ATTESTATION_PAGES_NUMBER_TYPE

证明页面数量类型

typedef int DOCA_APSH_ATTESTATION_PAGES_PRESENT_TYPE

证明存在页面类型

typedef char * DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA_TYPE

证明内存区域路径类型

typedef uint32_t DOCA_APSH_ATTESTATION_PID_TYPE

认证 pid 类型

typedef char * DOCA_APSH_ATTESTATION_PROTECTION_TYPE

认证保护类型

typedef uint64_t DOCA_APSH_ATTESTATION_START_ADDRESS_TYPE

认证起始地址类型

typedef char * DOCA_APSH_CONTAINER_ID_TYPE

容器 ID 类型

typedef doca_dev * DOCA_APSH_DMA_DEV_TYPE

DMA 设备名称

typedef uint32_t DOCA_APSH_ENVARS_PID_TYPE

环境变量 pid 类型

typedef char * DOCA_APSH_ENVARS_VALUE_TYPE

环境变量值类型

typedef char * DOCA_APSH_ENVARS_VARIABLE_TYPE

环境变量变量类型

typedef uint64_t DOCA_APSH_ENVARS_WINDOWS_BLOCK_TYPE

环境变量 Windows 块地址类型

typedef uint64_t DOCA_APSH_HANDLE_ACCESS_TYPE

句柄访问类型

typedef char * DOCA_APSH_HANDLE_NAME_TYPE

句柄名称类型

typedef uint32_t DOCA_APSH_HANDLE_PID_TYPE

句柄 pid 类型

typedef uint64_t DOCA_APSH_HANDLE_TABLE_ENTRY_TYPE

句柄表项类型

typedef char * DOCA_APSH_HANDLE_TYPE_TYPE

句柄类型类型

typedef uint64_t DOCA_APSH_HANDLE_VALUE_TYPE

句柄值类型

typedef int DOCA_APSH_HASHTEST_LIMIT_TYPE

要认证的 VM 区域数量限制

typedef uint32_t DOCA_APSH_INJECTION_DETECT_PID_TYPE

注入检测 pid 类型

typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END_TYPE

注入检测可疑区域结束类型

typedef uint64_t DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START_TYPE

注入检测可疑区域起始类型

typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_END_TYPE

注入检测 VAD 结束地址类型

typedef char * DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH_TYPE

注入检测 VAD 文件路径类型

typedef char * DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION_TYPE

注入检测 VAD 保护类型

typedef uint64_t DOCA_APSH_INJECTION_DETECT_VAD_START_TYPE

注入检测 VAD 起始地址类型

typedef char * DOCA_APSH_INJECTION_DETECT_VAD_TAG_TYPE

注入检测 VAD 池标签类型

typedef char * DOCA_APSH_KPGD_FILE_TYPE

kpgd 文件路径

typedef uint64_t DOCA_APSH_LDRMODULE_BASE_ADDRESS_TYPE

ldrmodule 基地址类型

typedef char * DOCA_APSH_LDRMODULE_LIBRARY_PATH_TYPE

ldrmodule 库路径类型

typedef uint32_t DOCA_APSH_LDRMODULE_PID_TYPE

ldrmodule pid 类型

typedef char * DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME_TYPE

ldrmodule Windows DLL 名称类型

typedef bool DOCA_APSH_LDRMODULE_WINDOWS_ININIT_TYPE

ldrmodule ininit 类型

typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INLOAD_TYPE

ldrmodule inload 类型

typedef bool DOCA_APSH_LDRMODULE_WINDOWS_INMEM_TYPE

ldrmodule inmem 类型

typedef uint32_t DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE_TYPE

ldrmodule 镜像大小类型

typedef int DOCA_APSH_LIBS_LIMIT_TYPE

库数量限制

typedef char * DOCA_APSH_LIB_LIBRARY_PATH_TYPE

lib 加载库路径类型

typedef uint64_t DOCA_APSH_LIB_LINUX_LOAD_ADRESS_TYPE

lib Linux 加载地址

typedef uint64_t DOCA_APSH_LIB_LOAD_ADRESS_TYPE

lib Windows 和 Linux 的加载地址

typedef uint32_t DOCA_APSH_LIB_PID_TYPE

lib pid 类型

typedef char * DOCA_APSH_LIB_WINDOWS_DLL_NAME_TYPE

lib DLL 名称类型

typedef uint32_t DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE_TYPE

lib 镜像大小类型

typedef char * DOCA_APSH_MEM_REGION_TYPE

内存区域路径

typedef int DOCA_APSH_MODULES_LIMIT_TYPE

模块数量限制

typedef char * DOCA_APSH_MODULES_NAME_TYPE

模块名称类型

typedef uint64_t DOCA_APSH_MODULES_OFFSET_TYPE

模块偏移类型

typedef uint32_t DOCA_APSH_MODULES_SIZE_TYPE

模块大小类型

typedef char * DOCA_APSH_NETSCAN_COMM_TYPE

netscan 进程名称

typedef char * DOCA_APSH_NETSCAN_LINUX_FAMILY_TYPE

netscan Linux 连接族

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_FD_TYPE

netscan Linux 连接文件描述符

typedef char * DOCA_APSH_NETSCAN_LINUX_FILTER_TYPE

netscan Linux 连接过滤器

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_NET_NAMESPACE_TYPE

netscan Linux 连接网络命名空间

typedef uint64_t DOCA_APSH_NETSCAN_LINUX_SOCKET_OFFSET_TYPE

netscan Linux 连接套接字偏移

typedef uint64_t DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_ACKED_TYPE

netscan Linux 连接 TCP 确认字节数

typedef uint64_t DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_RECEIVED_TYPE

netscan Linux 连接 TCP 接收字节数

typedef uint64_t DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_SENT_TYPE

netscan Linux 连接 TCP 发送字节数

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_IN_TYPE

netscan Linux 连接 TCP 数据段入

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_OUT_TYPE

netscan Linux 连接 TCP 数据段出

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_IN_TYPE

netscan Linux 连接 TCP 段入

typedef uint32_t DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_OUT_TYPE

netscan Linux 连接 TCP 段出

typedef char * DOCA_APSH_NETSCAN_LINUX_TYPE_TYPE

netscan Linux 连接类型

typedef char * DOCA_APSH_NETSCAN_LOCAL_ADDR_TYPE

netscan 连接本地地址

typedef uint16_t DOCA_APSH_NETSCAN_LOCAL_PORT_TYPE

netscan 连接本地端口

typedef uint32_t DOCA_APSH_NETSCAN_PID_TYPE

netscan 进程 ID

typedef char * DOCA_APSH_NETSCAN_PROTOCOL_TYPE

netscan 连接协议

typedef char * DOCA_APSH_NETSCAN_REMOTE_ADDR_TYPE

netscan 连接远程地址

typedef uint16_t DOCA_APSH_NETSCAN_REMOTE_PORT_TYPE

netscan 连接远程端口

typedef char * DOCA_APSH_NETSCAN_STATE_TYPE

netscan 连接状态

typedef char * DOCA_APSH_NETSCAN_TIME_TYPE

netscan Windows 连接创建时间 - 已弃用

typedef char * DOCA_APSH_NETSCAN_WINDOWS_TIME_TYPE

netscan Windows 连接创建时间

typedef char * DOCA_APSH_OS_SYMBOL_MAP_TYPE

操作系统符号映射路径

typedef enumdoca_apsh_system_os DOCA_APSH_OS_TYPE_TYPE

操作系统类型

typedef bool DOCA_APSH_PRIVILEGES_IS_ON_TYPE

权限启用类型

typedef char * DOCA_APSH_PRIVILEGES_NAME_TYPE

权限名称类型

typedef uint32_t DOCA_APSH_PRIVILEGES_PID_TYPE

权限进程 pid

typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT_TYPE

默认启用 Windows 权限类型

typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED_TYPE

启用 Windows 权限类型

typedef bool DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT_TYPE

Windows 权限存在类型

typedef char * DOCA_APSH_PROCESS_COMM_TYPE

进程 comm 类型

typedef uint64_t DOCA_APSH_PROCESS_CPU_TIME_TYPE

进程 CPU 时间类型

typedef int DOCA_APSH_PROCESS_LIMIT_TYPE

进程数量限制

typedef uint32_t DOCA_APSH_PROCESS_LINUX_GID_TYPE

进程 GID 类型

typedef uint32_t DOCA_APSH_PROCESS_LINUX_NS_MNT_TYPE

进程挂载命名空间类型

typedef uint32_t DOCA_APSH_PROCESS_LINUX_NS_NET_TYPE

进程网络命名空间类型

typedef uint32_t DOCA_APSH_PROCESS_LINUX_NS_PID_TYPE

进程 PID 命名空间类型

typedef uint64_t DOCA_APSH_PROCESS_LINUX_STATE_TYPE

进程状态类型

typedef uint32_t DOCA_APSH_PROCESS_LINUX_UID_TYPE

进程 UID 类型

typedef char * DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE_TYPE

进程参数命令行

typedef uint64_t DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR_TYPE

进程参数镜像基址

typedef char * DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH_TYPE

进程参数镜像完整路径

typedef uint32_t DOCA_APSH_PROCESS_PARAMETERS_PID_TYPE

进程参数 pid

typedef uint32_t DOCA_APSH_PROCESS_PID_TYPE

进程 pid 类型

typedef uint32_t DOCA_APSH_PROCESS_PPID_TYPE

进程 pid 类型

typedef uint32_t DOCA_APSH_PROCESS_SID_ATTRIBUTES_TYPE

SID 属性标志。

typedef uint32_t DOCA_APSH_PROCESS_SID_PID_TYPE

SID 进程 ID。

typedef char * DOCA_APSH_PROCESS_SID_STRING_TYPE

SID 字符串。

typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME_TYPE

进程退出时间类型

typedef uint64_t DOCA_APSH_PROCESS_WINDOWS_OFFSET_TYPE

进程偏移类型

typedef uint32_t DOCA_APSH_PROCESS_WINDOWS_THREADS_TYPE

进程线程数类型

typedef uint32_t DOCA_APSH_SCAN_WIN_SIZE_TYPE

yara 扫描窗口大小

typedef uint32_t DOCA_APSH_SCAN_WIN_STEP_TYPE

yara 扫描窗口步长

typedef int DOCA_APSH_STRING_LIMIT_TYPE

apsh_read_str 的长度限制

typedef int DOCA_APSH_THREADS_LIMIT_TYPE

线程数量限制

typedef char * DOCA_APSH_THREAD_LINUX_PROC_NAME_TYPE

线程 proc 名称类型

typedef char * DOCA_APSH_THREAD_LINUX_THREAD_NAME_TYPE

线程名称类型

typedef uint32_t DOCA_APSH_THREAD_PID_TYPE

线程 pid 类型

typedef uint64_t DOCA_APSH_THREAD_STATE_TYPE

线程状态类型

typedef uint32_t DOCA_APSH_THREAD_TID_TYPE

线程 tid 类型

typedef uint64_t DOCA_APSH_THREAD_WINDOWS_OFFSET_TYPE

线程偏移类型

typedef uint8_t DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT_TYPE

线程挂起计数类型

typedef uint8_t DOCA_APSH_THREAD_WINDOWS_WAIT_REASON_TYPE

线程等待原因类型

typedef int DOCA_APSH_VADS_LIMIT_TYPE

VAD 数量限制

typedef doca_dev_rep * DOCA_APSH_VHCA_ID_TYPE

VHCA ID

typedef char * DOCA_APSH_VMA_FILE_PATH_TYPE

VMA 文件路径类型

typedef uint64_t DOCA_APSH_VMA_OFFSET_TYPE

VMA 偏移类型

typedef uint32_t DOCA_APSH_VMA_PID_TYPE

VMA pid 类型

typedef char * DOCA_APSH_VMA_PROCESS_NAME_TYPE

VMA 文件路径类型

typedef char * DOCA_APSH_VMA_PROTECTION_TYPE

VMA 保护类型

typedef uint64_t DOCA_APSH_VMA_VM_END_TYPE

VMA VM 结束类型

typedef uint64_t DOCA_APSH_VMA_VM_START_TYPE

VMA VM 起始类型

typedef uint32_t DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE_TYPE

VMA 提交费用类型

typedef uint32_t DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY_TYPE

VMA 私有内存类型

typedef char * DOCA_APSH_VMA_WINDOWS_TAG_TYPE

VMA 标签类型

typedef int DOCA_APSH_WINDOWS_ENVARS_LIMIT_TYPE

Windows 环境变量的长度限制

typedef char * DOCA_APSH_YARA_COMM_TYPE

进程名称

typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_ADDR_TYPE

匹配扫描窗口的虚拟地址

typedef uint64_t DOCA_APSH_YARA_MATCH_WINDOW_LEN_TYPE

匹配扫描窗口的长度

typedef uint32_t DOCA_APSH_YARA_PID_TYPE

进程的 PID

typedef char * DOCA_APSH_YARA_RULE_TYPE

规则名称

枚举
enum doca_apsh_attestation_attr

DOCA_APSH_ATTESTATION_PID = 0
证明进程 ID
DOCA_APSH_ATTESTATION_COMM = 1
证明进程名称
DOCA_APSH_ATTESTATION_PATH_OF_MEMORY_AREA = 2
证明内存区域路径
DOCA_APSH_ATTESTATION_PROTECTION = 3
证明保护
DOCA_APSH_ATTESTATION_START_ADDRESS = 4
证明起始地址
DOCA_APSH_ATTESTATION_END_ADDRESS = 5
证明结束地址
DOCA_APSH_ATTESTATION_PAGES_NUMBER = 6
二进制文件中的证明进程页数
DOCA_APSH_ATTESTATION_PAGES_PRESENT = 7
内存中存在的证明页数
DOCA_APSH_ATTESTATION_MATCHING_HASHES = 8
来自内存页面的证明页面哈希匹配计数
DOCA_APSH_ATTESTATION_HASH_DATA_IS_PRESENT = 9
证明哈希数据是否存在

enum doca_apsh_container_attr

DOCA_APSH_CONTAINER_ID = 0
容器 ID

enum doca_apsh_envar_attr

DOCA_APSH_ENVARS_PID = 0
环境变量 PID
DOCA_APSH_ENVARS_VARIABLE = 2
环境变量名
DOCA_APSH_ENVARS_VALUE = 3
环境变量值
DOCA_APSH_ENVARS_WINDOWS_BLOCK = 1000
环境变量 Windows 环境块地址

enum doca_apsh_handle_attr

DOCA_APSH_HANDLE_PID = 0
句柄进程 ID
DOCA_APSH_HANDLE_VALUE = 2
句柄值
DOCA_APSH_HANDLE_TABLE_ENTRY = 3
句柄表项
DOCA_APSH_HANDLE_TYPE = 4
句柄类型
DOCA_APSH_HANDLE_ACCESS = 5
句柄访问权限
DOCA_APSH_HANDLE_NAME = 6
句柄名称

enum doca_apsh_injection_detect_attr

DOCA_APSH_INJECTION_DETECT_PID
疑似注入进程 ID
DOCA_APSH_INJECTION_DETECT_VAD_START
疑似注入 VAD 起始地址
DOCA_APSH_INJECTION_DETECT_VAD_END
疑似注入 VAD 结束地址
DOCA_APSH_INJECTION_DETECT_VAD_PROTECTION
疑似注入 VAD 保护
DOCA_APSH_INJECTION_DETECT_VAD_TAG
疑似注入 VAD 池标签
DOCA_APSH_INJECTION_DETECT_VAD_FILE_PATH
疑似注入 VAD 文件路径
DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_START
疑似注入可疑区域起始地址
DOCA_APSH_INJECTION_DETECT_SUSPECTED_AREA_END
疑似注入可疑区域结束地址

enum doca_apsh_ldrmodule_attr

DOCA_APSH_LDRMODULE_PID = 0
ldrmodule 进程 PID
DOCA_APSH_LDRMODULE_BASE_ADDRESS = 2
ldrmodule 基地址
DOCA_APSH_LDRMODULE_LIBRARY_PATH = 3
ldrmodule 加载的库路径
DOCA_APSH_LDRMODULE_WINDOWS_DLL_NAME = 1000
ldrmodule dll 名称
DOCA_APSH_LDRMODULE_WINDOWS_SIZE_OF_IMAGE = 1001
ldrmodule 映像大小
DOCA_APSH_LDRMODULE_WINDOWS_INLOAD = 1002
ldrmodule 出现在 inload 列表中
DOCA_APSH_LDRMODULE_WINDOWS_INMEM = 1003
ldrmodule 出现在 inmem 列表中
DOCA_APSH_LDRMODULE_WINDOWS_ININIT = 1004
ldrmodule 出现在 ininit 列表中

enum doca_apsh_lib_attr

DOCA_APSH_LIB_PID = 0
lib PID
DOCA_APSH_LIB_LIBRARY_PATH = 2
lib 加载的库路径
DOCA_APSH_LIB_LOAD_ADRESS = 3
lib Windows 和 Linux 的加载地址
DOCA_APSH_LIB_WINDOWS_DLL_NAME = 1000
lib dll 名称
DOCA_APSH_LIB_WINDOWS_SIZE_OF_IMAGE = 1001
lib 映像大小
DOCA_APSH_LIB_LINUX_LOAD_ADRESS = 2000
lib Linux 加载地址。为向后兼容而保留,请改用 DOCA_APSH_LIB_LOAD_ADRESS-

enum doca_apsh_module_attr

DOCA_APSH_MODULES_OFFSET = 0
模块偏移
DOCA_APSH_MODULES_NAME = 1
模块名称
DOCA_APSH_MODULES_SIZE = 2
模块大小

enum doca_apsh_netscan_attr

DOCA_APSH_NETSCAN_PID = 0
netscan 连接进程 ID
DOCA_APSH_NETSCAN_COMM = 1
netscan 连接进程名称
DOCA_APSH_NETSCAN_PROTOCOL = 2
netscan 连接协议
DOCA_APSH_NETSCAN_LOCAL_ADDR = 3
netscan 连接本地地址
DOCA_APSH_NETSCAN_REMOTE_ADDR = 4
netscan 连接远程地址
DOCA_APSH_NETSCAN_LOCAL_PORT = 5
netscan 连接本地端口
DOCA_APSH_NETSCAN_REMOTE_PORT = 6
netscan 连接远程端口
DOCA_APSH_NETSCAN_STATE = 7
netscan 连接状态
DOCA_APSH_NETSCAN_TIME = 8
netscan 连接创建时间 - 仅限 Windows。已弃用 - 请改用 DOCA_APSH_NETSCAN_WINDOWS_TIME
DOCA_APSH_NETSCAN_WINDOWS_TIME = 1000
netscan Windows 连接创建时间
DOCA_APSH_NETSCAN_LINUX_FD = 2000
netscan Linux 连接文件描述符
DOCA_APSH_NETSCAN_LINUX_SOCKET_OFFSET = 2001
netscan Linux 连接套接字偏移
DOCA_APSH_NETSCAN_LINUX_FAMILY = 2002
netscan Linux 连接族
DOCA_APSH_NETSCAN_LINUX_TYPE = 2003
netscan Linux 连接类型
DOCA_APSH_NETSCAN_LINUX_FILTER = 2004
netscan Linux 连接过滤器
DOCA_APSH_NETSCAN_LINUX_NET_NAMESPACE = 2005
netscan Linux 连接网络命名空间
DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_SENT = 2006
netscan Linux 连接 TCP 发送字节数
DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_ACKED = 2007
netscan Linux 连接 TCP 确认字节数
DOCA_APSH_NETSCAN_LINUX_TCP_BYTES_RECEIVED = 2008
netscan Linux 连接 TCP 接收字节数
DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_IN = 2009
netscan Linux 连接 TCP 段入
DOCA_APSH_NETSCAN_LINUX_TCP_SEGS_OUT = 2010
netscan Linux 连接 TCP 段出
DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_IN = 2011
netscan Linux 连接 TCP 数据段入
DOCA_APSH_NETSCAN_LINUX_TCP_DATA_SEGS_OUT = 2012
netscan Linux 连接 TCP 数据段出

enum doca_apsh_privilege_attr

DOCA_APSH_PRIVILEGES_PID = 0
权限进程 pid
DOCA_APSH_PRIVILEGES_NAME = 2
权限名称,例如:SeTcbPrivilege
DOCA_APSH_PRIVILEGES_IS_ON = 3
权限是否已开启。对于 Windows,这是 get(PRESENT) && (get(ENABLED) || get(DEFAULT)) 的结果
DOCA_APSH_PRIVILEGES_WINDOWS_PRESENT = 1000
权限存在标志
DOCA_APSH_PRIVILEGES_WINDOWS_ENABLED = 1001
权限已启用标志
DOCA_APSH_PRIVILEGES_WINDOWS_DEFAULT = 1002
权限默认启用标志

enum doca_apsh_process_attr

DOCA_APSH_PROCESS_PID = 0
进程 ID
DOCA_APSH_PROCESS_PPID = 1
进程父 ID
DOCA_APSH_PROCESS_COMM = 2
进程可执行文件名
DOCA_APSH_PROCESS_CPU_TIME = 3
进程 CPU 时间 [ps]
DOCA_APSH_PROCESS_WINDOWS_OFFSET = 1000
进程偏移量
DOCA_APSH_PROCESS_WINDOWS_THREADS = 1001
进程线程计数
DOCA_APSH_PROCESS_WINDOWS_EXIT_TIME = 1002
进程退出时间
DOCA_APSH_PROCESS_LINUX_GID = 2000
进程组 ID
DOCA_APSH_PROCESS_LINUX_UID = 2001
进程用户 ID
DOCA_APSH_PROCESS_LINUX_STATE = 2002
进程状态
DOCA_APSH_PROCESS_LINUX_NS_PID = 2003
进程 PID 命名空间
DOCA_APSH_PROCESS_LINUX_NS_MNT = 2004
进程挂载命名空间
DOCA_APSH_PROCESS_LINUX_NS_NET = 2005
进程网络命名空间

enum doca_apsh_process_parameters_attr

DOCA_APSH_PROCESS_PARAMETERS_PID = 0
进程参数 pid
DOCA_APSH_PROCESS_PARAMETERS_CMD_LINE = 1
进程参数命令行
DOCA_APSH_PROCESS_PARAMETERS_IMAGE_BASE_ADDR = 2
进程参数镜像基址
DOCA_APSH_PROCESS_PARAMETERS_IMAGE_FULL_PATH = 3
进程参数镜像完整路径

enum doca_apsh_sid_attr

DOCA_APSH_PROCESS_SID_PID = 0
SID 进程 ID
DOCA_APSH_PROCESS_SID_STRING = 1
SID 字符串
DOCA_APSH_PROCESS_SID_ATTRIBUTES = 2
SID 属性标志

enum doca_apsh_system_config_attr

DOCA_APSH_OS_SYMBOL_MAP = 0
操作系统符号映射路径
DOCA_APSH_MEM_REGION = 1
内存区域路径
DOCA_APSH_KPGD_FILE = 2
kpgd 文件路径
DOCA_APSH_VHCA_ID = 3
VHCA ID
DOCA_APSH_OS_TYPE = 4
操作系统类型
DOCA_APSH_SCAN_WIN_SIZE = 5
yara 扫描窗口大小
DOCA_APSH_SCAN_WIN_STEP = 6
yara 扫描窗口步长
DOCA_APSH_HASHTEST_LIMIT = 7
要认证的 VM 区域数量限制
DOCA_APSH_MODULES_LIMIT = 8
模块数量限制
DOCA_APSH_PROCESS_LIMIT = 9
进程数量限制
DOCA_APSH_THREADS_LIMIT = 10
线程数量限制
DOCA_APSH_LDRMODULES_LIMIT = 11
windows 上 ldrmodules 数量限制
DOCA_APSH_LIBS_LIMIT = 12
库数量限制
DOCA_APSH_VADS_LIMIT = 13
VAD 数量限制
DOCA_APSH_WINDOWS_ENVARS_LIMIT = 14
Windows 环境变量的长度限制
DOCA_APSH_HANDLES_LIMIT = 15
windows 上句柄数量限制
DOCA_APSH_STRING_LIMIT = 16
apsh_read_str 的长度限制

enum doca_apsh_system_os

DOCA_APSH_SYSTEM_LINUX = 0
linux
DOCA_APSH_SYSTEM_WINDOWS = 1
windows

enum doca_apsh_thread_attr

DOCA_APSH_THREAD_PID = 0
线程进程 ID
DOCA_APSH_THREAD_TID = 1
线程 ID
DOCA_APSH_THREAD_STATE = 2
线程状态
DOCA_APSH_THREAD_WINDOWS_WAIT_REASON = 1000
线程等待原因
DOCA_APSH_THREAD_WINDOWS_OFFSET = 1001
线程偏移量
DOCA_APSH_THREAD_WINDOWS_SUSPEND_COUNT = 1002
线程挂起计数
DOCA_APSH_THREAD_LINUX_PROC_NAME = 2000
线程进程名称
DOCA_APSH_THREAD_LINUX_THREAD_NAME = 2001
线程名称

enum doca_apsh_vad_attr

DOCA_APSH_VMA_PID = 0
vma 进程 ID
DOCA_APSH_VMA_OFFSET = 1
vma 偏移量
DOCA_APSH_VMA_PROTECTION = 2
vma 保护
DOCA_APSH_VMA_VM_START = 3
vma vm 起始地址
DOCA_APSH_VMA_VM_END = 4
vma vm 结束地址
DOCA_APSH_VMA_PROCESS_NAME = 5
vma 进程名称
DOCA_APSH_VMA_FILE_PATH = 6
vma 文件路径
DOCA_APSH_VMA_WINDOWS_COMMIT_CHARGE = 1000
vma 提交费用
DOCA_APSH_VMA_WINDOWS_PRIVATE_MEMORY = 1001
vma 私有内存
DOCA_APSH_VMA_WINDOWS_TAG = 1002
vma 池标签

enum doca_apsh_yara_attr

DOCA_APSH_YARA_PID = 0
进程的 PID
DOCA_APSH_YARA_COMM = 1
进程名称
DOCA_APSH_YARA_RULE = 2
规则名称
DOCA_APSH_YARA_MATCH_WINDOW_ADDR = 3
匹配扫描窗口的虚拟地址
DOCA_APSH_YARA_MATCH_WINDOW_LEN = 4
匹配扫描窗口的长度

enum doca_apsh_yara_rule

DOCA_APSH_YARA_RULE_HELLO_WORLD = 0
扫描 "Hello World" 的 yara 规则。规则名称为 "Hello_World"。
DOCA_APSH_YARA_RULE_REFLECTIVE_DLL_INJECTION = 1
扫描反射式 DLL 注入攻击的 yara 规则。规则名称为 "Reflective_Dll_Injection"。
DOCA_APSH_YARA_RULE_MIMIKATZ = 2
扫描系统上运行的 Mimikatz 进程的 yara 规则。规则名称为 "Mimikatz"。

enum doca_apsh_yara_scan_type

DOCA_APSH_YARA_SCAN_VMA = 1
扫描所有 vma 树,覆盖所有其他项
DOCA_APSH_YARA_SCAN_HEAP = 1<<1
扫描堆 vads

DOCA Arg Parser 库。有关更多详细信息,请参阅 DOCA DevZone 上的用户指南。

类型定义

typedef doca_error_t(  ( *doca_argp_dpdk_cb_t )( int  argc, char*  *argv )
DPDK 标志回调函数类型。
typedef doca_error_t(  ( *doca_argp_param_cb_t )( void* , void* )
标志回调函数类型。
typedef doca_error_t(  ( *doca_argp_validation_cb_t )( void* )
程序验证回调函数类型。

枚举

enum doca_argp_type
标志输入类型。

函数

DOCA_EXPERIMENTAL doca_error_t doca_argp_destroy ( void )
ARG Parser 销毁。
DOCA_EXPERIMENTAL doca_error_t doca_argp_get_log_level ( int* log_level )
获取用户插入的日志级别。
DOCA_EXPERIMENTAL doca_error_t doca_argp_get_sdk_log_level ( int* log_level )
获取用户插入的 SDK 日志级别。
DOCA_EXPERIMENTAL doca_error_t doca_argp_init ( const char* program_name, void* program_config )
初始化解析器接口。
DOCA_EXPERIMENTAL doca_error_t doca_argp_param_create ( doca_argp_param** param )
创建新的程序参数。
DOCA_EXPERIMENTAL doca_error_t doca_argp_param_destroy ( doca_argp_param* param )
销毁程序参数。
DOCA_EXPERIMENTAL void doca_argp_param_set_arguments ( doca_argp_param* param, const char* arguments )
设置程序参数 param 的预期参数,用于打印程序用法。
DOCA_EXPERIMENTAL void doca_argp_param_set_callback ( doca_argp_param* param, doca_argp_param_cb_t callback )
设置程序参数 param 的回调函数。
DOCA_EXPERIMENTAL void doca_argp_param_set_cli_only ( doca_argp_param* param )
设置程序参数 param 是否仅支持 CLI 模式,并且不会在 JSON 文件中使用。默认值为 false。
DOCA_EXPERIMENTAL void doca_argp_param_set_description ( doca_argp_param* param, const char* description )
设置程序参数 param 的描述,用于打印程序用法。
DOCA_EXPERIMENTAL void doca_argp_param_set_long_name ( doca_argp_param* param, const char* name )
设置程序参数 param 的长名称。
DOCA_EXPERIMENTAL void doca_argp_param_set_mandatory ( doca_argp_param* param )
设置程序参数 param 是否为必需项,默认值为 false。
DOCA_EXPERIMENTAL void doca_argp_param_set_multiplicity ( doca_argp_param* param )
设置程序参数 param 是否会出现多次,默认值为 false。
DOCA_EXPERIMENTAL void doca_argp_param_set_short_name ( doca_argp_param* param, const char* name )
设置程序参数 param 的短名称。
DOCA_EXPERIMENTAL void doca_argp_param_set_type ( doca_argp_param* param, doca_argp_type type )
设置参数参数的类型。
DOCA_EXPERIMENTAL doca_error_t doca_argp_register_param ( doca_argp_param* input_param )
注册程序标志。
DOCA_EXPERIMENTAL doca_error_t doca_argp_register_validation_callback ( doca_argp_validation_cb_t callback )
注册程序验证回调函数。
DOCA_EXPERIMENTAL doca_error_t doca_argp_register_version_callback ( doca_argp_param_cb_t callback )
注册备用版本回调。
DOCA_EXPERIMENTAL void doca_argp_set_dpdk_program ( doca_argp_dpdk_cb_t callback )
设置关于程序配置的信息,如果它基于 DPDK API。
DOCA_EXPERIMENTAL doca_error_t doca_argp_start ( int  argc, char** argv )
解析传入的参数 (cmd line/json)。
DOCA_EXPERIMENTAL void doca_argp_usage ( void )
打印用法说明。

类型定义

doca_error_t( ( *doca_argp_dpdk_cb_t )( int  argc, char*  *argv )

DPDK 标志回调函数类型。

doca_error_t( ( *doca_argp_param_cb_t )( void* , void* )

标志回调函数类型。

doca_error_t( ( *doca_argp_validation_cb_t )( void* )

程序验证回调函数类型。

枚举

enum doca_argp_type

DOCA_ARGP_TYPE_UNKNOWN = 0
DOCA_ARGP_TYPE_STRING
输入类型为字符串
DOCA_ARGP_TYPE_INT
输入类型为整数
DOCA_ARGP_TYPE_BOOLEAN
输入类型为布尔值
DOCA_ARGP_TYPE_JSON_OBJ
DPDK 参数输入类型为 JSON 对象,仅用于 JSON 模式

函数

DOCA_EXPERIMENTAL doca_error_t doca_argp_destroy ( void )
ARG Parser 销毁。
返回值

DOCA_SUCCESS - 成功时返回,否则返回相关的错误。

描述

清理所有资源,包括已解析的 DPDK 标志,程序无法再使用它们。

DOCA_EXPERIMENTAL doca_error_t doca_argp_get_log_level ( int* log_level )
获取用户插入的日志级别。
参数
log_level
如果用户插入了日志级别,则为该级别;否则为默认日志级别。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效的输入。
描述

DOCA_EXPERIMENTAL doca_error_t doca_argp_get_sdk_log_level ( int* log_level )
获取用户插入的 SDK 日志级别。
参数
log_level
如果用户插入了日志级别,则为该级别;否则为默认日志级别。

描述

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效的输入。

DOCA_EXPERIMENTAL doca_error_t doca_argp_init ( const char* program_name, void* program_config )
初始化解析器接口。
参数
program_name
当前程序的名称,用于打印用法。
program_config
程序配置结构体。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述
注意

成功调用此函数后,应调用 doca_argp_destroy() 作为程序清理的一部分。


DOCA_EXPERIMENTAL doca_error_t doca_argp_param_create ( doca_argp_param** param )
创建新的程序参数。
参数
param
成功时创建程序参数实例。仅在成功时有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 无法分配足够的空间。
描述
注意

需要通过 setter 函数设置参数字段。


DOCA_EXPERIMENTAL doca_error_t doca_argp_param_destroy ( doca_argp_param* param )
销毁程序参数。
参数
param
要销毁的程序参数。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效的输入。
描述

DOCA_EXPERIMENTAL void doca_argp_param_set_arguments ( doca_argp_param* param, const char* arguments )
设置程序参数 param 的预期参数,用于打印程序用法。
参数
param
程序参数。
arguments
参数的参数。

描述
注意

传递 NULL 的 "param" 值将导致未定义的行为。


DOCA_EXPERIMENTAL void doca_argp_param_set_callback ( doca_argp_param* param, doca_argp_param_cb_t callback )
设置程序参数 param 的回调函数。
参数
param
程序参数。
callback
参数的回调函数。

描述
注意
  • 传递 NULL 的 "param" 值将导致未定义的行为。

  • 一旦 ARGP 在 CLI 中识别出此参数,将调用回调函数,并将参数参数值作为第一个参数,程序配置结构体作为第二个参数。程序应复制参数值,不应直接使用它。

  • 设置参数回调是强制性的。


DOCA_EXPERIMENTAL void doca_argp_param_set_cli_only ( doca_argp_param* param )
设置程序参数 param 是否仅支持 CLI 模式,并且不会在 JSON 文件中使用。默认值为 false。
参数
param
程序参数。

描述
注意

传递 NULL 的 "param" 值将导致未定义的行为。


DOCA_EXPERIMENTAL void doca_argp_param_set_description ( doca_argp_param* param, const char* description )
设置程序参数 param 的描述,用于打印程序用法。
参数
param
程序参数。
description
参数的描述。

描述
注意
  • 传递 NULL 的 "param" 值将导致未定义的行为。

  • 设置参数描述是强制性的。


DOCA_EXPERIMENTAL void doca_argp_param_set_long_name ( doca_argp_param* param, const char* name )
设置程序参数 param 的长名称。
参数
param
程序参数。
name
参数的长名称。

描述
注意
  • 传递 NULL 的 "param" 值将导致未定义的行为。

  • 应至少设置一个参数名称。


DOCA_EXPERIMENTAL void doca_argp_param_set_mandatory ( doca_argp_param* param )
设置程序参数 param 是否为必需项,默认值为 false。
参数
param
程序参数。

描述
注意

传递 NULL 的 "param" 值将导致未定义的行为。


DOCA_EXPERIMENTAL void doca_argp_param_set_multiplicity ( doca_argp_param* param )
设置程序参数 param 是否会出现多次,默认值为 false。
参数
param
程序参数。

描述
注意
  • 传递 NULL 的 "param" 值将导致未定义的行为。

  • 由于 JSON 文件不支持键的多重性,因此多个值将位于数组中,并且参数参数类型将指示值的类型。


DOCA_EXPERIMENTAL void doca_argp_param_set_short_name ( doca_argp_param* param, const char* name )
设置程序参数 param 的短名称。
参数
param
程序参数。
name
参数的短名称

描述
注意
  • 传递 NULL 的 "param" 值将导致未定义的行为。

  • 应至少设置一个参数名称。


DOCA_EXPERIMENTAL void doca_argp_param_set_type ( doca_argp_param* param, doca_argp_type type )
设置参数参数的类型。
参数
param
程序参数。
type
参数参数的类型。

描述
注意
  • 传递 NULL 的 "param" 值将导致未定义的行为。

  • 设置参数参数类型是强制性的。


DOCA_EXPERIMENTAL doca_error_t doca_argp_register_param ( doca_argp_param* input_param )
注册程序标志。
参数
input_param
程序标志详情。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_INITIALIZATION - 接收到的参数缺少强制性字段初始化。
描述
注意
  • 在此函数中可能会更改 is_cli_only 字段的值。

  • ARGP 接管指针的所有权,并在失败时释放参数,包括失败的情况。


DOCA_EXPERIMENTAL doca_error_t doca_argp_register_validation_callback ( doca_argp_validation_cb_t callback )
注册程序验证回调函数。
参数
callback
程序验证回调。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述
注意

调用验证回调时,将传递一个参数,即程序配置结构体。


DOCA_EXPERIMENTAL doca_error_t doca_argp_register_version_callback ( doca_argp_param_cb_t callback )
注册备用版本回调。
参数
callback
程序特定的版本回调。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述
注意

: 调用版本回调时,程序将退出。


DOCA_EXPERIMENTAL void doca_argp_set_dpdk_program ( doca_argp_dpdk_cb_t callback )
设置关于程序配置的信息,如果它基于 DPDK API。
参数
callback
一旦 ARGP 完成解析 DPDK 标志,将通过调用此回调将其转发到程序。

描述
注意
  • 需要在设置程序 DPDK 类型之前调用 doca_argp_init。

  • 如果程序基于 DPDK API,DPDK 标志数组将使用回调发送,该数组将在调用 doca_argp_destroy 时释放。


DOCA_EXPERIMENTAL doca_error_t doca_argp_start ( int  argc, char** argv )
解析传入的参数 (cmd line/json)。
参数
argc
程序命令行参数的数量。
argv
程序命令行参数。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_NOT_SUPPORTED - 接收到不支持的程序标志。
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_IO_FAILED - 关于 JSON API 的内部错误,读取 JSON 内容。
  • DOCA_ERROR_NO_MEMORY - 无法分配足够的空间。
  • DOCA_ERROR_INITIALIZATION - 初始化错误。
描述
注意

: 如果程序基于 DPDK API,DPDK 标志将通过调用注册的回调转发给它。


DOCA_EXPERIMENTAL void doca_argp_usage ( void )
打印用法说明。
描述
注意

: 调用此函数时,程序将退出。



模块

 DOCA 缓冲区
 
 DOCA 缓冲区数组
 
 DOCA 缓冲区清单
 
 DOCA 缓冲池
 
 DOCA 上下文
 
 DOCA 设备
 
 DOCA 类型的操作
 

DOCA 类型的操作

DOCA 缓冲区

DOCA 缓冲区数组

DOCA 缓冲区清单

DOCA 缓冲池

DOCA 上下文

DOCA 设备

2.4.1. DOCA 类型操作

[ DOCA 核心 ]

DOCA 位域引入了 DOCA 类型上的位域操作,这些操作在许多库中都很常见。

宏定义
#define DOCA_BE16P_GENMASK ( _h, _l, _p )
#define DOCA_BE16P_SET ( _m, _v, _p )
#define DOCA_BE16_GENMASK ( _h, _l )
#define DOCA_BE16_GET ( _m, _f )
#define DOCA_BE16_SET ( _m, _v )
#define DOCA_BE32P_GENMASK ( _h, _l, _p )
#define DOCA_BE32P_SET ( _m, _v, _p )
#define DOCA_BE32_GENMASK ( _h, _l )
#define DOCA_BE32_GET ( _m, _f )
#define DOCA_BE32_SET ( _m, _v )
#define DOCA_BETOH16 ( _x ) _byteswap_ushort(_x)
#define DOCA_BETOH32 ( _x ) _byteswap_ulong(_x)
#define DOCA_HTOBE16 ( _x ) _byteswap_ushort(_x)
#define DOCA_HTOBE32 ( _x ) _byteswap_ulong(_x)
#define DOCA_SHIFT ( _x )
#define DOCA_U8P_GENMASK ( _h, _l, _p )
#define DOCA_U8P_SET ( _m, _v, _p )
#define DOCA_U8_GENMASK ( _h, _l )
#define DOCA_U8_GET ( _m, _f )
#define DOCA_U8_SET ( _m, _v )
函数
int  __doca_builtin_ffsll ( long long x )
宏定义
#define DOCA_BE16P_GENMASK ( _h, _l, _p )

DOCA_BE16P_GENMASK() - 从以下位置生成连续掩码_l位到_h位,放置在_p指向的内存中,以大端字节序排列

do { \ *(doca_be16_t *)_p = DOCA_BE16_GENMASK(_h, _l); \ } while (0)

参数
_h
最高位
_l
最低位
_p
doca_be16_t 的指针

#define DOCA_BE16P_SET ( _m, _v, _p )

DOCA_BE16P_SET() - 在以下位置设置位域段_p指向的 doca_be16_t 字段

DOCA_BE16P_SET() 掩码并上移值,并与 doca_be16_t 中的其他字段进行逻辑 OR 运算

do { \ doca_be16_t _tmp = *(doca_be16_t *)_p; \ \ _tmp |= DOCA_BE16_SET(_m, _v); \ *_p = _tmp; \ } while (0);

参数
_m
doca_be16_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值
_p
doca_be16_t,指向字段的指针

#define DOCA_BE16_GENMASK ( _h, _l )

DOCA_BE16_GENMASK() - 从以下位置生成连续掩码_l位到_h位,以大端字节序返回。例如,DOCA_BE16_GENMASK( 11, 4) -> htons(0x0FF0)

(DOCA_HTOBE16((UINT16_MAX - (UINT16_C(1) << (_l)) + 1) & (UINT16_MAX >> (16 - 1 - (_h)))))

参数
_h
最高位
_l
最低位

#define DOCA_BE16_GET ( _m, _f )

DOCA_BE16_GET() - 获取位域段值

DOCA_BE16_GET() 获取主机字节序中的字段值,由以下项指定_m从作为以下项传入的寄存器_f通过屏蔽并向下移位

((DOCA_BETOH16((_m) & (_f)) >> DOCA_SHIFT(DOCA_BETOH16(_m))))

参数
_m
doca_be16_t,移位掩码定义的字段宽度和位置
_f
doca_be16_t,整个寄存器值

#define DOCA_BE16_SET ( _m, _v )

DOCA_BE16_SET() - 在大端字节序中设置位域段并返回

DOCA_BE16_SET() 掩码并上移值,并在 doca_be16_t 中返回。返回值应与寄存器中的其他字段进行逻辑 OR 运算。

((DOCA_HTOBE16(_v << DOCA_SHIFT(DOCA_BETOH16(_m)))) & _m)

参数
_m
doca_be16_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值

#define DOCA_BE32P_GENMASK ( _h, _l, _p )

DOCA_BE32P_GENMASK() - 从以下位置生成连续掩码_l位到_h位,放置在_p指向的内存中,以大端字节序排列

do { \ *(doca_be32_t *)_p = DOCA_BE32_GENMASK(_h, _l); \ } while (0)

参数
_h
最高位
_l
最低位
_p
doca_be32_t 的指针

#define DOCA_BE32P_SET ( _m, _v, _p )

DOCA_BE32P_SET() - 在以下位置设置位域段_p指向的 doca_be32_t 字段

DOCA_BE32P_SET() 掩码并上移值,并与 doca_be32_t 中的其他字段进行逻辑 OR 运算

do { \ doca_be32_t _tmp = *(doca_be32_t *)_p; \ \ _tmp |= DOCA_BE32_SET(_m, _v); \ *_p = _tmp; \ } while (0);

参数
_m
doca_be32_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值
_p
doca_be32_t,指向字段的指针

#define DOCA_BE32_GENMASK ( _h, _l )

DOCA_BE32_GENMASK() - 从以下位置生成连续掩码_l位到_h位,以大端字节序返回。例如,DOCA_BE32_GENMASK( 23, 4) -> htonl(0x00FFFFF0)

(DOCA_HTOBE32((UINT32_MAX - (UINT32_C(1) << (_l)) + 1) & (UINT32_MAX >> (32 - 1 - (_h)))))

参数
_h
最高位
_l
最低位

#define DOCA_BE32_GET ( _m, _f )

DOCA_BE32_GET() - 获取位域段值

DOCA_BE32_GET() 获取主机字节序中的字段值,由以下项指定_m从作为以下项传入的寄存器_f通过屏蔽并向下移位

((DOCA_BETOH32((_m) & (_f)) >> DOCA_SHIFT(DOCA_BETOH32(_m))))

参数
_m
doca_be32_t,移位掩码定义的字段宽度和位置
_f
doca_be32_t,整个寄存器值

#define DOCA_BE32_SET ( _m, _v )

DOCA_BE32_SET() - 在大端字节序中设置位域段并返回

DOCA_BE32_SET() 掩码并上移值,并在 doca_be32_t 中返回。返回值应与寄存器中的其他字段进行逻辑 OR 运算。

((DOCA_HTOBE32(_v << DOCA_SHIFT(DOCA_BETOH32(_m)))) & _m)

参数
_m
doca_be32_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值

#define DOCA_BETOH16 ( _x ) _byteswap_ushort(_x)

DOCA_BETOH16() - 将 16 位从大端字节序转换为主机字节序

参数
_x
value

#define DOCA_BETOH32 ( _x ) _byteswap_ulong(_x)

DOCA_BETOH32() - 将 32 位从大端字节序转换为主机字节序

参数
_x
value

#define DOCA_HTOBE16 ( _x ) _byteswap_ushort(_x)

DOCA_HTOBE16() - 将 16 位类型从主机字节序转换为大端字节序

参数
_x
value

#define DOCA_HTOBE32 ( _x ) _byteswap_ulong(_x)

DOCA_HTOBE32() - 将 32 位类型从主机字节序转换为大端字节序

参数
_x
value

#define DOCA_SHIFT ( _x )

DOCA_SHIFT() - 获取移位的位数

(__doca_builtin_ffsll(_x) - 1)

参数
_x
value

#define DOCA_U8P_GENMASK ( _h, _l, _p )

DOCA_U8P_GENMASK() - 从以下位置生成连续掩码_l位到_h位,放置在_p指向的内存中,以主机字节序排列

do { \ *(uint8_t *)_p = DOCA_U8_GENMASK(_h, _l); \ } while (0)

参数
_h
最高位
_l
最低位
_p
uint8_t 的指针

#define DOCA_U8P_SET ( _m, _v, _p )

DOCA_U8P_SET() - 在以下位置设置位域段_p指向的 uint8_t 字段

DOCA_U8P_SET() 掩码并上移值,并与 uint8_t 中的其他字段进行逻辑 OR 运算

do { \ uint8_t _tmp = *(uint8_t *)_p; \ \ _tmp |= DOCA_U8_SET(_m, _v); \ *_p = _tmp; \ } while (0);

参数
_m
uint8_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值
_p
uint8_t,指向字段的指针

#define DOCA_U8_GENMASK ( _h, _l )

DOCA_U8_GENMASK() - 从以下位置生成连续掩码_l位到_h位,以主机字节序返回。例如,DOCA_U8_GENMASK( 7, 4) -> 0xF0

((UINT8_MAX - (UINT8_C(1) << (_l)) + 1) & (UINT8_MAX >> (8 - 1 - (_h))))

参数
_h
最高位
_l
最低位

#define DOCA_U8_GET ( _m, _f )

DOCA_U8_GET() - 获取位域段值

DOCA_U8_GET() 获取主机字节序中的字段值,由以下项指定_m从作为以下项传入的寄存器_f通过屏蔽并向下移位

(((_m) & (_f)) >> DOCA_SHIFT((_m)))

参数
_m
uint8_t,移位掩码定义的字段宽度和位置
_f
uint8_t,整个寄存器值

#define DOCA_U8_SET ( _m, _v )

DOCA_U8_SET() - 在主机字节序中设置位域段并返回

DOCA_U8_SET() 掩码并上移值,并在 uint8_t 中返回。返回值应与寄存器中的其他字段进行逻辑 OR 运算。

((_v << DOCA_SHIFT(_m)) & _m)

参数
_m
uint8_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值

函数
int __doca_builtin_ffsll ( long long x )

参数
x
value

返回值

: 最低有效位 1 的索引加 1;如果 x 为零,则返回零。

描述

__doca_builtin_ffsll() - windows 上的内部实现,等同于 gnu 的 __builtin_ffsll();

2.4.2. DOCA 缓冲区

[ DOCA 核心 ]

DOCA 缓冲区用于引用数据。它保存属于 DOCA 内存映射的内存区域的信息,并且其描述符是从 DOCA 缓冲区库存中分配的。

函数
DOCA_STABLE doca_error_t doca_buf_chain_list ( doca_buf* list1, doca_buf* list2 )
将 list2 附加到 list1。
DOCA_STABLE doca_error_t doca_buf_dec_refcount ( doca_buf* buf, uint16_t* refcount )
将对象的引用计数减 1,如果达到 0,则将元素返回到库存。
DOCA_STABLE doca_error_t doca_buf_get_data ( const doca_buf* buf, void** data )
获取缓冲区的数据。
DOCA_STABLE doca_error_t doca_buf_get_data_len ( const doca_buf* buf, size_t* data_len )
获取缓冲区的数据长度。
DOCA_STABLE doca_error_t doca_buf_get_head ( const doca_buf* buf, void** head )
获取缓冲区的头部。
DOCA_STABLE doca_error_t doca_buf_get_last_in_list ( doca_buf* buf, doca_buf** last_buf )
获取链接列表中的最后一个 DOCA 缓冲区。
DOCA_STABLE doca_error_t doca_buf_get_len ( const doca_buf* buf, size_t* len )
获取缓冲区的长度。
DOCA_STABLE doca_error_t doca_buf_get_list_len ( const doca_buf* buf, uint32_t* num_elements )
获取列表中的元素数量。
DOCA_STABLE doca_error_t doca_buf_get_next_in_list ( doca_buf* buf, doca_buf** next_buf )
获取链接列表中的下一个 DOCA 缓冲区。
DOCA_STABLE doca_error_t doca_buf_get_refcount ( const doca_buf* buf, uint16_t* refcount )
获取对象的引用计数。
DOCA_STABLE doca_error_t doca_buf_inc_refcount ( doca_buf* buf, uint16_t* refcount )
将对象的引用计数增加 1。
DOCA_STABLE doca_error_t doca_buf_is_first_in_list ( const doca_buf* buf, uint8_t* is_first )
检查提供的 DOCA 缓冲区是否为链接列表中的第一个元素。
DOCA_STABLE doca_error_t doca_buf_is_in_list ( const doca_buf* buf, uint8_t* is_in_list )
检查提供的 DOCA 缓冲区是否为链接列表。
DOCA_STABLE doca_error_t doca_buf_is_last_in_list ( const doca_buf* buf, uint8_t* is_last )
检查提供的 DOCA Buf 是否为链表中的最后一个元素。
DOCA_STABLE doca_error_t doca_buf_reset_data_len ( doca_buf* buf )
DOCA_STABLE doca_error_t doca_buf_set_data ( doca_buf* buf, void* data, size_t data_len )
DOCA_STABLE doca_error_t doca_buf_set_data_len ( doca_buf* buf, size_t data_len )
DOCA_STABLE doca_error_t doca_buf_unchain_list ( doca_buf* list1, doca_buf* list2 )
将 list2 从 list1 中分离。
函数
DOCA_STABLE doca_error_t doca_buf_chain_list ( doca_buf* list1, doca_buf* list2 )
将 list2 附加到 list1。
参数
list1
代表 list1 的 DOCA Buf。 必须非空,且必须为列表的头部。
list2
代表 list2 的 DOCA Buf。 必须非空,且必须为列表的头部。 引用计数必须为 1。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_NOT_PERMITTED - 如果 list2 的引用计数不为 1。
描述
复制
已复制!
            

‎ Before: +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 | +----+ +----+ +----+ +----+ +----+ list2 -> |4 |->|5 | +----+ +----+ After: +----+ +----+ +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 |->|4 |->|5 | +----+ +----+ +----+ +----+ +----+ / list2


DOCA_STABLE doca_error_t doca_buf_dec_refcount ( doca_buf* buf, uint16_t* refcount )
将对象的引用计数减 1,如果达到 0,则将元素返回到库存。
参数
buf
DOCA Buf 元素。 必须非空。
refcount
此操作发生前,对象的引用数量。 可以为空。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NOT_PERMITTED - buf 是某些列表中的下一个元素。
  • DOCA_ERROR_BAD_STATE - 引用计数已为 0。
描述

当引用计数达到 0 时,应释放所有相关资源。 例如,如果元素指向某些 mmap,则其状态将相应地调整。

注意

对于列表,如果头部的引用计数达到 0,则将释放列表中的所有缓冲区。


DOCA_STABLE doca_error_t doca_buf_get_data ( const doca_buf* buf, void** data )
获取缓冲区的数据。
参数
buf
DOCA Buf 元素。 必须非空。
data
缓冲区的数据。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_get_data_len ( const doca_buf* buf, size_t* data_len )
获取缓冲区的数据长度。
参数
buf
DOCA Buf 元素。 必须非空。
data_len
缓冲区的数据长度。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_get_head ( const doca_buf* buf, void** head )
获取缓冲区的头部。
参数
buf
DOCA Buf 元素。 必须非空。
head
缓冲区的头部。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_get_last_in_list ( doca_buf* buf, doca_buf** last_buf )
获取链接列表中的最后一个 DOCA 缓冲区。
参数
buf
DOCA Buf 元素。
last_buf
链表中的最后一个 DOCA Buf,可能为 buf 本身。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

DOCA_STABLE doca_error_t doca_buf_get_len ( const doca_buf* buf, size_t* len )
获取缓冲区的长度。
参数
buf
DOCA Buf 元素。 必须非空。
len
缓冲区的长度。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_get_list_len ( const doca_buf* buf, uint32_t* num_elements )
获取列表中的元素数量。
参数
buf
DOCA Buf 元素。 Buf 必须为列表的头部。
num_elements
列表中的元素数量。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NOT_PERMITTED - 如果缓冲区不是列表的头部。
描述

DOCA_STABLE doca_error_t doca_buf_get_next_in_list ( doca_buf* buf, doca_buf** next_buf )
获取链接列表中的下一个 DOCA 缓冲区。
参数
buf
DOCA Buf 元素。 必须非空。
next_buf
链表中的下一个 DOCA Buf,如果列表中没有其他元素,则 *next_buf 将为空。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_get_refcount ( const doca_buf* buf, uint16_t* refcount )
获取对象的引用计数。
参数
buf
DOCA Buf 元素。 必须非空。
refcount
对象的引用数量。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_inc_refcount ( doca_buf* buf, uint16_t* refcount )
将对象的引用计数增加 1。
参数
buf
DOCA Buf 元素。
refcount
此操作发生前,对象的引用数量。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NOT_PERMITTED - buf 是某些列表中的下一个元素。
  • DOCA_ERROR_TOO_BIG - 引用计数已达到最大值 UINT16_MAX。
描述
注意

对于列表,所有中间缓冲区的引用计数始终为 1。 因此,引用计数仅针对头部进行管理。


DOCA_STABLE doca_error_t doca_buf_is_first_in_list ( const doca_buf* buf, uint8_t* is_first )
检查提供的 DOCA 缓冲区是否为链接列表中的第一个元素。
参数
buf
DOCA Buf 元素。
is_first
如果 buf 是第一个元素,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_is_in_list ( const doca_buf* buf, uint8_t* is_in_list )
检查提供的 DOCA 缓冲区是否为链接列表。
参数
buf
DOCA Buf 元素。 必须非空。
is_in_list
如果 buf 是链表的一部分,则为 1,如果不是,则为 0。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_is_last_in_list ( const doca_buf* buf, uint8_t* is_last )
检查提供的 DOCA Buf 是否为链表中的最后一个元素。
参数
buf
DOCA Buf 元素。 必须非空。
is_last
如果 buf 是最后一个元素,则为 1,否则为 0。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_reset_data_len ( doca_buf* buf )

参数
buf
DOCA Buf 元素。 必须非空。

返回值

DOCA_SUCCESS - 总是成功

描述

将数据长度重置为 0(数据仍将指向相同的位置)

复制
已复制!
            

‎ Data positioning: __data_len__ / \ +-----+--------------+--------------+ Before | |data | | +-----+--------------+--------------+ / data data_len = 0 / +-----+-----------------------------+ After | | | +-----+-----------------------------+ / data


DOCA_STABLE doca_error_t doca_buf_set_data ( doca_buf* buf, void* data, size_t data_len )

参数
buf
DOCA Buf 元素。 必须非空。
data
数据地址。 必须非空。
data_len
数据长度。

返回值

DOCA_SUCCESS - 总是成功

描述

设置数据指针和数据长度

复制
已复制!
            

‎ Data positioning: +-----------+-----+-----------------+ Before | |data | | +-----------+-----+-----------------+ __data_len__ / \ +-----+--------------+--------------+ After | |data | | +-----+--------------+--------------+ / data

注意

范围 [data, data + data_len] 必须在 [head, head + len] 内。 否则行为未定义。


DOCA_STABLE doca_error_t doca_buf_set_data_len ( doca_buf* buf, size_t data_len )

参数
buf
DOCA Buf 元素。 必须非空。
data_len
数据长度。

返回值

DOCA_SUCCESS - 总是成功

描述

设置数据长度

复制
已复制!
            

‎ Data positioning: __data_len__ / \ +-----+--------------+--------------+ Before | |data | | +-----+--------------+--------------+ / data ____data_len____ / \ +-----+------------------+----------+ After | |data | | +-----+------------------+----------+ / data

注意

范围 [data, data + data_len] 必须在 [head, head + len] 内。 否则行为未定义。


DOCA_STABLE doca_error_t doca_buf_unchain_list ( doca_buf* list1, doca_buf* list2 )
将 list2 从 list1 中分离。
参数
list1
代表 list1 的 DOCA Buf。 必须非空。
list2
代表 list2 的 DOCA Buf,list2 应包含在 list1 中。 list2 必须与 list1 不同。 必须非空。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果 list2 不是 list1 的一部分。
描述
复制
已复制!
            

‎ Before: +----+ +----+ +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 |->|4 |->|5 | +----+ +----+ +----+ +----+ +----+ / list2 After: +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 | +----+ +----+ +----+ +----+ +----+ list2 -> |4 |->|5 | +----+ +----+

注意

取消链接后,list2 的引用计数将始终为 1。


2.4.3. DOCA 缓冲区数组

[ DOCA 核心 ]

DOCA 缓冲区数组表示固定大小的 doca_buf 数组(用于多个 doca_dev)。 可以充当空闲列表或直接访问模式。

类型定义
typedef uint64_t  doca_dpa_dev_buf_arr_t
表示 DPA 上 doca_buf_arr 句柄的类型。
函数
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_create ( size_t num_elem, doca_buf_arr** buf_arr )
分配一个 doca_buf_arr。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_destroy ( doca_buf_arr* buf_arr )
销毁 doca 缓冲区数组实例。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_get_dpa_handle ( const doca_buf_arr* buf_arr, doca_dpa_dev_buf_arr_t* dpa_buf_arr )
检索 doca_buf_arr 的 dpa 内存空间中的句柄。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_get_gpu_handle ( const doca_buf_arr* buf_arr, doca_gpu_buf_arr** gpu_buf_arr )
检索 doca_buf_arr 的 gpu 内存空间中的句柄。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_params ( doca_buf_arr* buf_arr, doca_mmap* mmap, size_t elem_size, uint64_t start_offset )
设置缓冲区数组参数。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_target_dpa ( doca_buf_arr* buf_arr, doca_dpa* dpa_handler )
配置要在 dpa 设备上创建的缓冲区数组。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_target_gpu ( doca_buf_arr* buf_arr, doca_gpu* gpu_handler )
配置要在 gpu 设备上创建的缓冲区数组。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_start ( doca_buf_arr* buf_arr )
此方法启用 doca_bufs 的分配。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_stop ( doca_buf_arr* buf_arr )
停止已启动的 doca 缓冲区数组。
类型定义
typedef uint64_t doca_dpa_dev_buf_arr_t

表示 DPA 上 doca_buf_arr 句柄的类型。

函数
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_create ( size_t num_elem, doca_buf_arr** buf_arr )
分配一个 doca_buf_arr。
参数
num_elem
doca_buf_arr 中的元素数量(必须 > 0)。
buf_arr
新创建的 doca_buf_arr。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_buf_arr 失败。
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_destroy ( doca_buf_arr* buf_arr )
销毁 doca 缓冲区数组实例。
参数
buf_arr
要销毁的 doca_buf_arr

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

销毁操作会隐式停止缓冲区数组。

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_get_dpa_handle ( const doca_buf_arr* buf_arr, doca_dpa_dev_buf_arr_t* dpa_buf_arr )
检索 doca_buf_arr 的 dpa 内存空间中的句柄。
参数
buf_arr
doca_buf_arr
dpa_buf_arr
指向 dpa 内存空间中句柄的指针

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 doca_buf_arr 未启动。
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_get_gpu_handle ( const doca_buf_arr* buf_arr, doca_gpu_buf_arr** gpu_buf_arr )
检索 doca_buf_arr 的 gpu 内存空间中的句柄。
参数
buf_arr
doca_buf_arr
gpu_buf_arr
指向 gpu 内存空间中句柄的指针

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 doca_buf_arr 未启动。
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_params ( doca_buf_arr* buf_arr, doca_mmap* mmap, size_t elem_size, uint64_t start_offset )
设置缓冲区数组参数。
参数
buf_arr
doca_buf_arr
mmap
管理内存块的 mmap。 必须使用内存块填充。
elem_size
单个元素的大小(以字节为单位,必须 > 0)。
start_offset
从 mmap 起始位置到设置 doca_buf_arr 的偏移量。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 doca_buf_arr 已启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_target_dpa ( doca_buf_arr* buf_arr, doca_dpa* dpa_handler )
配置要在 dpa 设备上创建的缓冲区数组。
参数
buf_arr
doca_buf_arr
dpa_handler
dpa 设备句柄。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 doca_buf_arr 已启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_target_gpu ( doca_buf_arr* buf_arr, doca_gpu* gpu_handler )
配置要在 gpu 设备上创建的缓冲区数组。
参数
buf_arr
doca_buf_arr
gpu_handler
gpu 设备句柄。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 doca_buf_arr 已启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_start ( doca_buf_arr* buf_arr )
此方法启用 doca_bufs 的分配。
参数
buf_arr
要启动的 doca_buf_arr

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE -
  • DOCA_ERROR_NO_MEMORY -
描述
注意

在调用此函数之前,必须启动创建缓冲区数组的 mmap。


DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_stop ( doca_buf_arr* buf_arr )
停止已启动的 doca 缓冲区数组。
参数
buf_arr
要停止的 doca_buf_arr

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述
注意

停止操作不必在销毁操作之前调用(销毁操作会隐式停止缓冲区数组)。


2.4.4. DOCA 缓冲区清单

[ DOCA 核心 ]

DOCA 缓冲区清单管理 doca_buf 对象的池。 从清单中获得的每个缓冲区都是一个描述符,指向用户选择的 doca_mmap 内存范围中的内存区域。

函数
DOCA_STABLE doca_error_t doca_buf_inventory_buf_dup ( doca_buf_inventory* inventory, const doca_buf* src_buf, doca_buf** dst_buf )
将 `buf` 参数的内容复制到从缓冲区清单分配的元素中。(即,深拷贝)。
doca_error_t doca_buf_inventory_buf_get_by_addr ( doca_buf_inventory* inventory, doca_mmap* mmap, void* addr, size_t len, doca_buf** buf )
从缓冲区清单中分配单个元素,并将其指向由 `addr` & `len` 参数定义的缓冲区。
DOCA_STABLE doca_error_t doca_buf_inventory_buf_get_by_args ( doca_buf_inventory* inventory, doca_mmap* mmap, void* addr, size_t len, void* data, size_t data_len, doca_buf** buf )
从缓冲区清单中分配单个元素,并将其指向由 `addr`、`len`、`data` 和 `data_len` 参数定义的缓冲区。
doca_error_t doca_buf_inventory_buf_get_by_data ( doca_buf_inventory* inventory, doca_mmap* mmap, void* data, size_t data_len, doca_buf** buf )
从缓冲区清单中分配单个元素,并将其指向由 `data` & `data_len` 参数定义的缓冲区。
DOCA_STABLE doca_error_t doca_buf_inventory_create ( size_t num_elements, doca_buf_inventory** inventory )
分配具有默认/未设置属性的缓冲区清单。
DOCA_STABLE doca_error_t doca_buf_inventory_destroy ( doca_buf_inventory* inventory )
销毁缓冲区清单结构。
DOCA_EXPERIMENTAL doca_error_t doca_buf_inventory_expand ( doca_buf_inventory* inventory, uint32_t num_elements )
扩展清单。
DOCA_STABLE doca_error_t doca_buf_inventory_get_num_elements ( const doca_buf_inventory* inventory, uint32_t* num_of_elements )
读取 DOCA 缓冲区清单中的元素总数。
DOCA_STABLE doca_error_t doca_buf_inventory_get_num_free_elements ( const doca_buf_inventory* inventory, uint32_t* num_of_free_elements )
获取 DOCA 缓冲区清单中的空闲元素总数。
DOCA_STABLE doca_error_t doca_buf_inventory_get_user_data ( const doca_buf_inventory* inventory, doca_data* user_data )
获取 DOCA 缓冲区清单的 user_data。
DOCA_STABLE doca_error_t doca_buf_inventory_set_user_data ( doca_buf_inventory* inventory, doca_data user_data )
为 DOCA 缓冲区清单设置 user_data。
DOCA_STABLE doca_error_t doca_buf_inventory_start ( doca_buf_inventory* inventory )
开始从清单中检索元素。
DOCA_STABLE doca_error_t doca_buf_inventory_stop ( doca_buf_inventory* inventory )
停止从清单中检索元素。
函数
DOCA_STABLE doca_error_t doca_buf_inventory_buf_dup ( doca_buf_inventory* inventory, const doca_buf* src_buf, doca_buf** dst_buf )
将 `buf` 参数的内容复制到从缓冲区清单分配的元素中。(即,深拷贝)。
参数
inventory
将保存新 doca_buf 的缓冲区清单结构。
src_buf
要复制的 DOCA buf。
dst_buf
重复的 DOCA Buf。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 src_buf mmap 或输入清单未启动/已停止。
  • DOCA_ERROR_NOT_PERMITTED - 如果 src_buf 是列表的一部分,并且不是其头部。
  • DOCA_ERROR_NO_MEMORY - 如果无法从给定清单中分配新的 doca_buf。
描述

调用 doca_buf_dec_refcount 以将缓冲区返回到清单(直到引用计数 == 0)。

doca_error_t doca_buf_inventory_buf_get_by_addr ( doca_buf_inventory* inventory, doca_mmap* mmap, void* addr, size_t len, doca_buf** buf ) [inline]
从缓冲区清单中分配单个元素,并将其指向由 `addr` & `len` 参数定义的缓冲区。
参数
inventory
DOCA Buf 清单。 必须非空且必须已启动。
mmap
DOCA 内存映射结构。 必须非空且必须已启动。
addr
有效负载的起始地址。
len
有效负载的长度(以字节为单位)。
buf
使用参数分配和初始化的 Doca buf。 必须非空。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NO_MEMORY - 如果 doca_buf_inventory 为空。
描述

调用 doca_buf_dec_refcount 以将缓冲区返回到清单(直到引用计数 == 0)。

DOCA_STABLE doca_error_t doca_buf_inventory_buf_get_by_args ( doca_buf_inventory* inventory, doca_mmap* mmap, void* addr, size_t len, void* data, size_t data_len, doca_buf** buf )
从缓冲区清单中分配单个元素,并将其指向由 `addr`、`len`、`data` 和 `data_len` 参数定义的缓冲区。
参数
inventory
DOCA Buf 清单。 必须非空且必须已启动。
mmap
DOCA 内存映射结构。 必须非空且必须已启动。
addr
缓冲区的起始地址。
len
缓冲区的长度(以字节为单位)。
data
缓冲区内数据的起始地址。
data_len
数据的长度(以字节为单位)。
buf
使用参数分配和初始化的 Doca buf。 必须非空。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 或如果没有适用于给定地址和长度的内存范围。
  • DOCA_ERROR_NO_MEMORY - 如果 doca_buf_inventory 为空。
描述

调用 doca_buf_dec_refcount 以将缓冲区返回到清单(直到引用计数 == 0)。

注意

范围 [data, data + data_len] 必须适合 [addr, addr +len] 范围内。 否则行为未定义。


doca_error_t doca_buf_inventory_buf_get_by_data ( doca_buf_inventory* inventory, doca_mmap* mmap, void* data, size_t data_len, doca_buf** buf ) [inline]
从缓冲区清单中分配单个元素,并将其指向由 `data` & `data_len` 参数定义的缓冲区。
参数
inventory
DOCA Buf 清单。 必须非空且必须已启动。
mmap
DOCA 内存映射结构。 必须非空且必须已启动。
data
缓冲区内数据的起始地址。
data_len
数据的长度(以字节为单位)。
buf
使用参数分配和初始化的 Doca buf。 必须非空。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NO_MEMORY - 如果 doca_buf_inventory 为空。
描述

调用 doca_buf_dec_refcount 以将缓冲区返回到清单(直到引用计数 == 0)。

DOCA_STABLE doca_error_t doca_buf_inventory_create ( size_t num_elements, doca_buf_inventory** inventory )
分配具有默认/未设置属性的缓冲区清单。
参数
num_elements
清单中的初始元素数量。
inventory
具有默认/未设置属性的缓冲区清单。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_buf_inventory 失败。
描述

可以使用 doca_buf_inventory_property_set() API 操作返回的对象。 设置所有必需的属性后,应重新配置并调整以满足 doca_buf_inventory_start() 中的设置。 有关其余详细信息,请参见 doca_buf_inventory_start。

DOCA_STABLE doca_error_t doca_buf_inventory_destroy ( doca_buf_inventory* inventory )
销毁缓冲区清单结构。
参数
inventory
缓冲区清单结构。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_IN_USE - 如果并非所有已分配的元素都已返回到清单。
描述

在调用此函数之前,应将所有已分配的元素返回到清单。 销毁操作会隐式停止缓冲区清单。 调用 doca_buf_dec_refcount 以将缓冲区返回到清单(直到引用计数 == 0)。

DOCA_EXPERIMENTAL doca_error_t doca_buf_inventory_expand ( doca_buf_inventory* inventory, uint32_t num_elements )
扩展清单。
参数
inventory
要扩展的清单
num_elements
要添加到清单的 doca_bufs 数量

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - 清单未启动。
描述

向清单添加更多 doca_bufs。

DOCA_STABLE doca_error_t doca_buf_inventory_get_num_elements ( const doca_buf_inventory* inventory, uint32_t* num_of_elements )
读取 DOCA 缓冲区清单中的元素总数。
参数
inventory
DOCA 缓冲区清单。
num_of_elements
清单中的元素总数。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

元素总数类型:uint32_t。

DOCA_STABLE doca_error_t doca_buf_inventory_get_num_free_elements ( const doca_buf_inventory* inventory, uint32_t* num_of_free_elements )
获取 DOCA 缓冲区清单中的空闲元素总数。
参数
inventory
DOCA 缓冲区清单。
num_of_free_elements
清单中的空闲元素总数。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

空闲元素总数类型:uint32_t。

DOCA_STABLE doca_error_t doca_buf_inventory_get_user_data ( const doca_buf_inventory* inventory, doca_data* user_data )
获取 DOCA 缓冲区清单的 user_data。
参数
inventory
DOCA 缓冲区清单。
user_data
清单的 user_data(如果已设置),否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

在创建时提供给清单的 user_data。

DOCA_STABLE doca_error_t doca_buf_inventory_set_user_data ( doca_buf_inventory* inventory, doca_data user_data )
为 DOCA 缓冲区清单设置 user_data。
参数
inventory
DOCA 缓冲区清单。
user_data
要为清单设置的 user_data。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - 如果清单未启动/已停止。
描述

DOCA_STABLE doca_error_t doca_buf_inventory_start ( doca_buf_inventory* inventory )
开始从清单中检索元素。
参数
inventory
缓冲区清单结构。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

未启动/已停止的缓冲区清单拒绝所有检索元素的尝试。 首次启动时,验证并完成缓冲区清单对象配置。

以下操作仅在启动后才可能实现

首次调用启动后,以下操作不可能实现

  • 使用 doca_buf_inventory_property_set() 设置清单的属性。

DOCA_STABLE doca_error_t doca_buf_inventory_stop ( doca_buf_inventory* inventory )
停止从清单中检索元素。
参数
inventory
缓冲区清单结构。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

对于已停止的清单,无法检索元素。 停止操作不必在销毁操作之前调用(销毁操作会隐式停止缓冲区清单)。 有关详细信息,请参见 doca_buf_inventory_start()

2.4.5. DOCA 缓冲区池

[ DOCA 核心 ]

DOCA 缓冲区池是 doca_buf 对象的池,这样每个 doca_buf 都设置有一个永久的、固定大小的内存缓冲区,从创建到销毁,这样可以立即分配 doca_buf 对象。

复制
已复制!
            

‎ Basic structure example of a Buffer Pool (after creation): +------------------------------------------+ | memory range | +-----------+ | +--------+ +--------+ +--------+ | | doca_mmap |-----------| | buffer | | buffer | | buffer | | +-----------+ | +--------+ +--------+ ..... +--------+ | | \ \ \ | +------------------------------------------+ \ \ \ \ \ \ +--------------------------------------------+ | | | | | +---------------+ | +----------+ +----------+ +----------+ | | doca_buf_pool |-------| | doca_buf | | doca_buf | | doca_buf | | +---------------+ | +----------+ +----------+ ....+----------+ | +--------------------------------------------+


函数
DOCA_STABLE doca_error_t doca_buf_pool_buf_alloc ( doca_buf_pool* buf_pool, doca_buf** buf )
此方法从 DOCA 缓冲区池获取 doca_buf,指向已分配的空缓冲区。
DOCA_STABLE doca_error_t doca_buf_pool_create ( size_t num_elements, size_t element_size, const doca_mmap* mmap, doca_buf_pool** buf_pool )
分配缓冲区池并使用 doca_buf 对象进行设置。
DOCA_STABLE doca_error_t doca_buf_pool_destroy ( doca_buf_pool* buf_pool )
销毁缓冲区池结构。
DOCA_STABLE doca_error_t doca_buf_pool_get_element_alignment ( const doca_buf_pool* buf_pool, size_t* element_alignment )
获取 DOCA 缓冲区池的元素对齐方式。
DOCA_STABLE doca_error_t doca_buf_pool_get_num_elements ( const doca_buf_pool* buf_pool, uint32_t* num_of_elements )
获取在创建 DOCA 缓冲区池时设置的元素数量。
DOCA_STABLE doca_error_t doca_buf_pool_get_num_free_elements ( const doca_buf_pool* buf_pool, uint32_t* num_of_free_elements )
获取 DOCA 缓冲区池中可用于分配的空闲元素总数。
DOCA_STABLE doca_error_t doca_buf_pool_get_user_data ( const doca_buf_pool* buf_pool, doca_data* user_data )
获取 DOCA 缓冲区池的 user_data。
DOCA_STABLE doca_error_t doca_buf_pool_set_element_alignment ( doca_buf_pool* buf_pool, size_t element_alignment )
为 DOCA 缓冲区池中的每个元素设置对齐方式。
DOCA_STABLE doca_error_t doca_buf_pool_set_user_data ( doca_buf_pool* buf_pool, doca_data user_data )
为 DOCA 缓冲区池设置 user_data。
DOCA_STABLE doca_error_t doca_buf_pool_start ( doca_buf_pool* buf_pool )
启动 DOCA 缓冲区池。
DOCA_STABLE doca_error_t doca_buf_pool_stop ( doca_buf_pool* buf_pool )
停止已启动的 DOCA 缓冲区池。
函数
DOCA_STABLE doca_error_t doca_buf_pool_buf_alloc ( doca_buf_pool* buf_pool, doca_buf** buf )
此方法从 DOCA 缓冲区池获取 doca_buf,指向已分配的空缓冲区。
参数
buf_pool
从中获取 doca_buf 的 DOCA buf_pool,该 buf_pool 设置为指向 doca_buf_pool_create() 处的内存缓冲区。
buf
指向已分配 doca_buf 的指针。

描述

调用 doca_buf_dec_refcount 以将缓冲区返回到池(直到引用计数 == 0)。

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。

  • DOCA_ERROR_BAD_STATE - 如果 buf_pool 未启动/已停止。

  • DOCA_ERROR_EMPTY - 如果 buf_pool 为空(所有 doca_bufs 都已分配)。

DOCA_STABLE doca_error_t doca_buf_pool_create ( size_t num_elements, size_t element_size, const doca_mmap* mmap, doca_buf_pool** buf_pool )
分配缓冲区池并使用 doca_buf 对象进行设置。
参数
num_elements
缓冲区池中的元素数量(必须 > 0)。
element_size
单个元素的大小(必须 > 0)。
mmap
管理内存块的 mmap。 必须使用内存块填充。
buf_pool
新创建的 DOCA buf_pool。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_buf_pool 失败。
描述

DOCA_STABLE doca_error_t doca_buf_pool_destroy ( doca_buf_pool* buf_pool )
销毁缓冲区池结构。
参数
buf_pool
要销毁的 DOCA buf_pool。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_IN_USE - 如果并非所有已分配的 doca_bufs 都已返回到 buf_pool。
描述

销毁操作会隐式停止缓冲区池。

注意

在调用此方法之前,应将所有已分配的 doca_bufs 返回到缓冲区池。 调用 doca_buf_dec_refcount 以将缓冲区返回到池(直到引用计数 == 0)。


DOCA_STABLE doca_error_t doca_buf_pool_get_element_alignment ( const doca_buf_pool* buf_pool, size_t* element_alignment )
获取 DOCA 缓冲区池的元素对齐方式。
参数
buf_pool
DOCA buf_pool。
element_alignment
buf_pool 的元素对齐方式。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述
注意

- 除非使用 doca_buf_pool_set_element_alignment() 设置,否则元素对齐方式默认为 1(表示不对齐)。


DOCA_STABLE doca_error_t doca_buf_pool_get_num_elements ( const doca_buf_pool* buf_pool, uint32_t* num_of_elements )
获取在创建 DOCA 缓冲区池时设置的元素数量。
参数
buf_pool
DOCA buf_pool。
num_of_elements
在 buf_pool 创建时设置的元素数量。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

DOCA_STABLE doca_error_t doca_buf_pool_get_num_free_elements ( const doca_buf_pool* buf_pool, uint32_t* num_of_free_elements )
获取 DOCA 缓冲区池中可用于分配的空闲元素总数。
参数
buf_pool
DOCA buf_pool。
num_of_free_elements
buf_pool 中的空闲元素总数。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

DOCA_STABLE doca_error_t doca_buf_pool_get_user_data ( const doca_buf_pool* buf_pool, doca_data* user_data )
获取 DOCA 缓冲区池的 user_data。
参数
buf_pool
DOCA buf_pool。
user_data
buf_pool 的 user_data(如果已设置),否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述
注意

- 除非使用 doca_buf_pool_set_user_data() 设置,否则 user data 默认为 0。


DOCA_STABLE doca_error_t doca_buf_pool_set_element_alignment ( doca_buf_pool* buf_pool, size_t element_alignment )
为 DOCA 缓冲区池中的每个元素设置对齐方式。
参数
buf_pool
DOCA buf_pool。
element_alignment
要为 buf_pool 设置的元素对齐方式(最小值是 1,必须是 2 的幂)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - 如果 buf_pool 已启动。
描述

DOCA_STABLE doca_error_t doca_buf_pool_set_user_data ( doca_buf_pool* buf_pool, doca_data user_data )
为 DOCA 缓冲区池设置 user_data。
参数
buf_pool
DOCA buf_pool。
user_data
要为 buf_pool 设置的 user_data。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - 如果 buf_pool 已启动。
描述

DOCA_STABLE doca_error_t doca_buf_pool_start ( doca_buf_pool* buf_pool )
启动 DOCA 缓冲区池。
参数
buf_pool
要启动的 DOCA buf_pool。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果 mmap 的内存范围小于根据 buf_pool 属性所需的范围大小。
  • DOCA_ERROR_BAD_STATE - 如果创建 buf_pool 的 mmap 未启动。
描述

此方法启用使用 doca_buf_pool_buf_alloc() 分配 doca_bufs。 在调用此方法之前,必须启动创建缓冲区池的 mmap。

以下操作仅在启动后才可能实现

当 buf_pool 启动时,以下操作不可能实现

  • 使用 doca_buf_pool_set_* 设置缓冲区池的属性。

DOCA_STABLE doca_error_t doca_buf_pool_stop ( doca_buf_pool* buf_pool )
停止已启动的 DOCA 缓冲区池。
参数
buf_pool
DOCA buf_pool 停止。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_IN_USE - 如果并非所有已分配的 doca_bufs 都已返回到 buf_pool。
描述

此方法禁用 doca_bufs 的分配,并重新启用使用 doca_buf_pool_set_* 设置缓冲区池的属性。在调用此方法之前,所有已分配的 doca_bufs 都应返回到缓冲区池。停止操作不是必须在销毁之前调用(销毁会隐式停止 buf 池)。

2.4.6. DOCA 上下文

[ DOCA 核心 ]

DOCA CTX 是 DOCA 中每个数据路径库的基类。它是一个特定的库/SDK 实例对象,提供抽象数据处理功能。该库公开了操作数据的事件和/或任务。

类型定义
typedef void  ( *doca_ctx_state_changed_callback_t )( const union doca_data user_data, doca_ctx*  ctx,  enum doca_ctx_states prev_state,  enum doca_ctx_states next_state )
上下文状态更改时执行的函数。
枚举
enum doca_ctx_states
此枚举定义了上下文的状态。
函数
DOCA_EXPERIMENTAL void doca_ctx_flush_tasks ( doca_ctx* ctx )
刷新在提交期间未刷新的任务。
DOCA_STABLE doca_error_t doca_ctx_get_num_inflight_tasks ( const doca_ctx* ctx, size_t* num_inflight_tasks )
获取 doca 上下文中正在运行的任务数。
DOCA_STABLE doca_error_t doca_ctx_get_state ( const doca_ctx* ctx, doca_ctx_states ** state )
获取上下文状态。
DOCA_STABLE doca_error_t doca_ctx_get_user_data ( const doca_ctx* ctx, doca_data* user_data )
从上下文中获取用户数据
DOCA_EXPERIMENTAL doca_error_t doca_ctx_set_datapath_on_dpa ( doca_ctx* ctx, doca_dpa* dpa_dev )
此函数将 DOCA 上下文绑定到 dpa 设备。
DOCA_EXPERIMENTAL doca_error_t doca_ctx_set_datapath_on_gpu ( doca_ctx* ctx, doca_gpu* gpu_dev )
此函数将 DOCA 上下文绑定到 gpu 设备。
DOCA_STABLE doca_error_t doca_ctx_set_state_changed_cb ( doca_ctx* ctx, doca_ctx_state_changed_callback_t cb )
设置状态更改回调。
DOCA_STABLE doca_error_t doca_ctx_set_user_data ( doca_ctx* ctx, doca_data user_data )
设置上下文的用户数据
DOCA_STABLE doca_error_t doca_ctx_start ( doca_ctx* ctx )
完成所有配置,并启动 DOCA CTX。
DOCA_STABLE doca_error_t doca_ctx_stop ( doca_ctx* ctx )
停止上下文,允许重新配置。
类型定义
void ( *doca_ctx_state_changed_callback_t )( const union doca_data user_data, doca_ctx*  ctx,  enum doca_ctx_states prev_state,  enum doca_ctx_states next_state )

上下文状态更改时执行的函数。当上下文状态更改时,将调用此函数。

另请参阅

doca_ctx_set_user_data)

参数
union doca_data user_data
ctx
状态已更改的 doca_ctx
enum doca_ctx_states prev_state
enum doca_ctx_states next_state

枚举
enum doca_ctx_states
复制
已复制!
            

‎ The state machine: +-------+ | | +----------------------->| idle + | | | | +---+---+ | | | | doca_ctx_start | | Synchronous: Change state to running and return DOCA_SUCCESS | | Asynchronous: Change state to started and return DOCA_ERROR_IN_PROGRESS | All in flight tasks are | | drained or flushed +-------------------------------------------+ | | | | | | | V V | +----------+ +---------+ | | | Context is connected | | | | Starting |------------------------------->| Running | | | | | | | +----+-----+ +----+----+ | | | | | doca_ctx_stop | doca_ctx_stop | | | | v | | +----------+ | | | | | |-----------------------+ Stopping |<------------------------------------+ | | +----------+


DOCA_CTX_STATE_IDLE = 0
ctx 已创建。资源未分配,ctx 无法分配任务、提交任务、分配事件或注册事件。
DOCA_CTX_STATE_STARTING = 1
已调用 doca_ctx_start,上下文启动是异步的。资源已分配,ctx 无法分配任务、提交任务、分配事件或注册事件。
DOCA_CTX_STATE_RUNNING = 2
已调用 doca_ctx_start(ctx 启动是同步的)或 ctx 连接已完成。资源已分配,ctx 可以分配任务、提交任务、分配事件和注册事件。
DOCA_CTX_STATE_STOPPING = 3

函数
DOCA_EXPERIMENTAL void doca_ctx_flush_tasks ( doca_ctx* ctx )
刷新在提交期间未刷新的任务。
参数
ctx
要刷新的 DOCA 上下文。 必须不是 IDLE 状态

描述

如果 doca_task_submit_ex() 期间未提供 DOCA_TASK_SUBMIT_FLAG_FLUSH,则可以使用此方法刷新正在运行的任务,而无需提交额外的任务。

DOCA_STABLE doca_error_t doca_ctx_get_num_inflight_tasks ( const doca_ctx* ctx, size_t* num_inflight_tasks )
获取 doca 上下文中正在运行的任务数。
参数
ctx
要查询的上下文
num_inflight_tasks
上下文中正在运行的任务总数

返回值

DOCA_SUCCESS 错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

此方法检索 doca 上下文中正在运行的任务数

DOCA_STABLE doca_error_t doca_ctx_get_state ( const doca_ctx* ctx, doca_ctx_states ** state )
获取上下文状态。
参数
ctx
从中获取状态的 doca_ctx
state
当前上下文状态

返回值

DOCA_SUCCESS 错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

此方法检索上下文状态

DOCA_STABLE doca_error_t doca_ctx_get_user_data ( const doca_ctx* ctx, doca_data* user_data )
从上下文中获取用户数据
参数
ctx
从中获取用户数据的 doca_ctx
user_data
要获取的用户数据

返回值

DOCA_SUCCESS 错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

此方法从上下文中检索用户数据(先前使用 doca_ctx_set_user_data 设置)。

DOCA_EXPERIMENTAL doca_error_t doca_ctx_set_datapath_on_dpa ( doca_ctx* ctx, doca_dpa* dpa_dev )
此函数将 DOCA 上下文绑定到 dpa 设备。
参数
ctx
库实例。
dpa_dev
指向 doca_dpa 设备的指针。

返回值

DOCA_SUCCESS - 成功时。 错误代码 - 失败时

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - CTX 已启动。
描述

数据路径将在设备上执行,而不是在 CPU 上执行。

DOCA_EXPERIMENTAL doca_error_t doca_ctx_set_datapath_on_gpu ( doca_ctx* ctx, doca_gpu* gpu_dev )
此函数将 DOCA 上下文绑定到 gpu 设备。
参数
ctx
库实例。
gpu_dev
指向 doca_gpu 设备的指针。

返回值

DOCA_SUCCESS - 成功时。 错误代码 - 失败时

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - CTX 已启动。
描述

数据路径将在设备上执行,而不是在 CPU 上执行。

DOCA_STABLE doca_error_t doca_ctx_set_state_changed_cb ( doca_ctx* ctx, doca_ctx_state_changed_callback_t cb )
设置状态更改回调。
参数
ctx
要设置回调的 doca_ctx
cb
doca_ctx_state_changed_callback_t

返回值

DOCA_SUCCESS 错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

此方法设置状态更改回调,该回调在每次上下文状态更改时调用

DOCA_STABLE doca_error_t doca_ctx_set_user_data ( doca_ctx* ctx, doca_data user_data )
设置上下文的用户数据
参数
ctx
要设置用户数据的 doca_ctx
user_data
要设置到上下文的 doca_data

返回值

DOCA_SUCCESS 错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

此方法将用户数据设置到上下文中。用户数据用作 doca_ctx_state_changed_callback_t 中的参数

DOCA_STABLE doca_error_t doca_ctx_start ( doca_ctx* ctx )
完成所有配置,并启动 DOCA CTX。
参数
ctx
要启动的 DOCA 上下文。

返回值

DOCA_SUCCESS - 成功时。 错误代码 - 失败时

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入或未向 CTX 添加任何设备。
  • DOCA_ERROR_NOT_SUPPORTED - CTX 不支持提供的设备之一。
  • DOCA_ERROR_NOT_CONNECTED - ctx 未连接到 PE,并且未设置 gpu 或 dpa 上的数据路径。
  • DOCA_ERROR_INITIALIZATION - 资源初始化失败(可能是由于分配失败),或者设备处于错误状态,或者其他原因导致初始化失败。
  • DOCA_ERROR_UNEXPECTED - ctx 已损坏。
描述

启动 CTX 后,无法再对其进行配置。 使用 doca_ctx_stop 以重新配置 CTX。

以下操作仅在启动后才可能实现

  • 使用 doca_task_submit() 提交任务

以下操作在启动后不可用,并在调用 doca_ctx_stop 后再次可用

DOCA_STABLE doca_error_t doca_ctx_stop ( doca_ctx* ctx )
停止上下文,允许重新配置。
参数
ctx
要停止的 DOCA 上下文。

返回值

DOCA_SUCCESS - 成功时。 错误代码 - 失败时

  • DOCA_ERROR_IN_PROGRESS - 某些任务仍在进行中。 CTX 将移动到停止状态,并且当上下文完全停止时,将调用状态更改回调。
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_CONNECTED - ctx 未连接到 PE,并且未设置 gpu 或 dpa 上的数据路径。
  • DOCA_ERROR_UNEXPECTED - ctx 已损坏。
描述

一旦上下文启动,就无法再对其进行配置。 如果在启动后需要配置上下文,则应调用此方法。 有关更多详细信息,请参见 doca_ctx_start()

2.4.7. DOCA 设备

[ DOCA 核心 ]

DOCA 设备表示由硬件或软件实现支持的可用处理单元。

宏定义
#define DOCA_DEVINFO_IBDEV_NAME_SIZE 64
用于保存 Infiniband/RoCE 设备名称的缓冲区大小。 包括空终止符。
#define DOCA_DEVINFO_IFACE_NAME_SIZE 256
用于保存网络接口名称的缓冲区大小。 包括空终止符。
#define DOCA_DEVINFO_IPV4_ADDR_SIZE 4
IPv4 地址的长度。
#define DOCA_DEVINFO_IPV6_ADDR_SIZE 16
IPv6 地址的长度。
#define DOCA_DEVINFO_MAC_ADDR_SIZE 6
MAC 地址的长度。
#define DOCA_DEVINFO_PCI_ADDR_SIZE 13
用于保存 PCI BDF 格式的缓冲区大小:“XXXX:XX:XX.X”。 包括空终止符。
#define DOCA_DEVINFO_PCI_BDF_SIZE 8
用于保存 PCI BDF 格式的缓冲区大小:“XX:XX.X”。 包括空终止符。
#define DOCA_DEVINFO_REP_PCI_ADDR_SIZE 13
用于保存 PCI BDF 格式的缓冲区大小:“XXXX:XX:XX.X”。 包括空终止符。
#define DOCA_DEVINFO_REP_PCI_BDF_SIZE 8
用于保存 PCI BDF 格式的缓冲区大小:“XX:XX.X”。 包括空终止符。
#define DOCA_DEVINFO_REP_VUID_SIZE 128
用于保存 VUID 的缓冲区大小。 包括空终止符。
#define DOCA_DEVINFO_VUID_SIZE 128
用于保存 VUID 的缓冲区大小。 包括空终止符。
枚举
enum doca_devinfo_rep_filter
函数
DOCA_STABLE doca_devinfo* doca_dev_as_devinfo ( const doca_dev* dev )
从设备获取本地设备信息。 当希望在打开设备并销毁 devinfo 列表后查询有关设备的信息时,这应该很有用。
DOCA_STABLE doca_error_t doca_dev_close ( doca_dev* dev )
销毁已分配的本地设备实例。
DOCA_STABLE doca_error_t doca_dev_open ( doca_devinfo* devinfo, doca_dev** dev )
初始化本地设备以供使用。
DOCA_STABLE doca_devinfo_rep* doca_dev_rep_as_devinfo ( doca_dev_rep* dev_rep )
从设备获取表示器设备信息。 当希望在打开设备并销毁 devinfo 列表后查询有关设备的信息时,这应该很有用。
DOCA_STABLE doca_error_t doca_dev_rep_close ( doca_dev_rep* dev )
销毁已分配的表示器设备实例。
DOCA_STABLE doca_error_t doca_dev_rep_open ( doca_devinfo_rep* devinfo, doca_dev_rep** dev_rep )
初始化表示器设备以供使用。
DOCA_STABLE doca_error_t doca_devinfo_cap_is_hotplug_manager_supported ( const doca_devinfo* devinfo, uint8_t* is_hotplug_manager )
获取 DOCA devinfo 的热插拔管理器功能。
DOCA_EXPERIMENTAL doca_error_t doca_devinfo_cap_is_notification_moderation_supported ( const doca_devinfo* devinfo, uint8_t* is_notification_moderation_supported )
检查设备是否支持通知节制。
DOCA_STABLE doca_error_t doca_devinfo_create_list ( doca_devinfo*** dev_list, uint32_t* nb_devs )
创建所有可用本地设备的列表。
DOCA_STABLE doca_error_t doca_devinfo_destroy_list ( doca_devinfo** dev_list )
销毁本地设备信息结构的列表。
DOCA_EXPERIMENTAL doca_error_t doca_devinfo_get_active_rate ( const doca_devinfo* devinfo, uint64_t* active_rate )
获取 DOCA devinfo 的有效速率。
DOCA_STABLE doca_error_t doca_devinfo_get_ibdev_name ( const doca_devinfo* devinfo, char* ibdev_name, uint32_t size )
获取 DOCA devinfo 表示的 IB 设备的名称。
DOCA_STABLE doca_error_t doca_devinfo_get_iface_name ( const doca_devinfo* devinfo, char* iface_name, uint32_t size )
获取 DOCA devinfo 的以太网接口的名称。
DOCA_STABLE doca_error_t doca_devinfo_get_ipv4_addr ( const doca_devinfo* devinfo, uint8_t* ipv4_addr, uint32_t size )
获取 DOCA devinfo 的 IPv4 地址。
DOCA_STABLE doca_error_t doca_devinfo_get_ipv6_addr ( const doca_devinfo* devinfo, uint8_t* ipv6_addr, uint32_t size )
获取 DOCA devinfo 的 IPv6 地址。
DOCA_STABLE doca_error_t doca_devinfo_get_lid ( const doca_devinfo* devinfo, uint16_t* lid )
获取 DOCA devinfo 的端口 LID。
DOCA_STABLE doca_error_t doca_devinfo_get_mac_addr ( const doca_devinfo* devinfo, uint8_t* mac_addr, uint32_t size )
获取 DOCA devinfo 的 MAC 地址。
DOCA_STABLE doca_error_t doca_devinfo_get_pci_addr_str ( const doca_devinfo* devinfo, char* pci_addr_str )
获取 DOCA devinfo 的 PCI 地址。
DOCA_STABLE doca_error_t doca_devinfo_is_equal_pci_addr ( const doca_devinfo* devinfo, const char* pci_addr_str, uint8_t* is_equal )
检查 PCI 地址是否属于 DOCA devinfo。
DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_all_supported ( const doca_devinfo* devinfo, uint8_t* filter_all_supported )
获取设备的表示器设备发现功能。
DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_emulated_supported ( const doca_devinfo* devinfo, uint8_t* filter_emulated_supported )
获取设备的远程模拟设备发现功能。
DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_net_supported ( const doca_devinfo* devinfo, uint8_t* filter_net_supported )
获取设备的远程网络发现功能。
DOCA_STABLE doca_error_t doca_devinfo_rep_create_list ( doca_dev* dev, int  filter, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
创建 dev 可访问的可用表示器设备列表。
DOCA_STABLE doca_error_t doca_devinfo_rep_destroy_list ( doca_devinfo_rep** dev_list_rep )
销毁表示器设备信息结构的列表。
DOCA_STABLE doca_error_t doca_devinfo_rep_get_is_hotplug ( const doca_devinfo_rep* devinfo_rep, uint8_t* is_hotplug )
查询表示器设备是否为热插拔设备。
DOCA_STABLE doca_error_t doca_devinfo_rep_get_pci_addr_str ( const doca_devinfo_rep* devinfo_rep, char* pci_addr_str )
获取 DOCA devinfo_rep 的 PCI 地址。
DOCA_STABLE doca_error_t doca_devinfo_rep_get_pci_func_type ( const doca_devinfo_rep* devinfo_rep, enum doca_pci_func_type* pci_func_type )
获取 DOCA devinfo_rep 的 PCI 功能类型。
DOCA_STABLE doca_error_t doca_devinfo_rep_get_vuid ( const doca_devinfo_rep* devinfo_rep, char* rep_vuid, uint32_t size )
获取表示器 DOCA devinfo 的供应商唯一 ID。
DOCA_STABLE doca_error_t doca_devinfo_rep_is_equal_pci_addr ( const doca_devinfo_rep* devinfo_rep, const char* pci_addr_str, uint8_t* is_equal )
检查 PCI 地址是否属于 DOCA devinfo_rep。
宏定义
#define DOCA_DEVINFO_IBDEV_NAME_SIZE 64

#define DOCA_DEVINFO_IFACE_NAME_SIZE 256

#define DOCA_DEVINFO_IPV4_ADDR_SIZE 4

#define DOCA_DEVINFO_IPV6_ADDR_SIZE 16

#define DOCA_DEVINFO_MAC_ADDR_SIZE 6

#define DOCA_DEVINFO_PCI_ADDR_SIZE 13

#define DOCA_DEVINFO_PCI_BDF_SIZE 8

#define DOCA_DEVINFO_REP_PCI_ADDR_SIZE 13

#define DOCA_DEVINFO_REP_PCI_BDF_SIZE 8

#define DOCA_DEVINFO_REP_VUID_SIZE 128

#define DOCA_DEVINFO_VUID_SIZE 128

枚举
enum doca_devinfo_rep_filter

按类型筛选表示器设备

可能有多个选项,但有些选项互斥。

DOCA_DEVINFO_REP_FILTER_ALL = 0
DOCA_DEVINFO_REP_FILTER_NET = 1<<1
DOCA_DEVINFO_REP_FILTER_EMULATED = 1<<2

函数
DOCA_STABLE doca_devinfo* doca_dev_as_devinfo ( const doca_dev* dev )
从设备获取本地设备信息。 当希望在打开设备并销毁 devinfo 列表后查询有关设备的信息时,这应该很有用。
参数
dev
doca 设备实例。

返回值

成功时匹配的 doca_devinfo 实例,如果 dev 无效或由 doca_rdma_bridge_open_dev_from_pd() 创建,则为 NULL。

描述

DOCA_STABLE doca_error_t doca_dev_close ( doca_dev* dev )
销毁已分配的本地设备实例。
参数
dev
本地 doca 设备实例。

返回值

DOCA_SUCCESS - 成功时。

  • DOCA_ERROR_IN_USE - 无法释放设备资源。
描述

关闭设备或将其引用计数减一。 如果同一个设备被多次打开,则只有最后一次调用 close 才会尝试销毁设备。

DOCA_STABLE doca_error_t doca_dev_open ( doca_devinfo* devinfo, doca_dev** dev )
初始化本地设备以供使用。
参数
devinfo
请求设备的 devinfo 结构。
dev
成功时初始化的本地 doca 设备实例。 仅在成功时有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 无法为设备分配保护域。
  • DOCA_ERROR_NOT_CONNECTED - 无法打开设备。
  • DOCA_ERROR_INITIALIZATION - 超出了最大打开设备数。
描述

打开设备或将其引用计数加一。 该设备稍后可以被其他库使用。 对于每次调用 doca_dev_open() 都应该调用 doca_dev_close()

DOCA_STABLE doca_devinfo_rep* doca_dev_rep_as_devinfo ( doca_dev_rep* dev_rep )
从设备获取表示器设备信息。 当希望在打开设备并销毁 devinfo 列表后查询有关设备的信息时,这应该很有用。
参数
dev_rep
表示器 doca 设备实例。

返回值

成功时匹配的 doca_devinfo_rep 实例,如果 dev_rep 无效,则为 NULL。

描述

DOCA_STABLE doca_error_t doca_dev_rep_close ( doca_dev_rep* dev )
销毁已分配的表示器设备实例。
参数
dev
表示器 doca 设备实例。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_IN_USE - 无法释放设备资源。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

DOCA_STABLE doca_error_t doca_dev_rep_open ( doca_devinfo_rep* devinfo, doca_dev_rep** dev_rep )
初始化表示器设备以供使用。
参数
devinfo
请求设备的 devinfo 结构。
dev_rep
成功时初始化的表示器 doca 设备实例。 仅在成功时有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 无法为设备分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

DOCA_STABLE doca_error_t doca_devinfo_cap_is_hotplug_manager_supported ( const doca_devinfo* devinfo, uint8_t* is_hotplug_manager )
获取 DOCA devinfo 的热插拔管理器功能。
参数
devinfo
要查询的设备。
is_hotplug_manager
如果支持热插拔管理器功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询功能支持。
描述

热插拔管理器属性类型:uint8_t*。

DOCA_EXPERIMENTAL doca_error_t doca_devinfo_cap_is_notification_moderation_supported ( const doca_devinfo* devinfo, uint8_t* is_notification_moderation_supported )
检查设备是否支持通知节制。
参数
devinfo
要查询的设备。
is_notification_moderation_supported
如果设备支持通知节制,则为 1

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询功能支持。
描述

通知节制支持类型:uint8_t*。

DOCA_STABLE doca_error_t doca_devinfo_create_list ( doca_devinfo*** dev_list, uint32_t* nb_devs )
创建所有可用本地设备的列表。
参数
dev_list
指向指针数组的指针。 然后可以按如下方式访问输出 (*dev_list)[idx]。
nb_devs
可用本地设备的数量。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 无法分配足够的空间。
  • DOCA_ERROR_NOT_FOUND - 无法获取 RDMA 设备列表
描述

列出有关可用设备的信息,要开始使用设备,您首先必须调用 doca_dev_open(),同时传递此列表的元素。 列表元素一旦销毁就变为无效。

注意

返回的列表必须使用 doca_devinfo_destroy_list() 销毁


DOCA_STABLE doca_error_t doca_devinfo_destroy_list ( doca_devinfo** dev_list )
销毁本地设备信息结构的列表。
参数
dev_list
要销毁的列表。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_IN_USE - 列表中的至少一个设备处于损坏状态。
描述

销毁设备信息列表,一旦列表被销毁,所有元素都变为无效。

DOCA_EXPERIMENTAL doca_error_t doca_devinfo_get_active_rate ( const doca_devinfo* devinfo, uint64_t* active_rate )
获取 DOCA devinfo 的有效速率。
参数
devinfo
要查询的设备。
active_rate
设备上给定端口的有效速率。 以比特/秒为单位给出。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询端口速率。
描述

DOCA_STABLE doca_error_t doca_devinfo_get_ibdev_name ( const doca_devinfo* devinfo, char* ibdev_name, uint32_t size )
获取 DOCA devinfo 表示的 IB 设备的名称。
参数
devinfo
要查询的设备。
ibdev_name
devinfo 表示的 IB 设备的名称。
size
输入 ibdev_name 缓冲区的大小,必须至少为 DOCA_DEVINFO_IBDEV_NAME_SIZE,其中包括空终止字节。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

IB 设备类型的名称:char[DOCA_DEVINFO_IBDEV_NAME_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_get_iface_name ( const doca_devinfo* devinfo, char* iface_name, uint32_t size )
获取 DOCA devinfo 的以太网接口的名称。
参数
devinfo
要查询的设备。
iface_name
devinfo 的以太网接口的名称。
size
输入 iface_name 缓冲区的大小,必须至少为 DOCA_DEVINFO_IFACE_NAME_SIZE,其中包括空终止字节。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_OPERATING_SYSTEM - 无法从操作系统获取接口名称
描述

以太网接口的名称与其在 ifconfig 中的名称相同。 以太网接口类型的名称:char[DOCA_DEVINFO_IFACE_NAME_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_get_ipv4_addr ( const doca_devinfo* devinfo, uint8_t* ipv4_addr, uint32_t size )
获取 DOCA devinfo 的 IPv4 地址。
参数
devinfo
要查询的设备。
ipv4_addr
devinfo 的 IPv4 地址。
size
输入 ipv4_addr 缓冲区的大小,必须至少为 DOCA_DEVINFO_IPV4_ADDR_SIZE

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_FOUND - 未分配 IPv4 地址
  • DOCA_ERROR_OPERATING_SYSTEM - 无法从操作系统获取 IPv4 地址
描述

IPv4 地址类型:uint8_t[DOCA_DEVINFO_IPV4_ADDR_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_get_ipv6_addr ( const doca_devinfo* devinfo, uint8_t* ipv6_addr, uint32_t size )
获取 DOCA devinfo 的 IPv6 地址。
参数
devinfo
要查询的设备。
ipv6_addr
devinfo 的 IPv6 地址。
size
输入 ipv6_addr 缓冲区的大小,必须至少为 DOCA_DEVINFO_IPV6_ADDR_SIZE

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_OPERATING_SYSTEM - 无法从操作系统获取 IPv6 地址
描述

IPv6 地址类型:uint8_t[DOCA_DEVINFO_IPV6_ADDR_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_get_lid ( const doca_devinfo* devinfo, uint16_t* lid )
获取 DOCA devinfo 的端口 LID。
参数
devinfo
要查询的设备。
lid
devinfo 的端口 LID。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询端口 LID。
  • DOCA_ERROR_NOT_SUPPORTED - 设备端口的链路层不是 IB。
描述

端口 LID 类型: uint16_t *。

DOCA_STABLE doca_error_t doca_devinfo_get_mac_addr ( const doca_devinfo* devinfo, uint8_t* mac_addr, uint32_t size )
获取 DOCA devinfo 的 MAC 地址。
参数
devinfo
要查询的设备。
mac_addr
devinfo 的 MAC 地址。
size
输入 mac_addr 缓冲区的大小,必须至少为 DOCA_DEVINFO_MAC_ADDR_SIZE

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 设备端口的链路层不是 RoCE。
描述

MAC 地址类型: uint8_t[DOCA_DEVINFO_MAC_ADDR_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_get_pci_addr_str ( const doca_devinfo* devinfo, char* pci_addr_str )
获取 DOCA devinfo 的 PCI 地址。
参数
devinfo
要查询的设备。
pci_addr_str
devinfo 的 PCI 地址,大小应至少为 DOCA_DEVINFO_PCI_ADDR_SIZE。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_OPERATING_SYSTEM - 从操作系统获取 PCI 地址失败
描述

PCI 地址字符串格式为 "域:总线:设备.功能",其中每个值都用十六进制数字表示,例如,"0000:3a:00.0"

DOCA_STABLE doca_error_t doca_devinfo_is_equal_pci_addr ( const doca_devinfo* devinfo, const char* pci_addr_str, uint8_t* is_equal )
检查 PCI 地址是否属于 DOCA devinfo。
参数
devinfo
要查询的设备。
pci_addr_str
要检查的 PCI 地址,应采用以下格式之一
  • "域:总线:设备.功能",例如,"0000:3a:00.0" (大小包括空终止符的 DOCA_DEVINFO_PCI_ADDR_SIZE)。
  • "总线:设备.功能",例如,"3a:00.0" (大小包括空终止符的 DOCA_DEVINFO_PCI_BDF_SIZE)。
is_equal
如果 pci_addr_str 属于 devinfo,则为 1,否则为 0。如果发生错误,则不保证特定值。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_OPERATING_SYSTEM - 从操作系统获取实际 PCI 地址以进行比较失败。
描述

DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_all_supported ( const doca_devinfo* devinfo, uint8_t* filter_all_supported )
获取设备的表示器设备发现功能。
参数
devinfo
要查询的设备。
filter_all_supported
如果支持 rep list all 功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询功能支持。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

获取 uint8_t 值,定义设备是否可用于创建代表设备列表。如果返回 true,则此设备至少支持一种代表类型。请参阅 doca_devinfo_rep_create_list()。 true - 设备可以与远程列表创建 API 和过滤器 DOCA_DEVINFO_REP_FILTER_ALL 一起使用。 false - 提供 DOCA_DEVINFO_REP_FILTER_ALL 保证会因 DOCA_ERROR_NOT_SUPPORTED 而失败。

DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_emulated_supported ( const doca_devinfo* devinfo, uint8_t* filter_emulated_supported )
获取设备的远程模拟设备发现功能。
参数
devinfo
要查询的设备。
filter_emulated_supported
如果支持 list emulated 功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询功能支持。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

获取 uint8_t 值,定义设备是否可用于创建模拟代表设备列表。请参阅 doca_devinfo_rep_create_list()。 true - 设备可以与远程列表创建 API 和过滤器 DOCA_DEVINFO_REP_FILTER_EMULATED 一起使用。 false - 提供 DOCA_DEVINFO_REP_FILTER_EMULATED 保证会因 DOCA_ERROR_NOT_SUPPORTED 而失败。

DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_net_supported ( const doca_devinfo* devinfo, uint8_t* filter_net_supported )
获取设备的远程网络发现功能。
参数
devinfo
要查询的设备。
filter_net_supported
如果支持 rep list net 功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询功能支持。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

获取 uint8_t 值,定义设备是否可用于创建网络远程设备列表。请参阅 doca_devinfo_remote_list_create()。 true - 设备可以与远程列表创建 API 和过滤器 DOCA_DEV_REMOTE_FILTER_NET 一起使用。 false - 提供 DOCA_DEV_REMOTE_FILTER_NET 保证会因 DOCA_ERROR_NOT_SUPPORTED 而失败。

DOCA_STABLE doca_error_t doca_devinfo_rep_create_list ( doca_dev* dev, int  filter, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
创建 dev 可访问的可用表示器设备列表。
参数
dev
可访问代表设备的本地设备。
filter
代表类型位图过滤器。有关更多详细信息,请参阅枚举 doca_devinfo_rep_filter。
dev_list_rep
指向指针数组的指针。然后可以按如下方式访问输出 (*dev_list_rep)[idx]。
nb_devs_rep
可用代表设备的数量。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 分配列表内存失败。
  • DOCA_ERROR_DRIVER - 查询驱动程序失败。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

返回所提供设备管理的所有代表。提供的设备必须是本地设备。代表可以表示连接到主机的网络功能,也可以表示连接到主机的模拟功能。

注意

返回的列表必须使用 doca_devinfo_rep_destroy_list() 销毁


DOCA_STABLE doca_error_t doca_devinfo_rep_destroy_list ( doca_devinfo_rep** dev_list_rep )
销毁表示器设备信息结构的列表。
参数
dev_list_rep
要销毁的列表。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_IN_USE - 创建列表的 doca_dev 处于损坏状态。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

销毁代表设备信息列表,一旦列表被销毁,列表的所有元素都被视为无效。

DOCA_STABLE doca_error_t doca_devinfo_rep_get_is_hotplug ( const doca_devinfo_rep* devinfo_rep, uint8_t* is_hotplug )
查询表示器设备是否为热插拔设备。
参数
devinfo_rep
代表设备信息
is_hotplug
如果代表设备是热插拔设备,则为 1。如果代表设备是静态插入设备,则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

DOCA_STABLE doca_error_t doca_devinfo_rep_get_pci_addr_str ( const doca_devinfo_rep* devinfo_rep, char* pci_addr_str )
获取 DOCA devinfo_rep 的 PCI 地址。
参数
devinfo_rep
要查询的设备。
pci_addr_str
devinfo_rep 的 PCI 地址,大小应至少为 DOCA_DEVINFO_REP_PCI_ADDR_SIZE。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
  • DOCA_ERROR_NO_MEMORY - 没有足够的内存来生成字符串化的 PCI 地址。
  • DOCA_ERROR_UNEXPECTED - 发生意外错误。
描述

PCI 地址字符串格式为 "域:总线:设备.功能",其中每个值都用十六进制数字表示,例如,"0000:3a:00.0"。

DOCA_STABLE doca_error_t doca_devinfo_rep_get_pci_func_type ( const doca_devinfo_rep* devinfo_rep, enum doca_pci_func_type* pci_func_type )
获取 DOCA devinfo_rep 的 PCI 功能类型。
参数
devinfo_rep
要查询的设备代表。
pci_func_type
devinfo_rep 的 PCI 功能类型。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

pci 功能类型: enum doca_pci_func_type。

DOCA_STABLE doca_error_t doca_devinfo_rep_get_vuid ( const doca_devinfo_rep* devinfo_rep, char* rep_vuid, uint32_t size )
获取表示器 DOCA devinfo 的供应商唯一 ID。
参数
devinfo_rep
要查询的代表设备。
rep_vuid
devinfo_rep 的供应商唯一 ID。
size
vuid 缓冲区的大小,包括终止空字节 ('\0')。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

供应商唯一 ID 用作 VF/PF 的稳定 ID。供应商唯一 ID 类型: char[DOCA_DEVINFO_VUID_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_rep_is_equal_pci_addr ( const doca_devinfo_rep* devinfo_rep, const char* pci_addr_str, uint8_t* is_equal )
检查 PCI 地址是否属于 DOCA devinfo_rep。
参数
devinfo_rep
要查询的设备代表。
pci_addr_str
要检查的 PCI 地址,应采用以下格式之一
  • "域:总线:设备.功能",例如,"0000:3a:00.0" (大小包括空终止符的 DOCA_DEVINFO_PCI_ADDR_SIZE)。
  • "总线:设备.功能",例如,"3a:00.0" (大小包括空终止符的 DOCA_DEVINFO_PCI_BDF_SIZE)。
is_equal
如果 pci_addr_str 属于 devinfo_rep,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
  • DOCA_ERROR_NO_MEMORY - 没有足够的内存来生成 devinfo_rep PCI 地址以进行比较。
  • DOCA_ERROR_UNEXPECTED - 发生意外错误。
描述

DOCA 类型的操作

DOCA 缓冲区

DOCA 缓冲区数组

DOCA 缓冲区清单

DOCA 缓冲池

DOCA 上下文

DOCA 设备

2.4.1. DOCA 类型操作

[ DOCA 核心 ]

DOCA 位域引入了 DOCA 类型上的位域操作,这些操作在许多库中都很常见。

宏定义
#define DOCA_BE16P_GENMASK ( _h, _l, _p )
#define DOCA_BE16P_SET ( _m, _v, _p )
#define DOCA_BE16_GENMASK ( _h, _l )
#define DOCA_BE16_GET ( _m, _f )
#define DOCA_BE16_SET ( _m, _v )
#define DOCA_BE32P_GENMASK ( _h, _l, _p )
#define DOCA_BE32P_SET ( _m, _v, _p )
#define DOCA_BE32_GENMASK ( _h, _l )
#define DOCA_BE32_GET ( _m, _f )
#define DOCA_BE32_SET ( _m, _v )
#define DOCA_BETOH16 ( _x ) _byteswap_ushort(_x)
#define DOCA_BETOH32 ( _x ) _byteswap_ulong(_x)
#define DOCA_HTOBE16 ( _x ) _byteswap_ushort(_x)
#define DOCA_HTOBE32 ( _x ) _byteswap_ulong(_x)
#define DOCA_SHIFT ( _x )
#define DOCA_U8P_GENMASK ( _h, _l, _p )
#define DOCA_U8P_SET ( _m, _v, _p )
#define DOCA_U8_GENMASK ( _h, _l )
#define DOCA_U8_GET ( _m, _f )
#define DOCA_U8_SET ( _m, _v )
函数
int  __doca_builtin_ffsll ( long long x )
宏定义
#define DOCA_BE16P_GENMASK ( _h, _l, _p )

DOCA_BE16P_GENMASK() - 从以下位置生成连续掩码_l位到_h位,放置在_p指向的内存中,以大端字节序排列

do { \ *(doca_be16_t *)_p = DOCA_BE16_GENMASK(_h, _l); \ } while (0)

参数
_h
最高位
_l
最低位
_p
doca_be16_t 的指针

#define DOCA_BE16P_SET ( _m, _v, _p )

DOCA_BE16P_SET() - 在以下位置设置位域段_p指向的 doca_be16_t 字段

DOCA_BE16P_SET() 掩码并上移值,并与 doca_be16_t 中的其他字段进行逻辑 OR 运算

do { \ doca_be16_t _tmp = *(doca_be16_t *)_p; \ \ _tmp |= DOCA_BE16_SET(_m, _v); \ *_p = _tmp; \ } while (0);

参数
_m
doca_be16_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值
_p
doca_be16_t,指向字段的指针

#define DOCA_BE16_GENMASK ( _h, _l )

DOCA_BE16_GENMASK() - 从以下位置生成连续掩码_l位到_h位,以大端字节序返回。例如,DOCA_BE16_GENMASK( 11, 4) -> htons(0x0FF0)

(DOCA_HTOBE16((UINT16_MAX - (UINT16_C(1) << (_l)) + 1) & (UINT16_MAX >> (16 - 1 - (_h)))))

参数
_h
最高位
_l
最低位

#define DOCA_BE16_GET ( _m, _f )

DOCA_BE16_GET() - 获取位域段值

DOCA_BE16_GET() 获取主机字节序中的字段值,由以下项指定_m从作为以下项传入的寄存器_f通过屏蔽并向下移位

((DOCA_BETOH16((_m) & (_f)) >> DOCA_SHIFT(DOCA_BETOH16(_m))))

参数
_m
doca_be16_t,移位掩码定义的字段宽度和位置
_f
doca_be16_t,整个寄存器值

#define DOCA_BE16_SET ( _m, _v )

DOCA_BE16_SET() - 在大端字节序中设置位域段并返回

DOCA_BE16_SET() 掩码并上移值,并在 doca_be16_t 中返回。返回值应与寄存器中的其他字段进行逻辑 OR 运算。

((DOCA_HTOBE16(_v << DOCA_SHIFT(DOCA_BETOH16(_m)))) & _m)

参数
_m
doca_be16_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值

#define DOCA_BE32P_GENMASK ( _h, _l, _p )

DOCA_BE32P_GENMASK() - 从以下位置生成连续掩码_l位到_h位,放置在_p指向的内存中,以大端字节序排列

do { \ *(doca_be32_t *)_p = DOCA_BE32_GENMASK(_h, _l); \ } while (0)

参数
_h
最高位
_l
最低位
_p
doca_be32_t 的指针

#define DOCA_BE32P_SET ( _m, _v, _p )

DOCA_BE32P_SET() - 在以下位置设置位域段_p指向的 doca_be32_t 字段

DOCA_BE32P_SET() 掩码并上移值,并与 doca_be32_t 中的其他字段进行逻辑 OR 运算

do { \ doca_be32_t _tmp = *(doca_be32_t *)_p; \ \ _tmp |= DOCA_BE32_SET(_m, _v); \ *_p = _tmp; \ } while (0);

参数
_m
doca_be32_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值
_p
doca_be32_t,指向字段的指针

#define DOCA_BE32_GENMASK ( _h, _l )

DOCA_BE32_GENMASK() - 从以下位置生成连续掩码_l位到_h位,以大端字节序返回。例如,DOCA_BE32_GENMASK( 23, 4) -> htonl(0x00FFFFF0)

(DOCA_HTOBE32((UINT32_MAX - (UINT32_C(1) << (_l)) + 1) & (UINT32_MAX >> (32 - 1 - (_h)))))

参数
_h
最高位
_l
最低位

#define DOCA_BE32_GET ( _m, _f )

DOCA_BE32_GET() - 获取位域段值

DOCA_BE32_GET() 获取主机字节序中的字段值,由以下项指定_m从作为以下项传入的寄存器_f通过屏蔽并向下移位

((DOCA_BETOH32((_m) & (_f)) >> DOCA_SHIFT(DOCA_BETOH32(_m))))

参数
_m
doca_be32_t,移位掩码定义的字段宽度和位置
_f
doca_be32_t,整个寄存器值

#define DOCA_BE32_SET ( _m, _v )

DOCA_BE32_SET() - 在大端字节序中设置位域段并返回

DOCA_BE32_SET() 掩码并上移值,并在 doca_be32_t 中返回。返回值应与寄存器中的其他字段进行逻辑 OR 运算。

((DOCA_HTOBE32(_v << DOCA_SHIFT(DOCA_BETOH32(_m)))) & _m)

参数
_m
doca_be32_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值

#define DOCA_BETOH16 ( _x ) _byteswap_ushort(_x)

DOCA_BETOH16() - 将 16 位从大端字节序转换为主机字节序

参数
_x
value

#define DOCA_BETOH32 ( _x ) _byteswap_ulong(_x)

DOCA_BETOH32() - 将 32 位从大端字节序转换为主机字节序

参数
_x
value

#define DOCA_HTOBE16 ( _x ) _byteswap_ushort(_x)

DOCA_HTOBE16() - 将 16 位类型从主机字节序转换为大端字节序

参数
_x
value

#define DOCA_HTOBE32 ( _x ) _byteswap_ulong(_x)

DOCA_HTOBE32() - 将 32 位类型从主机字节序转换为大端字节序

参数
_x
value

#define DOCA_SHIFT ( _x )

DOCA_SHIFT() - 获取移位的位数

(__doca_builtin_ffsll(_x) - 1)

参数
_x
value

#define DOCA_U8P_GENMASK ( _h, _l, _p )

DOCA_U8P_GENMASK() - 从以下位置生成连续掩码_l位到_h位,放置在_p指向的内存中,以主机字节序排列

do { \ *(uint8_t *)_p = DOCA_U8_GENMASK(_h, _l); \ } while (0)

参数
_h
最高位
_l
最低位
_p
uint8_t 的指针

#define DOCA_U8P_SET ( _m, _v, _p )

DOCA_U8P_SET() - 在以下位置设置位域段_p指向的 uint8_t 字段

DOCA_U8P_SET() 掩码并上移值,并与 uint8_t 中的其他字段进行逻辑 OR 运算

do { \ uint8_t _tmp = *(uint8_t *)_p; \ \ _tmp |= DOCA_U8_SET(_m, _v); \ *_p = _tmp; \ } while (0);

参数
_m
uint8_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值
_p
uint8_t,指向字段的指针

#define DOCA_U8_GENMASK ( _h, _l )

DOCA_U8_GENMASK() - 从以下位置生成连续掩码_l位到_h位,以主机字节序返回。例如,DOCA_U8_GENMASK( 7, 4) -> 0xF0

((UINT8_MAX - (UINT8_C(1) << (_l)) + 1) & (UINT8_MAX >> (8 - 1 - (_h))))

参数
_h
最高位
_l
最低位

#define DOCA_U8_GET ( _m, _f )

DOCA_U8_GET() - 获取位域段值

DOCA_U8_GET() 获取主机字节序中的字段值,由以下项指定_m从作为以下项传入的寄存器_f通过屏蔽并向下移位

(((_m) & (_f)) >> DOCA_SHIFT((_m)))

参数
_m
uint8_t,移位掩码定义的字段宽度和位置
_f
uint8_t,整个寄存器值

#define DOCA_U8_SET ( _m, _v )

DOCA_U8_SET() - 在主机字节序中设置位域段并返回

DOCA_U8_SET() 掩码并上移值,并在 uint8_t 中返回。返回值应与寄存器中的其他字段进行逻辑 OR 运算。

((_v << DOCA_SHIFT(_m)) & _m)

参数
_m
uint8_t,移位掩码定义的字段宽度和位置
_v
主机字节序,要设置在字段中的值

函数
int __doca_builtin_ffsll ( long long x )

参数
x
value

返回值

: 最低有效位 1 的索引加 1;如果 x 为零,则返回零。

描述

__doca_builtin_ffsll() - windows 上的内部实现,等同于 gnu 的 __builtin_ffsll();

2.4.2. DOCA 缓冲区

[ DOCA 核心 ]

DOCA 缓冲区用于引用数据。它保存属于 DOCA 内存映射的内存区域的信息,并且其描述符是从 DOCA 缓冲区库存中分配的。

函数
DOCA_STABLE doca_error_t doca_buf_chain_list ( doca_buf* list1, doca_buf* list2 )
将 list2 附加到 list1。
DOCA_STABLE doca_error_t doca_buf_dec_refcount ( doca_buf* buf, uint16_t* refcount )
将对象的引用计数减 1,如果达到 0,则将元素返回到库存。
DOCA_STABLE doca_error_t doca_buf_get_data ( const doca_buf* buf, void** data )
获取缓冲区的数据。
DOCA_STABLE doca_error_t doca_buf_get_data_len ( const doca_buf* buf, size_t* data_len )
获取缓冲区的数据长度。
DOCA_STABLE doca_error_t doca_buf_get_head ( const doca_buf* buf, void** head )
获取缓冲区的头部。
DOCA_STABLE doca_error_t doca_buf_get_last_in_list ( doca_buf* buf, doca_buf** last_buf )
获取链接列表中的最后一个 DOCA 缓冲区。
DOCA_STABLE doca_error_t doca_buf_get_len ( const doca_buf* buf, size_t* len )
获取缓冲区的长度。
DOCA_STABLE doca_error_t doca_buf_get_list_len ( const doca_buf* buf, uint32_t* num_elements )
获取列表中的元素数量。
DOCA_STABLE doca_error_t doca_buf_get_next_in_list ( doca_buf* buf, doca_buf** next_buf )
获取链接列表中的下一个 DOCA 缓冲区。
DOCA_STABLE doca_error_t doca_buf_get_refcount ( const doca_buf* buf, uint16_t* refcount )
获取对象的引用计数。
DOCA_STABLE doca_error_t doca_buf_inc_refcount ( doca_buf* buf, uint16_t* refcount )
将对象的引用计数增加 1。
DOCA_STABLE doca_error_t doca_buf_is_first_in_list ( const doca_buf* buf, uint8_t* is_first )
检查提供的 DOCA 缓冲区是否为链接列表中的第一个元素。
DOCA_STABLE doca_error_t doca_buf_is_in_list ( const doca_buf* buf, uint8_t* is_in_list )
检查提供的 DOCA 缓冲区是否为链接列表。
DOCA_STABLE doca_error_t doca_buf_is_last_in_list ( const doca_buf* buf, uint8_t* is_last )
检查提供的 DOCA Buf 是否为链表中的最后一个元素。
DOCA_STABLE doca_error_t doca_buf_reset_data_len ( doca_buf* buf )
DOCA_STABLE doca_error_t doca_buf_set_data ( doca_buf* buf, void* data, size_t data_len )
DOCA_STABLE doca_error_t doca_buf_set_data_len ( doca_buf* buf, size_t data_len )
DOCA_STABLE doca_error_t doca_buf_unchain_list ( doca_buf* list1, doca_buf* list2 )
将 list2 从 list1 中分离。
函数
DOCA_STABLE doca_error_t doca_buf_chain_list ( doca_buf* list1, doca_buf* list2 )
将 list2 附加到 list1。
参数
list1
代表 list1 的 DOCA Buf。 必须非空,且必须为列表的头部。
list2
代表 list2 的 DOCA Buf。 必须非空,且必须为列表的头部。 引用计数必须为 1。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_NOT_PERMITTED - 如果 list2 的引用计数不为 1。
描述
复制
已复制!
            

‎ Before: +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 | +----+ +----+ +----+ +----+ +----+ list2 -> |4 |->|5 | +----+ +----+ After: +----+ +----+ +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 |->|4 |->|5 | +----+ +----+ +----+ +----+ +----+ / list2


DOCA_STABLE doca_error_t doca_buf_dec_refcount ( doca_buf* buf, uint16_t* refcount )
将对象的引用计数减 1,如果达到 0,则将元素返回到库存。
参数
buf
DOCA Buf 元素。 必须非空。
refcount
此操作发生前,对象的引用数量。 可以为空。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NOT_PERMITTED - buf 是某些列表中的下一个元素。
  • DOCA_ERROR_BAD_STATE - 引用计数已为 0。
描述

当引用计数达到 0 时,应释放所有相关资源。 例如,如果元素指向某些 mmap,则其状态将相应地调整。

注意

对于列表,如果头部的引用计数达到 0,则将释放列表中的所有缓冲区。


DOCA_STABLE doca_error_t doca_buf_get_data ( const doca_buf* buf, void** data )
获取缓冲区的数据。
参数
buf
DOCA Buf 元素。 必须非空。
data
缓冲区的数据。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_get_data_len ( const doca_buf* buf, size_t* data_len )
获取缓冲区的数据长度。
参数
buf
DOCA Buf 元素。 必须非空。
data_len
缓冲区的数据长度。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_get_head ( const doca_buf* buf, void** head )
获取缓冲区的头部。
参数
buf
DOCA Buf 元素。 必须非空。
head
缓冲区的头部。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_get_last_in_list ( doca_buf* buf, doca_buf** last_buf )
获取链接列表中的最后一个 DOCA 缓冲区。
参数
buf
DOCA Buf 元素。
last_buf
链表中的最后一个 DOCA Buf,可能为 buf 本身。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

DOCA_STABLE doca_error_t doca_buf_get_len ( const doca_buf* buf, size_t* len )
获取缓冲区的长度。
参数
buf
DOCA Buf 元素。 必须非空。
len
缓冲区的长度。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_get_list_len ( const doca_buf* buf, uint32_t* num_elements )
获取列表中的元素数量。
参数
buf
DOCA Buf 元素。 Buf 必须为列表的头部。
num_elements
列表中的元素数量。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NOT_PERMITTED - 如果缓冲区不是列表的头部。
描述

DOCA_STABLE doca_error_t doca_buf_get_next_in_list ( doca_buf* buf, doca_buf** next_buf )
获取链接列表中的下一个 DOCA 缓冲区。
参数
buf
DOCA Buf 元素。 必须非空。
next_buf
链表中的下一个 DOCA Buf,如果列表中没有其他元素,则 *next_buf 将为空。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_get_refcount ( const doca_buf* buf, uint16_t* refcount )
获取对象的引用计数。
参数
buf
DOCA Buf 元素。 必须非空。
refcount
对象的引用数量。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_inc_refcount ( doca_buf* buf, uint16_t* refcount )
将对象的引用计数增加 1。
参数
buf
DOCA Buf 元素。
refcount
此操作发生前,对象的引用数量。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NOT_PERMITTED - buf 是某些列表中的下一个元素。
  • DOCA_ERROR_TOO_BIG - 引用计数已达到最大值 UINT16_MAX。
描述
注意

对于列表,所有中间缓冲区的引用计数始终为 1。 因此,引用计数仅针对头部进行管理。


DOCA_STABLE doca_error_t doca_buf_is_first_in_list ( const doca_buf* buf, uint8_t* is_first )
检查提供的 DOCA 缓冲区是否为链接列表中的第一个元素。
参数
buf
DOCA Buf 元素。
is_first
如果 buf 是第一个元素,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_is_in_list ( const doca_buf* buf, uint8_t* is_in_list )
检查提供的 DOCA 缓冲区是否为链接列表。
参数
buf
DOCA Buf 元素。 必须非空。
is_in_list
如果 buf 是链表的一部分,则为 1,如果不是,则为 0。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_is_last_in_list ( const doca_buf* buf, uint8_t* is_last )
检查提供的 DOCA Buf 是否为链表中的最后一个元素。
参数
buf
DOCA Buf 元素。 必须非空。
is_last
如果 buf 是最后一个元素,则为 1,否则为 0。 必须非空。

返回值

DOCA_SUCCESS - 总是成功。

描述

DOCA_STABLE doca_error_t doca_buf_reset_data_len ( doca_buf* buf )

参数
buf
DOCA Buf 元素。 必须非空。

返回值

DOCA_SUCCESS - 总是成功

描述

将数据长度重置为 0(数据仍将指向相同的位置)

复制
已复制!
            

‎ Data positioning: __data_len__ / \ +-----+--------------+--------------+ Before | |data | | +-----+--------------+--------------+ / data data_len = 0 / +-----+-----------------------------+ After | | | +-----+-----------------------------+ / data


DOCA_STABLE doca_error_t doca_buf_set_data ( doca_buf* buf, void* data, size_t data_len )

参数
buf
DOCA Buf 元素。 必须非空。
data
数据地址。 必须非空。
data_len
数据长度。

返回值

DOCA_SUCCESS - 总是成功

描述

设置数据指针和数据长度

复制
已复制!
            

‎ Data positioning: +-----------+-----+-----------------+ Before | |data | | +-----------+-----+-----------------+ __data_len__ / \ +-----+--------------+--------------+ After | |data | | +-----+--------------+--------------+ / data

注意

范围 [data, data + data_len] 必须在 [head, head + len] 内。 否则行为未定义。


DOCA_STABLE doca_error_t doca_buf_set_data_len ( doca_buf* buf, size_t data_len )

参数
buf
DOCA Buf 元素。 必须非空。
data_len
数据长度。

返回值

DOCA_SUCCESS - 总是成功

描述

设置数据长度

复制
已复制!
            

‎ Data positioning: __data_len__ / \ +-----+--------------+--------------+ Before | |data | | +-----+--------------+--------------+ / data ____data_len____ / \ +-----+------------------+----------+ After | |data | | +-----+------------------+----------+ / data

注意

范围 [data, data + data_len] 必须在 [head, head + len] 内。 否则行为未定义。


DOCA_STABLE doca_error_t doca_buf_unchain_list ( doca_buf* list1, doca_buf* list2 )
将 list2 从 list1 中分离。
参数
list1
代表 list1 的 DOCA Buf。 必须非空。
list2
代表 list2 的 DOCA Buf,list2 应包含在 list1 中。 list2 必须与 list1 不同。 必须非空。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果 list2 不是 list1 的一部分。
描述
复制
已复制!
            

‎ Before: +----+ +----+ +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 |->|4 |->|5 | +----+ +----+ +----+ +----+ +----+ / list2 After: +----+ +----+ +----+ list1 -> |1 |->|2 |->|3 | +----+ +----+ +----+ +----+ +----+ list2 -> |4 |->|5 | +----+ +----+

注意

取消链接后,list2 的引用计数将始终为 1。


2.4.3. DOCA 缓冲区数组

[ DOCA 核心 ]

DOCA 缓冲区数组表示固定大小的 doca_buf 数组(用于多个 doca_dev)。 可以充当空闲列表或直接访问模式。

类型定义
typedef uint64_t  doca_dpa_dev_buf_arr_t
表示 DPA 上 doca_buf_arr 句柄的类型。
函数
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_create ( size_t num_elem, doca_buf_arr** buf_arr )
分配一个 doca_buf_arr。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_destroy ( doca_buf_arr* buf_arr )
销毁 doca 缓冲区数组实例。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_get_dpa_handle ( const doca_buf_arr* buf_arr, doca_dpa_dev_buf_arr_t* dpa_buf_arr )
检索 doca_buf_arr 的 dpa 内存空间中的句柄。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_get_gpu_handle ( const doca_buf_arr* buf_arr, doca_gpu_buf_arr** gpu_buf_arr )
检索 doca_buf_arr 的 gpu 内存空间中的句柄。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_params ( doca_buf_arr* buf_arr, doca_mmap* mmap, size_t elem_size, uint64_t start_offset )
设置缓冲区数组参数。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_target_dpa ( doca_buf_arr* buf_arr, doca_dpa* dpa_handler )
配置要在 dpa 设备上创建的缓冲区数组。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_target_gpu ( doca_buf_arr* buf_arr, doca_gpu* gpu_handler )
配置要在 gpu 设备上创建的缓冲区数组。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_start ( doca_buf_arr* buf_arr )
此方法启用 doca_bufs 的分配。
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_stop ( doca_buf_arr* buf_arr )
停止已启动的 doca 缓冲区数组。
类型定义
typedef uint64_t doca_dpa_dev_buf_arr_t

表示 DPA 上 doca_buf_arr 句柄的类型。

函数
DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_create ( size_t num_elem, doca_buf_arr** buf_arr )
分配一个 doca_buf_arr。
参数
num_elem
doca_buf_arr 中的元素数量(必须 > 0)。
buf_arr
新创建的 doca_buf_arr。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_buf_arr 失败。
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_destroy ( doca_buf_arr* buf_arr )
销毁 doca 缓冲区数组实例。
参数
buf_arr
要销毁的 doca_buf_arr

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

销毁操作会隐式停止缓冲区数组。

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_get_dpa_handle ( const doca_buf_arr* buf_arr, doca_dpa_dev_buf_arr_t* dpa_buf_arr )
检索 doca_buf_arr 的 dpa 内存空间中的句柄。
参数
buf_arr
doca_buf_arr
dpa_buf_arr
指向 dpa 内存空间中句柄的指针

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 doca_buf_arr 未启动。
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_get_gpu_handle ( const doca_buf_arr* buf_arr, doca_gpu_buf_arr** gpu_buf_arr )
检索 doca_buf_arr 的 gpu 内存空间中的句柄。
参数
buf_arr
doca_buf_arr
gpu_buf_arr
指向 gpu 内存空间中句柄的指针

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 doca_buf_arr 未启动。
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_params ( doca_buf_arr* buf_arr, doca_mmap* mmap, size_t elem_size, uint64_t start_offset )
设置缓冲区数组参数。
参数
buf_arr
doca_buf_arr
mmap
管理内存块的 mmap。 必须使用内存块填充。
elem_size
单个元素的大小(以字节为单位,必须 > 0)。
start_offset
从 mmap 起始位置到设置 doca_buf_arr 的偏移量。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 doca_buf_arr 已启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_target_dpa ( doca_buf_arr* buf_arr, doca_dpa* dpa_handler )
配置要在 dpa 设备上创建的缓冲区数组。
参数
buf_arr
doca_buf_arr
dpa_handler
dpa 设备句柄。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 doca_buf_arr 已启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_set_target_gpu ( doca_buf_arr* buf_arr, doca_gpu* gpu_handler )
配置要在 gpu 设备上创建的缓冲区数组。
参数
buf_arr
doca_buf_arr
gpu_handler
gpu 设备句柄。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 doca_buf_arr 已启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_start ( doca_buf_arr* buf_arr )
此方法启用 doca_bufs 的分配。
参数
buf_arr
要启动的 doca_buf_arr

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE -
  • DOCA_ERROR_NO_MEMORY -
描述
注意

在调用此函数之前,必须启动创建缓冲区数组的 mmap。


DOCA_EXPERIMENTAL doca_error_t doca_buf_arr_stop ( doca_buf_arr* buf_arr )
停止已启动的 doca 缓冲区数组。
参数
buf_arr
要停止的 doca_buf_arr

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述
注意

停止操作不必在销毁操作之前调用(销毁操作会隐式停止缓冲区数组)。


2.4.4. DOCA 缓冲区清单

[ DOCA 核心 ]

DOCA 缓冲区清单管理 doca_buf 对象的池。 从清单中获得的每个缓冲区都是一个描述符,指向用户选择的 doca_mmap 内存范围中的内存区域。

函数
DOCA_STABLE doca_error_t doca_buf_inventory_buf_dup ( doca_buf_inventory* inventory, const doca_buf* src_buf, doca_buf** dst_buf )
将 `buf` 参数的内容复制到从缓冲区清单分配的元素中。(即,深拷贝)。
doca_error_t doca_buf_inventory_buf_get_by_addr ( doca_buf_inventory* inventory, doca_mmap* mmap, void* addr, size_t len, doca_buf** buf )
从缓冲区清单中分配单个元素,并将其指向由 `addr` & `len` 参数定义的缓冲区。
DOCA_STABLE doca_error_t doca_buf_inventory_buf_get_by_args ( doca_buf_inventory* inventory, doca_mmap* mmap, void* addr, size_t len, void* data, size_t data_len, doca_buf** buf )
从缓冲区清单中分配单个元素,并将其指向由 `addr`、`len`、`data` 和 `data_len` 参数定义的缓冲区。
doca_error_t doca_buf_inventory_buf_get_by_data ( doca_buf_inventory* inventory, doca_mmap* mmap, void* data, size_t data_len, doca_buf** buf )
从缓冲区清单中分配单个元素,并将其指向由 `data` & `data_len` 参数定义的缓冲区。
DOCA_STABLE doca_error_t doca_buf_inventory_create ( size_t num_elements, doca_buf_inventory** inventory )
分配具有默认/未设置属性的缓冲区清单。
DOCA_STABLE doca_error_t doca_buf_inventory_destroy ( doca_buf_inventory* inventory )
销毁缓冲区清单结构。
DOCA_EXPERIMENTAL doca_error_t doca_buf_inventory_expand ( doca_buf_inventory* inventory, uint32_t num_elements )
扩展清单。
DOCA_STABLE doca_error_t doca_buf_inventory_get_num_elements ( const doca_buf_inventory* inventory, uint32_t* num_of_elements )
读取 DOCA 缓冲区清单中的元素总数。
DOCA_STABLE doca_error_t doca_buf_inventory_get_num_free_elements ( const doca_buf_inventory* inventory, uint32_t* num_of_free_elements )
获取 DOCA 缓冲区清单中的空闲元素总数。
DOCA_STABLE doca_error_t doca_buf_inventory_get_user_data ( const doca_buf_inventory* inventory, doca_data* user_data )
获取 DOCA 缓冲区清单的 user_data。
DOCA_STABLE doca_error_t doca_buf_inventory_set_user_data ( doca_buf_inventory* inventory, doca_data user_data )
为 DOCA 缓冲区清单设置 user_data。
DOCA_STABLE doca_error_t doca_buf_inventory_start ( doca_buf_inventory* inventory )
开始从清单中检索元素。
DOCA_STABLE doca_error_t doca_buf_inventory_stop ( doca_buf_inventory* inventory )
停止从清单中检索元素。
函数
DOCA_STABLE doca_error_t doca_buf_inventory_buf_dup ( doca_buf_inventory* inventory, const doca_buf* src_buf, doca_buf** dst_buf )
将 `buf` 参数的内容复制到从缓冲区清单分配的元素中。(即,深拷贝)。
参数
inventory
将保存新 doca_buf 的缓冲区清单结构。
src_buf
要复制的 DOCA buf。
dst_buf
重复的 DOCA Buf。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_BAD_STATE - 如果 src_buf mmap 或输入清单未启动/已停止。
  • DOCA_ERROR_NOT_PERMITTED - 如果 src_buf 是列表的一部分,并且不是其头部。
  • DOCA_ERROR_NO_MEMORY - 如果无法从给定清单中分配新的 doca_buf。
描述

调用 doca_buf_dec_refcount 以将缓冲区返回到清单(直到引用计数 == 0)。

doca_error_t doca_buf_inventory_buf_get_by_addr ( doca_buf_inventory* inventory, doca_mmap* mmap, void* addr, size_t len, doca_buf** buf ) [inline]
从缓冲区清单中分配单个元素,并将其指向由 `addr` & `len` 参数定义的缓冲区。
参数
inventory
DOCA Buf 清单。 必须非空且必须已启动。
mmap
DOCA 内存映射结构。 必须非空且必须已启动。
addr
有效负载的起始地址。
len
有效负载的长度(以字节为单位)。
buf
使用参数分配和初始化的 Doca buf。 必须非空。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NO_MEMORY - 如果 doca_buf_inventory 为空。
描述

调用 doca_buf_dec_refcount 以将缓冲区返回到清单(直到引用计数 == 0)。

DOCA_STABLE doca_error_t doca_buf_inventory_buf_get_by_args ( doca_buf_inventory* inventory, doca_mmap* mmap, void* addr, size_t len, void* data, size_t data_len, doca_buf** buf )
从缓冲区清单中分配单个元素,并将其指向由 `addr`、`len`、`data` 和 `data_len` 参数定义的缓冲区。
参数
inventory
DOCA Buf 清单。 必须非空且必须已启动。
mmap
DOCA 内存映射结构。 必须非空且必须已启动。
addr
缓冲区的起始地址。
len
缓冲区的长度(以字节为单位)。
data
缓冲区内数据的起始地址。
data_len
数据的长度(以字节为单位)。
buf
使用参数分配和初始化的 Doca buf。 必须非空。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 或如果没有适用于给定地址和长度的内存范围。
  • DOCA_ERROR_NO_MEMORY - 如果 doca_buf_inventory 为空。
描述

调用 doca_buf_dec_refcount 以将缓冲区返回到清单(直到引用计数 == 0)。

注意

范围 [data, data + data_len] 必须适合 [addr, addr +len] 范围内。 否则行为未定义。


doca_error_t doca_buf_inventory_buf_get_by_data ( doca_buf_inventory* inventory, doca_mmap* mmap, void* data, size_t data_len, doca_buf** buf ) [inline]
从缓冲区清单中分配单个元素,并将其指向由 `data` & `data_len` 参数定义的缓冲区。
参数
inventory
DOCA Buf 清单。 必须非空且必须已启动。
mmap
DOCA 内存映射结构。 必须非空且必须已启动。
data
缓冲区内数据的起始地址。
data_len
数据的长度(以字节为单位)。
buf
使用参数分配和初始化的 Doca buf。 必须非空。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NO_MEMORY - 如果 doca_buf_inventory 为空。
描述

调用 doca_buf_dec_refcount 以将缓冲区返回到清单(直到引用计数 == 0)。

DOCA_STABLE doca_error_t doca_buf_inventory_create ( size_t num_elements, doca_buf_inventory** inventory )
分配具有默认/未设置属性的缓冲区清单。
参数
num_elements
清单中的初始元素数量。
inventory
具有默认/未设置属性的缓冲区清单。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_buf_inventory 失败。
描述

可以使用 doca_buf_inventory_property_set() API 操作返回的对象。 设置所有必需的属性后,应重新配置并调整以满足 doca_buf_inventory_start() 中的设置。 有关其余详细信息,请参见 doca_buf_inventory_start。

DOCA_STABLE doca_error_t doca_buf_inventory_destroy ( doca_buf_inventory* inventory )
销毁缓冲区清单结构。
参数
inventory
缓冲区清单结构。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_IN_USE - 如果并非所有已分配的元素都已返回到清单。
描述

在调用此函数之前,应将所有已分配的元素返回到清单。 销毁操作会隐式停止缓冲区清单。 调用 doca_buf_dec_refcount 以将缓冲区返回到清单(直到引用计数 == 0)。

DOCA_EXPERIMENTAL doca_error_t doca_buf_inventory_expand ( doca_buf_inventory* inventory, uint32_t num_elements )
扩展清单。
参数
inventory
要扩展的清单
num_elements
要添加到清单的 doca_bufs 数量

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - 清单未启动。
描述

向清单添加更多 doca_bufs。

DOCA_STABLE doca_error_t doca_buf_inventory_get_num_elements ( const doca_buf_inventory* inventory, uint32_t* num_of_elements )
读取 DOCA 缓冲区清单中的元素总数。
参数
inventory
DOCA 缓冲区清单。
num_of_elements
清单中的元素总数。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

元素总数类型:uint32_t。

DOCA_STABLE doca_error_t doca_buf_inventory_get_num_free_elements ( const doca_buf_inventory* inventory, uint32_t* num_of_free_elements )
获取 DOCA 缓冲区清单中的空闲元素总数。
参数
inventory
DOCA 缓冲区清单。
num_of_free_elements
清单中的空闲元素总数。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

空闲元素总数类型:uint32_t。

DOCA_STABLE doca_error_t doca_buf_inventory_get_user_data ( const doca_buf_inventory* inventory, doca_data* user_data )
获取 DOCA 缓冲区清单的 user_data。
参数
inventory
DOCA 缓冲区清单。
user_data
清单的 user_data(如果已设置),否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

在创建时提供给清单的 user_data。

DOCA_STABLE doca_error_t doca_buf_inventory_set_user_data ( doca_buf_inventory* inventory, doca_data user_data )
为 DOCA 缓冲区清单设置 user_data。
参数
inventory
DOCA 缓冲区清单。
user_data
要为清单设置的 user_data。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - 如果清单未启动/已停止。
描述

DOCA_STABLE doca_error_t doca_buf_inventory_start ( doca_buf_inventory* inventory )
开始从清单中检索元素。
参数
inventory
缓冲区清单结构。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

未启动/已停止的缓冲区清单拒绝所有检索元素的尝试。 首次启动时,验证并完成缓冲区清单对象配置。

以下操作仅在启动后才可能实现

首次调用启动后,以下操作不可能实现

  • 使用 doca_buf_inventory_property_set() 设置清单的属性。

DOCA_STABLE doca_error_t doca_buf_inventory_stop ( doca_buf_inventory* inventory )
停止从清单中检索元素。
参数
inventory
缓冲区清单结构。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
描述

对于已停止的清单,无法检索元素。 停止操作不必在销毁操作之前调用(销毁操作会隐式停止缓冲区清单)。 有关详细信息,请参见 doca_buf_inventory_start()

2.4.5. DOCA 缓冲区池

[ DOCA 核心 ]

DOCA 缓冲区池是 doca_buf 对象的池,这样每个 doca_buf 都设置有一个永久的、固定大小的内存缓冲区,从创建到销毁,这样可以立即分配 doca_buf 对象。

复制
已复制!
            

‎ Basic structure example of a Buffer Pool (after creation): +------------------------------------------+ | memory range | +-----------+ | +--------+ +--------+ +--------+ | | doca_mmap |-----------| | buffer | | buffer | | buffer | | +-----------+ | +--------+ +--------+ ..... +--------+ | | \ \ \ | +------------------------------------------+ \ \ \ \ \ \ +--------------------------------------------+ | | | | | +---------------+ | +----------+ +----------+ +----------+ | | doca_buf_pool |-------| | doca_buf | | doca_buf | | doca_buf | | +---------------+ | +----------+ +----------+ ....+----------+ | +--------------------------------------------+


函数
DOCA_STABLE doca_error_t doca_buf_pool_buf_alloc ( doca_buf_pool* buf_pool, doca_buf** buf )
此方法从 DOCA 缓冲区池获取 doca_buf,指向已分配的空缓冲区。
DOCA_STABLE doca_error_t doca_buf_pool_create ( size_t num_elements, size_t element_size, const doca_mmap* mmap, doca_buf_pool** buf_pool )
分配缓冲区池并使用 doca_buf 对象进行设置。
DOCA_STABLE doca_error_t doca_buf_pool_destroy ( doca_buf_pool* buf_pool )
销毁缓冲区池结构。
DOCA_STABLE doca_error_t doca_buf_pool_get_element_alignment ( const doca_buf_pool* buf_pool, size_t* element_alignment )
获取 DOCA 缓冲区池的元素对齐方式。
DOCA_STABLE doca_error_t doca_buf_pool_get_num_elements ( const doca_buf_pool* buf_pool, uint32_t* num_of_elements )
获取在创建 DOCA 缓冲区池时设置的元素数量。
DOCA_STABLE doca_error_t doca_buf_pool_get_num_free_elements ( const doca_buf_pool* buf_pool, uint32_t* num_of_free_elements )
获取 DOCA 缓冲区池中可用于分配的空闲元素总数。
DOCA_STABLE doca_error_t doca_buf_pool_get_user_data ( const doca_buf_pool* buf_pool, doca_data* user_data )
获取 DOCA 缓冲区池的 user_data。
DOCA_STABLE doca_error_t doca_buf_pool_set_element_alignment ( doca_buf_pool* buf_pool, size_t element_alignment )
为 DOCA 缓冲区池中的每个元素设置对齐方式。
DOCA_STABLE doca_error_t doca_buf_pool_set_user_data ( doca_buf_pool* buf_pool, doca_data user_data )
为 DOCA 缓冲区池设置 user_data。
DOCA_STABLE doca_error_t doca_buf_pool_start ( doca_buf_pool* buf_pool )
启动 DOCA 缓冲区池。
DOCA_STABLE doca_error_t doca_buf_pool_stop ( doca_buf_pool* buf_pool )
停止已启动的 DOCA 缓冲区池。
函数
DOCA_STABLE doca_error_t doca_buf_pool_buf_alloc ( doca_buf_pool* buf_pool, doca_buf** buf )
此方法从 DOCA 缓冲区池获取 doca_buf,指向已分配的空缓冲区。
参数
buf_pool
从中获取 doca_buf 的 DOCA buf_pool,该 buf_pool 设置为指向 doca_buf_pool_create() 处的内存缓冲区。
buf
指向已分配 doca_buf 的指针。

描述

调用 doca_buf_dec_refcount 以将缓冲区返回到池(直到引用计数 == 0)。

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。

  • DOCA_ERROR_BAD_STATE - 如果 buf_pool 未启动/已停止。

  • DOCA_ERROR_EMPTY - 如果 buf_pool 为空(所有 doca_bufs 都已分配)。

DOCA_STABLE doca_error_t doca_buf_pool_create ( size_t num_elements, size_t element_size, const doca_mmap* mmap, doca_buf_pool** buf_pool )
分配缓冲区池并使用 doca_buf 对象进行设置。
参数
num_elements
缓冲区池中的元素数量(必须 > 0)。
element_size
单个元素的大小(必须 > 0)。
mmap
管理内存块的 mmap。 必须使用内存块填充。
buf_pool
新创建的 DOCA buf_pool。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_buf_pool 失败。
描述

DOCA_STABLE doca_error_t doca_buf_pool_destroy ( doca_buf_pool* buf_pool )
销毁缓冲区池结构。
参数
buf_pool
要销毁的 DOCA buf_pool。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_IN_USE - 如果并非所有已分配的 doca_bufs 都已返回到 buf_pool。
描述

销毁操作会隐式停止缓冲区池。

注意

在调用此方法之前,应将所有已分配的 doca_bufs 返回到缓冲区池。 调用 doca_buf_dec_refcount 以将缓冲区返回到池(直到引用计数 == 0)。


DOCA_STABLE doca_error_t doca_buf_pool_get_element_alignment ( const doca_buf_pool* buf_pool, size_t* element_alignment )
获取 DOCA 缓冲区池的元素对齐方式。
参数
buf_pool
DOCA buf_pool。
element_alignment
buf_pool 的元素对齐方式。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述
注意

- 除非使用 doca_buf_pool_set_element_alignment() 设置,否则元素对齐方式默认为 1(表示不对齐)。


DOCA_STABLE doca_error_t doca_buf_pool_get_num_elements ( const doca_buf_pool* buf_pool, uint32_t* num_of_elements )
获取在创建 DOCA 缓冲区池时设置的元素数量。
参数
buf_pool
DOCA buf_pool。
num_of_elements
在 buf_pool 创建时设置的元素数量。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

DOCA_STABLE doca_error_t doca_buf_pool_get_num_free_elements ( const doca_buf_pool* buf_pool, uint32_t* num_of_free_elements )
获取 DOCA 缓冲区池中可用于分配的空闲元素总数。
参数
buf_pool
DOCA buf_pool。
num_of_free_elements
buf_pool 中的空闲元素总数。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

DOCA_STABLE doca_error_t doca_buf_pool_get_user_data ( const doca_buf_pool* buf_pool, doca_data* user_data )
获取 DOCA 缓冲区池的 user_data。
参数
buf_pool
DOCA buf_pool。
user_data
buf_pool 的 user_data(如果已设置),否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述
注意

- 除非使用 doca_buf_pool_set_user_data() 设置,否则 user data 默认为 0。


DOCA_STABLE doca_error_t doca_buf_pool_set_element_alignment ( doca_buf_pool* buf_pool, size_t element_alignment )
为 DOCA 缓冲区池中的每个元素设置对齐方式。
参数
buf_pool
DOCA buf_pool。
element_alignment
要为 buf_pool 设置的元素对齐方式(最小值是 1,必须是 2 的幂)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - 如果 buf_pool 已启动。
描述

DOCA_STABLE doca_error_t doca_buf_pool_set_user_data ( doca_buf_pool* buf_pool, doca_data user_data )
为 DOCA 缓冲区池设置 user_data。
参数
buf_pool
DOCA buf_pool。
user_data
要为 buf_pool 设置的 user_data。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - 如果 buf_pool 已启动。
描述

DOCA_STABLE doca_error_t doca_buf_pool_start ( doca_buf_pool* buf_pool )
启动 DOCA 缓冲区池。
参数
buf_pool
要启动的 DOCA buf_pool。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_INITIALIZATION - 如果 mmap 的内存范围小于根据 buf_pool 属性所需的范围大小。
  • DOCA_ERROR_BAD_STATE - 如果创建 buf_pool 的 mmap 未启动。
描述

此方法启用使用 doca_buf_pool_buf_alloc() 分配 doca_bufs。 在调用此方法之前,必须启动创建缓冲区池的 mmap。

以下操作仅在启动后才可能实现

当 buf_pool 启动时,以下操作不可能实现

  • 使用 doca_buf_pool_set_* 设置缓冲区池的属性。

DOCA_STABLE doca_error_t doca_buf_pool_stop ( doca_buf_pool* buf_pool )
停止已启动的 DOCA 缓冲区池。
参数
buf_pool
DOCA buf_pool 停止。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果收到了无效的输入值。
  • DOCA_ERROR_IN_USE - 如果并非所有已分配的 doca_bufs 都已返回到 buf_pool。
描述

此方法禁用 doca_bufs 的分配,并重新启用使用 doca_buf_pool_set_* 设置缓冲区池的属性。在调用此方法之前,所有已分配的 doca_bufs 都应返回到缓冲区池。停止操作不是必须在销毁之前调用(销毁会隐式停止 buf 池)。

2.4.6. DOCA 上下文

[ DOCA 核心 ]

DOCA CTX 是 DOCA 中每个数据路径库的基类。它是一个特定的库/SDK 实例对象,提供抽象数据处理功能。该库公开了操作数据的事件和/或任务。

类型定义
typedef void  ( *doca_ctx_state_changed_callback_t )( const union doca_data user_data, doca_ctx*  ctx,  enum doca_ctx_states prev_state,  enum doca_ctx_states next_state )
上下文状态更改时执行的函数。
枚举
enum doca_ctx_states
此枚举定义了上下文的状态。
函数
DOCA_EXPERIMENTAL void doca_ctx_flush_tasks ( doca_ctx* ctx )
刷新在提交期间未刷新的任务。
DOCA_STABLE doca_error_t doca_ctx_get_num_inflight_tasks ( const doca_ctx* ctx, size_t* num_inflight_tasks )
获取 doca 上下文中正在运行的任务数。
DOCA_STABLE doca_error_t doca_ctx_get_state ( const doca_ctx* ctx, doca_ctx_states ** state )
获取上下文状态。
DOCA_STABLE doca_error_t doca_ctx_get_user_data ( const doca_ctx* ctx, doca_data* user_data )
从上下文中获取用户数据
DOCA_EXPERIMENTAL doca_error_t doca_ctx_set_datapath_on_dpa ( doca_ctx* ctx, doca_dpa* dpa_dev )
此函数将 DOCA 上下文绑定到 dpa 设备。
DOCA_EXPERIMENTAL doca_error_t doca_ctx_set_datapath_on_gpu ( doca_ctx* ctx, doca_gpu* gpu_dev )
此函数将 DOCA 上下文绑定到 gpu 设备。
DOCA_STABLE doca_error_t doca_ctx_set_state_changed_cb ( doca_ctx* ctx, doca_ctx_state_changed_callback_t cb )
设置状态更改回调。
DOCA_STABLE doca_error_t doca_ctx_set_user_data ( doca_ctx* ctx, doca_data user_data )
设置上下文的用户数据
DOCA_STABLE doca_error_t doca_ctx_start ( doca_ctx* ctx )
完成所有配置,并启动 DOCA CTX。
DOCA_STABLE doca_error_t doca_ctx_stop ( doca_ctx* ctx )
停止上下文,允许重新配置。
类型定义
void ( *doca_ctx_state_changed_callback_t )( const union doca_data user_data, doca_ctx*  ctx,  enum doca_ctx_states prev_state,  enum doca_ctx_states next_state )

上下文状态更改时执行的函数。当上下文状态更改时,将调用此函数。

另请参阅

doca_ctx_set_user_data)

参数
union doca_data user_data
ctx
状态已更改的 doca_ctx
enum doca_ctx_states prev_state
enum doca_ctx_states next_state

枚举
enum doca_ctx_states
复制
已复制!
            

‎ The state machine: +-------+ | | +----------------------->| idle + | | | | +---+---+ | | | | doca_ctx_start | | Synchronous: Change state to running and return DOCA_SUCCESS | | Asynchronous: Change state to started and return DOCA_ERROR_IN_PROGRESS | All in flight tasks are | | drained or flushed +-------------------------------------------+ | | | | | | | V V | +----------+ +---------+ | | | Context is connected | | | | Starting |------------------------------->| Running | | | | | | | +----+-----+ +----+----+ | | | | | doca_ctx_stop | doca_ctx_stop | | | | v | | +----------+ | | | | | |-----------------------+ Stopping |<------------------------------------+ | | +----------+


DOCA_CTX_STATE_IDLE = 0
ctx 已创建。资源未分配,ctx 无法分配任务、提交任务、分配事件或注册事件。
DOCA_CTX_STATE_STARTING = 1
已调用 doca_ctx_start,上下文启动是异步的。资源已分配,ctx 无法分配任务、提交任务、分配事件或注册事件。
DOCA_CTX_STATE_RUNNING = 2
已调用 doca_ctx_start(ctx 启动是同步的)或 ctx 连接已完成。资源已分配,ctx 可以分配任务、提交任务、分配事件和注册事件。
DOCA_CTX_STATE_STOPPING = 3

函数
DOCA_EXPERIMENTAL void doca_ctx_flush_tasks ( doca_ctx* ctx )
刷新在提交期间未刷新的任务。
参数
ctx
要刷新的 DOCA 上下文。 必须不是 IDLE 状态

描述

如果 doca_task_submit_ex() 期间未提供 DOCA_TASK_SUBMIT_FLAG_FLUSH,则可以使用此方法刷新正在运行的任务,而无需提交额外的任务。

DOCA_STABLE doca_error_t doca_ctx_get_num_inflight_tasks ( const doca_ctx* ctx, size_t* num_inflight_tasks )
获取 doca 上下文中正在运行的任务数。
参数
ctx
要查询的上下文
num_inflight_tasks
上下文中正在运行的任务总数

返回值

DOCA_SUCCESS 错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

此方法检索 doca 上下文中正在运行的任务数

DOCA_STABLE doca_error_t doca_ctx_get_state ( const doca_ctx* ctx, doca_ctx_states ** state )
获取上下文状态。
参数
ctx
从中获取状态的 doca_ctx
state
当前上下文状态

返回值

DOCA_SUCCESS 错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

此方法检索上下文状态

DOCA_STABLE doca_error_t doca_ctx_get_user_data ( const doca_ctx* ctx, doca_data* user_data )
从上下文中获取用户数据
参数
ctx
从中获取用户数据的 doca_ctx
user_data
要获取的用户数据

返回值

DOCA_SUCCESS 错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

此方法从上下文中检索用户数据(先前使用 doca_ctx_set_user_data 设置)。

DOCA_EXPERIMENTAL doca_error_t doca_ctx_set_datapath_on_dpa ( doca_ctx* ctx, doca_dpa* dpa_dev )
此函数将 DOCA 上下文绑定到 dpa 设备。
参数
ctx
库实例。
dpa_dev
指向 doca_dpa 设备的指针。

返回值

DOCA_SUCCESS - 成功时。 错误代码 - 失败时

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - CTX 已启动。
描述

数据路径将在设备上执行,而不是在 CPU 上执行。

DOCA_EXPERIMENTAL doca_error_t doca_ctx_set_datapath_on_gpu ( doca_ctx* ctx, doca_gpu* gpu_dev )
此函数将 DOCA 上下文绑定到 gpu 设备。
参数
ctx
库实例。
gpu_dev
指向 doca_gpu 设备的指针。

返回值

DOCA_SUCCESS - 成功时。 错误代码 - 失败时

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_BAD_STATE - CTX 已启动。
描述

数据路径将在设备上执行,而不是在 CPU 上执行。

DOCA_STABLE doca_error_t doca_ctx_set_state_changed_cb ( doca_ctx* ctx, doca_ctx_state_changed_callback_t cb )
设置状态更改回调。
参数
ctx
要设置回调的 doca_ctx
cb
doca_ctx_state_changed_callback_t

返回值

DOCA_SUCCESS 错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

此方法设置状态更改回调,该回调在每次上下文状态更改时调用

DOCA_STABLE doca_error_t doca_ctx_set_user_data ( doca_ctx* ctx, doca_data user_data )
设置上下文的用户数据
参数
ctx
要设置用户数据的 doca_ctx
user_data
要设置到上下文的 doca_data

返回值

DOCA_SUCCESS 错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

此方法将用户数据设置到上下文中。用户数据用作 doca_ctx_state_changed_callback_t 中的参数

DOCA_STABLE doca_error_t doca_ctx_start ( doca_ctx* ctx )
完成所有配置,并启动 DOCA CTX。
参数
ctx
要启动的 DOCA 上下文。

返回值

DOCA_SUCCESS - 成功时。 错误代码 - 失败时

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入或未向 CTX 添加任何设备。
  • DOCA_ERROR_NOT_SUPPORTED - CTX 不支持提供的设备之一。
  • DOCA_ERROR_NOT_CONNECTED - ctx 未连接到 PE,并且未设置 gpu 或 dpa 上的数据路径。
  • DOCA_ERROR_INITIALIZATION - 资源初始化失败(可能是由于分配失败),或者设备处于错误状态,或者其他原因导致初始化失败。
  • DOCA_ERROR_UNEXPECTED - ctx 已损坏。
描述

启动 CTX 后,无法再对其进行配置。 使用 doca_ctx_stop 以重新配置 CTX。

以下操作仅在启动后才可能实现

  • 使用 doca_task_submit() 提交任务

以下操作在启动后不可用,并在调用 doca_ctx_stop 后再次可用

DOCA_STABLE doca_error_t doca_ctx_stop ( doca_ctx* ctx )
停止上下文,允许重新配置。
参数
ctx
要停止的 DOCA 上下文。

返回值

DOCA_SUCCESS - 成功时。 错误代码 - 失败时

  • DOCA_ERROR_IN_PROGRESS - 某些任务仍在进行中。 CTX 将移动到停止状态,并且当上下文完全停止时,将调用状态更改回调。
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_CONNECTED - ctx 未连接到 PE,并且未设置 gpu 或 dpa 上的数据路径。
  • DOCA_ERROR_UNEXPECTED - ctx 已损坏。
描述

一旦上下文启动,就无法再对其进行配置。 如果在启动后需要配置上下文,则应调用此方法。 有关更多详细信息,请参见 doca_ctx_start()

2.4.7. DOCA 设备

[ DOCA 核心 ]

DOCA 设备表示由硬件或软件实现支持的可用处理单元。

宏定义
#define DOCA_DEVINFO_IBDEV_NAME_SIZE 64
用于保存 Infiniband/RoCE 设备名称的缓冲区大小。 包括空终止符。
#define DOCA_DEVINFO_IFACE_NAME_SIZE 256
用于保存网络接口名称的缓冲区大小。 包括空终止符。
#define DOCA_DEVINFO_IPV4_ADDR_SIZE 4
IPv4 地址的长度。
#define DOCA_DEVINFO_IPV6_ADDR_SIZE 16
IPv6 地址的长度。
#define DOCA_DEVINFO_MAC_ADDR_SIZE 6
MAC 地址的长度。
#define DOCA_DEVINFO_PCI_ADDR_SIZE 13
用于保存 PCI BDF 格式的缓冲区大小:“XXXX:XX:XX.X”。 包括空终止符。
#define DOCA_DEVINFO_PCI_BDF_SIZE 8
用于保存 PCI BDF 格式的缓冲区大小:“XX:XX.X”。 包括空终止符。
#define DOCA_DEVINFO_REP_PCI_ADDR_SIZE 13
用于保存 PCI BDF 格式的缓冲区大小:“XXXX:XX:XX.X”。 包括空终止符。
#define DOCA_DEVINFO_REP_PCI_BDF_SIZE 8
用于保存 PCI BDF 格式的缓冲区大小:“XX:XX.X”。 包括空终止符。
#define DOCA_DEVINFO_REP_VUID_SIZE 128
用于保存 VUID 的缓冲区大小。 包括空终止符。
#define DOCA_DEVINFO_VUID_SIZE 128
用于保存 VUID 的缓冲区大小。 包括空终止符。
枚举
enum doca_devinfo_rep_filter
函数
DOCA_STABLE doca_devinfo* doca_dev_as_devinfo ( const doca_dev* dev )
从设备获取本地设备信息。 当希望在打开设备并销毁 devinfo 列表后查询有关设备的信息时,这应该很有用。
DOCA_STABLE doca_error_t doca_dev_close ( doca_dev* dev )
销毁已分配的本地设备实例。
DOCA_STABLE doca_error_t doca_dev_open ( doca_devinfo* devinfo, doca_dev** dev )
初始化本地设备以供使用。
DOCA_STABLE doca_devinfo_rep* doca_dev_rep_as_devinfo ( doca_dev_rep* dev_rep )
从设备获取表示器设备信息。 当希望在打开设备并销毁 devinfo 列表后查询有关设备的信息时,这应该很有用。
DOCA_STABLE doca_error_t doca_dev_rep_close ( doca_dev_rep* dev )
销毁已分配的表示器设备实例。
DOCA_STABLE doca_error_t doca_dev_rep_open ( doca_devinfo_rep* devinfo, doca_dev_rep** dev_rep )
初始化表示器设备以供使用。
DOCA_STABLE doca_error_t doca_devinfo_cap_is_hotplug_manager_supported ( const doca_devinfo* devinfo, uint8_t* is_hotplug_manager )
获取 DOCA devinfo 的热插拔管理器功能。
DOCA_EXPERIMENTAL doca_error_t doca_devinfo_cap_is_notification_moderation_supported ( const doca_devinfo* devinfo, uint8_t* is_notification_moderation_supported )
检查设备是否支持通知节制。
DOCA_STABLE doca_error_t doca_devinfo_create_list ( doca_devinfo*** dev_list, uint32_t* nb_devs )
创建所有可用本地设备的列表。
DOCA_STABLE doca_error_t doca_devinfo_destroy_list ( doca_devinfo** dev_list )
销毁本地设备信息结构的列表。
DOCA_EXPERIMENTAL doca_error_t doca_devinfo_get_active_rate ( const doca_devinfo* devinfo, uint64_t* active_rate )
获取 DOCA devinfo 的有效速率。
DOCA_STABLE doca_error_t doca_devinfo_get_ibdev_name ( const doca_devinfo* devinfo, char* ibdev_name, uint32_t size )
获取 DOCA devinfo 表示的 IB 设备的名称。
DOCA_STABLE doca_error_t doca_devinfo_get_iface_name ( const doca_devinfo* devinfo, char* iface_name, uint32_t size )
获取 DOCA devinfo 的以太网接口的名称。
DOCA_STABLE doca_error_t doca_devinfo_get_ipv4_addr ( const doca_devinfo* devinfo, uint8_t* ipv4_addr, uint32_t size )
获取 DOCA devinfo 的 IPv4 地址。
DOCA_STABLE doca_error_t doca_devinfo_get_ipv6_addr ( const doca_devinfo* devinfo, uint8_t* ipv6_addr, uint32_t size )
获取 DOCA devinfo 的 IPv6 地址。
DOCA_STABLE doca_error_t doca_devinfo_get_lid ( const doca_devinfo* devinfo, uint16_t* lid )
获取 DOCA devinfo 的端口 LID。
DOCA_STABLE doca_error_t doca_devinfo_get_mac_addr ( const doca_devinfo* devinfo, uint8_t* mac_addr, uint32_t size )
获取 DOCA devinfo 的 MAC 地址。
DOCA_STABLE doca_error_t doca_devinfo_get_pci_addr_str ( const doca_devinfo* devinfo, char* pci_addr_str )
获取 DOCA devinfo 的 PCI 地址。
DOCA_STABLE doca_error_t doca_devinfo_is_equal_pci_addr ( const doca_devinfo* devinfo, const char* pci_addr_str, uint8_t* is_equal )
检查 PCI 地址是否属于 DOCA devinfo。
DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_all_supported ( const doca_devinfo* devinfo, uint8_t* filter_all_supported )
获取设备的表示器设备发现功能。
DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_emulated_supported ( const doca_devinfo* devinfo, uint8_t* filter_emulated_supported )
获取设备的远程模拟设备发现功能。
DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_net_supported ( const doca_devinfo* devinfo, uint8_t* filter_net_supported )
获取设备的远程网络发现功能。
DOCA_STABLE doca_error_t doca_devinfo_rep_create_list ( doca_dev* dev, int  filter, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
创建 dev 可访问的可用表示器设备列表。
DOCA_STABLE doca_error_t doca_devinfo_rep_destroy_list ( doca_devinfo_rep** dev_list_rep )
销毁表示器设备信息结构的列表。
DOCA_STABLE doca_error_t doca_devinfo_rep_get_is_hotplug ( const doca_devinfo_rep* devinfo_rep, uint8_t* is_hotplug )
查询表示器设备是否为热插拔设备。
DOCA_STABLE doca_error_t doca_devinfo_rep_get_pci_addr_str ( const doca_devinfo_rep* devinfo_rep, char* pci_addr_str )
获取 DOCA devinfo_rep 的 PCI 地址。
DOCA_STABLE doca_error_t doca_devinfo_rep_get_pci_func_type ( const doca_devinfo_rep* devinfo_rep, enum doca_pci_func_type* pci_func_type )
获取 DOCA devinfo_rep 的 PCI 功能类型。
DOCA_STABLE doca_error_t doca_devinfo_rep_get_vuid ( const doca_devinfo_rep* devinfo_rep, char* rep_vuid, uint32_t size )
获取表示器 DOCA devinfo 的供应商唯一 ID。
DOCA_STABLE doca_error_t doca_devinfo_rep_is_equal_pci_addr ( const doca_devinfo_rep* devinfo_rep, const char* pci_addr_str, uint8_t* is_equal )
检查 PCI 地址是否属于 DOCA devinfo_rep。
宏定义
#define DOCA_DEVINFO_IBDEV_NAME_SIZE 64

#define DOCA_DEVINFO_IFACE_NAME_SIZE 256

#define DOCA_DEVINFO_IPV4_ADDR_SIZE 4

#define DOCA_DEVINFO_IPV6_ADDR_SIZE 16

#define DOCA_DEVINFO_MAC_ADDR_SIZE 6

#define DOCA_DEVINFO_PCI_ADDR_SIZE 13

#define DOCA_DEVINFO_PCI_BDF_SIZE 8

#define DOCA_DEVINFO_REP_PCI_ADDR_SIZE 13

#define DOCA_DEVINFO_REP_PCI_BDF_SIZE 8

#define DOCA_DEVINFO_REP_VUID_SIZE 128

#define DOCA_DEVINFO_VUID_SIZE 128

枚举
enum doca_devinfo_rep_filter

按类型筛选表示器设备

可能有多个选项,但有些选项互斥。

DOCA_DEVINFO_REP_FILTER_ALL = 0
DOCA_DEVINFO_REP_FILTER_NET = 1<<1
DOCA_DEVINFO_REP_FILTER_EMULATED = 1<<2

函数
DOCA_STABLE doca_devinfo* doca_dev_as_devinfo ( const doca_dev* dev )
从设备获取本地设备信息。 当希望在打开设备并销毁 devinfo 列表后查询有关设备的信息时,这应该很有用。
参数
dev
doca 设备实例。

返回值

成功时匹配的 doca_devinfo 实例,如果 dev 无效或由 doca_rdma_bridge_open_dev_from_pd() 创建,则为 NULL。

描述

DOCA_STABLE doca_error_t doca_dev_close ( doca_dev* dev )
销毁已分配的本地设备实例。
参数
dev
本地 doca 设备实例。

返回值

DOCA_SUCCESS - 成功时。

  • DOCA_ERROR_IN_USE - 无法释放设备资源。
描述

关闭设备或将其引用计数减一。 如果同一个设备被多次打开,则只有最后一次调用 close 才会尝试销毁设备。

DOCA_STABLE doca_error_t doca_dev_open ( doca_devinfo* devinfo, doca_dev** dev )
初始化本地设备以供使用。
参数
devinfo
请求设备的 devinfo 结构。
dev
成功时初始化的本地 doca 设备实例。 仅在成功时有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 无法为设备分配保护域。
  • DOCA_ERROR_NOT_CONNECTED - 无法打开设备。
  • DOCA_ERROR_INITIALIZATION - 超出了最大打开设备数。
描述

打开设备或将其引用计数加一。 该设备稍后可以被其他库使用。 对于每次调用 doca_dev_open() 都应该调用 doca_dev_close()

DOCA_STABLE doca_devinfo_rep* doca_dev_rep_as_devinfo ( doca_dev_rep* dev_rep )
从设备获取表示器设备信息。 当希望在打开设备并销毁 devinfo 列表后查询有关设备的信息时,这应该很有用。
参数
dev_rep
表示器 doca 设备实例。

返回值

成功时匹配的 doca_devinfo_rep 实例,如果 dev_rep 无效,则为 NULL。

描述

DOCA_STABLE doca_error_t doca_dev_rep_close ( doca_dev_rep* dev )
销毁已分配的表示器设备实例。
参数
dev
表示器 doca 设备实例。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_IN_USE - 无法释放设备资源。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

DOCA_STABLE doca_error_t doca_dev_rep_open ( doca_devinfo_rep* devinfo, doca_dev_rep** dev_rep )
初始化表示器设备以供使用。
参数
devinfo
请求设备的 devinfo 结构。
dev_rep
成功时初始化的表示器 doca 设备实例。 仅在成功时有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 无法为设备分配内存。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

DOCA_STABLE doca_error_t doca_devinfo_cap_is_hotplug_manager_supported ( const doca_devinfo* devinfo, uint8_t* is_hotplug_manager )
获取 DOCA devinfo 的热插拔管理器功能。
参数
devinfo
要查询的设备。
is_hotplug_manager
如果支持热插拔管理器功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询功能支持。
描述

热插拔管理器属性类型:uint8_t*。

DOCA_EXPERIMENTAL doca_error_t doca_devinfo_cap_is_notification_moderation_supported ( const doca_devinfo* devinfo, uint8_t* is_notification_moderation_supported )
检查设备是否支持通知节制。
参数
devinfo
要查询的设备。
is_notification_moderation_supported
如果设备支持通知节制,则为 1

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询功能支持。
描述

通知节制支持类型:uint8_t*。

DOCA_STABLE doca_error_t doca_devinfo_create_list ( doca_devinfo*** dev_list, uint32_t* nb_devs )
创建所有可用本地设备的列表。
参数
dev_list
指向指针数组的指针。 然后可以按如下方式访问输出 (*dev_list)[idx]。
nb_devs
可用本地设备的数量。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 无法分配足够的空间。
  • DOCA_ERROR_NOT_FOUND - 无法获取 RDMA 设备列表
描述

列出有关可用设备的信息,要开始使用设备,您首先必须调用 doca_dev_open(),同时传递此列表的元素。 列表元素一旦销毁就变为无效。

注意

返回的列表必须使用 doca_devinfo_destroy_list() 销毁


DOCA_STABLE doca_error_t doca_devinfo_destroy_list ( doca_devinfo** dev_list )
销毁本地设备信息结构的列表。
参数
dev_list
要销毁的列表。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_IN_USE - 列表中的至少一个设备处于损坏状态。
描述

销毁设备信息列表,一旦列表被销毁,所有元素都变为无效。

DOCA_EXPERIMENTAL doca_error_t doca_devinfo_get_active_rate ( const doca_devinfo* devinfo, uint64_t* active_rate )
获取 DOCA devinfo 的有效速率。
参数
devinfo
要查询的设备。
active_rate
设备上给定端口的有效速率。 以比特/秒为单位给出。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询端口速率。
描述

DOCA_STABLE doca_error_t doca_devinfo_get_ibdev_name ( const doca_devinfo* devinfo, char* ibdev_name, uint32_t size )
获取 DOCA devinfo 表示的 IB 设备的名称。
参数
devinfo
要查询的设备。
ibdev_name
devinfo 表示的 IB 设备的名称。
size
输入 ibdev_name 缓冲区的大小,必须至少为 DOCA_DEVINFO_IBDEV_NAME_SIZE,其中包括空终止字节。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

IB 设备类型的名称:char[DOCA_DEVINFO_IBDEV_NAME_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_get_iface_name ( const doca_devinfo* devinfo, char* iface_name, uint32_t size )
获取 DOCA devinfo 的以太网接口的名称。
参数
devinfo
要查询的设备。
iface_name
devinfo 的以太网接口的名称。
size
输入 iface_name 缓冲区的大小,必须至少为 DOCA_DEVINFO_IFACE_NAME_SIZE,其中包括空终止字节。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_OPERATING_SYSTEM - 无法从操作系统获取接口名称
描述

以太网接口的名称与其在 ifconfig 中的名称相同。 以太网接口类型的名称:char[DOCA_DEVINFO_IFACE_NAME_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_get_ipv4_addr ( const doca_devinfo* devinfo, uint8_t* ipv4_addr, uint32_t size )
获取 DOCA devinfo 的 IPv4 地址。
参数
devinfo
要查询的设备。
ipv4_addr
devinfo 的 IPv4 地址。
size
输入 ipv4_addr 缓冲区的大小,必须至少为 DOCA_DEVINFO_IPV4_ADDR_SIZE

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_FOUND - 未分配 IPv4 地址
  • DOCA_ERROR_OPERATING_SYSTEM - 无法从操作系统获取 IPv4 地址
描述

IPv4 地址类型:uint8_t[DOCA_DEVINFO_IPV4_ADDR_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_get_ipv6_addr ( const doca_devinfo* devinfo, uint8_t* ipv6_addr, uint32_t size )
获取 DOCA devinfo 的 IPv6 地址。
参数
devinfo
要查询的设备。
ipv6_addr
devinfo 的 IPv6 地址。
size
输入 ipv6_addr 缓冲区的大小,必须至少为 DOCA_DEVINFO_IPV6_ADDR_SIZE

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_OPERATING_SYSTEM - 无法从操作系统获取 IPv6 地址
描述

IPv6 地址类型:uint8_t[DOCA_DEVINFO_IPV6_ADDR_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_get_lid ( const doca_devinfo* devinfo, uint16_t* lid )
获取 DOCA devinfo 的端口 LID。
参数
devinfo
要查询的设备。
lid
devinfo 的端口 LID。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询端口 LID。
  • DOCA_ERROR_NOT_SUPPORTED - 设备端口的链路层不是 IB。
描述

端口 LID 类型: uint16_t *。

DOCA_STABLE doca_error_t doca_devinfo_get_mac_addr ( const doca_devinfo* devinfo, uint8_t* mac_addr, uint32_t size )
获取 DOCA devinfo 的 MAC 地址。
参数
devinfo
要查询的设备。
mac_addr
devinfo 的 MAC 地址。
size
输入 mac_addr 缓冲区的大小,必须至少为 DOCA_DEVINFO_MAC_ADDR_SIZE

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 设备端口的链路层不是 RoCE。
描述

MAC 地址类型: uint8_t[DOCA_DEVINFO_MAC_ADDR_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_get_pci_addr_str ( const doca_devinfo* devinfo, char* pci_addr_str )
获取 DOCA devinfo 的 PCI 地址。
参数
devinfo
要查询的设备。
pci_addr_str
devinfo 的 PCI 地址,大小应至少为 DOCA_DEVINFO_PCI_ADDR_SIZE。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_OPERATING_SYSTEM - 从操作系统获取 PCI 地址失败
描述

PCI 地址字符串格式为 "域:总线:设备.功能",其中每个值都用十六进制数字表示,例如,"0000:3a:00.0"

DOCA_STABLE doca_error_t doca_devinfo_is_equal_pci_addr ( const doca_devinfo* devinfo, const char* pci_addr_str, uint8_t* is_equal )
检查 PCI 地址是否属于 DOCA devinfo。
参数
devinfo
要查询的设备。
pci_addr_str
要检查的 PCI 地址,应采用以下格式之一
  • "域:总线:设备.功能",例如,"0000:3a:00.0" (大小包括空终止符的 DOCA_DEVINFO_PCI_ADDR_SIZE)。
  • "总线:设备.功能",例如,"3a:00.0" (大小包括空终止符的 DOCA_DEVINFO_PCI_BDF_SIZE)。
is_equal
如果 pci_addr_str 属于 devinfo,则为 1,否则为 0。如果发生错误,则不保证特定值。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_OPERATING_SYSTEM - 从操作系统获取实际 PCI 地址以进行比较失败。
描述

DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_all_supported ( const doca_devinfo* devinfo, uint8_t* filter_all_supported )
获取设备的表示器设备发现功能。
参数
devinfo
要查询的设备。
filter_all_supported
如果支持 rep list all 功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询功能支持。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

获取 uint8_t 值,定义设备是否可用于创建代表设备列表。如果返回 true,则此设备至少支持一种代表类型。请参阅 doca_devinfo_rep_create_list()。 true - 设备可以与远程列表创建 API 和过滤器 DOCA_DEVINFO_REP_FILTER_ALL 一起使用。 false - 提供 DOCA_DEVINFO_REP_FILTER_ALL 保证会因 DOCA_ERROR_NOT_SUPPORTED 而失败。

DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_emulated_supported ( const doca_devinfo* devinfo, uint8_t* filter_emulated_supported )
获取设备的远程模拟设备发现功能。
参数
devinfo
要查询的设备。
filter_emulated_supported
如果支持 list emulated 功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询功能支持。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

获取 uint8_t 值,定义设备是否可用于创建模拟代表设备列表。请参阅 doca_devinfo_rep_create_list()。 true - 设备可以与远程列表创建 API 和过滤器 DOCA_DEVINFO_REP_FILTER_EMULATED 一起使用。 false - 提供 DOCA_DEVINFO_REP_FILTER_EMULATED 保证会因 DOCA_ERROR_NOT_SUPPORTED 而失败。

DOCA_STABLE doca_error_t doca_devinfo_rep_cap_is_filter_net_supported ( const doca_devinfo* devinfo, uint8_t* filter_net_supported )
获取设备的远程网络发现功能。
参数
devinfo
要查询的设备。
filter_net_supported
如果支持 rep list net 功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 无法查询功能支持。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

获取 uint8_t 值,定义设备是否可用于创建网络远程设备列表。请参阅 doca_devinfo_remote_list_create()。 true - 设备可以与远程列表创建 API 和过滤器 DOCA_DEV_REMOTE_FILTER_NET 一起使用。 false - 提供 DOCA_DEV_REMOTE_FILTER_NET 保证会因 DOCA_ERROR_NOT_SUPPORTED 而失败。

DOCA_STABLE doca_error_t doca_devinfo_rep_create_list ( doca_dev* dev, int  filter, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
创建 dev 可访问的可用表示器设备列表。
参数
dev
可访问代表设备的本地设备。
filter
代表类型位图过滤器。有关更多详细信息,请参阅枚举 doca_devinfo_rep_filter。
dev_list_rep
指向指针数组的指针。然后可以按如下方式访问输出 (*dev_list_rep)[idx]。
nb_devs_rep
可用代表设备的数量。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NO_MEMORY - 分配列表内存失败。
  • DOCA_ERROR_DRIVER - 查询驱动程序失败。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

返回所提供设备管理的所有代表。提供的设备必须是本地设备。代表可以表示连接到主机的网络功能,也可以表示连接到主机的模拟功能。

注意

返回的列表必须使用 doca_devinfo_rep_destroy_list() 销毁


DOCA_STABLE doca_error_t doca_devinfo_rep_destroy_list ( doca_devinfo_rep** dev_list_rep )
销毁表示器设备信息结构的列表。
参数
dev_list_rep
要销毁的列表。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_IN_USE - 创建列表的 doca_dev 处于损坏状态。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

销毁代表设备信息列表,一旦列表被销毁,列表的所有元素都被视为无效。

DOCA_STABLE doca_error_t doca_devinfo_rep_get_is_hotplug ( const doca_devinfo_rep* devinfo_rep, uint8_t* is_hotplug )
查询表示器设备是否为热插拔设备。
参数
devinfo_rep
代表设备信息
is_hotplug
如果代表设备是热插拔设备,则为 1。如果代表设备是静态插入设备,则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

DOCA_STABLE doca_error_t doca_devinfo_rep_get_pci_addr_str ( const doca_devinfo_rep* devinfo_rep, char* pci_addr_str )
获取 DOCA devinfo_rep 的 PCI 地址。
参数
devinfo_rep
要查询的设备。
pci_addr_str
devinfo_rep 的 PCI 地址,大小应至少为 DOCA_DEVINFO_REP_PCI_ADDR_SIZE。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
  • DOCA_ERROR_NO_MEMORY - 没有足够的内存来生成字符串化的 PCI 地址。
  • DOCA_ERROR_UNEXPECTED - 发生意外错误。
描述

PCI 地址字符串格式为 "域:总线:设备.功能",其中每个值都用十六进制数字表示,例如,"0000:3a:00.0"。

DOCA_STABLE doca_error_t doca_devinfo_rep_get_pci_func_type ( const doca_devinfo_rep* devinfo_rep, enum doca_pci_func_type* pci_func_type )
获取 DOCA devinfo_rep 的 PCI 功能类型。
参数
devinfo_rep
要查询的设备代表。
pci_func_type
devinfo_rep 的 PCI 功能类型。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

pci 功能类型: enum doca_pci_func_type。

DOCA_STABLE doca_error_t doca_devinfo_rep_get_vuid ( const doca_devinfo_rep* devinfo_rep, char* rep_vuid, uint32_t size )
获取表示器 DOCA devinfo 的供应商唯一 ID。
参数
devinfo_rep
要查询的代表设备。
rep_vuid
devinfo_rep 的供应商唯一 ID。
size
vuid 缓冲区的大小,包括终止空字节 ('\0')。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
描述

供应商唯一 ID 用作 VF/PF 的稳定 ID。供应商唯一 ID 类型: char[DOCA_DEVINFO_VUID_SIZE]。

DOCA_STABLE doca_error_t doca_devinfo_rep_is_equal_pci_addr ( const doca_devinfo_rep* devinfo_rep, const char* pci_addr_str, uint8_t* is_equal )
检查 PCI 地址是否属于 DOCA devinfo_rep。
参数
devinfo_rep
要查询的设备代表。
pci_addr_str
要检查的 PCI 地址,应采用以下格式之一
  • "域:总线:设备.功能",例如,"0000:3a:00.0" (大小包括空终止符的 DOCA_DEVINFO_PCI_ADDR_SIZE)。
  • "总线:设备.功能",例如,"3a:00.0" (大小包括空终止符的 DOCA_DEVINFO_PCI_BDF_SIZE)。
is_equal
如果 pci_addr_str 属于 devinfo_rep,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 本地设备未公开表示器设备,或 dev 由 doca_rdma_bridge_open_dev_from_pd() 创建
  • DOCA_ERROR_NO_MEMORY - 没有足够的内存来生成 devinfo_rep PCI 地址以进行比较。
  • DOCA_ERROR_UNEXPECTED - 发生意外错误。
描述

DOCA 通信通道库让您可以在主机和 DPU 之间设置直接通信通道。该通道通过 RoCE/IB 协议运行,不属于 TCP/IP 协议栈的一部分。请遵循程序员指南以获取使用说明。

模块

 DOCA Comch 消费者
 
 DOCA Comch MsgQ
 
 DOCA Comch 生产者
 

类型定义

typedef void  ( *doca_comch_event_connection_status_changed_cb_t )( doca_comch_event_connection_status_changed*  event, doca_comch_connection*  comch_connection,  uint8_t change_successful )
typedef void  ( *doca_comch_event_consumer_cb_t )( doca_comch_event_consumer*  event, doca_comch_connection*  comch_connection,  uint32_t id )
typedef void  ( *doca_comch_event_msg_recv_cb_t )( doca_comch_event_msg_recv*  event, uint8_t*  recv_buffer,  uint32_t msg_len, doca_comch_connection*  comch_connection )
typedef void  ( *doca_comch_task_send_completion_cb_t )( doca_comch_task_send*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

枚举

enum doca_comch_counter

函数

DOCA_STABLE doca_error_t doca_comch_cap_client_is_supported ( const doca_devinfo* devinfo )
DOCA_STABLE doca_error_t doca_comch_cap_get_max_clients ( const doca_devinfo* devinfo, uint32_t* num_clients )
DOCA_STABLE doca_error_t doca_comch_cap_get_max_msg_size ( const doca_devinfo* devinfo, uint32_t* size )
DOCA_STABLE doca_error_t doca_comch_cap_get_max_name_len ( const doca_devinfo* devinfo, uint32_t* max_name_len )
DOCA_STABLE doca_error_t doca_comch_cap_get_max_recv_queue_size ( const doca_devinfo* devinfo, uint32_t* size )
DOCA_STABLE doca_error_t doca_comch_cap_get_max_send_tasks ( const doca_devinfo* devinfo, uint32_t* max_send_tasks )
DOCA_STABLE doca_error_t doca_comch_cap_server_is_supported ( const doca_devinfo* devinfo )
DOCA_STABLE doca_ctx* doca_comch_client_as_ctx ( doca_comch_client* comch_client )
DOCA_STABLE doca_error_t doca_comch_client_create ( doca_dev* dev, const char* name, doca_comch_client** comch_client )
DOCA_STABLE doca_error_t doca_comch_client_destroy ( doca_comch_client* comch_client )
DOCA_STABLE doca_error_t doca_comch_client_event_consumer_register ( doca_comch_client* comch_client, doca_comch_event_consumer_cb_t new_consumer_event_cb, doca_comch_event_consumer_cb_t expired_consumer_event_cb )
配置 doca_comch 回调函数,用于在客户端上下文中接收消费者事件。
DOCA_STABLE doca_error_t doca_comch_client_event_msg_recv_register ( doca_comch_client* comch_client, doca_comch_event_msg_recv_cb_t recv_event_cb )
配置客户端上下文的 doca_comch 接收事件回调函数。
DOCA_STABLE doca_comch_client* doca_comch_client_get_client_ctx ( const doca_comch_connection* connection )
DOCA_STABLE doca_error_t doca_comch_client_get_connection ( const doca_comch_client* comch_client, doca_comch_connection** connection )
DOCA_STABLE doca_error_t doca_comch_client_get_device ( const doca_comch_client* comch_client, doca_dev** dev )
DOCA_STABLE doca_error_t doca_comch_client_get_max_msg_size ( const doca_comch_client* comch_client, uint32_t* size )
DOCA_STABLE doca_error_t doca_comch_client_get_recv_queue_size ( const doca_comch_client* comch_client, uint32_t* size )
DOCA_STABLE doca_error_t doca_comch_client_set_max_msg_size ( doca_comch_client* comch_client, uint32_t size )
DOCA_STABLE doca_error_t doca_comch_client_set_recv_queue_size ( doca_comch_client* comch_client, uint32_t size )
DOCA_STABLE doca_error_t doca_comch_client_task_send_alloc_init ( doca_comch_client* comch_client, doca_comch_connection* peer, const void* msg, uint32_t len, doca_comch_task_send** task )
DOCA_STABLE doca_error_t doca_comch_client_task_send_set_conf ( doca_comch_client* comch_client, doca_comch_task_send_completion_cb_t task_completion_cb, doca_comch_task_send_completion_cb_t task_error_cb, uint32_t num_send_tasks )
DOCA_STABLE doca_error_t doca_comch_connection_get_counter ( const doca_comch_connection* comch_connection, doca_comch_counter counter_type, uint64_t* counter_value )
获取给定 comch_connection 的统计计数器
DOCA_STABLE doca_data doca_comch_connection_get_user_data ( const doca_comch_connection* connection )
DOCA_STABLE doca_error_t doca_comch_connection_set_user_data ( doca_comch_connection* connection, doca_data user_data )
DOCA_STABLE doca_error_t doca_comch_connection_update_info ( doca_comch_connection* comch_connection )
更新给定 comch_connection 的统计信息
DOCA_STABLE doca_ctx* doca_comch_server_as_ctx ( doca_comch_server* comch_server )
DOCA_STABLE doca_error_t doca_comch_server_create ( doca_dev* dev, doca_dev_rep* repr, const char* name, doca_comch_server** comch_server )
DOCA_STABLE doca_error_t doca_comch_server_destroy ( doca_comch_server* comch_server )
DOCA_STABLE doca_error_t doca_comch_server_disconnect ( doca_comch_server* comch_server, doca_comch_connection* connection )
DOCA_STABLE doca_error_t doca_comch_server_event_connection_status_changed_register ( doca_comch_server* comch_server, doca_comch_event_connection_status_changed_cb_t connect_event_cb, doca_comch_event_connection_status_changed_cb_t disconnect_event_cb )
配置服务器上下文的 doca_comch 接收事件回调函数。
DOCA_STABLE doca_error_t doca_comch_server_event_consumer_register ( doca_comch_server* comch_server, doca_comch_event_consumer_cb_t new_consumer_event_cb, doca_comch_event_consumer_cb_t expired_consumer_event_cb )
配置 doca_comch 回调函数,用于在服务器上下文中接收消费者事件。
DOCA_STABLE doca_error_t doca_comch_server_event_msg_recv_register ( doca_comch_server* comch_server, doca_comch_event_msg_recv_cb_t recv_event_cb )
配置服务器上下文的 doca_comch 接收事件回调函数。
DOCA_STABLE doca_error_t doca_comch_server_get_device ( const doca_comch_server* comch_server, doca_dev** dev )
DOCA_STABLE doca_error_t doca_comch_server_get_device_rep ( const doca_comch_server* comch_server, doca_dev_rep** rep )
DOCA_STABLE doca_error_t doca_comch_server_get_max_msg_size ( const doca_comch_server* comch_server, uint32_t* size )
DOCA_STABLE doca_error_t doca_comch_server_get_recv_queue_size ( const doca_comch_server* comch_server, uint32_t* size )
DOCA_STABLE doca_comch_server* doca_comch_server_get_server_ctx ( const doca_comch_connection* connection )
DOCA_STABLE doca_error_t doca_comch_server_set_max_msg_size ( doca_comch_server* comch_server, uint32_t size )
DOCA_STABLE doca_error_t doca_comch_server_set_recv_queue_size ( doca_comch_server* comch_server, uint32_t size )
DOCA_STABLE doca_error_t doca_comch_server_task_send_alloc_init ( doca_comch_server* comch_server, doca_comch_connection* peer, const void* msg, uint32_t len, doca_comch_task_send** task )
DOCA_STABLE doca_error_t doca_comch_server_task_send_set_conf ( doca_comch_server* comch_server, doca_comch_task_send_completion_cb_t task_completion_cb, doca_comch_task_send_completion_cb_t task_error_cb, uint32_t num_send_tasks )
DOCA_STABLE doca_task* doca_comch_task_send_as_task ( doca_comch_task_send* task )

类型定义

void ( *doca_comch_event_connection_status_changed_cb_t )( doca_comch_event_connection_status_changed*  event, doca_comch_connection*  comch_connection,  uint8_t change_successful )

在 doca_comch 连接事件上执行的函数。

实现可以假设这些值不为 NULL。

参数
event
已触发的 Doca_comch 连接事件。
comch_connection
指向触发连接事件的对等方的指针。
uint8_t change_successful

void ( *doca_comch_event_consumer_cb_t )( doca_comch_event_consumer*  event, doca_comch_connection*  comch_connection,  uint32_t id )

在 doca_comch 消费者事件上执行的函数。

实现可以假设这些值不为 NULL。

参数
event
已触发的 Doca_comch 消费者事件。
comch_connection
指向触发生成消费者事件的 comch_connection 的指针。
uint32_t id

void ( *doca_comch_event_msg_recv_cb_t )( doca_comch_event_msg_recv*  event, uint8_t*  recv_buffer,  uint32_t msg_len, doca_comch_connection*  comch_connection )

在 doca_comch 接收消息事件上执行的函数。

实现可以假设这些值不为 NULL。

参数
event
已触发的 Doca_comch 接收消息事件。
recv_buffer
指向与事件关联的消息数据的指针。
uint32_t msg_len
comch_connection
指向生成消息事件的连接实例的指针。

void ( *doca_comch_task_send_completion_cb_t )( doca_comch_task_send*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

在 doca_comch 发送任务完成时执行的函数。用于任务成功和失败。

实现可以假设此值不为 NULL。

参数
task
已完成的 DOCA Comch 发送任务。
union doca_data task_user_data
union doca_data ctx_user_data

枚举

enum doca_comch_counter

用于连接统计信息查询的可用计数器

DOCA_COMCH_COUNTER_SENT_MESSAGES = 1
DOCA_COMCH_COUNTER_SENT_BYTES = 2
DOCA_COMCH_COUNTER_RECV_MESSAGES = 3
DOCA_COMCH_COUNTER_RECV_BYTES = 4

函数

DOCA_STABLE doca_error_t doca_comch_cap_client_is_supported ( const doca_devinfo* devinfo )

参数
devinfo
DOCA 设备信息。

返回值

DOCA_SUCCESS - 如果设备可以作为客户端运行。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 提供的 devinfo 无法实现 cc 客户端
描述

检查给定设备是否能够运行通信通道客户端。

DOCA_STABLE doca_error_t doca_comch_cap_get_max_clients ( const doca_devinfo* devinfo, uint32_t* num_clients )

参数
devinfo
要查询功能的 devinfo。
num_clients
可以连接到单个 doca_comch 服务器的客户端数量。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取可以连接到单个 doca_comch 服务器的最大客户端数量。

DOCA_STABLE doca_error_t doca_comch_cap_get_max_msg_size ( const doca_devinfo* devinfo, uint32_t* size )

参数
devinfo
要查询功能的 devinfo。
size
任何 cc 实例上可用的最大消息大小。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取可以在任何通信通道实例上使用的最大消息大小。

DOCA_STABLE doca_error_t doca_comch_cap_get_max_name_len ( const doca_devinfo* devinfo, uint32_t* max_name_len )

参数
devinfo
要查询功能的 devinfo。
max_name_len
cc 最大名称长度,包括终止空字节 ('\0')。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取可以在 cc 实例中使用的最大名称长度。

DOCA_STABLE doca_error_t doca_comch_cap_get_max_recv_queue_size ( const doca_devinfo* devinfo, uint32_t* size )

参数
devinfo
要查询功能的 devinfo。
size
任何 cc 实例上支持的最大接收队列大小。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取可以在任何通信通道实例上使用的最大接收队列大小。

DOCA_STABLE doca_error_t doca_comch_cap_get_max_send_tasks ( const doca_devinfo* devinfo, uint32_t* max_send_tasks )

参数
devinfo
要查询功能的 devinfo。
max_send_tasks
任何 cc 实例支持的最大发送任务数。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取可以在任何 cc 实例上使用的最大发送任务数。

DOCA_STABLE doca_error_t doca_comch_cap_server_is_supported ( const doca_devinfo* devinfo )

参数
devinfo
DOCA 设备信息。

返回值

DOCA_SUCCESS - 如果设备可以作为服务器运行。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 提供的 devinfo 无法实现 cc 服务器。
描述

检查给定设备是否能够运行通信通道服务器。

DOCA_STABLE doca_ctx* doca_comch_client_as_ctx ( doca_comch_client* comch_client )

参数
comch_client
DOCA Comch 客户端实例。在不再需要上下文之前,它必须保持有效。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch 实例转换为通用上下文,以便与 doca 核心对象一起使用。

DOCA_STABLE doca_error_t doca_comch_client_create ( doca_dev* dev, const char* name, doca_comch_client** comch_client )

参数
dev
要在 DOCA Comch 客户端实例中使用的设备。
name
客户端将连接到的服务器的标识符。最大长度(包括终止符 '\0')通过 doca_comch_cap_get_max_name_len() 获取。
comch_client
指向要设置为创建的 doca_comch 客户端实例的指针的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 一个或多个参数为空。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_comch 失败。
  • DOCA_ERROR_INITIALIZATION - 初始化互斥锁失败。
描述

创建 DOCA Comch 客户端实例。

DOCA_STABLE doca_error_t doca_comch_client_destroy ( doca_comch_client* comch_client )

参数
comch_client
要销毁的 DOCA Comch 客户端实例。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - cc 参数为 NULL 指针。
  • DOCA_ERROR_IN_USE - 无法获得对 cc 实例的独占访问权。
描述

销毁 DOCA Comch 客户端实例。

DOCA_STABLE doca_error_t doca_comch_client_event_consumer_register ( doca_comch_client* comch_client, doca_comch_event_consumer_cb_t new_consumer_event_cb, doca_comch_event_consumer_cb_t expired_consumer_event_cb )
配置 doca_comch 回调函数,用于在客户端上下文中接收消费者事件。
参数
comch_client
指向 doca_comch_client 实例的指针。
new_consumer_event_cb
创建新消费者时的消费者事件回调函数。
expired_consumer_event_cb
消费者过期时的消费者事件回调函数。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果其中一个参数为 NULL。
  • DOCA_ERROR_BAD_STATE - doca_comch_servcie 上下文状态不是空闲状态。
描述

DOCA_STABLE doca_error_t doca_comch_client_event_msg_recv_register ( doca_comch_client* comch_client, doca_comch_event_msg_recv_cb_t recv_event_cb )
配置客户端上下文的 doca_comch 接收事件回调函数。
参数
comch_client
指向 doca_comch_client 实例的指针。
recv_event_cb
接收事件回调函数。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果其中一个参数为 NULL。
  • DOCA_ERROR_BAD_STATE - doca_comch 上下文状态不是空闲状态。
描述

DOCA_STABLE doca_comch_client* doca_comch_client_get_client_ctx ( const doca_comch_connection* connection )

参数
connection
DOCA Comch 连接实例。

返回值

成功时返回 doca_comch_client 对象。如果连接与服务器上下文相关,则返回 NULL。

描述

从给定连接获取 doca_comch_client 上下文。

DOCA_STABLE doca_error_t doca_comch_client_get_connection ( const doca_comch_client* comch_client, doca_comch_connection** connection )

参数
comch_client
DOCA Comch 客户端实例。
connection
与客户端关联的连接对象。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例未启动。
描述

获取与客户端上下文关联的连接对象。只能在启动上下文后调用。

DOCA_STABLE doca_error_t doca_comch_client_get_device ( const doca_comch_client* comch_client, doca_dev** dev )

参数
comch_client
DOCA Comch 客户端实例。
dev
doca_comch 实例中使用的当前设备。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

获取关联的 doca_comch 实例的 doca 设备属性。

DOCA_STABLE doca_error_t doca_comch_client_get_max_msg_size ( const doca_comch_client* comch_client, uint32_t* size )

参数
comch_client
DOCA Comch 客户端实例。
size
实例的最大消息大小。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

获取可以在通信通道实例上发送的最大消息大小。

DOCA_STABLE doca_error_t doca_comch_client_get_recv_queue_size ( const doca_comch_client* comch_client, uint32_t* size )

参数
comch_client
DOCA Comch 客户端实例。
size
实例的接收队列大小。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取在 doca_comch 实例上设置的接收队列大小属性。

DOCA_STABLE doca_error_t doca_comch_client_set_max_msg_size ( doca_comch_client* comch_client, uint32_t size )

参数
comch_client
DOCA Comch 客户端实例。
size
要为实例设置的最大消息大小。可以使用 doca_comch_cap_get_max_msg_size() 查询。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

为 doca_comch 实例设置最大消息大小属性。如果未调用,将使用默认值,并且可以使用 doca_comch_client_get_max_msg_size() 查询。

DOCA_STABLE doca_error_t doca_comch_client_set_recv_queue_size ( doca_comch_client* comch_client, uint32_t size )

参数
comch_client
DOCA Comch 客户端实例。
size
要为实例设置的接收队列大小。可以使用 doca_comch_cap_get_max_recv_queue_size() 查询限制。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

为 doca_comch 实例设置接收队列大小属性。如果未调用,将使用默认值,并且可以使用 doca_comch_client_get_recv_queue_size() 查询。

DOCA_STABLE doca_error_t doca_comch_client_task_send_alloc_init ( doca_comch_client* comch_client, doca_comch_connection* peer, const void* msg, uint32_t len, doca_comch_task_send** task )

参数
comch_client
doca_comch_client 实例。
peer
要向其发送消息的已连接端点。
msg
要发送到关联对等方的消息或数据。
len
要发送的消息的长度。
task
指向使用输入参数填充的 doca_comch_send_task 实例的指针。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NO_MEMORY - 没有可用的任务可以分配。
描述

分配和初始化 doca_comch_client 发送任务。

DOCA_STABLE doca_error_t doca_comch_client_task_send_set_conf ( doca_comch_client* comch_client, doca_comch_task_send_completion_cb_t task_completion_cb, doca_comch_task_send_completion_cb_t task_error_cb, uint32_t num_send_tasks )

参数
comch_client
doca_comch_client 实例。
task_completion_cb
发送任务完成回调函数。
task_error_cb
发送任务错误回调函数。
num_send_tasks
要创建的发送任务数。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

配置 doca_comch_client 发送任务回调函数和参数。

DOCA_STABLE doca_error_t doca_comch_connection_get_counter ( const doca_comch_connection* comch_connection, doca_comch_counter counter_type, uint64_t* counter_value )
获取给定 comch_connection 的统计计数器
参数
comch_connection
指向要查询统计信息的 comch_connection 的指针。
counter_type
应查询哪个统计计数器。
counter_value
将包含给定 comch_connection 上计数器的值。

返回值

成功时返回 DOCA_SUCCESS。如果任何参数为 NULL 或计数器无效,则返回 DOCA_ERROR_INVALID_VALUE。

描述

此函数将返回给定 comch_connection 的统计信息,更新到上次调用 doca_comch_connection_update_info() 的时间。

DOCA_STABLE doca_data doca_comch_connection_get_user_data ( const doca_comch_connection* connection )

参数
connection
DOCA Comch 连接实例。

返回值

给定连接的用户数据。

描述

从给定连接获取用户数据。

DOCA_STABLE doca_error_t doca_comch_connection_set_user_data ( doca_comch_connection* connection, doca_data user_data )

参数
connection
DOCA Comch 连接实例。
user_data
给定连接的用户数据。

返回值

成功时返回 DOCA_SUCCESS。

描述

为给定连接设置用户数据。

DOCA_STABLE doca_error_t doca_comch_connection_update_info ( doca_comch_connection* comch_connection )
更新给定 comch_connection 的统计信息
参数
comch_connection
指向要在其中更新统计信息的 comch_connection 的指针。

返回值

成功时返回 DOCA_SUCCESS。如果 comch_connection 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果连接尚未建立,则返回 DOCA_ERROR_CONNECTION_INPROGRESS。如果连接失败,则返回 DOCA_ERROR_CONNECTION_ABORTED。

描述

应在调用任何连接信息函数之前使用,以更新保存的统计信息。

DOCA_STABLE doca_ctx* doca_comch_server_as_ctx ( doca_comch_server* comch_server )

参数
comch_server
DOCA Comch 服务器实例。在不再需要上下文之前,它必须保持有效。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch_server 实例转换为通用上下文,以便与 doca 核心对象一起使用。

DOCA_STABLE doca_error_t doca_comch_server_create ( doca_dev* dev, doca_dev_rep* repr, const char* name, doca_comch_server** comch_server )

参数
dev
在 DOCA Comch 服务器实例中使用的设备。
repr
在 CC 服务器实例中使用的 Representor 设备。
name
与实例关联的服务器的标识符。必须以 NULL 结尾。最大长度(包括终止符 '\0')通过 doca_comch_cap_get_max_name_len() 获取。
comch_server
指向指针的指针,将被设置为创建的 doca_comch 服务器实例。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 一个或多个参数为空。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_comch 失败。
  • DOCA_ERROR_INITIALIZATION - 初始化互斥锁失败。
描述

创建一个 DOCA Comch 服务器实例。

DOCA_STABLE doca_error_t doca_comch_server_destroy ( doca_comch_server* comch_server )

参数
comch_server
要销毁的 DOCA Comch 服务器实例。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - cc 参数为 NULL 指针。
  • DOCA_ERROR_IN_USE - 无法获得对 cc 实例的独占访问权。
描述

销毁一个 DOCA Comch 服务器实例。

DOCA_STABLE doca_error_t doca_comch_server_disconnect ( doca_comch_server* comch_server, doca_comch_connection* connection )

参数
comch_server
DOCA Comch 服务器实例。
connection
表示要断开连接的远程对端的连接。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_IN_USE - 如果连接有活动的消费者/生产者。
  • DOCA_ERROR_AGAIN - 由于队列已满,无法发送断开连接消息。需要应用程序稍后再次调用 disconnect。
描述

断开 doca_comch_server 上的特定连接。

此函数将通知对端断开连接。

DOCA_STABLE doca_error_t doca_comch_server_event_connection_status_changed_register ( doca_comch_server* comch_server, doca_comch_event_connection_status_changed_cb_t connect_event_cb, doca_comch_event_connection_status_changed_cb_t disconnect_event_cb )
配置服务器上下文的 doca_comch 接收事件回调函数。
参数
comch_server
指向 doca_comch_server 实例的指针。
connect_event_cb
连接事件的回调函数。
disconnect_event_cb
断开连接事件的回调函数。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果其中一个参数为 NULL。
  • DOCA_ERROR_BAD_STATE - doca_comch 上下文状态不是空闲状态。
描述

DOCA_STABLE doca_error_t doca_comch_server_event_consumer_register ( doca_comch_server* comch_server, doca_comch_event_consumer_cb_t new_consumer_event_cb, doca_comch_event_consumer_cb_t expired_consumer_event_cb )
配置 doca_comch 回调函数,用于在服务器上下文中接收消费者事件。
参数
comch_server
指向 doca_comch_server 实例的指针。
new_consumer_event_cb
创建新消费者时的消费者事件回调函数。
expired_consumer_event_cb
消费者过期时的消费者事件回调函数。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果其中一个参数为 NULL。
  • DOCA_ERROR_BAD_STATE - doca_comch_servcie 上下文状态不是空闲状态。
描述

DOCA_STABLE doca_error_t doca_comch_server_event_msg_recv_register ( doca_comch_server* comch_server, doca_comch_event_msg_recv_cb_t recv_event_cb )
配置服务器上下文的 doca_comch 接收事件回调函数。
参数
comch_server
指向 doca_comch_server 实例的指针。
recv_event_cb
接收事件回调函数。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果其中一个参数为 NULL。
  • DOCA_ERROR_BAD_STATE - doca_comch 上下文状态不是空闲状态。
描述

DOCA_STABLE doca_error_t doca_comch_server_get_device ( const doca_comch_server* comch_server, doca_dev** dev )

参数
comch_server
DOCA Comch 服务器实例。
dev
doca_comch 实例中使用的当前设备。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

获取关联的 doca_comch 实例的 doca 设备属性。

DOCA_STABLE doca_error_t doca_comch_server_get_device_rep ( const doca_comch_server* comch_server, doca_dev_rep** rep )

参数
comch_server
DOCA Comch 服务器实例。
rep
当前在 doca_comch 服务器实例中使用的设备 Representor。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

获取关联的 doca_comch 服务器实例的设备 Representor 属性。

DOCA_STABLE doca_error_t doca_comch_server_get_max_msg_size ( const doca_comch_server* comch_server, uint32_t* size )

参数
comch_server
DOCA Comch 服务器实例。
size
实例的最大消息大小。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

获取可以在通信通道实例上发送的最大消息大小。

DOCA_STABLE doca_error_t doca_comch_server_get_recv_queue_size ( const doca_comch_server* comch_server, uint32_t* size )

参数
comch_server
DOCA Comch 服务器实例。
size
为实例设置的接收队列大小。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取在 doca_comch 实例上设置的接收队列大小属性。

DOCA_STABLE doca_comch_server* doca_comch_server_get_server_ctx ( const doca_comch_connection* connection )

参数
connection
DOCA Comch 连接实例。

返回值

成功时返回 doca_comch_server 对象。如果连接与客户端上下文相关,则返回 NULL。

描述

从给定的连接获取 doca_comch_server 上下文。

DOCA_STABLE doca_error_t doca_comch_server_set_max_msg_size ( doca_comch_server* comch_server, uint32_t size )

参数
comch_server
DOCA Comch 服务器实例。
size
要为实例设置的最大消息大小。可以使用 doca_comch_cap_get_max_msg_size() 查询。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

为 doca_comch 实例设置最大消息大小属性。如果未调用,将使用默认值,并且可以使用 doca_comch_server_get_max_msg_size() 查询。

DOCA_STABLE doca_error_t doca_comch_server_set_recv_queue_size ( doca_comch_server* comch_server, uint32_t size )

参数
comch_server
DOCA Comch 服务器实例。
size
为实例设置的接收队列大小。可以使用 doca_comch_cap_get_max_recv_queue_size() 查询。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

为 doca_comch 实例设置接收队列大小属性。如果未调用,将使用默认值,并且可以使用 doca_comch_server_get_recv_queue_size() 查询。

DOCA_STABLE doca_error_t doca_comch_server_task_send_alloc_init ( doca_comch_server* comch_server, doca_comch_connection* peer, const void* msg, uint32_t len, doca_comch_task_send** task )

参数
comch_server
doca_comch_server 实例。
peer
要向其发送消息的已连接端点。
msg
要发送到关联对等方的消息或数据。
len
要发送的消息的长度。
task
指向使用输入参数填充的 doca_comch_send_task 实例的指针。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NO_MEMORY - 没有可用的任务可以分配。
描述

分配并初始化一个 doca_comch_server 发送任务。

DOCA_STABLE doca_error_t doca_comch_server_task_send_set_conf ( doca_comch_server* comch_server, doca_comch_task_send_completion_cb_t task_completion_cb, doca_comch_task_send_completion_cb_t task_error_cb, uint32_t num_send_tasks )

参数
comch_server
doca_comch_server 实例。
task_completion_cb
发送任务完成回调函数。
task_error_cb
发送任务错误回调函数。
num_send_tasks
要创建的发送任务数。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

配置 doca_comch_server 发送任务回调函数和参数。

DOCA_STABLE doca_task* doca_comch_task_send_as_task ( doca_comch_task_send* task )

参数
task
要转换的 Doca_comch_send_task 任务。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch_send_task 任务转换为 doca_task。

DOCA Comch 消费者

DOCA Comch MsgQ

DOCA Comch 生产者

2.5.1. DOCA Comch 消费者

[ DOCA Comch ]

DOCA 通信通道消费者扩展了 doca_comch 通道,用于在主机内存和 DPU 之间以 FIFO 格式加速数据传输。建立 doca_comch 连接是协商 FIFO 端点所必需的。然后,消费者对象可以向远程进程发布缓冲区,希望在该进程上接收数据。消费者发布接收消息的完成表示数据已从远程生产者填充。进程间通信通过 DMA/PCIe 运行,不会影响网络带宽。

类型定义
typedef void  ( *doca_comch_consumer_task_post_recv_completion_cb_t )( doca_comch_consumer_task_post_recv*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
typedef uint64_t  doca_dpa_dev_comch_consumer_completion_t
DPA 消费者完成上下文的 DPA 句柄。
typedef uint64_t  doca_dpa_dev_comch_consumer_t
DPA 消费者的 DPA 句柄。
函数
DOCA_STABLE doca_ctx* doca_comch_consumer_as_ctx ( doca_comch_consumer* consumer )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_buf_size ( const doca_devinfo* devinfo, uint32_t* max_buf_size )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_consumers ( const doca_devinfo* devinfo, uint32_t* max_consumers )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_imm_data_len ( const doca_devinfo* devinfo, uint32_t* max_imm_data_len )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_num_tasks ( const doca_devinfo* devinfo, uint32_t* max_num_tasks )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_is_supported ( const doca_devinfo* devinfo )
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_create ( doca_comch_consumer_completion** consumer_comp )
在 DPA 上分配 DOCA Comch 消费者完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_destroy ( doca_comch_consumer_completion* consumer_comp )
销毁 DOCA Comch 消费者完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_dpa_handle ( doca_comch_consumer_completion* consumer_comp, doca_dpa_dev_comch_consumer_completion_t* consumer_comp_handle )
获取 DOCA Comch 消费者完成上下文的 DPA 句柄。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_imm_data_len ( const doca_comch_consumer_completion* consumer_comp, uint32_t* imm_data_len )
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_max_num_consumers ( const doca_comch_consumer_completion* consumer_comp, uint32_t* max_num_consumers )
获取可以与完成上下文关联的最大消费者数量。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_max_num_recv ( const doca_comch_consumer_completion* consumer_comp, uint32_t* max_num_recv )
获取与完成上下文关联的所有消费者可以执行的最大接收操作数。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_dpa_thread ( doca_comch_consumer_completion* consumer_comp, doca_dpa_thread* dpa_thread )
设置完成上下文的 DOCA DPA 线程。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_imm_data_len ( doca_comch_consumer_completion* consumer_comp, uint32_t imm_data_len )
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_max_num_consumers ( doca_comch_consumer_completion* consumer_comp, uint32_t max_num_consumers )
设置可以与完成上下文关联的最大消费者数量。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_max_num_recv ( doca_comch_consumer_completion* consumer_comp, uint32_t max_num_recv )
设置与完成上下文关联的所有消费者可以执行的最大接收操作数。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_start ( doca_comch_consumer_completion* consumer_comp )
启动 DOCA Comch 消费者完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_stop ( doca_comch_consumer_completion* consumer_comp )
停止 DOCA Comch 消费者完成上下文。
DOCA_STABLE doca_error_t doca_comch_consumer_create ( doca_comch_connection* comch_connection, doca_mmap* buf_mmap, doca_comch_consumer** consumer )
DOCA_STABLE doca_error_t doca_comch_consumer_destroy ( doca_comch_consumer* consumer )
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_get_dpa_handle ( doca_comch_consumer* consumer, doca_dpa_dev_comch_consumer_t* dpa_consumer )
检索 doca_comch_consumer 的 dpa 内存空间中的句柄。
DOCA_STABLE doca_error_t doca_comch_consumer_get_id ( const doca_comch_consumer* consumer, uint32_t* id )
DOCA_STABLE doca_error_t doca_comch_consumer_get_imm_data_len ( const doca_comch_consumer* consumer, uint32_t* imm_data_len )
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_set_completion ( doca_comch_consumer* consumer, doca_comch_consumer_completion* consumer_comp, uint32_t user_data )
将消费者与 DPA 完成上下文关联。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_set_dev_max_num_recv ( doca_comch_consumer* consumer, uint32_t dev_num_recv )
为 DPA 消费者设置最大接收操作数。
DOCA_STABLE doca_error_t doca_comch_consumer_set_imm_data_len ( doca_comch_consumer* consumer, uint32_t imm_data_len )
DOCA_STABLE doca_error_t doca_comch_consumer_task_post_recv_alloc_init ( doca_comch_consumer* consumer, doca_buf* buf, doca_comch_consumer_task_post_recv** task )
分配并初始化一个 doca_consumer 发布接收任务。
DOCA_STABLE doca_task* doca_comch_consumer_task_post_recv_as_task ( doca_comch_consumer_task_post_recv* task )
DOCA_STABLE doca_buf* doca_comch_consumer_task_post_recv_get_buf ( const doca_comch_consumer_task_post_recv* task )
const DOCA_STABLE uint8_t* doca_comch_consumer_task_post_recv_get_imm_data ( const doca_comch_consumer_task_post_recv* task )
DOCA_STABLE uint32_t doca_comch_consumer_task_post_recv_get_imm_data_len ( const doca_comch_consumer_task_post_recv* task )
DOCA_STABLE uint32_t doca_comch_consumer_task_post_recv_get_producer_id ( const doca_comch_consumer_task_post_recv* task )
DOCA_STABLE void doca_comch_consumer_task_post_recv_set_buf ( doca_comch_consumer_task_post_recv* task, doca_buf* buf )
DOCA_STABLE doca_error_t doca_comch_consumer_task_post_recv_set_conf ( doca_comch_consumer* consumer, doca_comch_consumer_task_post_recv_completion_cb_t task_completion_cb, doca_comch_consumer_task_post_recv_completion_cb_t task_error_cb, uint32_t num_post_recv_tasks )
类型定义
void ( *doca_comch_consumer_task_post_recv_completion_cb_t )( doca_comch_consumer_task_post_recv*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

在 doca_comch_consumer 发布接收完成时执行的函数。用于任务成功和失败。

实现可以假设此值不为 NULL。

参数
task
已完成的 Doca 消费者发布接收任务。
union doca_data task_user_data
union doca_data ctx_user_data

typedef uint64_t doca_dpa_dev_comch_consumer_completion_t

DPA 消费者完成上下文的 DPA 句柄。

typedef uint64_t doca_dpa_dev_comch_consumer_t

DPA 消费者的 DPA 句柄。

函数
DOCA_STABLE doca_ctx* doca_comch_consumer_as_ctx ( doca_comch_consumer* consumer )

参数
consumer
Doca_comch_consumer 实例。在不再需要上下文之前,它必须保持有效。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch_consumer 实例转换为通用上下文,以便与 doca core 对象一起使用。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )

参数
devinfo
用于查询能力的 Devinfo。
max_buf_list_len
消费者可以接收的最大尺寸的缓冲区列表。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NOT_SUPPORTED - 如果设备不支持消费者。
描述

获取 doca_buf 列表的最大长度,doca_comch_consumer 实例可以接收该列表。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_buf_size ( const doca_devinfo* devinfo, uint32_t* max_buf_size )

参数
devinfo
用于查询能力的 Devinfo。
max_buf_size
消费者可以接收的最大尺寸的缓冲区。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NOT_SUPPORTED - 如果设备不支持消费者。
描述

获取 doca_buf 的最大尺寸,doca_comch_consumer 实例可以接收该缓冲区。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_consumers ( const doca_devinfo* devinfo, uint32_t* max_consumers )

参数
devinfo
用于查询能力的 Devinfo。
max_consumers
可以添加到 doca_comch_connection 的最大消费者数量。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取可以与 doca_comch_connection 关联的最大消费者数量。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_imm_data_len ( const doca_devinfo* devinfo, uint32_t* max_imm_data_len )

参数
devinfo
用于查询能力的 Devinfo。
max_imm_data_len
消费者支持的最大立即数据长度。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取消费者支持的最大立即数据长度。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_num_tasks ( const doca_devinfo* devinfo, uint32_t* max_num_tasks )

参数
devinfo
用于查询能力的 Devinfo。
max_num_tasks
实例可以分配的最大任务数。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取设备为 doca_comch_consumer 实例支持的最大任务数。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_is_supported ( const doca_devinfo* devinfo )

参数
devinfo
DOCA 设备信息。

返回值

DOCA_SUCCESS - 如果设备可以实现消费者。错误代码 - 如果失败。

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 提供的 devinfo 无法实现消费者。
描述

检查给定设备是否能够运行消费者。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_create ( doca_comch_consumer_completion** consumer_comp )
在 DPA 上分配 DOCA Comch 消费者完成上下文。
参数
consumer_comp
新创建的 DOCA Comch 消费者完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_destroy ( doca_comch_consumer_completion* consumer_comp )
销毁 DOCA Comch 消费者完成上下文。
参数
consumer_comp
要销毁的 DOCA Comch 消费者完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

关联的 dpa 句柄也将被销毁。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_dpa_handle ( doca_comch_consumer_completion* consumer_comp, doca_dpa_dev_comch_consumer_completion_t* consumer_comp_handle )
获取 DOCA Comch 消费者完成上下文的 DPA 句柄。
参数
consumer_comp
先前在 DPA 上创建的 DOCA Comch 消费者完成上下文。
consumer_comp_handle
指向 dpa 内存空间中关联的 DPA 句柄的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_imm_data_len ( const doca_comch_consumer_completion* consumer_comp, uint32_t* imm_data_len )

参数
consumer_comp
要查询的 DOCA Comch 消费者完成上下文。
imm_data_len
消费者完成上下文配置为支持的立即数据长度。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取消费者完成上下文支持的立即数据长度。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_max_num_consumers ( const doca_comch_consumer_completion* consumer_comp, uint32_t* max_num_consumers )
获取可以与完成上下文关联的最大消费者数量。
参数
consumer_comp
要查询的 DOCA Comch 消费者完成上下文。
max_num_consumers
可以与上下文关联的最大消费者数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_max_num_recv ( const doca_comch_consumer_completion* consumer_comp, uint32_t* max_num_recv )
获取与完成上下文关联的所有消费者可以执行的最大接收操作数。
参数
consumer_comp
要查询的 DOCA Comch 消费者完成上下文。
max_num_recv
可以与上下文关联的最大接收数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_dpa_thread ( doca_comch_consumer_completion* consumer_comp, doca_dpa_thread* dpa_thread )
设置完成上下文的 DOCA DPA 线程。
参数
consumer_comp
DOCA Comch 消费者完成上下文。
dpa_thread
要与完成上下文关联的 DOCA dpa 线程。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此线程将接收完成通知。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_imm_data_len ( doca_comch_consumer_completion* consumer_comp, uint32_t imm_data_len )

参数
consumer_comp
要修改的 DOCA Comch 消费者完成上下文。
imm_data_len
要在消费者完成上下文中配置的立即数据长度。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

设置消费者完成上下文支持的立即数据长度。

消费者完成的立即数据长度必须大于或等于任何关联的消费者的立即数据长度。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_max_num_consumers ( doca_comch_consumer_completion* consumer_comp, uint32_t max_num_consumers )
设置可以与完成上下文关联的最大消费者数量。
参数
consumer_comp
要修改的 DOCA Comch 消费者完成上下文。
max_num_consumers
可以与上下文关联的最大消费者数量。将向上舍入到下一个 2 的幂。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_max_num_recv ( doca_comch_consumer_completion* consumer_comp, uint32_t max_num_recv )
设置与完成上下文关联的所有消费者可以执行的最大接收操作数。
参数
consumer_comp
要修改的 DOCA Comch 消费者完成上下文。
max_num_recv
可以与上下文关联的最大接收数。将向上舍入到下一个 2 的幂。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_start ( doca_comch_consumer_completion* consumer_comp )
启动 DOCA Comch 消费者完成上下文。
参数
consumer_comp
要启动的 DOCA Comch 消费者完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

启动时,验证并最终确定完成上下文配置。

对于启动的完成上下文,可以进行以下操作:

  • 将 DOCA Comch 消费者与完成上下文关联。

当完成上下文启动时,以下操作是不可能的:

  • 设置完成上下文的属性。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_stop ( doca_comch_consumer_completion* consumer_comp )
停止 DOCA Comch 消费者完成上下文。
参数
consumer_comp
要停止的 DOCA Comch 消费者完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

停止时,防止执行不同的操作,并允许启动前可用的操作。有关详细信息,请参阅 doca_comch_consumer_completion_start()。当有 DOCA Comch 消费者与之关联时,无法停止完成上下文。

对于停止的完成上下文,可以进行以下操作:

  • 设置完成上下文的属性。

当完成上下文停止时,以下操作是不可能的:

  • 将 DOCA Comch 消费者与完成上下文关联。

DOCA_STABLE doca_error_t doca_comch_consumer_create ( doca_comch_connection* comch_connection, doca_mmap* buf_mmap, doca_comch_consumer** consumer )

参数
comch_connection
已建立的控制通道连接,用于在其上创建消费者。
buf_mmap
为消费者允许缓冲区写入的内存区域注册的 mmap。
consumer
指向指针的指针,将被设置为创建的 doca_comch_consumer 实例。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入参数为 NULL 指针。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_comch_consumer 对象或 id 失败。
  • DOCA_ERROR_BAD_STATE - comch_connection 未建立。
  • DOCA_ERROR_NOT_PERMITTED - comch_connection 版本不兼容。
描述

创建一个 DOCA Comch 消费者实例。

DOCA_STABLE doca_error_t doca_comch_consumer_destroy ( doca_comch_consumer* consumer )

参数
consumer
指向要销毁的 doca_comch_consumer 实例的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - consumer 参数为 NULL 指针。
  • DOCA_ERROR_INITIALIZATION - 初始化互斥锁失败。
描述

销毁一个 DOCA Comch 消费者实例。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_get_dpa_handle ( doca_comch_consumer* consumer, doca_dpa_dev_comch_consumer_t* dpa_consumer )
检索 doca_comch_consumer 的 dpa 内存空间中的句柄。
参数
consumer
doca_comch_consumer 上下文,从中获取 dpa 句柄。
dpa_consumer
指向 dpa 内存空间中句柄的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果给出了无效参数。
  • DOCA_ERROR_BAD_STATE - 如果在调用 doca_ctx_start() 之前调用,或者如果未分配给 dpa 数据路径。
描述

DOCA_STABLE doca_error_t doca_comch_consumer_get_id ( const doca_comch_consumer* consumer, uint32_t* id )

参数
consumer
doca_comch_consumer 实例。
id
与消费者实例关联的每个 comch_connection 的唯一 id。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取 doca_comch_consumer 实例的 id。

DOCA_STABLE doca_error_t doca_comch_consumer_get_imm_data_len ( const doca_comch_consumer* consumer, uint32_t* imm_data_len )

参数
consumer
要查询的消费者。
imm_data_len
消费者配置为支持的立即数据长度。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取消费者支持的立即数据长度。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_set_completion ( doca_comch_consumer* consumer, doca_comch_consumer_completion* consumer_comp, uint32_t user_data )
将消费者与 DPA 完成上下文关联。
参数
consumer
doca_comch_consumer 实例。必须在此调用之前调用 doca_ctx_set_datapath_on_dpa()
consumer_comp
要与消费者关联的 DOCA Comch 消费者完成上下文。
user_data
可以从该消费者返回的完成元素在 DPA 中检索的用户数据。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

这将允许完成上下文在 DPA 上接收此消费者的完成。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_set_dev_max_num_recv ( doca_comch_consumer* consumer, uint32_t dev_num_recv )
为 DPA 消费者设置最大接收操作数。
参数
consumer
doca_comch_consumer 实例。
dev_num_recv
可以与上下文关联的最大接收数。将向上舍入到下一个 2 的幂。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_STABLE doca_error_t doca_comch_consumer_set_imm_data_len ( doca_comch_consumer* consumer, uint32_t imm_data_len )

参数
consumer
要设置长度的消费者。
imm_data_len
要在消费者中配置的立即数据长度。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

设置消费者支持的立即数据长度。

长度必须小于或等于 doca_comch_consumer_cap_get_max_imm_data_len() 返回的长度。

DOCA_STABLE doca_error_t doca_comch_consumer_task_post_recv_alloc_init ( doca_comch_consumer* consumer, doca_buf* buf, doca_comch_consumer_task_post_recv** task )
分配并初始化一个 doca_consumer 发布接收任务。
参数
consumer
doca_comch_consumer 实例。
buf
可由生产者填充的 Doca 缓冲区。
task
指向填充了输入参数的 doca_comch_consumer_task_post_recv 实例的指针。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NO_MEMORY - 没有可用的任务可以分配。
描述

Doca 缓冲区应位于与消费者实例关联的已注册 mmap 中。每当缓冲区被消费者填充时,将触发完成回调。

DOCA_STABLE doca_task* doca_comch_consumer_task_post_recv_as_task ( doca_comch_consumer_task_post_recv* task )

参数
task
doca_comch_consumer_task_post_recv 实例。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch_consumer_task_post_recv 实例转换为通用任务,以便与进度引擎一起使用。

DOCA_STABLE doca_buf* doca_comch_consumer_task_post_recv_get_buf ( const doca_comch_consumer_task_post_recv* task )

参数
task
doca_comch_consumer_task_post_recv 实例。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

从 doca_comch_consumer_task_post_recv 实例获取 doca_buf。

const DOCA_STABLE uint8_t* doca_comch_consumer_task_post_recv_get_imm_data ( const doca_comch_consumer_task_post_recv* task )

参数
task
doca_comch_consumer_task_post_recv 实例。

返回值

指向立即数据的指针,如果不存在则为 nullptr。

描述

从 doca_comch_consumer_task_post_recv 实例获取指向任何立即数据的指针。

立即数据仅在 post recv 完成时设置。doca_comch_consumer_task_post_recv_get_imm_data_len() 指示指向的有效位数。

DOCA_STABLE uint32_t doca_comch_consumer_task_post_recv_get_imm_data_len ( const doca_comch_consumer_task_post_recv* task )

参数
task
doca_comch_consumer_task_post_recv 实例。

返回值

post receive 完成时的立即数据长度。

描述

从 doca_comch_consumer_task_post_recv 实例获取任何立即数据的长度。

立即数据长度仅在 post recv 完成时设置。它指示 doca_comch_consumer_task_post_recv_get_imm_data() 返回的指针中的有效字节数。

DOCA_STABLE uint32_t doca_comch_consumer_task_post_recv_get_producer_id ( const doca_comch_consumer_task_post_recv* task )

参数
task
doca_comch_consumer_task_post_recv 实例。

返回值

成功时的生产者 ID,否则为 0。

描述

从 doca_comch_consumer_task_post_recv 实例获取生产者 ID。

生产者 ID 仅在 post recv 完成时设置,并指示已将数据写入关联 doca_buf 的远程生产者。

DOCA_STABLE void doca_comch_consumer_task_post_recv_set_buf ( doca_comch_consumer_task_post_recv* task, doca_buf* buf )

参数
task
doca_comch_consumer_task_post_recv 实例。
buf
要在任务中设置的缓冲区。

描述

在 doca_comch_consumer_task_post_recv 实例中设置 doca_buf。

DOCA_STABLE doca_error_t doca_comch_consumer_task_post_recv_set_conf ( doca_comch_consumer* consumer, doca_comch_consumer_task_post_recv_completion_cb_t task_completion_cb, doca_comch_consumer_task_post_recv_completion_cb_t task_error_cb, uint32_t num_post_recv_tasks )

参数
consumer
doca_comch_consumer 实例。
task_completion_cb
Post receive 任务完成回调。
task_error_cb
Post receive 任务错误回调。
num_post_recv_tasks
消费者可以分配的 post_recv 任务数。不得超过 doca_comch_consumer_cap_get_max_num_tasks() 返回的值。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - 消费者实例已激活。
描述

配置 doca_comch_consumer post receive 任务回调和参数。

2.5.2. DOCA Comch MsgQ

[ DOCA Comch ]

DOCA 通信通道 MsgQ 库允许您在主机/DPU 和 DPA 之间设置直接通信通道。该通道不是 TCP/IP 协议栈的一部分。请遵循程序员指南以获取使用说明。

函数
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_consumer_create ( doca_comch_msgq* msgq, doca_comch_consumer** consumer )
创建一个 DOCA Comch 消费者实例。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_create ( doca_dev* dev, doca_comch_msgq** msgq )
创建 DOCA Comch MsgQ 实例。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_destroy ( doca_comch_msgq* msgq )
销毁 DOCA Comch MsgQ 实例。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_producer_create ( doca_comch_msgq* msgq, doca_comch_producer** producer )
创建 DOCA Comch 生产者实例。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_dpa_consumer ( doca_comch_msgq* msgq, doca_dpa* dpa )
将消费者设置为 DPA。此 MsgQ 上的所有消费者都将为 DPA 创建。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_dpa_producer ( doca_comch_msgq* msgq, doca_dpa* dpa )
将生产者设置为 DPA。此 MsgQ 上的所有生产者都将为 DPA 创建。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_max_num_consumers ( doca_comch_msgq* msgq, uint32_t max_num_consumers )
设置可以使用此 MsgQ 创建的最大消费者数量。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_max_num_producers ( doca_comch_msgq* msgq, uint32_t max_num_producers )
设置可以使用此 MsgQ 创建的最大生产者数量。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_start ( doca_comch_msgq* msgq )
启动 DOCA Comch MsgQ。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_stop ( doca_comch_msgq* msgq )
停止 DOCA Comch MsgQ。
函数
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_consumer_create ( doca_comch_msgq* msgq, doca_comch_consumer** consumer )
创建一个 DOCA Comch 消费者实例。
参数
msgq
用于创建消费者的 DOCA Comch MsgQ
consumer
指向指针的指针,将被设置为创建的 doca_comch_consumer 实例。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_create ( doca_dev* dev, doca_comch_msgq** msgq )
创建 DOCA Comch MsgQ 实例。
参数
dev
将用于发送/接收消息的 DOCA 设备。
msgq
要设置为已创建 doca_comch_msgq 实例的指针的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_destroy ( doca_comch_msgq* msgq )
销毁 DOCA Comch MsgQ 实例。
参数
msgq
要销毁的 DOCA Comch MsgQ。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_producer_create ( doca_comch_msgq* msgq, doca_comch_producer** producer )
创建 DOCA Comch 生产者实例。
参数
msgq
用于创建生产者的 DOCA Comch MsgQ
producer
要设置为已创建 doca_comch_producer 实例的指针的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_dpa_consumer ( doca_comch_msgq* msgq, doca_dpa* dpa )
将消费者设置为 DPA。此 MsgQ 上的所有消费者都将为 DPA 创建。
参数
msgq
要修改的 DOCA Comch MsgQ。
dpa
将使用消费者的 DPA 上下文。必须与 MsgQ 在同一设备上。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此配置指定此 MsgQ 上的所有消费者都将在该 DPA 实例上创建和使用。默认情况下,消费者设置在主机(或 DPU)上。

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_dpa_producer ( doca_comch_msgq* msgq, doca_dpa* dpa )
将生产者设置为 DPA。此 MsgQ 上的所有生产者都将为 DPA 创建。
参数
msgq
要修改的 DOCA Comch MsgQ。
dpa
将使用生产者的 DPA 上下文。必须与 MsgQ 在同一设备上。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此配置指定此 MsgQ 上的所有生产者都将在该 DPA 实例上创建和使用。默认情况下,生产者设置在主机(或 DPU)上。

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_max_num_consumers ( doca_comch_msgq* msgq, uint32_t max_num_consumers )
设置可以使用此 MsgQ 创建的最大消费者数量。
参数
msgq
要修改的 DOCA Comch MsgQ。
max_num_consumers
可以创建的最大消费者数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_max_num_producers ( doca_comch_msgq* msgq, uint32_t max_num_producers )
设置可以使用此 MsgQ 创建的最大生产者数量。
参数
msgq
要修改的 DOCA Comch MsgQ。
max_num_producers
可以创建的最大生产者数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_start ( doca_comch_msgq* msgq )
启动 DOCA Comch MsgQ。
参数
msgq
要启动的 DOCA Comch MsgQ。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

启动时,验证并完成 MsgQ 配置。

对于已启动的 MsgQ,可以执行以下操作

  • 创建消费者和生产者。

当完成上下文启动时,以下操作是不可能的:

  • 设置 MsgQ 的属性

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_stop ( doca_comch_msgq* msgq )
停止 DOCA Comch MsgQ。
参数
msgq
要停止的 DOCA Comch MsgQ。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

停止时,阻止执行不同的操作,并允许在启动前可用的操作。有关详细信息,请参阅 doca_comch_msgq_start()。当存在与 MsgQ 关联的 DOCA Comch 消费者/生产者时,无法停止 MsgQ。

对于已停止的 MsgQ,可以执行以下操作

  • 设置 MsgQ 的属性

当 MsgQ 停止时,以下操作是不可能的

  • 从 MsgQ 创建 DOCA Comch 消费者或生产者。

2.5.3. DOCA Comch 生产者

[ DOCA Comch ]

DOCA 通信通道生产者为 doca_comch 通道提供扩展,用于加速主机和 DPU 上内存之间以 FIFO 格式进行数据传输。需要建立 doca_comch 连接以协商 FIFO 的端点。生产者对象可以填充与同一 doca_comch 连接关联的任何消费者通告的缓冲区。进程间通信通过 DMA/PCIe 运行,不会影响网络带宽。

类型定义
typedef void  ( *doca_comch_producer_task_send_completion_cb_t )( doca_comch_producer_task_send*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
typedef uint64_t  doca_dpa_dev_comch_producer_t
DPA 生产者的 DPA 句柄。
函数
DOCA_STABLE doca_ctx* doca_comch_producer_as_ctx ( doca_comch_producer* producer )
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_buf_size ( const doca_devinfo* devinfo, uint32_t* max_buf_size )
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_num_tasks ( const doca_devinfo* devinfo, uint32_t* max_num_tasks )
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_producers ( const doca_devinfo* devinfo, uint32_t* max_producers )
DOCA_STABLE doca_error_t doca_comch_producer_cap_is_supported ( const doca_devinfo* devinfo )
DOCA_STABLE doca_error_t doca_comch_producer_create ( doca_comch_connection* comch_connection, doca_comch_producer** producer )
DOCA_STABLE doca_error_t doca_comch_producer_destroy ( doca_comch_producer* producer )
DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_dpa_completion_attach ( doca_comch_producer* producer, doca_dpa_completion* dpa_comp )
将生产者与 DPA 完成上下文关联。
DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_get_dpa_handle ( doca_comch_producer* producer, doca_dpa_dev_comch_producer_t* dpa_producer )
检索 doca_comch_producer 的 dpa 内存空间中的句柄。
DOCA_STABLE doca_error_t doca_comch_producer_get_id ( const doca_comch_producer* producer, uint32_t* id )
DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_set_dev_max_num_send ( doca_comch_producer* producer, uint32_t dev_num_send )
设置 DPA 生产者的最大发送操作数。
DOCA_STABLE doca_error_t doca_comch_producer_task_send_alloc_init ( doca_comch_producer* producer, const doca_buf* buf, uint8_t* imm_data, uint32_t imm_data_len, uint32_t consumer_id, doca_comch_producer_task_send** task )
DOCA_STABLE doca_task* doca_comch_producer_task_send_as_task ( doca_comch_producer_task_send* task )
DOCA_STABLE doca_buf* doca_comch_producer_task_send_get_buf ( const doca_comch_producer_task_send* task )
DOCA_STABLE uint32_t doca_comch_producer_task_send_get_consumer_id ( const doca_comch_producer_task_send* task )
DOCA_STABLE uint8_t* doca_comch_producer_task_send_get_imm_data ( const doca_comch_producer_task_send* task )
DOCA_STABLE uint32_t doca_comch_producer_task_send_get_imm_data_len ( const doca_comch_producer_task_send* task )
DOCA_STABLE void doca_comch_producer_task_send_set_buf ( doca_comch_producer_task_send* task, const doca_buf* buf )
DOCA_STABLE doca_error_t doca_comch_producer_task_send_set_conf ( doca_comch_producer* producer, doca_comch_producer_task_send_completion_cb_t task_completion_cb, doca_comch_producer_task_send_completion_cb_t task_error_cb, uint32_t num_send_tasks )
DOCA_STABLE void doca_comch_producer_task_send_set_consumer_id ( doca_comch_producer_task_send* task, const uint32_t consumer_id )
DOCA_STABLE void doca_comch_producer_task_send_set_imm_data ( doca_comch_producer_task_send* task, uint8_t* imm_data, uint32_t imm_data_len )
类型定义
void ( *doca_comch_producer_task_send_completion_cb_t )( doca_comch_producer_task_send*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

在 doca_comch_producer 发送任务完成时执行的函数。用于任务成功和失败。

实现可以假设此值不为 NULL。

参数
task
已完成的 Doca 生产者发送任务。
union doca_data task_user_data
union doca_data ctx_user_data

typedef uint64_t doca_dpa_dev_comch_producer_t

DPA 生产者的 DPA 句柄。

函数
DOCA_STABLE doca_ctx* doca_comch_producer_as_ctx ( doca_comch_producer* producer )

参数
producer
Doca_comch_producer 实例。这必须保持有效,直到不再需要上下文之后。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch_producer 实例转换为通用上下文,以便与 doca 核心对象一起使用。

DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )

参数
devinfo
用于查询能力的 Devinfo。
max_buf_list_len
生产者可以发送的最大尺寸缓冲区列表。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NOT_SUPPORTED - 如果设备不支持生产者。
描述

获取 doca_comch_producer 实例可以发送的 doca_buf 列表的最大长度。

DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_buf_size ( const doca_devinfo* devinfo, uint32_t* max_buf_size )

参数
devinfo
用于查询能力的 Devinfo。
max_buf_size
生产者可以发送的最大尺寸缓冲区。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NOT_SUPPORTED - 如果设备不支持生产者。
描述

获取 doca_comch_producer 实例可以发送的最大尺寸 doca_buf。

DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_num_tasks ( const doca_devinfo* devinfo, uint32_t* max_num_tasks )

参数
devinfo
用于查询能力的 Devinfo。
max_num_tasks
实例可以分配的最大任务数。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取设备为 doca_comch_producer 实例支持的最大任务数。

DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_producers ( const doca_devinfo* devinfo, uint32_t* max_producers )

参数
devinfo
用于查询能力的 Devinfo。
max_producers
可以添加到 doca_comch_connection 的最大生产者数量。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取可以与 doca_comch_connection 关联的最大生产者数量。

DOCA_STABLE doca_error_t doca_comch_producer_cap_is_supported ( const doca_devinfo* devinfo )

参数
devinfo
DOCA 设备信息。

返回值

DOCA_SUCCESS - 如果设备可以实现生产者。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 提供的 devinfo 无法实现生产者。
描述

检查给定设备是否能够运行生产者。

DOCA_STABLE doca_error_t doca_comch_producer_create ( doca_comch_connection* comch_connection, doca_comch_producer** producer )

参数
comch_connection
要与生产者关联的已建立的控制通道连接。
producer
要设置为已创建 doca_comch_producer 实例的指针的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入参数为 NULL 指针。
  • DOCA_ERROR_NO_MEMORY - 无法分配 doca_comch_producer。
  • DOCA_ERROR_BAD_STATE - comch_connection 未建立。
  • DOCA_ERROR_NOT_PERMITTED - comch_connection 版本不兼容。
描述

创建 DOCA Comch 生产者实例。

DOCA_STABLE doca_error_t doca_comch_producer_destroy ( doca_comch_producer* producer )

参数
producer
要销毁的 doca_comch_producer 实例的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - producer 参数为空指针。
  • DOCA_ERROR_INITIALIZATION - 初始化互斥锁失败。
描述

销毁 DOCA Comch 生产者实例。

DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_dpa_completion_attach ( doca_comch_producer* producer, doca_dpa_completion* dpa_comp )
将生产者与 DPA 完成上下文关联。
参数
producer
doca_comch_producer 实例。必须在此调用之前调用 doca_ctx_set_datapath_on_dpa()
dpa_comp
要与生产者关联的 DOCA DPA 完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

这将允许完成上下文在此 DPA 上发送此生产者的完成。

DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_get_dpa_handle ( doca_comch_producer* producer, doca_dpa_dev_comch_producer_t* dpa_producer )
检索 doca_comch_producer 的 dpa 内存空间中的句柄。
参数
producer
要从中获取 dpa 句柄的 doca_comch_producer 上下文。
dpa_producer
指向 dpa 内存空间中句柄的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果给出了无效参数。
  • DOCA_ERROR_BAD_STATE - 如果在调用 doca_ctx_start() 之前调用,或者如果未分配给 dpa 数据路径。
描述

DOCA_STABLE doca_error_t doca_comch_producer_get_id ( const doca_comch_producer* producer, uint32_t* id )

参数
producer
doca_comch_producer 实例。
id
每个 comch_connection 与生产者实例关联的唯一 ID。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取 doca_comch_producer 实例的 ID。

DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_set_dev_max_num_send ( doca_comch_producer* producer, uint32_t dev_num_send )
设置 DPA 生产者的最大发送操作数。
参数
producer
doca_comch_producer 实例。
dev_num_send
可以与上下文关联的最大发送数。将向上舍入为下一个 2 的幂

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_STABLE doca_error_t doca_comch_producer_task_send_alloc_init ( doca_comch_producer* producer, const doca_buf* buf, uint8_t* imm_data, uint32_t imm_data_len, uint32_t consumer_id, doca_comch_producer_task_send** task )

参数
producer
doca_comch_producer 实例。
buf
要发送给消费者的 Doca 缓冲区。
imm_data
指向要包含在发送中的立即数据的指针。
imm_data_len
imm_data 指向的数据的长度(以字节为单位)。
consumer_id
要将缓冲区发送到的消费者的 ID。
task
指向填充了输入参数的 doca_comch_producer_task_send 实例的指针。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NO_MEMORY - 没有可用的任务可以分配。
描述

分配和初始化 doca_producer 发送任务。

DOCA_STABLE doca_task* doca_comch_producer_task_send_as_task ( doca_comch_producer_task_send* task )

参数
task
doca_comch_producer_task_send 实例。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch_producer_task_send 实例转换为通用任务,以便与进度引擎一起使用。

DOCA_STABLE doca_buf* doca_comch_producer_task_send_get_buf ( const doca_comch_producer_task_send* task )

参数
task
doca_comch_producer_task_send 实例。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

从 doca_comch_producer_task_send 实例获取 doca_buf。

DOCA_STABLE uint32_t doca_comch_producer_task_send_get_consumer_id ( const doca_comch_producer_task_send* task )

参数
task
doca_comch_producer_task_send 实例。

返回值

Consumer_id

描述

从 doca_comch_producer_task_send 实例获取消费者 ID。

DOCA_STABLE uint8_t* doca_comch_producer_task_send_get_imm_data ( const doca_comch_producer_task_send* task )

参数
task
doca_comch_producer_task_send 实例。

返回值

立即数据指针,如果不存在则为 nullptr

描述

从 doca_comch_producer_task_send 实例获取任何立即数据。

DOCA_STABLE uint32_t doca_comch_producer_task_send_get_imm_data_len ( const doca_comch_producer_task_send* task )

参数
task
doca_comch_producer_task_send 实例。

返回值

立即数据的长度。

描述

从 doca_comch_producer_task_send 实例获取任何立即数据长度。

DOCA_STABLE void doca_comch_producer_task_send_set_buf ( doca_comch_producer_task_send* task, const doca_buf* buf )

参数
task
doca_comch_producer_task_send 实例。
buf
要在任务中设置的缓冲区。

描述

在 doca_comch_producer_task_send 实例中设置 doca_buf。

DOCA_STABLE doca_error_t doca_comch_producer_task_send_set_conf ( doca_comch_producer* producer, doca_comch_producer_task_send_completion_cb_t task_completion_cb, doca_comch_producer_task_send_completion_cb_t task_error_cb, uint32_t num_send_tasks )

参数
producer
doca_comch_producer 实例。
task_completion_cb
发送任务完成回调函数。
task_error_cb
发送任务错误回调函数。
num_send_tasks
生产者可以分配的发送任务数。不得超过 doca_comch_producer_cap_get_max_num_tasks() 返回的值

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - 生产者实例已激活。
描述

配置 doca_comch_producer 发送任务回调和参数。

DOCA_STABLE void doca_comch_producer_task_send_set_consumer_id ( doca_comch_producer_task_send* task, const uint32_t consumer_id )

参数
task
doca_comch_producer_task_send 实例。
consumer_id
要在任务中设置的消费者 ID。

描述

在 doca_comch_producer_task_send 实例中设置消费者 ID。

DOCA_STABLE void doca_comch_producer_task_send_set_imm_data ( doca_comch_producer_task_send* task, uint8_t* imm_data, uint32_t imm_data_len )

参数
task
doca_comch_producer_task_send 实例。
imm_data
指向要复制到任务的立即数据的指针
imm_data_len
立即数据的长度(以字节为单位)

描述

在 doca_comch_producer_task_send 实例中设置立即数据。

DOCA Comch 消费者

DOCA Comch MsgQ

DOCA Comch 生产者

2.5.1. DOCA Comch 消费者

[ DOCA Comch ]

DOCA 通信通道消费者扩展了 doca_comch 通道,用于在主机内存和 DPU 之间以 FIFO 格式加速数据传输。建立 doca_comch 连接是协商 FIFO 端点所必需的。然后,消费者对象可以向远程进程发布缓冲区,希望在该进程上接收数据。消费者发布接收消息的完成表示数据已从远程生产者填充。进程间通信通过 DMA/PCIe 运行,不会影响网络带宽。

类型定义
typedef void  ( *doca_comch_consumer_task_post_recv_completion_cb_t )( doca_comch_consumer_task_post_recv*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
typedef uint64_t  doca_dpa_dev_comch_consumer_completion_t
DPA 消费者完成上下文的 DPA 句柄。
typedef uint64_t  doca_dpa_dev_comch_consumer_t
DPA 消费者的 DPA 句柄。
函数
DOCA_STABLE doca_ctx* doca_comch_consumer_as_ctx ( doca_comch_consumer* consumer )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_buf_size ( const doca_devinfo* devinfo, uint32_t* max_buf_size )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_consumers ( const doca_devinfo* devinfo, uint32_t* max_consumers )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_imm_data_len ( const doca_devinfo* devinfo, uint32_t* max_imm_data_len )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_num_tasks ( const doca_devinfo* devinfo, uint32_t* max_num_tasks )
DOCA_STABLE doca_error_t doca_comch_consumer_cap_is_supported ( const doca_devinfo* devinfo )
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_create ( doca_comch_consumer_completion** consumer_comp )
在 DPA 上分配 DOCA Comch 消费者完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_destroy ( doca_comch_consumer_completion* consumer_comp )
销毁 DOCA Comch 消费者完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_dpa_handle ( doca_comch_consumer_completion* consumer_comp, doca_dpa_dev_comch_consumer_completion_t* consumer_comp_handle )
获取 DOCA Comch 消费者完成上下文的 DPA 句柄。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_imm_data_len ( const doca_comch_consumer_completion* consumer_comp, uint32_t* imm_data_len )
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_max_num_consumers ( const doca_comch_consumer_completion* consumer_comp, uint32_t* max_num_consumers )
获取可以与完成上下文关联的最大消费者数量。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_max_num_recv ( const doca_comch_consumer_completion* consumer_comp, uint32_t* max_num_recv )
获取与完成上下文关联的所有消费者可以执行的最大接收操作数。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_dpa_thread ( doca_comch_consumer_completion* consumer_comp, doca_dpa_thread* dpa_thread )
设置完成上下文的 DOCA DPA 线程。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_imm_data_len ( doca_comch_consumer_completion* consumer_comp, uint32_t imm_data_len )
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_max_num_consumers ( doca_comch_consumer_completion* consumer_comp, uint32_t max_num_consumers )
设置可以与完成上下文关联的最大消费者数量。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_max_num_recv ( doca_comch_consumer_completion* consumer_comp, uint32_t max_num_recv )
设置与完成上下文关联的所有消费者可以执行的最大接收操作数。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_start ( doca_comch_consumer_completion* consumer_comp )
启动 DOCA Comch 消费者完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_stop ( doca_comch_consumer_completion* consumer_comp )
停止 DOCA Comch 消费者完成上下文。
DOCA_STABLE doca_error_t doca_comch_consumer_create ( doca_comch_connection* comch_connection, doca_mmap* buf_mmap, doca_comch_consumer** consumer )
DOCA_STABLE doca_error_t doca_comch_consumer_destroy ( doca_comch_consumer* consumer )
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_get_dpa_handle ( doca_comch_consumer* consumer, doca_dpa_dev_comch_consumer_t* dpa_consumer )
检索 doca_comch_consumer 的 dpa 内存空间中的句柄。
DOCA_STABLE doca_error_t doca_comch_consumer_get_id ( const doca_comch_consumer* consumer, uint32_t* id )
DOCA_STABLE doca_error_t doca_comch_consumer_get_imm_data_len ( const doca_comch_consumer* consumer, uint32_t* imm_data_len )
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_set_completion ( doca_comch_consumer* consumer, doca_comch_consumer_completion* consumer_comp, uint32_t user_data )
将消费者与 DPA 完成上下文关联。
DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_set_dev_max_num_recv ( doca_comch_consumer* consumer, uint32_t dev_num_recv )
为 DPA 消费者设置最大接收操作数。
DOCA_STABLE doca_error_t doca_comch_consumer_set_imm_data_len ( doca_comch_consumer* consumer, uint32_t imm_data_len )
DOCA_STABLE doca_error_t doca_comch_consumer_task_post_recv_alloc_init ( doca_comch_consumer* consumer, doca_buf* buf, doca_comch_consumer_task_post_recv** task )
分配并初始化一个 doca_consumer 发布接收任务。
DOCA_STABLE doca_task* doca_comch_consumer_task_post_recv_as_task ( doca_comch_consumer_task_post_recv* task )
DOCA_STABLE doca_buf* doca_comch_consumer_task_post_recv_get_buf ( const doca_comch_consumer_task_post_recv* task )
const DOCA_STABLE uint8_t* doca_comch_consumer_task_post_recv_get_imm_data ( const doca_comch_consumer_task_post_recv* task )
DOCA_STABLE uint32_t doca_comch_consumer_task_post_recv_get_imm_data_len ( const doca_comch_consumer_task_post_recv* task )
DOCA_STABLE uint32_t doca_comch_consumer_task_post_recv_get_producer_id ( const doca_comch_consumer_task_post_recv* task )
DOCA_STABLE void doca_comch_consumer_task_post_recv_set_buf ( doca_comch_consumer_task_post_recv* task, doca_buf* buf )
DOCA_STABLE doca_error_t doca_comch_consumer_task_post_recv_set_conf ( doca_comch_consumer* consumer, doca_comch_consumer_task_post_recv_completion_cb_t task_completion_cb, doca_comch_consumer_task_post_recv_completion_cb_t task_error_cb, uint32_t num_post_recv_tasks )
类型定义
void ( *doca_comch_consumer_task_post_recv_completion_cb_t )( doca_comch_consumer_task_post_recv*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

在 doca_comch_consumer 发布接收完成时执行的函数。用于任务成功和失败。

实现可以假设此值不为 NULL。

参数
task
已完成的 Doca 消费者发布接收任务。
union doca_data task_user_data
union doca_data ctx_user_data

typedef uint64_t doca_dpa_dev_comch_consumer_completion_t

DPA 消费者完成上下文的 DPA 句柄。

typedef uint64_t doca_dpa_dev_comch_consumer_t

DPA 消费者的 DPA 句柄。

函数
DOCA_STABLE doca_ctx* doca_comch_consumer_as_ctx ( doca_comch_consumer* consumer )

参数
consumer
Doca_comch_consumer 实例。在不再需要上下文之前,它必须保持有效。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch_consumer 实例转换为通用上下文,以便与 doca core 对象一起使用。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )

参数
devinfo
用于查询能力的 Devinfo。
max_buf_list_len
消费者可以接收的最大尺寸的缓冲区列表。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NOT_SUPPORTED - 如果设备不支持消费者。
描述

获取 doca_buf 列表的最大长度,doca_comch_consumer 实例可以接收该列表。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_buf_size ( const doca_devinfo* devinfo, uint32_t* max_buf_size )

参数
devinfo
用于查询能力的 Devinfo。
max_buf_size
消费者可以接收的最大尺寸的缓冲区。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NOT_SUPPORTED - 如果设备不支持消费者。
描述

获取 doca_buf 的最大尺寸,doca_comch_consumer 实例可以接收该缓冲区。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_consumers ( const doca_devinfo* devinfo, uint32_t* max_consumers )

参数
devinfo
用于查询能力的 Devinfo。
max_consumers
可以添加到 doca_comch_connection 的最大消费者数量。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取可以与 doca_comch_connection 关联的最大消费者数量。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_imm_data_len ( const doca_devinfo* devinfo, uint32_t* max_imm_data_len )

参数
devinfo
用于查询能力的 Devinfo。
max_imm_data_len
消费者支持的最大立即数据长度。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取消费者支持的最大立即数据长度。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_get_max_num_tasks ( const doca_devinfo* devinfo, uint32_t* max_num_tasks )

参数
devinfo
用于查询能力的 Devinfo。
max_num_tasks
实例可以分配的最大任务数。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取设备为 doca_comch_consumer 实例支持的最大任务数。

DOCA_STABLE doca_error_t doca_comch_consumer_cap_is_supported ( const doca_devinfo* devinfo )

参数
devinfo
DOCA 设备信息。

返回值

DOCA_SUCCESS - 如果设备可以实现消费者。错误代码 - 如果失败。

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 提供的 devinfo 无法实现消费者。
描述

检查给定设备是否能够运行消费者。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_create ( doca_comch_consumer_completion** consumer_comp )
在 DPA 上分配 DOCA Comch 消费者完成上下文。
参数
consumer_comp
新创建的 DOCA Comch 消费者完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_destroy ( doca_comch_consumer_completion* consumer_comp )
销毁 DOCA Comch 消费者完成上下文。
参数
consumer_comp
要销毁的 DOCA Comch 消费者完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

关联的 dpa 句柄也将被销毁。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_dpa_handle ( doca_comch_consumer_completion* consumer_comp, doca_dpa_dev_comch_consumer_completion_t* consumer_comp_handle )
获取 DOCA Comch 消费者完成上下文的 DPA 句柄。
参数
consumer_comp
先前在 DPA 上创建的 DOCA Comch 消费者完成上下文。
consumer_comp_handle
指向 dpa 内存空间中关联的 DPA 句柄的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_imm_data_len ( const doca_comch_consumer_completion* consumer_comp, uint32_t* imm_data_len )

参数
consumer_comp
要查询的 DOCA Comch 消费者完成上下文。
imm_data_len
消费者完成上下文配置为支持的立即数据长度。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取消费者完成上下文支持的立即数据长度。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_max_num_consumers ( const doca_comch_consumer_completion* consumer_comp, uint32_t* max_num_consumers )
获取可以与完成上下文关联的最大消费者数量。
参数
consumer_comp
要查询的 DOCA Comch 消费者完成上下文。
max_num_consumers
可以与上下文关联的最大消费者数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_get_max_num_recv ( const doca_comch_consumer_completion* consumer_comp, uint32_t* max_num_recv )
获取与完成上下文关联的所有消费者可以执行的最大接收操作数。
参数
consumer_comp
要查询的 DOCA Comch 消费者完成上下文。
max_num_recv
可以与上下文关联的最大接收数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_dpa_thread ( doca_comch_consumer_completion* consumer_comp, doca_dpa_thread* dpa_thread )
设置完成上下文的 DOCA DPA 线程。
参数
consumer_comp
DOCA Comch 消费者完成上下文。
dpa_thread
要与完成上下文关联的 DOCA dpa 线程。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此线程将接收完成通知。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_imm_data_len ( doca_comch_consumer_completion* consumer_comp, uint32_t imm_data_len )

参数
consumer_comp
要修改的 DOCA Comch 消费者完成上下文。
imm_data_len
要在消费者完成上下文中配置的立即数据长度。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

设置消费者完成上下文支持的立即数据长度。

消费者完成的立即数据长度必须大于或等于任何关联的消费者的立即数据长度。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_max_num_consumers ( doca_comch_consumer_completion* consumer_comp, uint32_t max_num_consumers )
设置可以与完成上下文关联的最大消费者数量。
参数
consumer_comp
要修改的 DOCA Comch 消费者完成上下文。
max_num_consumers
可以与上下文关联的最大消费者数量。将向上舍入到下一个 2 的幂。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_set_max_num_recv ( doca_comch_consumer_completion* consumer_comp, uint32_t max_num_recv )
设置与完成上下文关联的所有消费者可以执行的最大接收操作数。
参数
consumer_comp
要修改的 DOCA Comch 消费者完成上下文。
max_num_recv
可以与上下文关联的最大接收数。将向上舍入到下一个 2 的幂。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_start ( doca_comch_consumer_completion* consumer_comp )
启动 DOCA Comch 消费者完成上下文。
参数
consumer_comp
要启动的 DOCA Comch 消费者完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

启动时,验证并最终确定完成上下文配置。

对于启动的完成上下文,可以进行以下操作:

  • 将 DOCA Comch 消费者与完成上下文关联。

当完成上下文启动时,以下操作是不可能的:

  • 设置完成上下文的属性。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_completion_stop ( doca_comch_consumer_completion* consumer_comp )
停止 DOCA Comch 消费者完成上下文。
参数
consumer_comp
要停止的 DOCA Comch 消费者完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

停止时,防止执行不同的操作,并允许启动前可用的操作。有关详细信息,请参阅 doca_comch_consumer_completion_start()。当有 DOCA Comch 消费者与之关联时,无法停止完成上下文。

对于停止的完成上下文,可以进行以下操作:

  • 设置完成上下文的属性。

当完成上下文停止时,以下操作是不可能的:

  • 将 DOCA Comch 消费者与完成上下文关联。

DOCA_STABLE doca_error_t doca_comch_consumer_create ( doca_comch_connection* comch_connection, doca_mmap* buf_mmap, doca_comch_consumer** consumer )

参数
comch_connection
已建立的控制通道连接,用于在其上创建消费者。
buf_mmap
为消费者允许缓冲区写入的内存区域注册的 mmap。
consumer
指向指针的指针,将被设置为创建的 doca_comch_consumer 实例。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入参数为 NULL 指针。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_comch_consumer 对象或 id 失败。
  • DOCA_ERROR_BAD_STATE - comch_connection 未建立。
  • DOCA_ERROR_NOT_PERMITTED - comch_connection 版本不兼容。
描述

创建一个 DOCA Comch 消费者实例。

DOCA_STABLE doca_error_t doca_comch_consumer_destroy ( doca_comch_consumer* consumer )

参数
consumer
指向要销毁的 doca_comch_consumer 实例的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - consumer 参数为 NULL 指针。
  • DOCA_ERROR_INITIALIZATION - 初始化互斥锁失败。
描述

销毁一个 DOCA Comch 消费者实例。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_get_dpa_handle ( doca_comch_consumer* consumer, doca_dpa_dev_comch_consumer_t* dpa_consumer )
检索 doca_comch_consumer 的 dpa 内存空间中的句柄。
参数
consumer
doca_comch_consumer 上下文,从中获取 dpa 句柄。
dpa_consumer
指向 dpa 内存空间中句柄的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果给出了无效参数。
  • DOCA_ERROR_BAD_STATE - 如果在调用 doca_ctx_start() 之前调用,或者如果未分配给 dpa 数据路径。
描述

DOCA_STABLE doca_error_t doca_comch_consumer_get_id ( const doca_comch_consumer* consumer, uint32_t* id )

参数
consumer
doca_comch_consumer 实例。
id
与消费者实例关联的每个 comch_connection 的唯一 id。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取 doca_comch_consumer 实例的 id。

DOCA_STABLE doca_error_t doca_comch_consumer_get_imm_data_len ( const doca_comch_consumer* consumer, uint32_t* imm_data_len )

参数
consumer
要查询的消费者。
imm_data_len
消费者配置为支持的立即数据长度。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取消费者支持的立即数据长度。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_set_completion ( doca_comch_consumer* consumer, doca_comch_consumer_completion* consumer_comp, uint32_t user_data )
将消费者与 DPA 完成上下文关联。
参数
consumer
doca_comch_consumer 实例。必须在此调用之前调用 doca_ctx_set_datapath_on_dpa()
consumer_comp
要与消费者关联的 DOCA Comch 消费者完成上下文。
user_data
可以从该消费者返回的完成元素在 DPA 中检索的用户数据。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

这将允许完成上下文在 DPA 上接收此消费者的完成。

DOCA_EXPERIMENTAL doca_error_t doca_comch_consumer_set_dev_max_num_recv ( doca_comch_consumer* consumer, uint32_t dev_num_recv )
为 DPA 消费者设置最大接收操作数。
参数
consumer
doca_comch_consumer 实例。
dev_num_recv
可以与上下文关联的最大接收数。将向上舍入到下一个 2 的幂。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_STABLE doca_error_t doca_comch_consumer_set_imm_data_len ( doca_comch_consumer* consumer, uint32_t imm_data_len )

参数
consumer
要设置长度的消费者。
imm_data_len
要在消费者中配置的立即数据长度。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - cc 实例已激活。
描述

设置消费者支持的立即数据长度。

长度必须小于或等于 doca_comch_consumer_cap_get_max_imm_data_len() 返回的长度。

DOCA_STABLE doca_error_t doca_comch_consumer_task_post_recv_alloc_init ( doca_comch_consumer* consumer, doca_buf* buf, doca_comch_consumer_task_post_recv** task )
分配并初始化一个 doca_consumer 发布接收任务。
参数
consumer
doca_comch_consumer 实例。
buf
可由生产者填充的 Doca 缓冲区。
task
指向填充了输入参数的 doca_comch_consumer_task_post_recv 实例的指针。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NO_MEMORY - 没有可用的任务可以分配。
描述

Doca 缓冲区应位于与消费者实例关联的已注册 mmap 中。每当缓冲区被消费者填充时,将触发完成回调。

DOCA_STABLE doca_task* doca_comch_consumer_task_post_recv_as_task ( doca_comch_consumer_task_post_recv* task )

参数
task
doca_comch_consumer_task_post_recv 实例。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch_consumer_task_post_recv 实例转换为通用任务,以便与进度引擎一起使用。

DOCA_STABLE doca_buf* doca_comch_consumer_task_post_recv_get_buf ( const doca_comch_consumer_task_post_recv* task )

参数
task
doca_comch_consumer_task_post_recv 实例。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

从 doca_comch_consumer_task_post_recv 实例获取 doca_buf。

const DOCA_STABLE uint8_t* doca_comch_consumer_task_post_recv_get_imm_data ( const doca_comch_consumer_task_post_recv* task )

参数
task
doca_comch_consumer_task_post_recv 实例。

返回值

指向立即数据的指针,如果不存在则为 nullptr。

描述

从 doca_comch_consumer_task_post_recv 实例获取指向任何立即数据的指针。

立即数据仅在 post recv 完成时设置。doca_comch_consumer_task_post_recv_get_imm_data_len() 指示指向的有效位数。

DOCA_STABLE uint32_t doca_comch_consumer_task_post_recv_get_imm_data_len ( const doca_comch_consumer_task_post_recv* task )

参数
task
doca_comch_consumer_task_post_recv 实例。

返回值

post receive 完成时的立即数据长度。

描述

从 doca_comch_consumer_task_post_recv 实例获取任何立即数据的长度。

立即数据长度仅在 post recv 完成时设置。它指示 doca_comch_consumer_task_post_recv_get_imm_data() 返回的指针中的有效字节数。

DOCA_STABLE uint32_t doca_comch_consumer_task_post_recv_get_producer_id ( const doca_comch_consumer_task_post_recv* task )

参数
task
doca_comch_consumer_task_post_recv 实例。

返回值

成功时的生产者 ID,否则为 0。

描述

从 doca_comch_consumer_task_post_recv 实例获取生产者 ID。

生产者 ID 仅在 post recv 完成时设置,并指示已将数据写入关联 doca_buf 的远程生产者。

DOCA_STABLE void doca_comch_consumer_task_post_recv_set_buf ( doca_comch_consumer_task_post_recv* task, doca_buf* buf )

参数
task
doca_comch_consumer_task_post_recv 实例。
buf
要在任务中设置的缓冲区。

描述

在 doca_comch_consumer_task_post_recv 实例中设置 doca_buf。

DOCA_STABLE doca_error_t doca_comch_consumer_task_post_recv_set_conf ( doca_comch_consumer* consumer, doca_comch_consumer_task_post_recv_completion_cb_t task_completion_cb, doca_comch_consumer_task_post_recv_completion_cb_t task_error_cb, uint32_t num_post_recv_tasks )

参数
consumer
doca_comch_consumer 实例。
task_completion_cb
Post receive 任务完成回调。
task_error_cb
Post receive 任务错误回调。
num_post_recv_tasks
消费者可以分配的 post_recv 任务数。不得超过 doca_comch_consumer_cap_get_max_num_tasks() 返回的值。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - 消费者实例已激活。
描述

配置 doca_comch_consumer post receive 任务回调和参数。

2.5.2. DOCA Comch MsgQ

[ DOCA Comch ]

DOCA 通信通道 MsgQ 库允许您在主机/DPU 和 DPA 之间设置直接通信通道。该通道不是 TCP/IP 协议栈的一部分。请遵循程序员指南以获取使用说明。

函数
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_consumer_create ( doca_comch_msgq* msgq, doca_comch_consumer** consumer )
创建一个 DOCA Comch 消费者实例。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_create ( doca_dev* dev, doca_comch_msgq** msgq )
创建 DOCA Comch MsgQ 实例。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_destroy ( doca_comch_msgq* msgq )
销毁 DOCA Comch MsgQ 实例。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_producer_create ( doca_comch_msgq* msgq, doca_comch_producer** producer )
创建 DOCA Comch 生产者实例。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_dpa_consumer ( doca_comch_msgq* msgq, doca_dpa* dpa )
将消费者设置为 DPA。此 MsgQ 上的所有消费者都将为 DPA 创建。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_dpa_producer ( doca_comch_msgq* msgq, doca_dpa* dpa )
将生产者设置为 DPA。此 MsgQ 上的所有生产者都将为 DPA 创建。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_max_num_consumers ( doca_comch_msgq* msgq, uint32_t max_num_consumers )
设置可以使用此 MsgQ 创建的最大消费者数量。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_max_num_producers ( doca_comch_msgq* msgq, uint32_t max_num_producers )
设置可以使用此 MsgQ 创建的最大生产者数量。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_start ( doca_comch_msgq* msgq )
启动 DOCA Comch MsgQ。
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_stop ( doca_comch_msgq* msgq )
停止 DOCA Comch MsgQ。
函数
DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_consumer_create ( doca_comch_msgq* msgq, doca_comch_consumer** consumer )
创建一个 DOCA Comch 消费者实例。
参数
msgq
用于创建消费者的 DOCA Comch MsgQ
consumer
指向指针的指针,将被设置为创建的 doca_comch_consumer 实例。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_create ( doca_dev* dev, doca_comch_msgq** msgq )
创建 DOCA Comch MsgQ 实例。
参数
dev
将用于发送/接收消息的 DOCA 设备。
msgq
要设置为已创建 doca_comch_msgq 实例的指针的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_destroy ( doca_comch_msgq* msgq )
销毁 DOCA Comch MsgQ 实例。
参数
msgq
要销毁的 DOCA Comch MsgQ。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_producer_create ( doca_comch_msgq* msgq, doca_comch_producer** producer )
创建 DOCA Comch 生产者实例。
参数
msgq
用于创建生产者的 DOCA Comch MsgQ
producer
要设置为已创建 doca_comch_producer 实例的指针的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_dpa_consumer ( doca_comch_msgq* msgq, doca_dpa* dpa )
将消费者设置为 DPA。此 MsgQ 上的所有消费者都将为 DPA 创建。
参数
msgq
要修改的 DOCA Comch MsgQ。
dpa
将使用消费者的 DPA 上下文。必须与 MsgQ 在同一设备上。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此配置指定此 MsgQ 上的所有消费者都将在该 DPA 实例上创建和使用。默认情况下,消费者设置在主机(或 DPU)上。

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_dpa_producer ( doca_comch_msgq* msgq, doca_dpa* dpa )
将生产者设置为 DPA。此 MsgQ 上的所有生产者都将为 DPA 创建。
参数
msgq
要修改的 DOCA Comch MsgQ。
dpa
将使用生产者的 DPA 上下文。必须与 MsgQ 在同一设备上。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此配置指定此 MsgQ 上的所有生产者都将在该 DPA 实例上创建和使用。默认情况下,生产者设置在主机(或 DPU)上。

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_max_num_consumers ( doca_comch_msgq* msgq, uint32_t max_num_consumers )
设置可以使用此 MsgQ 创建的最大消费者数量。
参数
msgq
要修改的 DOCA Comch MsgQ。
max_num_consumers
可以创建的最大消费者数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_set_max_num_producers ( doca_comch_msgq* msgq, uint32_t max_num_producers )
设置可以使用此 MsgQ 创建的最大生产者数量。
参数
msgq
要修改的 DOCA Comch MsgQ。
max_num_producers
可以创建的最大生产者数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_start ( doca_comch_msgq* msgq )
启动 DOCA Comch MsgQ。
参数
msgq
要启动的 DOCA Comch MsgQ。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

启动时,验证并完成 MsgQ 配置。

对于已启动的 MsgQ,可以执行以下操作

  • 创建消费者和生产者。

当完成上下文启动时,以下操作是不可能的:

  • 设置 MsgQ 的属性

DOCA_EXPERIMENTAL doca_error_t doca_comch_msgq_stop ( doca_comch_msgq* msgq )
停止 DOCA Comch MsgQ。
参数
msgq
要停止的 DOCA Comch MsgQ。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

停止时,阻止执行不同的操作,并允许在启动前可用的操作。有关详细信息,请参阅 doca_comch_msgq_start()。当存在与 MsgQ 关联的 DOCA Comch 消费者/生产者时,无法停止 MsgQ。

对于已停止的 MsgQ,可以执行以下操作

  • 设置 MsgQ 的属性

当 MsgQ 停止时,以下操作是不可能的

  • 从 MsgQ 创建 DOCA Comch 消费者或生产者。

2.5.3. DOCA Comch 生产者

[ DOCA Comch ]

DOCA 通信通道生产者为 doca_comch 通道提供扩展,用于加速主机和 DPU 上内存之间以 FIFO 格式进行数据传输。需要建立 doca_comch 连接以协商 FIFO 的端点。生产者对象可以填充与同一 doca_comch 连接关联的任何消费者通告的缓冲区。进程间通信通过 DMA/PCIe 运行,不会影响网络带宽。

类型定义
typedef void  ( *doca_comch_producer_task_send_completion_cb_t )( doca_comch_producer_task_send*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
typedef uint64_t  doca_dpa_dev_comch_producer_t
DPA 生产者的 DPA 句柄。
函数
DOCA_STABLE doca_ctx* doca_comch_producer_as_ctx ( doca_comch_producer* producer )
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_buf_size ( const doca_devinfo* devinfo, uint32_t* max_buf_size )
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_num_tasks ( const doca_devinfo* devinfo, uint32_t* max_num_tasks )
DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_producers ( const doca_devinfo* devinfo, uint32_t* max_producers )
DOCA_STABLE doca_error_t doca_comch_producer_cap_is_supported ( const doca_devinfo* devinfo )
DOCA_STABLE doca_error_t doca_comch_producer_create ( doca_comch_connection* comch_connection, doca_comch_producer** producer )
DOCA_STABLE doca_error_t doca_comch_producer_destroy ( doca_comch_producer* producer )
DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_dpa_completion_attach ( doca_comch_producer* producer, doca_dpa_completion* dpa_comp )
将生产者与 DPA 完成上下文关联。
DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_get_dpa_handle ( doca_comch_producer* producer, doca_dpa_dev_comch_producer_t* dpa_producer )
检索 doca_comch_producer 的 dpa 内存空间中的句柄。
DOCA_STABLE doca_error_t doca_comch_producer_get_id ( const doca_comch_producer* producer, uint32_t* id )
DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_set_dev_max_num_send ( doca_comch_producer* producer, uint32_t dev_num_send )
设置 DPA 生产者的最大发送操作数。
DOCA_STABLE doca_error_t doca_comch_producer_task_send_alloc_init ( doca_comch_producer* producer, const doca_buf* buf, uint8_t* imm_data, uint32_t imm_data_len, uint32_t consumer_id, doca_comch_producer_task_send** task )
DOCA_STABLE doca_task* doca_comch_producer_task_send_as_task ( doca_comch_producer_task_send* task )
DOCA_STABLE doca_buf* doca_comch_producer_task_send_get_buf ( const doca_comch_producer_task_send* task )
DOCA_STABLE uint32_t doca_comch_producer_task_send_get_consumer_id ( const doca_comch_producer_task_send* task )
DOCA_STABLE uint8_t* doca_comch_producer_task_send_get_imm_data ( const doca_comch_producer_task_send* task )
DOCA_STABLE uint32_t doca_comch_producer_task_send_get_imm_data_len ( const doca_comch_producer_task_send* task )
DOCA_STABLE void doca_comch_producer_task_send_set_buf ( doca_comch_producer_task_send* task, const doca_buf* buf )
DOCA_STABLE doca_error_t doca_comch_producer_task_send_set_conf ( doca_comch_producer* producer, doca_comch_producer_task_send_completion_cb_t task_completion_cb, doca_comch_producer_task_send_completion_cb_t task_error_cb, uint32_t num_send_tasks )
DOCA_STABLE void doca_comch_producer_task_send_set_consumer_id ( doca_comch_producer_task_send* task, const uint32_t consumer_id )
DOCA_STABLE void doca_comch_producer_task_send_set_imm_data ( doca_comch_producer_task_send* task, uint8_t* imm_data, uint32_t imm_data_len )
类型定义
void ( *doca_comch_producer_task_send_completion_cb_t )( doca_comch_producer_task_send*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

在 doca_comch_producer 发送任务完成时执行的函数。用于任务成功和失败。

实现可以假设此值不为 NULL。

参数
task
已完成的 Doca 生产者发送任务。
union doca_data task_user_data
union doca_data ctx_user_data

typedef uint64_t doca_dpa_dev_comch_producer_t

DPA 生产者的 DPA 句柄。

函数
DOCA_STABLE doca_ctx* doca_comch_producer_as_ctx ( doca_comch_producer* producer )

参数
producer
Doca_comch_producer 实例。这必须保持有效,直到不再需要上下文之后。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch_producer 实例转换为通用上下文,以便与 doca 核心对象一起使用。

DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )

参数
devinfo
用于查询能力的 Devinfo。
max_buf_list_len
生产者可以发送的最大尺寸缓冲区列表。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NOT_SUPPORTED - 如果设备不支持生产者。
描述

获取 doca_comch_producer 实例可以发送的 doca_buf 列表的最大长度。

DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_buf_size ( const doca_devinfo* devinfo, uint32_t* max_buf_size )

参数
devinfo
用于查询能力的 Devinfo。
max_buf_size
生产者可以发送的最大尺寸缓冲区。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NOT_SUPPORTED - 如果设备不支持生产者。
描述

获取 doca_comch_producer 实例可以发送的最大尺寸 doca_buf。

DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_num_tasks ( const doca_devinfo* devinfo, uint32_t* max_num_tasks )

参数
devinfo
用于查询能力的 Devinfo。
max_num_tasks
实例可以分配的最大任务数。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取设备为 doca_comch_producer 实例支持的最大任务数。

DOCA_STABLE doca_error_t doca_comch_producer_cap_get_max_producers ( const doca_devinfo* devinfo, uint32_t* max_producers )

参数
devinfo
用于查询能力的 Devinfo。
max_producers
可以添加到 doca_comch_connection 的最大生产者数量。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取可以与 doca_comch_connection 关联的最大生产者数量。

DOCA_STABLE doca_error_t doca_comch_producer_cap_is_supported ( const doca_devinfo* devinfo )

参数
devinfo
DOCA 设备信息。

返回值

DOCA_SUCCESS - 如果设备可以实现生产者。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - 提供的 devinfo 无法实现生产者。
描述

检查给定设备是否能够运行生产者。

DOCA_STABLE doca_error_t doca_comch_producer_create ( doca_comch_connection* comch_connection, doca_comch_producer** producer )

参数
comch_connection
要与生产者关联的已建立的控制通道连接。
producer
要设置为已创建 doca_comch_producer 实例的指针的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入参数为 NULL 指针。
  • DOCA_ERROR_NO_MEMORY - 无法分配 doca_comch_producer。
  • DOCA_ERROR_BAD_STATE - comch_connection 未建立。
  • DOCA_ERROR_NOT_PERMITTED - comch_connection 版本不兼容。
描述

创建 DOCA Comch 生产者实例。

DOCA_STABLE doca_error_t doca_comch_producer_destroy ( doca_comch_producer* producer )

参数
producer
要销毁的 doca_comch_producer 实例的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - producer 参数为空指针。
  • DOCA_ERROR_INITIALIZATION - 初始化互斥锁失败。
描述

销毁 DOCA Comch 生产者实例。

DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_dpa_completion_attach ( doca_comch_producer* producer, doca_dpa_completion* dpa_comp )
将生产者与 DPA 完成上下文关联。
参数
producer
doca_comch_producer 实例。必须在此调用之前调用 doca_ctx_set_datapath_on_dpa()
dpa_comp
要与生产者关联的 DOCA DPA 完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

这将允许完成上下文在此 DPA 上发送此生产者的完成。

DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_get_dpa_handle ( doca_comch_producer* producer, doca_dpa_dev_comch_producer_t* dpa_producer )
检索 doca_comch_producer 的 dpa 内存空间中的句柄。
参数
producer
要从中获取 dpa 句柄的 doca_comch_producer 上下文。
dpa_producer
指向 dpa 内存空间中句柄的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果给出了无效参数。
  • DOCA_ERROR_BAD_STATE - 如果在调用 doca_ctx_start() 之前调用,或者如果未分配给 dpa 数据路径。
描述

DOCA_STABLE doca_error_t doca_comch_producer_get_id ( const doca_comch_producer* producer, uint32_t* id )

参数
producer
doca_comch_producer 实例。
id
每个 comch_connection 与生产者实例关联的唯一 ID。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取 doca_comch_producer 实例的 ID。

DOCA_EXPERIMENTAL doca_error_t doca_comch_producer_set_dev_max_num_send ( doca_comch_producer* producer, uint32_t dev_num_send )
设置 DPA 生产者的最大发送操作数。
参数
producer
doca_comch_producer 实例。
dev_num_send
可以与上下文关联的最大发送数。将向上舍入为下一个 2 的幂

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_STABLE doca_error_t doca_comch_producer_task_send_alloc_init ( doca_comch_producer* producer, const doca_buf* buf, uint8_t* imm_data, uint32_t imm_data_len, uint32_t consumer_id, doca_comch_producer_task_send** task )

参数
producer
doca_comch_producer 实例。
buf
要发送给消费者的 Doca 缓冲区。
imm_data
指向要包含在发送中的立即数据的指针。
imm_data_len
imm_data 指向的数据的长度(以字节为单位)。
consumer_id
要将缓冲区发送到的消费者的 ID。
task
指向填充了输入参数的 doca_comch_producer_task_send 实例的指针。

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_NO_MEMORY - 没有可用的任务可以分配。
描述

分配和初始化 doca_producer 发送任务。

DOCA_STABLE doca_task* doca_comch_producer_task_send_as_task ( doca_comch_producer_task_send* task )

参数
task
doca_comch_producer_task_send 实例。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_comch_producer_task_send 实例转换为通用任务,以便与进度引擎一起使用。

DOCA_STABLE doca_buf* doca_comch_producer_task_send_get_buf ( const doca_comch_producer_task_send* task )

参数
task
doca_comch_producer_task_send 实例。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

从 doca_comch_producer_task_send 实例获取 doca_buf。

DOCA_STABLE uint32_t doca_comch_producer_task_send_get_consumer_id ( const doca_comch_producer_task_send* task )

参数
task
doca_comch_producer_task_send 实例。

返回值

Consumer_id

描述

从 doca_comch_producer_task_send 实例获取消费者 ID。

DOCA_STABLE uint8_t* doca_comch_producer_task_send_get_imm_data ( const doca_comch_producer_task_send* task )

参数
task
doca_comch_producer_task_send 实例。

返回值

立即数据指针,如果不存在则为 nullptr

描述

从 doca_comch_producer_task_send 实例获取任何立即数据。

DOCA_STABLE uint32_t doca_comch_producer_task_send_get_imm_data_len ( const doca_comch_producer_task_send* task )

参数
task
doca_comch_producer_task_send 实例。

返回值

立即数据的长度。

描述

从 doca_comch_producer_task_send 实例获取任何立即数据长度。

DOCA_STABLE void doca_comch_producer_task_send_set_buf ( doca_comch_producer_task_send* task, const doca_buf* buf )

参数
task
doca_comch_producer_task_send 实例。
buf
要在任务中设置的缓冲区。

描述

在 doca_comch_producer_task_send 实例中设置 doca_buf。

DOCA_STABLE doca_error_t doca_comch_producer_task_send_set_conf ( doca_comch_producer* producer, doca_comch_producer_task_send_completion_cb_t task_completion_cb, doca_comch_producer_task_send_completion_cb_t task_error_cb, uint32_t num_send_tasks )

参数
producer
doca_comch_producer 实例。
task_completion_cb
发送任务完成回调函数。
task_error_cb
发送任务错误回调函数。
num_send_tasks
生产者可以分配的发送任务数。不得超过 doca_comch_producer_cap_get_max_num_tasks() 返回的值

返回值

成功时返回 DOCA_SUCCESS。错误代码 - 如果失败

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
  • DOCA_ERROR_BAD_STATE - 生产者实例已激活。
描述

配置 doca_comch_producer 发送任务回调和参数。

DOCA_STABLE void doca_comch_producer_task_send_set_consumer_id ( doca_comch_producer_task_send* task, const uint32_t consumer_id )

参数
task
doca_comch_producer_task_send 实例。
consumer_id
要在任务中设置的消费者 ID。

描述

在 doca_comch_producer_task_send 实例中设置消费者 ID。

DOCA_STABLE void doca_comch_producer_task_send_set_imm_data ( doca_comch_producer_task_send* task, uint8_t* imm_data, uint32_t imm_data_len )

参数
task
doca_comch_producer_task_send 实例。
imm_data
指向要复制到任务的立即数据的指针
imm_data_len
立即数据的长度(以字节为单位)

描述

在 doca_comch_producer_task_send 实例中设置立即数据。

DOCA 通信通道库允许您在主机和 DPU 之间设置直接通信通道。该通道通过 RoCE/IB 协议运行,并且不是 TCP/IP 协议栈的一部分。请遵循程序员指南以获取使用说明。

类型定义

typedef doca_event_handle_t  doca_event_channel_t
端点通知文件描述符,用于通过 epoll() 阻塞以获取接收就绪事件

枚举

enum doca_comm_channel_msg_flags
用于发送/接收函数的标志。

函数

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_connect ( doca_comm_channel_ep_t* local_ep, const char* name, doca_comm_channel_addr_t** peer_addr )
客户端连接。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_create ( doca_comm_channel_ep_t** ep )
创建本地端点。端点句柄表示通道运行所需的所有配置。用户需要为他这一侧与通信通道的所有操作保留一个端点。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_destroy ( doca_comm_channel_ep_t* local_ep )
释放端点句柄。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_disconnect ( doca_comm_channel_ep_t* local_ep, doca_comm_channel_addr_t* peer_addr )
断开端点与远程对等端的连接。阻塞直到与对等地址相关的所有资源都被释放,新的连接可以在端点上创建。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_event_handle_arm_recv ( doca_comm_channel_ep_t* local_ep )
为接收消息准备 event_channel 句柄。此函数准备接收完成队列,以便于阻塞接收事件通道。阻塞应由用户实现(Linux 中的 poll,Windows 中的 GetQueuedCompletionStatus)。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_event_handle_arm_send ( doca_comm_channel_ep_t* local_ep )
为已发送消息准备 event_channel 句柄。此函数准备发送完成队列,以便于阻塞发送事件通道。阻塞应由用户实现(Linux 中的 poll,Windows 中的 GetQueuedCompletionStatus)。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_device ( doca_comm_channel_ep_t* ep, doca_dev** device )
获取端点的设备属性。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_device_rep ( doca_comm_channel_ep_t* ep, doca_dev_rep** device_rep )
获取端点的设备表示属性。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_event_channel ( doca_comm_channel_ep_t* local_ep, doca_event_channel_t* send_event_channel, doca_event_channel_t* recv_event_channel )
提取 event_channel 句柄以供用户使用。当用户以非阻塞模式发送/接收数据包时,此句柄可用于在新事件发生时获取中断,使用 epoll() 或类似函数。事件通道由端点拥有,并在调用 doca_comm_channel_ep_destroy() 时释放。此函数只能在调用 doca_comm_channel_ep_listen() 或 doca_comm_channel_ep_connect() 之后调用。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_max_msg_size ( doca_comm_channel_ep_t* ep, uint16_t* max_msg_size )
获取端点的最大消息大小属性。返回的大小是正在使用的实际大小,可能与使用 doca_comm_channel_ep_set_max_msg_size() 设置的大小不同,因为存在最小大小要求。如果未使用 doca_comm_channel_ep_set_max_msg_size() 设置最大消息大小,则使用默认值,并且可以通过调用 doca_comm_channel_ep_get_max_msg_size() 查询该值。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_peer_addr_list ( const doca_comm_channel_ep_t* local_ep, doca_comm_channel_addr_t*** peer_addr_array, uint32_t* peer_addr_array_len )
获取连接到给定服务对象的 peer_addr 数组
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_pending_connections ( const doca_comm_channel_ep_t* local_ep, uint32_t* pending_connections )
获取给定服务端点的待处理连接数
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_recv_queue_size ( doca_comm_channel_ep_t* ep, uint16_t* recv_queue_size )
获取端点的接收队列大小属性。返回的大小是正在使用的实际大小,可能与使用 doca_comm_channel_ep_set_recv_queue_size() 设置的大小不同,因为存在最小大小要求,并且该大小向上舍入为最接近的 2 的幂。如果未使用 doca_comm_channel_ep_set_recv_queue_size() 设置接收队列大小,则使用默认值,并且可以通过调用 doca_comm_channel_ep_get_recv_queue_size() 查询该值。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_send_queue_size ( doca_comm_channel_ep_t* ep, uint16_t* send_queue_size )
获取端点的发送队列大小属性。返回的大小是正在使用的实际大小,可能与使用 doca_comm_channel_ep_set_send_queue_size() 设置的大小不同,因为存在最小大小要求,并且该大小向上舍入为最接近的 2 的幂。如果未使用 doca_comm_channel_ep_set_send_queue_size() 设置发送队列大小,则使用默认值,并且可以通过调用 doca_comm_channel_ep_get_send_queue_size() 查询该值。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_service_event_channel ( doca_comm_channel_ep_t* local_ep, doca_event_channel_t* service_event_channel )
提取 service_event_channel 句柄以供用户使用。当以下事件之一发生时,此句柄可用于获取中断:新客户端连接、客户端断开连接或服务移动到错误状态,使用 epoll() 或类似函数。如果收到事件,则应用程序可以调用 doca_comm_channel_ep_update_service_state_info() 及其查询函数来获取当前服务状态。服务事件通道在调用 doca_comm_channel_ep_update_service_state_info() 时自动准备就绪。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_listen ( doca_comm_channel_ep_t* local_ep, const char* name )
服务侧监听所有接口。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_recvfrom ( doca_comm_channel_ep_t* local_ep, void* msg, size_t* len, int  flags, doca_comm_channel_addr_t** peer_addr )
从连接的客户端/服务接收消息。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_sendto ( doca_comm_channel_ep_t* local_ep, const void* msg, size_t len, int  flags, doca_comm_channel_addr_t* peer_addr )
向对等地址发送消息。在发送消息之前,需要建立与所需对等地址的连接。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_set_device ( doca_comm_channel_ep_t* ep, doca_dev* device )
为端点设置设备属性。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_set_device_rep ( doca_comm_channel_ep_t* ep, doca_dev_rep* device_rep )
为端点设置设备表示属性。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_set_max_msg_size ( doca_comm_channel_ep_t* ep, uint16_t max_msg_size )
为端点设置最大消息大小属性。值 max_msg_size 可能会在内部增加,实际值可以使用 doca_comm_channel_ep_get_max_msg_size() 查询。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_set_recv_queue_size ( doca_comm_channel_ep_t* ep, uint16_t recv_queue_size )
为端点设置接收队列大小属性。值 recv_queue_size 可能会在内部增加,实际值可以使用 doca_comm_channel_ep_get_recv_queue_size() 查询。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_set_send_queue_size ( doca_comm_channel_ep_t* ep, uint16_t send_queue_size )
为端点设置发送队列大小属性。值 send_queue_size 可能会在内部增加,实际值可以使用 doca_comm_channel_ep_get_send_queue_size() 查询。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_update_service_state_info ( doca_comm_channel_ep_t* local_ep )
更新给定服务端点的连接状态
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_get_max_message_size ( doca_devinfo* devinfo, uint32_t* max_message_size )
获取 comm_channel 支持的最大消息大小。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_get_max_recv_queue_size ( doca_devinfo* devinfo, uint32_t* max_recv_queue_size )
获取 comm_channel 支持的最大接收队列大小。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_get_max_send_queue_size ( doca_devinfo* devinfo, uint32_t* max_send_queue_size )
获取 comm_channel 支持的最大发送队列大小。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_get_max_service_name_len ( uint32_t* max_service_name_len )
获取 comm_channel 最大服务名称长度。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_get_service_max_num_connections ( doca_devinfo* devinfo, uint32_t* max_num_connections )
获取服务可以保持的最大连接数。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_recv_bytes ( const doca_comm_channel_addr_t* peer_addr, uint64_t* recv_bytes )
获取从特定对等地址接收的总字节数
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_recv_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* recv_messages )
获取从特定对等地址接收的总消息数
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_send_bytes ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_bytes )
获取发送到特定对等地址的总字节数
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_send_in_flight_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_in_flight_messages )
获取传输到特定对等地址的消息数量
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_send_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_messages )
获取发送到特定对等地址的总消息数
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_user_data ( doca_comm_channel_addr_t* peer_addr, uint64_t* user_data )
从 peer_addr 句柄中提取 'user_context'。默认情况下,'user_context' 设置为 0,可以使用 doca_comm_channel_peer_addr_set_user_data() 更改。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_set_user_data ( doca_comm_channel_addr_t* peer_addr, uint64_t user_context )
在 peer_addr 句柄中保存 'user_context'。
DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_update_info ( doca_comm_channel_addr_t* peer_addr )
更新给定 peer_addr 的统计信息

类型定义

typedef doca_event_handle_t doca_event_channel_t

端点通知文件描述符,用于通过 epoll() 阻塞以获取接收就绪事件

枚举

enum doca_comm_channel_msg_flags

DOCA_CC_MSG_FLAG_NONE = 0

函数

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_connect ( doca_comm_channel_ep_t* local_ep, const char* name, doca_comm_channel_addr_t** peer_addr )
客户端连接。
参数
local_ep
预先使用 doca_comm_channel_ep_create() 创建的端点的句柄。
name
标识服务。使用 doca_comm_channel_get_max_service_name_len() 获取最大服务名称长度。
peer_addr
用于发送数据包和识别消息来源的句柄。

返回值

成功时返回 DOCA_SUCCESS。如果未提供 ep 对象、名称或 peer_address 指针,则返回 DOCA_ERROR_INVALID_VALUE。如果查询为 ep 设置的设备的功能或获取设备属性失败,则返回 DOCA_ERROR_DRIVER。如果尝试在不具备连接到 Comm Channel 功能的设备上调用 connect,则返回 DOCA_ERROR_NOT_SUPPORTED。如果端点已连接,则返回 DOCA_ERROR_NOT_PERMITTED。如果未设置 doca_dev,则返回 DOCA_ERROR_BAD_STATE。如果内存分配失败,则返回 DOCA_ERROR_NO_MEMORY。如果 ep 连接初始化失败,则返回 DOCA_ERROR_INITIALIZATION。如果连接因任何原因失败(连接被拒绝或失败),则返回 DOCA_ERROR_CONNECTION_ABORTED。

描述

此功能仅适用于客户端使用。作为连接过程的一部分,客户端与服务发起内部握手协议。

如果在服务使用相同名称执行 listen 之前调用 connect 函数,则连接将失败。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_create ( doca_comm_channel_ep_t** ep )
创建本地端点。端点句柄表示通道运行所需的所有配置。用户需要为他这一侧与通信通道的所有操作保留一个端点。
参数
ep
指向新创建的端点的句柄。

返回值

成功时返回 DOCA_SUCCESS。如果未提供 ep 指针或属性对象,则返回 DOCA_ERROR_INVALID_VALUE。如果在 ep 创建期间内存分配失败,则返回 DOCA_ERROR_NO_MEMORY。如果 ep 初始化失败,则返回 DOCA_ERROR_INITIALIZATION。如果获取设备属性失败,则返回 DOCA_ERROR_DRIVER。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_destroy ( doca_comm_channel_ep_t* local_ep )
释放端点句柄。
参数
local_ep
预先使用 doca_comm_channel_ep_create() 创建的端点的句柄。

返回值

成功时返回 DOCA_SUCCESS。如果 ep 不存在,则返回 DOCA_ERROR_NOT_CONNECTED。

描述

该函数关闭 event_channel 并释放所有内部资源。doca_comm_channel_ep_disconnect() 包含在销毁过程中。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_disconnect ( doca_comm_channel_ep_t* local_ep, doca_comm_channel_addr_t* peer_addr )
断开端点与远程对等端的连接。阻塞直到与对等地址相关的所有资源都被释放,新的连接可以在端点上创建。
参数
local_ep
预先使用 doca_comm_channel_ep_create() 创建的端点的句柄。
peer_addr
要断开连接的对等地址。

返回值

成功时返回 DOCA_SUCCESS。如果未提供 ep,则返回 DOCA_ERROR_INVALID_VALUE。如果发生与内存相关的错误,则返回 DOCA_ERROR_NO_MEMORY。如果没有连接,则返回 DOCA_ERROR_NOT_CONNECTED。如果发生未知错误,则返回 DOCA_ERROR_UNKNOWN。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_event_handle_arm_recv ( doca_comm_channel_ep_t* local_ep )
为接收消息准备 event_channel 句柄。此函数准备接收完成队列,以便于阻塞接收事件通道。阻塞应由用户实现(Linux 中的 poll,Windows 中的 GetQueuedCompletionStatus)。
参数
local_ep
预先使用 doca_comm_channel_ep_create() 创建的端点的句柄。

返回值

成功时返回 DOCA_SUCCESS。如果未提供 ep 对象,则返回 DOCA_ERROR_INVALID_VALUE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_event_handle_arm_send ( doca_comm_channel_ep_t* local_ep )
为已发送消息准备 event_channel 句柄。此函数准备发送完成队列,以便于阻塞发送事件通道。阻塞应由用户实现(Linux 中的 poll,Windows 中的 GetQueuedCompletionStatus)。
参数
local_ep
预先使用 doca_comm_channel_ep_create() 创建的端点的句柄。

返回值

成功时返回 DOCA_SUCCESS。如果未提供 ep 对象,则返回 DOCA_ERROR_INVALID_VALUE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_device ( doca_comm_channel_ep_t* ep, doca_dev** device )
获取端点的设备属性。
参数
ep
从中检索属性的端点。
device
端点中当前使用的设备。

返回值

成功返回 DOCA_SUCCESS。如果给出了无效参数,则返回 DOCA_ERROR_INVALID_VALUE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_device_rep ( doca_comm_channel_ep_t* ep, doca_dev_rep** device_rep )
获取端点的设备表示属性。
参数
ep
从中检索属性的端点。
device_rep
端点中当前使用的设备表示。

返回值

成功返回 DOCA_SUCCESS。如果给出了无效参数,则返回 DOCA_ERROR_INVALID_VALUE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_event_channel ( doca_comm_channel_ep_t* local_ep, doca_event_channel_t* send_event_channel, doca_event_channel_t* recv_event_channel )
提取 event_channel 句柄以供用户使用。当用户以非阻塞模式发送/接收数据包时,此句柄可用于在新事件发生时获取中断,使用 epoll() 或类似函数。事件通道由端点拥有,并在调用 doca_comm_channel_ep_destroy() 时释放。此函数只能在调用 doca_comm_channel_ep_listen() 或 doca_comm_channel_ep_connect() 之后调用。
参数
local_ep
预先使用 doca_comm_channel_ep_create() 创建的端点的句柄。
send_event_channel
发送事件通道的句柄。
recv_event_channel
接收事件通道的句柄。

返回值

成功时返回 DOCA_SUCCESS。如果未提供 ep 或两个事件通道输出参数都为空,则返回 DOCA_ERROR_INVALID_VALUE。如果在调用 doca_comm_channel_ep_listen()doca_comm_channel_ep_connect() 之前调用,则返回 DOCA_ERROR_BAD_STATE。如果发生其他错误,则返回 DOCA_ERROR_NOT_FOUND。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_max_msg_size ( doca_comm_channel_ep_t* ep, uint16_t* max_msg_size )
获取端点的最大消息大小属性。返回的大小是正在使用的实际大小,可能与使用 doca_comm_channel_ep_set_max_msg_size() 设置的大小不同,因为存在最小大小要求。如果未使用 doca_comm_channel_ep_set_max_msg_size() 设置最大消息大小,则使用默认值,并且可以通过调用 doca_comm_channel_ep_get_max_msg_size() 查询该值。
参数
ep
从中检索属性的端点。
max_msg_size
端点使用的最大消息大小。

返回值

成功返回 DOCA_SUCCESS。如果给出了无效参数,则返回 DOCA_ERROR_INVALID_VALUE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_peer_addr_list ( const doca_comm_channel_ep_t* local_ep, doca_comm_channel_addr_t*** peer_addr_array, uint32_t* peer_addr_array_len )
获取连接到给定服务对象的 peer_addr 数组
参数
local_ep
指向要获取 peer_addr 数组的服务端点的指针。
peer_addr_array
已连接的 peer_addr 对象数组。
peer_addr_array_len
输出 peer_addr_array 中的条目数。

返回值

成功时返回 DOCA_SUCCESS。如果任何参数为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果在客户端端点上调用,则返回 DOCA_ERROR_NOT_SUPPORTED。

描述

此功能只能在服务侧调用。此功能将返回连接到给定服务端点的所有 peer_addr 的数组,该数组基于上次调用 doca_comm_channel_ep_update_service_state_info() 时更新的信息。

注意

调用 doca_comm_channel_ep_update_service_state_info() 将使之前接收到的任何 peer_addr_array 失效。


DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_pending_connections ( const doca_comm_channel_ep_t* local_ep, uint32_t* pending_connections )
获取给定服务端点的待处理连接数
参数
local_ep
指向要获取挂起连接数的 peer_addr 的指针。
pending_connections
给定服务端点的挂起连接数。

返回值

成功时返回 DOCA_SUCCESS。如果任何参数为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果在客户端端点上调用,则返回 DOCA_ERROR_NOT_SUPPORTED。

描述

此功能只能在服务侧调用。此功能将返回给定服务端点的挂起连接数,该数量基于上次调用 doca_comm_channel_ep_update_service_state_info() 时更新的信息。挂起连接是正在等待握手完成的连接。应调用 doca_comm_channel_ep_recvfrom() 来处理挂起连接。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_recv_queue_size ( doca_comm_channel_ep_t* ep, uint16_t* recv_queue_size )
获取端点的接收队列大小属性。返回的大小是正在使用的实际大小,可能与使用 doca_comm_channel_ep_set_recv_queue_size() 设置的大小不同,因为存在最小大小要求,并且该大小向上舍入为最接近的 2 的幂。如果未使用 doca_comm_channel_ep_set_recv_queue_size() 设置接收队列大小,则使用默认值,并且可以通过调用 doca_comm_channel_ep_get_recv_queue_size() 查询该值。
参数
ep
从中检索属性的端点。
recv_queue_size
端点使用的接收队列大小。

返回值

成功返回 DOCA_SUCCESS。如果给出了无效参数,则返回 DOCA_ERROR_INVALID_VALUE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_send_queue_size ( doca_comm_channel_ep_t* ep, uint16_t* send_queue_size )
获取端点的发送队列大小属性。返回的大小是正在使用的实际大小,可能与使用 doca_comm_channel_ep_set_send_queue_size() 设置的大小不同,因为存在最小大小要求,并且该大小向上舍入为最接近的 2 的幂。如果未使用 doca_comm_channel_ep_set_send_queue_size() 设置发送队列大小,则使用默认值,并且可以通过调用 doca_comm_channel_ep_get_send_queue_size() 查询该值。
参数
ep
从中检索属性的端点。
send_queue_size
端点使用的发送队列大小。

返回值

成功返回 DOCA_SUCCESS。如果给出了无效参数,则返回 DOCA_ERROR_INVALID_VALUE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_get_service_event_channel ( doca_comm_channel_ep_t* local_ep, doca_event_channel_t* service_event_channel )
提取 service_event_channel 句柄以供用户使用。当以下事件之一发生时,此句柄可用于获取中断:新客户端连接、客户端断开连接或服务移动到错误状态,使用 epoll() 或类似函数。如果收到事件,则应用程序可以调用 doca_comm_channel_ep_update_service_state_info() 及其查询函数来获取当前服务状态。服务事件通道在调用 doca_comm_channel_ep_update_service_state_info() 时自动准备就绪。
参数
local_ep
预先使用 doca_comm_channel_ep_create() 创建的端点的句柄。
service_event_channel
服务事件通道的句柄。

返回值

成功时返回 DOCA_SUCCESS。如果未提供 ep 或 service_event_channel 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果在调用 doca_comm_channel_ep_listen() 之前调用,则返回 DOCA_ERROR_BAD_STATE。如果在非服务实例上调用,则返回 DOCA_ERROR_NOT_SUPPORTED。

描述

事件通道由端点拥有,并在调用 doca_comm_channel_ep_destroy() 时释放。此函数只能在调用 doca_comm_channel_ep_listen() 之后调用。

此功能仅适用于服务侧使用。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_listen ( doca_comm_channel_ep_t* local_ep, const char* name )
服务侧监听所有接口。
参数
local_ep
预先使用 doca_comm_channel_ep_create() 创建的端点的句柄。
name
标识服务。使用 doca_comm_channel_get_max_service_name_len() 获取最大服务名称长度。

返回值

成功时返回 DOCA_SUCCESS。如果未提供 ep 对象或名称,则返回 DOCA_ERROR_INVALID_VALUE。如果查询为 ep 设置的设备的功能失败,则返回 DOCA_ERROR_DRIVER。如果尝试在不具备定义为 Comm Channel 服务侧功能的设备上调用 listen,则返回 DOCA_ERROR_NOT_SUPPORTED。如果未设置 doca_dev 或 doca_dev_rep,则返回 DOCA_ERROR_BAD_STATE。如果端点已在监听,则返回 DOCA_ERROR_NOT_PERMITTED。如果内存分配失败,则返回 DOCA_ERROR_NO_MEMORY。如果服务初始化失败,则返回 DOCA_ERROR_INITIALIZATION。如果服务注册失败,则返回 DOCA_ERROR_CONNECTION_ABORTED。如果获取设备属性失败,则返回 DOCA_ERROR_DRIVER。

描述

端点将开始在给定设备上监听。调用此函数后,用户应调用 doca_comm_channel_ep_recvfrom() 以获取要与之通信的新对等端。

此功能仅适用于服务侧使用。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_recvfrom ( doca_comm_channel_ep_t* local_ep, void* msg, size_t* len, int  flags, doca_comm_channel_addr_t** peer_addr )
从连接的客户端/服务接收消息。
参数
local_ep
预先使用 doca_comm_channel_ep_create() 创建的端点的句柄。
msg
指向应存储消息的缓冲区的指针。
len
输入 - msg 缓冲区中的最大字节长度,输出 - 实际接收消息的长度。
flags
接收命令的标志。当前不支持任何标志。
peer_addr
接收到的消息源地址句柄

返回值

成功接收时返回 DOCA_SUCCESS。如果接收到消息,len 指向的值将更新为接收到的字节数。如果任何参数为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果端点是服务且未调用 listen,则返回 DOCA_ERROR_NOT_CONNECTED。如果没有接收到消息,则返回 DOCA_ERROR_AGAIN。返回时,用户可以使用端点的 doca_event_channel_t 来获取新到达消息的指示。如果接收到的消息来自具有错误的 peer_addr,则返回 DOCA_ERROR_CONNECTION_RESET。如果在发送错误后 DCI 初始化失败,则返回 DOCA_ERROR_INITIALIZATION。如果发生未知错误,则返回 DOCA_ERROR_UNKNOWN。

描述

在服务侧,doca_comm_channel_ep_recvfrom() 也用于接受来自客户端的新连接。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_sendto ( doca_comm_channel_ep_t* local_ep, const void* msg, size_t len, int  flags, doca_comm_channel_addr_t* peer_addr )
向对等地址发送消息。在发送消息之前,需要建立与所需对等地址的连接。
参数
local_ep
预先使用 doca_comm_channel_ep_create() 创建的端点的句柄。
msg
指向要发送的消息的指针。
len
msg 的字节长度。
flags
发送命令的标志。当前不支持任何标志。
peer_addr
发送操作的目标地址句柄。

返回值

成功时返回 DOCA_SUCCESS。如果未提供 peer_address 或未找到连接,则返回 DOCA_ERROR_NOT_CONNECTED。如果提供的 len 大于 ep 创建时给定的 msgsize 或任何输入变量为空,则返回 DOCA_ERROR_INVALID_VALUE。如果发送队列已满,则返回 DOCA_ERROR_AGAIN。返回时,用户可以使用端点的 doca_event_channel_t 来获取新空闲槽的指示。如果提供的 peer_addr 遇到错误并且需要断开连接,则返回 DOCA_ERROR_CONNECTION_RESET。如果在发送错误后 DCI 初始化失败,则返回 DOCA_ERROR_INITIALIZATION。如果发生未知错误,则返回 DOCA_ERROR_UNKNOWN。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_set_device ( doca_comm_channel_ep_t* ep, doca_dev* device )
为端点设置设备属性。
参数
ep
要设置属性的端点。
device
端点中要使用的设备。

返回值

成功设置属性时返回 DOCA_SUCCESS。如果给出了无效参数,则返回 DOCA_ERROR_INVALID_VALUE。如果端点已激活,则返回 DOCA_ERROR_BAD_STATE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_set_device_rep ( doca_comm_channel_ep_t* ep, doca_dev_rep* device_rep )
为端点设置设备表示属性。
参数
ep
要设置属性的端点。
device_rep
端点中要使用的设备表示。

返回值

成功设置属性时返回 DOCA_SUCCESS。如果给出了无效参数,则返回 DOCA_ERROR_INVALID_VALUE。如果端点已激活,则返回 DOCA_ERROR_BAD_STATE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_set_max_msg_size ( doca_comm_channel_ep_t* ep, uint16_t max_msg_size )
为端点设置最大消息大小属性。值 max_msg_size 可能会在内部增加,实际值可以使用 doca_comm_channel_ep_get_max_msg_size() 查询。
参数
ep
要设置属性的端点。
max_msg_size
端点中要使用的最大消息大小。

返回值

成功设置属性时返回 DOCA_SUCCESS。如果给出了无效参数,则返回 DOCA_ERROR_INVALID_VALUE。如果端点已激活,则返回 DOCA_ERROR_BAD_STATE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_set_recv_queue_size ( doca_comm_channel_ep_t* ep, uint16_t recv_queue_size )
为端点设置接收队列大小属性。值 recv_queue_size 可能会在内部增加,实际值可以使用 doca_comm_channel_ep_get_recv_queue_size() 查询。
参数
ep
要设置属性的端点。
recv_queue_size
端点中要使用的接收队列大小。

返回值

成功设置属性时返回 DOCA_SUCCESS。如果给出了无效参数,则返回 DOCA_ERROR_INVALID_VALUE。如果端点已激活,则返回 DOCA_ERROR_BAD_STATE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_set_send_queue_size ( doca_comm_channel_ep_t* ep, uint16_t send_queue_size )
为端点设置发送队列大小属性。值 send_queue_size 可能会在内部增加,实际值可以使用 doca_comm_channel_ep_get_send_queue_size() 查询。
参数
ep
要设置属性的端点。
send_queue_size
端点中要使用的发送队列大小。

返回值

成功设置属性时返回 DOCA_SUCCESS。如果给出了无效参数,则返回 DOCA_ERROR_INVALID_VALUE。如果端点已激活,则返回 DOCA_ERROR_BAD_STATE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_ep_update_service_state_info ( doca_comm_channel_ep_t* local_ep )
更新给定服务端点的连接状态
参数
local_ep
指向要更新连接状态的端点的指针。

返回值

成功时返回 DOCA_SUCCESS。如果 local_ep 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果在客户端端点上调用,则返回 DOCA_ERROR_NOT_SUPPORTED。如果查询服务状态失败,则返回 DOCA_ERROR_DRIVER。如果意外数量的新客户端加入并且需要再次查询服务状态,则返回 DOCA_ERROR_AGAIN。如果服务处于错误状态,则返回 DOCA_ERROR_CONNECTION_RESET。

描述

只能在服务侧调用。此函数保存当前服务状态的快照,可以使用函数 doca_comm_channel_ep_get_peer_addr_list()doca_comm_channel_ep_get_pending_connections() 查询。此函数也可用于检查服务是否处于错误状态,在这种情况下,服务无法恢复并且需要销毁。

注意

调用此函数还将使从先前调用 doca_comm_channel_ep_get_peer_addr_list() 收到的任何 peer_addr_array 失效。


DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_get_max_message_size ( doca_devinfo* devinfo, uint32_t* max_message_size )
获取 comm_channel 支持的最大消息大小。
参数
devinfo
应查询其在 comm channel 限制下的最大消息大小的 devinfo。
max_message_size
comm_channel 支持的最大消息大小。

返回值

成功时返回 DOCA_SUCCESS。如果 devinfo 或 max_message_size 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果发生意外错误,则返回 DOCA_ERROR_UNEXPECTED。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_get_max_recv_queue_size ( doca_devinfo* devinfo, uint32_t* max_recv_queue_size )
获取 comm_channel 支持的最大接收队列大小。
参数
devinfo
应查询其在 comm channel 限制下的最大接收队列大小的 devinfo。
max_recv_queue_size
comm_channel 支持的最大接收队列大小。

返回值

成功时返回 DOCA_SUCCESS。如果 devinfo 或 max_recv_queue_size 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果发生意外错误,则返回 DOCA_ERROR_UNEXPECTED。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_get_max_send_queue_size ( doca_devinfo* devinfo, uint32_t* max_send_queue_size )
获取 comm_channel 支持的最大发送队列大小。
参数
devinfo
应查询其在 comm channel 限制下的最大发送队列大小的 devinfo。
max_send_queue_size
comm_channel 支持的最大发送队列大小。

返回值

成功时返回 DOCA_SUCCESS。如果 devinfo 或 max_send_queue_size 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果发生意外错误,则返回 DOCA_ERROR_UNEXPECTED。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_get_max_service_name_len ( uint32_t* max_service_name_len )
获取 comm_channel 最大服务名称长度。
参数
max_service_name_len
comm_channel 最大服务名称长度,包括终止空字节 ('\0')。

返回值

成功时返回 DOCA_SUCCESS。如果 max_service_name_len 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_get_service_max_num_connections ( doca_devinfo* devinfo, uint32_t* max_num_connections )
获取服务可以保持的最大连接数。
参数
devinfo
应查询其最大连接数的 devinfo。
max_num_connections
服务可以保持的最大连接数。

返回值

成功时返回 DOCA_SUCCESS。如果 devinfo 或 max_num_connections 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果设备不支持查询此功能,则返回 DOCA_ERROR_NOT_SUPPORTED。如果发生意外错误,则返回 DOCA_ERROR_UNEXPECTED。

描述
注意

此功能应仅在服务侧查询。


DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_recv_bytes ( const doca_comm_channel_addr_t* peer_addr, uint64_t* recv_bytes )
获取从特定对等地址接收的总字节数
参数
peer_addr
指向要查询统计信息的 peer_addr 的指针。
recv_bytes
将包含从给定 peer_addr 接收的字节数。

返回值

成功时返回 DOCA_SUCCESS。如果任何参数为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。

描述

此函数将返回从给定 peer_addr 接收的总字节数,该数量更新到上次调用 doca_comm_channel_peer_addr_update_info() 时。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_recv_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* recv_messages )
获取从特定对等地址接收的总消息数
参数
peer_addr
指向要查询统计信息的 peer_addr 的指针。
recv_messages
将包含从给定 peer_addr 接收的消息数。

返回值

成功时返回 DOCA_SUCCESS。如果任何参数为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。

描述

此函数将返回从给定 peer_addr 接收的总消息数,该数量更新到上次调用 doca_comm_channel_peer_addr_update_info() 时。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_send_bytes ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_bytes )
获取发送到特定对等地址的总字节数
参数
peer_addr
指向要查询统计信息的 peer_addr 的指针。
send_bytes
将包含发送到给定 peer_addr 的消息数。

返回值

成功时返回 DOCA_SUCCESS。如果任何参数为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。

描述

此函数将返回发送到给定 peer_addr 的总字节数,该数量更新到上次调用 doca_comm_channel_peer_addr_update_info() 时。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_send_in_flight_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_in_flight_messages )
获取传输到特定对等地址的消息数量
参数
peer_addr
指向要查询统计信息的 peer_addr 的指针。
send_in_flight_messages
将包含传输到给定 peer_addr 的消息数。

返回值

成功时返回 DOCA_SUCCESS。如果任何参数为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。

描述

此函数将返回仍在传输到特定 peer_addr 的消息数,该数量更新到上次调用 doca_comm_channel_peer_addr_update_info() 时。此函数可用于确保在断开连接之前所有传输都已完成。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_send_messages ( const doca_comm_channel_addr_t* peer_addr, uint64_t* send_messages )
获取发送到特定对等地址的总消息数
参数
peer_addr
指向要查询统计信息的 peer_addr 的指针。
send_messages
将包含发送到给定 peer_addr 的消息数。

返回值

成功时返回 DOCA_SUCCESS。如果任何参数为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。

描述

此函数将返回发送到给定 peer_addr 的总消息数,该数量更新到上次调用 doca_comm_channel_peer_addr_update_info() 时。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_get_user_data ( doca_comm_channel_addr_t* peer_addr, uint64_t* user_data )
从 peer_addr 句柄中提取 'user_context'。默认情况下,'user_context' 设置为 0,可以使用 doca_comm_channel_peer_addr_set_user_data() 更改。
参数
peer_addr
指向要从中提取 user_context 的 peer_addr 的指针。
user_data
将包含提取的数据。

返回值

成功时返回 DOCA_SUCCESS。如果 peer_address 或 user_data 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。

描述

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_set_user_data ( doca_comm_channel_addr_t* peer_addr, uint64_t user_context )
在 peer_addr 句柄中保存 'user_context'。
参数
peer_addr
指向要设置 user_context 的 peer_addr 的指针。
user_context
要为 peer_addr 设置的数据。

返回值

成功时返回 DOCA_SUCCESS。如果 peer_address 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。

描述

用户可以使用它来标识从 doca_comm_channel_ep_recvfrom() 接收的对等地址。新对等端的 user_context 初始化为 0。

DOCA_EXPERIMENTAL doca_error_t doca_comm_channel_peer_addr_update_info ( doca_comm_channel_addr_t* peer_addr )
更新给定 peer_addr 的统计信息
参数
peer_addr
指向 peer_addr 的指针,用于更新统计信息。

返回值

成功时返回 DOCA_SUCCESS。如果 peer_addr 为 NULL,则返回 DOCA_ERROR_INVALID_VALUE。如果连接尚未建立,则返回 DOCA_ERROR_CONNECTION_INPROGRESS。如果连接失败,则返回 DOCA_ERROR_CONNECTION_ABORTED。

描述

应在调用任何 peer_addr 信息函数之前使用,以更新保存的统计信息。此函数也可用于检查到给定 peer_addr 的连接当前是否已连接。如果连接失败,用户有责任调用 doca_comm_channel_ep_disconnect() 以释放 peer_addr 资源。

库,用于定义与当前版本的兼容性,定义实验性符号。

要将符号(或特定函数)设置为实验性

DOCA_EXPERIMENTAL int func_declare(int param1, int param2);

要移除实验性编译警告,请使用 "-D DOCA_ALLOW_EXPERIMENTAL_API" 进行编译。要移除弃用警告,请使用 "-D DOCA_ALLOW_DEPRECATED_API" 进行编译

宏定义

#define DLL_EXPORT_ATTR dllimport
用于提示编译器该函数应导出到 DLL 或从中导入,具体取决于 DOCA_EXPORTS 的可用性。默认情况下,应导入。
#define DOCA_DEPRECATED
要将符号(或特定函数)设置为已弃用。
#define DOCA_EXPERIMENTAL
要将符号(或特定函数)设置为实验性。
#define DOCA_STABLE
要将符号(或特定函数)设置为稳定 API,即不会更改。
#define DOCA_STRUCT_START
#define __attribute__ ( _x_ )
允许在使用不支持 __attribute__() 的编译器中编译使用 GCC 属性 __attribute__() 的函数和结构体。

宏定义

#define DLL_EXPORT_ATTR dllimport

#define DOCA_DEPRECATED

__declspec(deprecated("符号被定义为已弃用"), DLL_EXPORT_ATTR)

#define DOCA_EXPERIMENTAL

__declspec(deprecated("符号被定义为实验性"), DLL_EXPORT_ATTR)

#define DOCA_STABLE

__declspec(DLL_EXPORT_ATTR)

#define DOCA_STRUCT_START

兼容性助手

size_t __doca_api_version

#define __attribute__ ( _x_ )

DOCA 压缩库。有关更多详细信息,请参阅 DOCA 开发区的用户指南。

类型定义

typedef void  ( *doca_compress_task_compress_deflate_completion_cb_t )( doca_compress_task_compress_deflate*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
压缩 deflate 任务完成时执行的函数。
typedef void  ( *doca_compress_task_decompress_deflate_completion_cb_t )( doca_compress_task_decompress_deflate*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
解压缩 deflate 任务完成时执行的函数。
typedef void  ( *doca_compress_task_decompress_lz4_block_completion_cb_t )( doca_compress_task_decompress_lz4_block*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
解压缩 LZ4 块任务完成时执行的函数。
typedef void  ( *doca_compress_task_decompress_lz4_stream_completion_cb_t )( doca_compress_task_decompress_lz4_stream*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
解压缩 LZ4 流任务完成时执行的函数。

函数

DOCA_EXPERIMENTAL doca_ctx* doca_compress_as_ctx ( doca_compress* compress )
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_get_max_num_tasks ( doca_compress* compress, uint32_t* max_num_tasks )
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_compress_deflate_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_compress_deflate_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 compress deflate 最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_compress_deflate_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 compress deflate 任务。
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_deflate_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_deflate_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 decompress deflate 最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_deflate_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 decompress deflate 任务。
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_block_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_block_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 decompress LZ4 块最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_block_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 decompress LZ4 块任务。
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_stream_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_stream_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 decompress LZ4 流最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_stream_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 decompress LZ4 流任务。
DOCA_EXPERIMENTAL doca_error_t doca_compress_create ( doca_dev* dev, doca_compress** compress )
DOCA_EXPERIMENTAL doca_error_t doca_compress_destroy ( doca_compress* compress )
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_compress_deflate_alloc_init ( doca_compress* compress, const doca_buf* src_buff, doca_buf* dst_buff, doca_data user_data, doca_compress_task_compress_deflate** task )
分配 compress deflate 任务。
DOCA_EXPERIMENTAL doca_task* doca_compress_task_compress_deflate_as_task ( doca_compress_task_compress_deflate* task )
将 compress deflate 任务转换为 doca_task
DOCA_EXPERIMENTAL uint32_t doca_compress_task_compress_deflate_get_adler_cs ( const doca_compress_task_compress_deflate* task )
获取 compress deflate 任务 Adler 校验和
DOCA_EXPERIMENTAL uint32_t doca_compress_task_compress_deflate_get_crc_cs ( const doca_compress_task_compress_deflate* task )
获取 compress deflate 任务 CRC 校验和
DOCA_EXPERIMENTAL doca_buf* doca_compress_task_compress_deflate_get_dst ( const doca_compress_task_compress_deflate* task )
获取 compress deflate 任务目标缓冲区
const DOCA_EXPERIMENTAL doca_buf* doca_compress_task_compress_deflate_get_src ( const doca_compress_task_compress_deflate* task )
获取 compress deflate 任务源缓冲区
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_compress_deflate_set_conf ( doca_compress* compress, doca_compress_task_compress_deflate_completion_cb_t task_completion_cb, doca_compress_task_compress_deflate_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 compress deflate 任务配置。
DOCA_EXPERIMENTAL void doca_compress_task_compress_deflate_set_dst ( doca_compress_task_compress_deflate* task, doca_buf* dst_buff )
设置 compress deflate 任务目标缓冲区
DOCA_EXPERIMENTAL void doca_compress_task_compress_deflate_set_src ( doca_compress_task_compress_deflate* task, const doca_buf* src_buff )
设置 compress deflate 任务源缓冲区
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_deflate_alloc_init ( doca_compress* compress, const doca_buf* src_buff, doca_buf* dst_buff, doca_data user_data, doca_compress_task_decompress_deflate** task )
分配 decompress deflate 任务。
DOCA_EXPERIMENTAL doca_task* doca_compress_task_decompress_deflate_as_task ( doca_compress_task_decompress_deflate* task )
将 decompress deflate 任务转换为 doca_task
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_deflate_get_adler_cs ( const doca_compress_task_decompress_deflate* task )
获取 decompress deflate 任务 Adler 校验和
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_deflate_get_crc_cs ( const doca_compress_task_decompress_deflate* task )
获取 decompress deflate 任务 CRC 校验和
DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_deflate_get_dst ( const doca_compress_task_decompress_deflate* task )
获取 decompress deflate 任务目标缓冲区
const DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_deflate_get_src ( const doca_compress_task_decompress_deflate* task )
获取 decompress deflate 任务源缓冲区
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_deflate_set_conf ( doca_compress* compress, doca_compress_task_decompress_deflate_completion_cb_t task_completion_cb, doca_compress_task_decompress_deflate_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 decompress deflate 任务配置。
DOCA_EXPERIMENTAL void doca_compress_task_decompress_deflate_set_dst ( doca_compress_task_decompress_deflate* task, doca_buf* dst_buff )
设置 decompress deflate 任务目标缓冲区
DOCA_EXPERIMENTAL void doca_compress_task_decompress_deflate_set_src ( doca_compress_task_decompress_deflate* task, const doca_buf* src_buff )
设置 decompress deflate 任务源缓冲区
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_block_alloc_init ( doca_compress* compress, const doca_buf* src_buff, doca_buf* dst_buff, doca_data user_data, doca_compress_task_decompress_lz4_block** task )
分配 decompress LZ4 块任务。
DOCA_EXPERIMENTAL doca_task* doca_compress_task_decompress_lz4_block_as_task ( doca_compress_task_decompress_lz4_block* task )
将 decompress LZ4 块任务转换为 doca_task
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_block_get_crc_cs ( const doca_compress_task_decompress_lz4_block* task )
获取 decompress LZ4 块任务 CRC 校验和
DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_lz4_block_get_dst ( const doca_compress_task_decompress_lz4_block* task )
获取 decompress LZ4 块任务目标缓冲区
const DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_lz4_block_get_src ( const doca_compress_task_decompress_lz4_block* task )
获取 decompress LZ4 块任务源缓冲区
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_block_get_xxh_cs ( const doca_compress_task_decompress_lz4_block* task )
获取 decompress LZ4 块任务 xxHash-32 校验和
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_block_set_conf ( doca_compress* compress, doca_compress_task_decompress_lz4_block_completion_cb_t task_completion_cb, doca_compress_task_decompress_lz4_block_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 decompress LZ4 块任务配置。
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_block_set_dst ( doca_compress_task_decompress_lz4_block* task, doca_buf* dst_buff )
设置 decompress LZ4 块任务目标缓冲区
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_block_set_src ( doca_compress_task_decompress_lz4_block* task, const doca_buf* src_buff )
设置 decompress LZ4 块任务源缓冲区
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_stream_alloc_init ( doca_compress* compress, uint8_t has_block_checksum, uint8_t are_blocks_independent, const doca_buf* src_buff, doca_buf* dst_buff, doca_data user_data, doca_compress_task_decompress_lz4_stream** task )
分配 decompress LZ4 流任务。
DOCA_EXPERIMENTAL doca_task* doca_compress_task_decompress_lz4_stream_as_task ( doca_compress_task_decompress_lz4_stream* task )
将 decompress LZ4 流任务转换为 doca_task
DOCA_EXPERIMENTAL uint8_t doca_compress_task_decompress_lz4_stream_get_are_blocks_independent ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务 are_blocks_independent 标志
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_stream_get_crc_cs ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务 CRC 校验和
DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_lz4_stream_get_dst ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务目标缓冲区
DOCA_EXPERIMENTAL uint8_t doca_compress_task_decompress_lz4_stream_get_has_block_checksum ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务 has_block_checksum 标志
const DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_lz4_stream_get_src ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务源缓冲区
DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_stream_get_xxh_cs ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务 xxHash-32 校验和
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_are_blocks_independent ( doca_compress_task_decompress_lz4_stream* task, uint8_t are_blocks_independent )
设置 decompress LZ4 流任务 are_blocks_independent 标志
DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_stream_set_conf ( doca_compress* compress, doca_compress_task_decompress_lz4_stream_completion_cb_t task_completion_cb, doca_compress_task_decompress_lz4_stream_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 decompress LZ4 流任务配置。
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_dst ( doca_compress_task_decompress_lz4_stream* task, doca_buf* dst_buff )
设置 decompress LZ4 流任务目标缓冲区
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_has_block_checksum ( doca_compress_task_decompress_lz4_stream* task, uint8_t has_block_checksum )
设置 decompress LZ4 流任务 has_block_checksum 标志
DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_src ( doca_compress_task_decompress_lz4_stream* task, const doca_buf* src_buff )
设置 decompress LZ4 流任务源缓冲区

类型定义

void ( *doca_compress_task_compress_deflate_completion_cb_t )( doca_compress_task_compress_deflate*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

压缩 deflate 任务完成时执行的函数。

参数
task
压缩 deflate 任务。实现可以假定此值不为 NULL。
union doca_data task_user_data
union doca_data ctx_user_data

void ( *doca_compress_task_decompress_deflate_completion_cb_t )( doca_compress_task_decompress_deflate*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

解压缩 deflate 任务完成时执行的函数。

参数
task
解压缩 deflate 任务。实现可以假定此值不为 NULL。
union doca_data task_user_data
union doca_data ctx_user_data

void ( *doca_compress_task_decompress_lz4_block_completion_cb_t )( doca_compress_task_decompress_lz4_block*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

解压缩 LZ4 块任务完成时执行的函数。

参数
task
解压缩 LZ4 块任务。实现可以假定此值不为 NULL。
union doca_data task_user_data
union doca_data ctx_user_data

void ( *doca_compress_task_decompress_lz4_stream_completion_cb_t )( doca_compress_task_decompress_lz4_stream*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

解压缩 LZ4 流任务完成时执行的函数。

参数
task
解压缩 LZ4 流任务。实现可以假定此值不为 NULL。
union doca_data task_user_data
union doca_data ctx_user_data

函数

DOCA_EXPERIMENTAL doca_ctx* doca_compress_as_ctx ( doca_compress* compress )

参数
压缩实例
压缩实例。在上下文不再需要之前,它必须保持有效。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_compress 实例适配为通用上下文,以便与 doca 核心对象一起使用。

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_get_max_num_tasks ( doca_compress* compress, uint32_t* max_num_tasks )

参数
压缩实例
从中获取最大任务数的压缩上下文
max_num_tasks
任务数之和不应超过此数字 (

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取最大任务数

此方法检索设备的最大任务数。任务数之和不应超过此数字。

另请参阅

doca_compress_task_compress_deflate_set_conf, doca_compress_task_decompress_deflate_set_conf, doca_compress_task_decompress_lz4_set_conf)

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_compress_deflate_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )

参数
devinfo
DOCA 设备信息。
max_buf_list_len
DOCA 链表缓冲区中支持的最大元素数量。值 1 表示仅支持单个元素。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取 DOCA 链表缓冲区中 compress deflate 任务支持的最大元素数量。

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_compress_deflate_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 compress deflate 最大大小。
参数
devinfo
要检查的 doca 设备信息
max_buffer_size
compress deflate 操作的最大缓冲区大小(字节)。

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务。
描述

此方法检索设备的 compress deflate 最大大小

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_compress_deflate_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 compress deflate 任务。
参数
devinfo
要检查的 doca 设备信息

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 查询设备功能失败。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务。
描述

此方法检查设备是否支持 compress deflate 任务

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_deflate_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )

参数
devinfo
DOCA 设备信息。
max_buf_list_len
DOCA 链表缓冲区中支持的最大元素数量。值 1 表示仅支持单个元素。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取 DOCA 链表缓冲区中 decompress deflate 任务支持的最大元素数量。

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_deflate_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 decompress deflate 最大大小。
参数
devinfo
要检查的 doca 设备信息
max_buffer_size
decompress deflate 操作的最大缓冲区大小(字节)。

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务。
描述

此方法检索 decompress deflate 最大大小

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_deflate_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 decompress deflate 任务。
参数
devinfo
要检查的 doca 设备信息

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 查询设备功能失败。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务。
描述

此方法检查设备是否支持 decompress deflate 任务

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_block_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )

参数
devinfo
DOCA 设备信息。
max_buf_list_len
DOCA 链表缓冲区中支持的最大元素数量。值 1 表示仅支持单个元素。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取 DOCA 链表缓冲区中 decompress LZ4 块任务支持的最大元素数量。

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_block_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 decompress LZ4 块最大大小。
参数
devinfo
要检查的 doca 设备信息
max_buffer_size
decompress LZ4 块操作的最大缓冲区大小(字节)。

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务。
描述

此方法检索 decompress LZ4 块最大大小

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_block_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 decompress LZ4 块任务。
参数
devinfo
要检查的 doca 设备信息

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 查询设备功能失败。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务。
描述

此方法检查设备是否支持 decompress LZ4 块任务

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_stream_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )

参数
devinfo
DOCA 设备信息。
max_buf_list_len
DOCA 链表缓冲区中支持的最大元素数量。值 1 表示仅支持单个元素。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取 DOCA 链表缓冲区中 decompress LZ4 流任务支持的最大元素数量

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_stream_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* max_buffer_size )
获取 decompress LZ4 流最大大小。
参数
devinfo
要检查的 doca 设备信息
max_buffer_size
decompress LZ4 流操作的最大缓冲区大小(字节)。

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务。
描述

此方法检索 decompress LZ4 流最大大小

DOCA_EXPERIMENTAL doca_error_t doca_compress_cap_task_decompress_lz4_stream_is_supported ( const doca_devinfo* devinfo )
检查设备是否支持 decompress LZ4 流任务。
参数
devinfo
要检查的 doca 设备信息

返回值

DOCA_SUCCESS - 在设备支持该任务时返回 Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 查询设备功能失败。
  • DOCA_ERROR_NOT_SUPPORTED - devinfo 不支持该任务。
描述

此方法检查设备是否支持 decompress LZ4 流任务

DOCA_EXPERIMENTAL doca_error_t doca_compress_create ( doca_dev* dev, doca_compress** compress )

参数
dev
要附加到压缩上下文的设备
压缩实例
指向指针的指针,将被设置为指向创建的 doca_compress 实例。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 一个或多个参数为空。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_compress 失败。
  • DOCA_ERROR_INITIALIZATION - 初始化互斥锁失败。
描述

创建 DOCA COMPRESS 实例。

DOCA_EXPERIMENTAL doca_error_t doca_compress_destroy ( doca_compress* compress )

参数
压缩实例
要销毁的实例的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_IN_USE - 如果无法获得对压缩实例的独占访问权
描述

销毁 DOCA COMPRESS 实例。

DOCA_EXPERIMENTAL doca_error_t doca_compress_task_compress_deflate_alloc_init ( doca_compress* compress, const doca_buf* src_buff, doca_buf* dst_buff, doca_data user_data, doca_compress_task_compress_deflate** task )
分配 compress deflate 任务。
参数
压缩实例
从中分配任务的压缩上下文
src_buff
源缓冲区
dst_buff
目标缓冲区
user_data
可以从任务中检索的 doca_data(通常在任务完成时)。
task
分配的任务

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NO_MEMORY - 所有 compress deflate 任务都已分配。
  • DOCA_ERROR_INVALID_VALUE - 无法初始化源硬件资源。
描述

此方法分配并初始化 compress deflate 任务。任务参数可以在以后通过 setter 设置。

DOCA_EXPERIMENTAL doca_task* doca_compress_task_compress_deflate_as_task ( doca_compress_task_compress_deflate* task )
将 compress deflate 任务转换为 doca_task
参数
task
要转换的任务

返回值

doca_task

描述

DOCA_EXPERIMENTAL uint32_t doca_compress_task_compress_deflate_get_adler_cs ( const doca_compress_task_compress_deflate* task )
获取 compress deflate 任务 Adler 校验和
参数
task
要从中获取目标的任务

返回值

Adler 校验和

描述
注意

仅在任务成功完成时有效。否则,行为未定义。


DOCA_EXPERIMENTAL uint32_t doca_compress_task_compress_deflate_get_crc_cs ( const doca_compress_task_compress_deflate* task )
获取 compress deflate 任务 CRC 校验和
参数
task
要从中获取目标的任务

返回值

CRC 校验和

描述
注意

仅在任务成功完成时有效。否则,行为未定义。


DOCA_EXPERIMENTAL doca_buf* doca_compress_task_compress_deflate_get_dst ( const doca_compress_task_compress_deflate* task )
获取 compress deflate 任务目标缓冲区
参数
task
要从中获取目标的任务

返回值

目标缓冲区

描述

const DOCA_EXPERIMENTAL doca_buf* doca_compress_task_compress_deflate_get_src ( const doca_compress_task_compress_deflate* task )
获取 compress deflate 任务源缓冲区
参数
task
获取源的任务

返回值

源缓冲区

描述

DOCA_EXPERIMENTAL doca_error_t doca_compress_task_compress_deflate_set_conf ( doca_compress* compress, doca_compress_task_compress_deflate_completion_cb_t task_completion_cb, doca_compress_task_compress_deflate_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 compress deflate 任务配置。
参数
压缩实例
要配置的压缩上下文
task_completion_cb
任务完成回调
task_error_cb
任务错误回调
num_tasks
上下文可以分配的 compress deflate 任务数

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

DOCA_EXPERIMENTAL void doca_compress_task_compress_deflate_set_dst ( doca_compress_task_compress_deflate* task, doca_buf* dst_buff )
设置 compress deflate 任务目标缓冲区
参数
task
设置目标的任务为
dst_buff
要设置的目标缓冲区

描述

DOCA_EXPERIMENTAL void doca_compress_task_compress_deflate_set_src ( doca_compress_task_compress_deflate* task, const doca_buf* src_buff )
设置 compress deflate 任务源缓冲区
参数
task
设置源的任务为
src_buff
要设置的源缓冲区

描述

DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_deflate_alloc_init ( doca_compress* compress, const doca_buf* src_buff, doca_buf* dst_buff, doca_data user_data, doca_compress_task_decompress_deflate** task )
分配 decompress deflate 任务。
参数
压缩实例
从中分配任务的压缩上下文
src_buff
源缓冲区
dst_buff
目标缓冲区
user_data
可以从任务中检索的 doca_data(通常在任务完成时)。
task
分配的任务

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NO_MEMORY - 所有 compress deflate 任务都已分配。
描述

此方法分配并初始化 decompress deflate 任务。任务参数可以在以后通过 setter 设置。

DOCA_EXPERIMENTAL doca_task* doca_compress_task_decompress_deflate_as_task ( doca_compress_task_decompress_deflate* task )
将 decompress deflate 任务转换为 doca_task
参数
task
要转换的任务

返回值

doca_task

描述

DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_deflate_get_adler_cs ( const doca_compress_task_decompress_deflate* task )
获取 decompress deflate 任务 Adler 校验和
参数
task
要从中获取目标的任务

返回值

Adler 校验和

描述
注意

仅在任务成功完成时有效。否则,行为未定义。


DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_deflate_get_crc_cs ( const doca_compress_task_decompress_deflate* task )
获取 decompress deflate 任务 CRC 校验和
参数
task
要从中获取目标的任务

返回值

CRC 校验和

描述
注意

仅在任务成功完成时有效。否则,行为未定义。


DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_deflate_get_dst ( const doca_compress_task_decompress_deflate* task )
获取 decompress deflate 任务目标缓冲区
参数
task
要从中获取目标的任务

返回值

目标缓冲区

描述

const DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_deflate_get_src ( const doca_compress_task_decompress_deflate* task )
获取 decompress deflate 任务源缓冲区
参数
task
获取源的任务

返回值

源缓冲区

描述

DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_deflate_set_conf ( doca_compress* compress, doca_compress_task_decompress_deflate_completion_cb_t task_completion_cb, doca_compress_task_decompress_deflate_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 decompress deflate 任务配置。
参数
压缩实例
要配置的压缩上下文
task_completion_cb
任务完成回调
task_error_cb
任务错误回调
num_tasks
上下文可以分配的 decompress deflate 任务数

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_INVALID_VALUE - 无法初始化源硬件资源。
描述

DOCA_EXPERIMENTAL void doca_compress_task_decompress_deflate_set_dst ( doca_compress_task_decompress_deflate* task, doca_buf* dst_buff )
设置 decompress deflate 任务目标缓冲区
参数
task
设置目标的任务为
dst_buff
要设置的目标缓冲区

描述

DOCA_EXPERIMENTAL void doca_compress_task_decompress_deflate_set_src ( doca_compress_task_decompress_deflate* task, const doca_buf* src_buff )
设置 decompress deflate 任务源缓冲区
参数
task
设置源的任务为
src_buff
要设置的源缓冲区

描述

DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_block_alloc_init ( doca_compress* compress, const doca_buf* src_buff, doca_buf* dst_buff, doca_data user_data, doca_compress_task_decompress_lz4_block** task )
分配 decompress LZ4 块任务。
参数
压缩实例
从中分配任务的压缩上下文
src_buff
源缓冲区
dst_buff
目标缓冲区
user_data
可以从任务中检索的 doca_data(通常在任务完成时)。
task
分配的任务

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NO_MEMORY - 所有 decompress LZ4 块任务都已分配。
  • DOCA_ERROR_INVALID_VALUE - 无法初始化源硬件资源。
描述

此方法分配并初始化 decompress LZ4 块任务。任务参数可以在以后通过 setter 设置。

DOCA_EXPERIMENTAL doca_task* doca_compress_task_decompress_lz4_block_as_task ( doca_compress_task_decompress_lz4_block* task )
将 decompress LZ4 块任务转换为 doca_task
参数
task
要转换的任务

返回值

doca_task

描述

DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_block_get_crc_cs ( const doca_compress_task_decompress_lz4_block* task )
获取 decompress LZ4 块任务 CRC 校验和
参数
task
要从中获取目标的任务

返回值

块的 CRC 校验和

描述
注意

仅在任务成功完成时有效。否则,行为未定义。


DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_lz4_block_get_dst ( const doca_compress_task_decompress_lz4_block* task )
获取 decompress LZ4 块任务目标缓冲区
参数
task
要从中获取目标的任务

返回值

目标缓冲区

描述

const DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_lz4_block_get_src ( const doca_compress_task_decompress_lz4_block* task )
获取 decompress LZ4 块任务源缓冲区
参数
task
获取源的任务

返回值

源缓冲区

描述

DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_block_get_xxh_cs ( const doca_compress_task_decompress_lz4_block* task )
获取 decompress LZ4 块任务 xxHash-32 校验和
参数
task
任务从中获取校验和

返回值

块的 xxHash-32 校验和

描述
注意

仅在任务成功完成时有效。否则,行为未定义。


DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_block_set_conf ( doca_compress* compress, doca_compress_task_decompress_lz4_block_completion_cb_t task_completion_cb, doca_compress_task_decompress_lz4_block_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 decompress LZ4 块任务配置。
参数
压缩实例
要配置的压缩上下文
task_completion_cb
任务完成回调
task_error_cb
任务错误回调
num_tasks
上下文可以分配的解压缩 LZ4 块任务数

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_block_set_dst ( doca_compress_task_decompress_lz4_block* task, doca_buf* dst_buff )
设置 decompress LZ4 块任务目标缓冲区
参数
task
设置目标的任务为
dst_buff
要设置的目标缓冲区

描述

DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_block_set_src ( doca_compress_task_decompress_lz4_block* task, const doca_buf* src_buff )
设置 decompress LZ4 块任务源缓冲区
参数
task
设置源的任务为
src_buff
要设置的源缓冲区

描述

DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_stream_alloc_init ( doca_compress* compress, uint8_t has_block_checksum, uint8_t are_blocks_independent, const doca_buf* src_buff, doca_buf* dst_buff, doca_data user_data, doca_compress_task_decompress_lz4_stream** task )
分配 decompress LZ4 流任务。
参数
压缩实例
从中分配任务的压缩上下文
has_block_checksum
如果任务应预期流中的块具有校验和,则为 1,否则为 0
are_blocks_independent
如果任务应预期块是独立的,则为 1,否则为 0(相关块)
src_buff
源缓冲区
dst_buff
目标缓冲区
user_data
可以从任务中检索的 doca_data(通常在任务完成时)。
task
分配的任务

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NO_MEMORY - 所有解压缩 LZ4 流任务已分配。
  • DOCA_ERROR_INVALID_VALUE - 无法初始化源硬件资源。
描述

此方法分配并初始化解压缩 LZ4 流任务。任务参数可以在稍后通过 setter 设置。

DOCA_EXPERIMENTAL doca_task* doca_compress_task_decompress_lz4_stream_as_task ( doca_compress_task_decompress_lz4_stream* task )
将 decompress LZ4 流任务转换为 doca_task
参数
task
要转换的任务

返回值

doca_task

描述

DOCA_EXPERIMENTAL uint8_t doca_compress_task_decompress_lz4_stream_get_are_blocks_independent ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务 are_blocks_independent 标志
参数
task
任务从中获取 are_blocks_independent 标志

返回值

如果任务应预期块是独立的,则为 1,否则为 0(相关块)

描述

DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_stream_get_crc_cs ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务 CRC 校验和
参数
task
要从中获取目标的任务

返回值

流的 CRC 校验和

描述
注意

仅在任务成功完成时有效。否则,行为未定义。


DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_lz4_stream_get_dst ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务目标缓冲区
参数
task
要从中获取目标的任务

返回值

目标缓冲区

描述

DOCA_EXPERIMENTAL uint8_t doca_compress_task_decompress_lz4_stream_get_has_block_checksum ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务 has_block_checksum 标志
参数
task
任务从中获取 has_block_checksum 标志

返回值

如果任务应预期流中的块具有校验和,则为 1,否则为 0

描述

const DOCA_EXPERIMENTAL doca_buf* doca_compress_task_decompress_lz4_stream_get_src ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务源缓冲区
参数
task
获取源的任务

返回值

源缓冲区

描述

DOCA_EXPERIMENTAL uint32_t doca_compress_task_decompress_lz4_stream_get_xxh_cs ( const doca_compress_task_decompress_lz4_stream* task )
获取 decompress LZ4 流任务 xxHash-32 校验和
参数
task
任务从中获取校验和

返回值

流的 xxHash-32 校验和

描述
注意

仅在任务成功完成时有效。否则,行为未定义。


DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_are_blocks_independent ( doca_compress_task_decompress_lz4_stream* task, uint8_t are_blocks_independent )
设置 decompress LZ4 流任务 are_blocks_independent 标志
参数
task
设置源的任务为
are_blocks_independent
如果任务应预期块是独立的,则为 1,否则为 0(相关块)

描述

DOCA_EXPERIMENTAL doca_error_t doca_compress_task_decompress_lz4_stream_set_conf ( doca_compress* compress, doca_compress_task_decompress_lz4_stream_completion_cb_t task_completion_cb, doca_compress_task_decompress_lz4_stream_completion_cb_t task_error_cb, uint32_t num_tasks )
此方法设置 decompress LZ4 流任务配置。
参数
压缩实例
要配置的压缩上下文
task_completion_cb
任务完成回调
task_error_cb
任务错误回调
num_tasks
上下文可以分配的解压缩 LZ4 流任务数

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
描述

DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_dst ( doca_compress_task_decompress_lz4_stream* task, doca_buf* dst_buff )
设置 decompress LZ4 流任务目标缓冲区
参数
task
设置目标的任务为
dst_buff
要设置的目标缓冲区

描述

DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_has_block_checksum ( doca_compress_task_decompress_lz4_stream* task, uint8_t has_block_checksum )
设置 decompress LZ4 流任务 has_block_checksum 标志
参数
task
设置源的任务为
has_block_checksum
如果任务应预期流中的块具有校验和,则为 1,否则为 0

描述

DOCA_EXPERIMENTAL void doca_compress_task_decompress_lz4_stream_set_src ( doca_compress_task_decompress_lz4_stream* task, const doca_buf* src_buff )
设置 decompress LZ4 流任务源缓冲区
参数
task
设置源的任务为
src_buff
要设置的源缓冲区

描述


宏定义

#define DOCA_COMPAT_HELPERS
声明对兼容性辅助工具的支持/需求

宏定义

#define DOCA_COMPAT_HELPERS


模块

 DOCA 设备模拟 - PCI 设备
 
 DOCA 设备模拟 - Virtio 设备
 
 DOCA 设备模拟 - Virtio FS 设备
 

DOCA 设备模拟 - PCI 设备

DOCA 设备模拟 - Virtio FS 设备

DOCA 设备模拟 - Virtio 设备

2.10.1. DOCA 设备仿真 - PCI 设备

[ DOCA 设备仿真 ]

用于仿真 PCI 设备的 DOCA 库

模块
 DOCA 设备模拟 - PCI 设备类型
 
类型定义
typedef void  ( *doca_devemu_pci_dev_event_bar_stateful_region_driver_write_handler_cb_t )( doca_devemu_pci_dev_event_bar_stateful_region_driver_write*  event,  union doca_data user_data )
在对 BAR 状态区域进行 PCI 写入事务时执行的函数。
typedef void  ( *doca_devemu_pci_dev_event_flr_handler_cb_t )( doca_devemu_pci_dev*  pci_dev,  union doca_data user_data )
在 PCI FLR(功能级复位)时执行的函数。事件处理程序将允许用户静止、刷新和复位与仿真的 PCI 设备相关的必要资源。发生事件时,所有到/从主机内存的 PCI I/O 事务均被禁用。此外,用户应重新配置仿真的 PCI 设备。此重新配置需要刷新与仿真的 PCI 设备相关的所有未完成资源,这些资源最初由 PCI 设备拥有,并将所有权转移给用户。重新配置还需要销毁所有相关资源(例如 DB、MSIX、MMAP),复位相关的仿真 PCI 设备(执行 stop() 和 start() 操作)并重新创建所有需要的资源。
typedef void  ( *doca_devemu_pci_dev_event_hotplug_state_change_handler_cb_t )( doca_devemu_pci_dev*  pci_dev,  union doca_data user_data )
在热插拔状态更改事件发生时执行的函数。
typedef uint64_t  doca_dpa_dev_devemu_pci_db_completion_t
用于仿真 PCI 设备门铃完成上下文的 DPA 句柄。
typedef uint64_t  doca_dpa_dev_devemu_pci_db_t
用于仿真 PCI 设备门铃的 DPA 句柄。
typedef uint64_t  doca_dpa_dev_devemu_pci_msix_t
用于仿真 PCI 设备 MSI-X 的 DPA 句柄。
枚举
enum doca_devemu_pci_hotplug_state
DOCA devemu pci 热插拔状态。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_get_max_hotplug_devices ( const doca_devinfo* devinfo, uint32_t* max_hotplug_devices )
获取设备可以热插拔的最大 PCI 设备数量,涵盖所有 PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_create ( doca_dpa_thread* th, doca_devemu_pci_db_completion** db_comp )
在 DPA 上分配 DOCA devemu PCI 设备门铃完成上下文。创建的完成上下文将与单个 dpa 线程关联。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_destroy ( doca_devemu_pci_db_completion* db_comp )
销毁 DOCA devemu PCI 设备门铃完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_curr_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t* num_dbs )
获取与完成上下文关联的当前门铃数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_dpa_handle ( doca_devemu_pci_db_completion* db_comp, doca_dpa_dev_devemu_pci_db_completion_t* db_comp_handle )
获取 DOCA devemu PCI 设备门铃完成上下文的 DPA 句柄。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_max_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t* num_dbs )
获取可以与完成上下文关联的最大门铃数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_set_max_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t num_dbs )
设置可以与完成上下文关联的最大门铃数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_start ( doca_devemu_pci_db_completion* db_comp )
启动 DOCA devemu PCI 设备门铃完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_stop ( doca_devemu_pci_db_completion* db_comp )
停止 DOCA devemu PCI 设备门铃完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_create_on_dpa ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_db_completion* db_comp, uint8_t bar_id, uint64_t bar_start_addr, uint32_t db_id, uint64_t user_data_on_dpa, doca_devemu_pci_db** db )
在 DPA 上分配 DOCA devemu PCI 设备门铃。创建的门铃将与也在 DPA 上创建的单个完成上下文关联。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_destroy ( doca_devemu_pci_db* db )
销毁 DOCA devemu PCI 设备门铃。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_get_dpa_handle ( doca_devemu_pci_db* db, doca_dpa_dev_devemu_pci_db_t* db_handle )
获取 DOCA devemu PCI 设备门铃的 DPA 句柄。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_modify_value ( doca_devemu_pci_db* db, uint32_t db_value )
修改 DOCA devemu PCI 设备门铃的当前值。如果门铃已启动,则此设置的行为将如同门铃值已被 PCI 设备驱动程序修改一样。如果在启动 DOCA devemu PCI 设备门铃之前未修改门铃值,则设备将保持门铃的当前值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_query_value ( doca_devemu_pci_db* db, uint32_t* db_value )
查询 DOCA devemu PCI 设备门铃的当前值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_start ( doca_devemu_pci_db* db )
启动 DOCA devemu PCI 设备门铃。启动的门铃将能够触发关联的门铃完成上下文的完成。因此,如果门铃是在 DPA 上创建的,则应在启动门铃之前将关联的门铃句柄绑定到其门铃完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_stop ( doca_devemu_pci_db* db )
停止 DOCA devemu PCI 设备门铃。停止的门铃将不会触发关联的门铃完成上下文的完成。因此,如果门铃是在 DPA 上创建的,则应在从其门铃完成上下文中取消绑定关联的门铃句柄之前停止门铃。
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_pci_dev_as_ctx ( doca_devemu_pci_dev* pci_dev )
将 DOCA devemu PCI 设备实例转换为 DOCA 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_create ( doca_devemu_pci_type* pci_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_pci_dev** pci_dev )
分配 DOCA devemu PCI 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_destroy ( doca_devemu_pci_dev* pci_dev )
释放 DOCA devemu PCI 设备。
DOCA_EXPERIMENTAL uint8_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_bar_id ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
从 BAR 状态区域驱动程序写入事件获取 BAR id。
DOCA_EXPERIMENTAL uint64_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_bar_region_start_addr ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
获取与 BAR 状态区域驱动程序写入事件关联的 BAR 区域起始地址。
DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_pci_dev ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
从 BAR 状态区域驱动程序写入事件获取 DOCA devemu PCI 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_bar_stateful_region_driver_write_handler_cb_t handler, uint8_t bar_id, uint64_t bar_region_start_addr, doca_data user_data )
注册 BAR 状态区域驱动程序写入事件。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_flr_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_flr_handler_cb_t handler, doca_data user_data )
注册 PCI FLR(功能级复位)事件。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_hotplug_state_change_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_hotplug_state_change_handler_cb_t handler, doca_data user_data )
注册热插拔状态更改。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_get_hotplug_state ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_hotplug_state ** state )
获取 DOCA devemu PCI 设备的热插拔状态。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_hotplug ( doca_devemu_pci_dev* pci_dev )
发出 DOCA devemu PCI 设备的热插拔过程。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_hotunplug ( doca_devemu_pci_dev* pci_dev )
发出 DOCA devemu PCI 设备的热拔出过程。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_is_flr ( const doca_devemu_pci_dev* pci_dev, uint8_t* flr )
查询 DOCA devemu PCI 设备是否正在进行 FLR(功能级复位)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_modify_bar_stateful_region_default_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t start_addr, void* default_values, uint64_t size )
修改 DOCA devemu PCI 设备中状态区域的默认寄存器值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_modify_bar_stateful_region_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t offset, void* values, uint64_t size )
修改 DOCA devemu PCI 设备中状态区域的寄存器值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_query_bar_stateful_region_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t offset, void* out_values, uint64_t size )
查询 DOCA devemu PCI 设备中状态区域的寄存器值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_mmap_create ( doca_devemu_pci_dev* pci_dev, doca_mmap** mmap )
分配零大小内存映射对象,该对象具有与 DOCA devemu PCI 设备关联的默认/未设置属性。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_create_on_dpa ( doca_devemu_pci_dev* pci_dev, uint8_t bar_id, uint64_t bar_start_addr, uint16_t msix_idx, uint64_t user_data_on_dpa, doca_devemu_pci_msix** msix )
在 DPA 上分配 DOCA devemu PCI 设备 MSI-X 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_destroy ( doca_devemu_pci_msix* msix )
销毁 DOCA devemu PCI 设备 MSI-X。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_get_dpa_handle ( doca_devemu_pci_msix* msix, doca_dpa_dev_devemu_pci_msix_t* msix_handle )
获取 DOCA devemu PCI 设备 MSI-X 的 DPA 句柄。
类型定义
void ( *doca_devemu_pci_dev_event_bar_stateful_region_driver_write_handler_cb_t )( doca_devemu_pci_dev_event_bar_stateful_region_driver_write*  event,  union doca_data user_data )

在对 BAR 状态区域进行 PCI 写入事务时执行的函数。

参数
event
BAR 状态区域驱动程序写入事件。
union doca_data user_data

void ( *doca_devemu_pci_dev_event_flr_handler_cb_t )( doca_devemu_pci_dev*  pci_dev,  union doca_data user_data )

在 PCI FLR(功能级复位)时执行的函数。事件处理程序将允许用户静止、刷新和复位与仿真的 PCI 设备相关的必要资源。发生事件时,所有到/从主机内存的 PCI I/O 事务均被禁用。此外,用户应重新配置仿真的 PCI 设备。此重新配置需要刷新与仿真的 PCI 设备相关的所有未完成资源,这些资源最初由 PCI 设备拥有,并将所有权转移给用户。重新配置还需要销毁所有相关资源(例如 DB、MSIX、MMAP),复位相关的仿真 PCI 设备(执行 stop() 和 start() 操作)并重新创建所有需要的资源。

参数
pci_dev
与事件关联的 DOCA devemu PCI 设备。
union doca_data user_data

void ( *doca_devemu_pci_dev_event_hotplug_state_change_handler_cb_t )( doca_devemu_pci_dev*  pci_dev,  union doca_data user_data )

在热插拔状态更改事件发生时执行的函数。

参数
pci_dev
与事件关联的 DOCA devemu PCI 设备。
union doca_data user_data

typedef uint64_t doca_dpa_dev_devemu_pci_db_completion_t

用于仿真 PCI 设备门铃完成上下文的 DPA 句柄。

typedef uint64_t doca_dpa_dev_devemu_pci_db_t

用于仿真 PCI 设备门铃的 DPA 句柄。

typedef uint64_t doca_dpa_dev_devemu_pci_msix_t

用于仿真 PCI 设备 MSI-X 的 DPA 句柄。

枚举
enum doca_devemu_pci_hotplug_state

热插拔设备的步骤如下: 1. 检查当前热插拔状态 1.1 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF,则发出热插拔操作(调用 doca_devemu_pci_dev_hotplug())并等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_ON。 1.2 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_PLUG_IN_PROGRESS,则等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_ON。 1.3 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_UNPLUG_IN_PROGRESS,则等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF 并转到步骤 1.1。 1.4 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_POWER_ON,则不执行任何操作 --> 设备已插入。

热拔出设备的步骤如下: 1. 检查当前热插拔状态 1.1 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_POWER_ON,则发出热拔出操作(调用 doca_devemu_pci_dev_hotunplug())并等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF。 1.2 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_UNPLUG_IN_PROGRESS,则等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF。 1.3 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_PLUG_IN_PROGRESS,则等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_ON 并转到步骤 1.1,或发出热拔出操作(调用 doca_devemu_pci_dev_hotunplug())然后等待 DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF。 1.4 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF,则不执行任何操作 --> 设备已拔出。

注意

建议使用 doca_devemu_pci_dev_event_hotplug_state_change 机制来获取有关热插拔状态更改的通知。


DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF = 0
设备已断电,主机不可见。设备处于过渡状态,即将从主机拔出。
DOCA_DEVEMU_PCI_HP_STATE_UNPLUG_IN_PROGRESS
设备处于过渡状态,即将插入主机。
DOCA_DEVEMU_PCI_HP_STATE_PLUG_IN_PROGRESS
设备已通电,主机可见。
DOCA_DEVEMU_PCI_HP_STATE_POWER_ON

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_get_max_hotplug_devices ( const doca_devinfo* devinfo, uint32_t* max_hotplug_devices )
获取设备可以热插拔的最大 PCI 设备数量,涵盖所有 PCI 类型。
参数
devinfo
要查询的设备。
max_hotplug_devices
设备可以热插拔的 PCI 设备数量。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误。
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_create ( doca_dpa_thread* th, doca_devemu_pci_db_completion** db_comp )
在 DPA 上分配 DOCA devemu PCI 设备门铃完成上下文。创建的完成上下文将与单个 dpa 线程关联。
参数
th
要与完成上下文关联的 DOCA dpa 线程。
db_comp
新创建的 DOCA devemu PCI 设备门铃完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_destroy ( doca_devemu_pci_db_completion* db_comp )
销毁 DOCA devemu PCI 设备门铃完成上下文。
参数
db_comp
要销毁的 DOCA devemu PCI 设备门铃完成上下文。必须已停止。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

关联的 dpa 句柄也将被销毁。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_curr_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t* num_dbs )
获取与完成上下文关联的当前门铃数量。
参数
db_comp
要查询的 DOCA devemu PCI 设备门铃完成上下文。
num_dbs
与上下文关联的当前门铃数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_dpa_handle ( doca_devemu_pci_db_completion* db_comp, doca_dpa_dev_devemu_pci_db_completion_t* db_comp_handle )
获取 DOCA devemu PCI 设备门铃完成上下文的 DPA 句柄。
参数
db_comp
先前在 DPA 上创建的 DOCA devemu PCI 设备门铃完成上下文。
db_comp_handle
指向 dpa 内存空间中关联的 DPA 句柄的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_max_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t* num_dbs )
获取可以与完成上下文关联的最大门铃数量。
参数
db_comp
要查询的 DOCA devemu PCI 设备门铃完成上下文。
num_dbs
可以与上下文关联的最大门铃数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_set_max_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t num_dbs )
设置可以与完成上下文关联的最大门铃数量。
参数
db_comp
要修改的 DOCA devemu PCI 设备门铃完成上下文。必须已停止。
num_dbs
可以与上下文关联的最大门铃数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_start ( doca_devemu_pci_db_completion* db_comp )
启动 DOCA devemu PCI 设备门铃完成上下文。
参数
db_comp
要启动的 DOCA devemu PCI 设备门铃完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

启动时,验证并最终确定完成上下文配置。

对于启动的完成上下文,可以进行以下操作:

  • 将 DOCA devemu PCI 设备门铃与完成上下文关联。

当完成上下文启动时,以下操作是不可能的:

  • 设置完成上下文的属性。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_stop ( doca_devemu_pci_db_completion* db_comp )
停止 DOCA devemu PCI 设备门铃完成上下文。
参数
db_comp
要停止的 DOCA devemu PCI 设备门铃完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

停止时,阻止执行不同的操作,并允许执行启动前可用的操作。 有关详细信息,请参见 doca_devemu_pci_db_completion_start()。 当存在与完成上下文关联的 DOCA devemu PCI 设备门铃时,无法停止完成上下文。

对于停止的完成上下文,可以进行以下操作:

  • 设置完成上下文的属性。

当完成上下文停止时,以下操作是不可能的:

  • 将 DOCA devemu PCI 设备门铃与完成上下文关联。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_create_on_dpa ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_db_completion* db_comp, uint8_t bar_id, uint64_t bar_start_addr, uint32_t db_id, uint64_t user_data_on_dpa, doca_devemu_pci_db** db )
在 DPA 上分配 DOCA devemu PCI 设备门铃。创建的门铃将与也在 DPA 上创建的单个完成上下文关联。
参数
pci_dev
要与门铃关联的 DOCA devemu PCI 设备。必须已启动。
db_comp
要与门铃关联的 DOCA devemu PCI 设备门铃完成上下文。必须已启动。
bar_id
BAR 的标识符,其中包含为创建的门铃关联的门铃区域。
bar_start_addr
BAR 内关联的门铃区域的起始地址。此值必须与在 PCI 类型的配置周期内配置给门铃区域的起始地址一致,该 PCI 类型与给定的 PCI 设备关联。
db_id
门铃标识符,将用于将门铃映射到其处理程序。当 num_db 是为关联的 DOCA devemu PCI 设备配置的门铃数量时,此值必须在 [0, num_db - 1] 的范围内。 如果未另行配置,则由 doca_devemu_pci_dev_create() 创建的任何 DOCA devemu PCI 设备的默认 num_db 值等于 doca_devemu_pci_cap_type_get_max_num_db() 中返回的值。
user_data_on_dpa
用户数据,与 DOCA devemu PCI 设备门铃 DPA 句柄关联,并且可以通过该句柄检索。
db
新创建的 DOCA devemu PCI 设备门铃。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_destroy ( doca_devemu_pci_db* db )
销毁 DOCA devemu PCI 设备门铃。
参数
db
要销毁的 DOCA devemu PCI 设备门铃。必须已停止。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

如果门铃是在 dpa 上创建的,则关联的 dpa 句柄也将被销毁。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_get_dpa_handle ( doca_devemu_pci_db* db, doca_dpa_dev_devemu_pci_db_t* db_handle )
获取 DOCA devemu PCI 设备门铃的 DPA 句柄。
参数
db
先前在 DPA 上创建的 DOCA devemu PCI 设备门铃。
db_handle
指向 dpa 内存空间中关联的 DPA 句柄的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_modify_value ( doca_devemu_pci_db* db, uint32_t db_value )
修改 DOCA devemu PCI 设备门铃的当前值。如果门铃已启动,则此设置的行为将如同门铃值已被 PCI 设备驱动程序修改一样。如果在启动 DOCA devemu PCI 设备门铃之前未修改门铃值,则设备将保持门铃的当前值。
参数
db
要修改的 DOCA devemu PCI 设备门铃。
db_value
DOCA devemu PCI 设备门铃的新值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_query_value ( doca_devemu_pci_db* db, uint32_t* db_value )
查询 DOCA devemu PCI 设备门铃的当前值。
参数
db
要查询的 DOCA devemu PCI 设备门铃。
db_value
DOCA devemu PCI 设备门铃的当前值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_start ( doca_devemu_pci_db* db )
启动 DOCA devemu PCI 设备门铃。启动的门铃将能够触发关联的门铃完成上下文的完成。因此,如果门铃是在 DPA 上创建的,则应在启动门铃之前将关联的门铃句柄绑定到其门铃完成上下文。
参数
db
要启动的 DOCA devemu PCI 设备门铃。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_stop ( doca_devemu_pci_db* db )
停止 DOCA devemu PCI 设备门铃。停止的门铃将不会触发关联的门铃完成上下文的完成。因此,如果门铃是在 DPA 上创建的,则应在从其门铃完成上下文中取消绑定关联的门铃句柄之前停止门铃。
参数
db
要停止的 DOCA devemu PCI 设备门铃。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_ctx* doca_devemu_pci_dev_as_ctx ( doca_devemu_pci_dev* pci_dev )
将 DOCA devemu PCI 设备实例转换为 DOCA 上下文。
参数
pci_dev
DOCA devemu PCI 设备。 在返回的 DOCA 上下文不再需要之前,设备必须保持有效。

返回值

成功时返回 DOCA 上下文,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_create ( doca_devemu_pci_type* pci_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_pci_dev** pci_dev )
分配 DOCA devemu PCI 设备。
参数
pci_type
要与设备关联的 DOCA PCI 类型。必须已启动。
dev_rep
Representor DOCA 设备。
progress_engine
将用于接收事件和任务完成的进度引擎。
pci_dev
新创建的 DOCA devemu PCI 设备。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type'、'dev_rep'、'progress_engine' 或 'pci_dev' 为 NULL。或 representor 类型与 PCI 类型不匹配
  • DOCA_ERROR_NO_MEMORY - 分配失败
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_destroy ( doca_devemu_pci_dev* pci_dev )
释放 DOCA devemu PCI 设备。
参数
pci_dev
先前创建的 DOCA devemu PCI 设备。必须处于空闲状态。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态。使用 doca_ctx_stop() 停止它
  • DOCA_ERROR_NOT_PERMITTED - PCI 设备不是使用 doca_devemu_pci_dev_create() 创建的
描述

DOCA_EXPERIMENTAL uint8_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_bar_id ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
从 BAR 状态区域驱动程序写入事件获取 BAR id。
参数
event
已注册的 BAR 状态区域驱动程序写入事件。不得为 NULL。

返回值

与事件关联的 BAR ID。

描述

DOCA_EXPERIMENTAL uint64_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_bar_region_start_addr ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
获取与 BAR 状态区域驱动程序写入事件关联的 BAR 区域起始地址。
参数
event
已注册的 BAR 状态区域驱动程序写入事件。不得为 NULL。

返回值

与事件关联的 BAR 状态区域的起始地址。

描述

DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_pci_dev ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
从 BAR 状态区域驱动程序写入事件获取 DOCA devemu PCI 设备。
参数
event
已注册的 BAR 状态区域驱动程序写入事件。不得为 NULL。

返回值

与事件关联的 DOCA devemu PCI 设备。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_bar_stateful_region_driver_write_handler_cb_t handler, uint8_t bar_id, uint64_t bar_region_start_addr, doca_data user_data )
注册 BAR 状态区域驱动程序写入事件。
参数
pci_dev
要与事件关联的 DOCA devemu PCI 设备。必须处于空闲状态。
handler
事件触发后调用的方法。
bar_id
要与事件关联的 BAR ID。必须符合使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 完成的 BAR 状态区域配置。
bar_region_start_addr
要与事件关联的 BAR 状态区域的起始地址。必须符合使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 完成的 BAR 状态区域配置。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未处于空闲状态
描述

只有当 DOCA devemu PCI 设备处于空闲状态时才能完成注册。如果对于相同的 {pci_dev, bar_id, bar_region_start_addr} 元组多次调用,则只有最后一次调用生效。注册对于为关联的 DOCA devemu PCI 设备配置的整个状态区域有效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_flr_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_flr_handler_cb_t handler, doca_data user_data )
注册 PCI FLR(功能级复位)事件。
参数
pci_dev
要与事件关联的 DOCA devemu PCI 设备。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未处于空闲状态
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_hotplug_state_change_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_hotplug_state_change_handler_cb_t handler, doca_data user_data )
注册热插拔状态更改。
参数
pci_dev
要与事件关联的 DOCA devemu PCI 设备。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未处于空闲状态
描述

只有当 DOCA devemu PCI 设备处于空闲状态时才能完成注册。如果多次调用,则只有最后一次调用生效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_get_hotplug_state ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_hotplug_state ** state )
获取 DOCA devemu PCI 设备的热插拔状态。
参数
pci_dev
DOCA devemu PCI 设备。必须已启动。
state
给定 DOCA devemu PCI 设备的热插拔状态。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 或 'state' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_hotplug ( doca_devemu_pci_dev* pci_dev )
发出 DOCA devemu PCI 设备的热插拔过程。
参数
pci_dev
要热插拔的 DOCA devemu PCI 设备。必须已启动。

返回值

DOCA_SUCCESS - 成功时。成功后,pci_dev 处于 DOCA_DEVEMU_PCI_HP_STATE_PLUG_IN_PROGRESS 状态。成功时不会引发事件。失败时返回错误代码

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未启动,或热插拔状态不是 DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
  • DOCA_ERROR_NOT_SUPPORTED - 设置的 DOCA 设备不支持热插拔,使用 doca_devemu_pci_cap_type_is_hotplug_supported() 查找支持它的设备
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_hotunplug ( doca_devemu_pci_dev* pci_dev )
发出 DOCA devemu PCI 设备的热拔出过程。
参数
pci_dev
要热拔出的 DOCA devemu PCI 设备。必须已启动。

返回值

DOCA_SUCCESS - 成功时。成功后,pci_dev 处于 DOCA_DEVEMU_PCI_HP_STATE_UNPLUG_IN_PROGRESS 状态。成功时不会引发事件。失败时返回错误代码

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未启动,或当前热插拔状态不是 DOCA_DEVEMU_PCI_HP_STATE_POWER_ON 或 DOCA_DEVEMU_PCI_HP_STATE_PLUG_IN_PROGRESS 之一
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
  • DOCA_ERROR_NOT_SUPPORTED - 设置的 DOCA 设备不支持热拔出,使用 doca_devemu_pci_cap_type_is_hotplug_supported() 查找支持它的设备
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_is_flr ( const doca_devemu_pci_dev* pci_dev, uint8_t* flr )
查询 DOCA devemu PCI 设备是否正在进行 FLR(功能级复位)。
参数
pci_dev
要查询的 DOCA devemu PCI 设备。必须已启动。
flr
如果 DOCA devemu PCI 设备具有 FLR,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 或 'flr' 为 NULL。
  • DOCA_ERROR_BAD_STATE - PCI 设备未启动。
描述

如果为 true,则禁用所有与主机内存的 PCI I/O 事务,并且用户应重新配置模拟 PCI 设备。此重新配置需要销毁所有关联的资源(例如 DB、MSIX、MMAP),复位关联的模拟 PCI 设备(执行 stop() 和 start() 操作),并重新创建所有需要的资源。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_modify_bar_stateful_region_default_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t start_addr, void* default_values, uint64_t size )
修改 DOCA devemu PCI 设备中状态区域的默认寄存器值。
参数
pci_dev
DOCA devemu PCI 设备。必须已启动。
id
包含状态区域的 BAR ID。
start_addr
BAR 内区域的起始地址。此值必须与在 doca_devemu_pci_type_set_bar_stateful_region_conf() 期间提供的起始地址一致。
default_values
包含默认值数据的输入缓冲区。
size
default_values 缓冲区的大小(以字节为单位)。该大小不得小于使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 bar 区域的实际大小。如果大小大于实际大小,则将根据实际大小使用前几个相关字节。缓冲区的其余部分将被忽略。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此方法将修改 PCI 设备 BAR 中整个状态区域寄存器区域的默认值(在首次修改之前,状态区域寄存器的初始默认值取自关联的 PCI 类型)。这些值将覆盖之前的默认值,并在关联的 PCI 设备下次暴露/热插拔到主机或下次 FLR 期间生效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_modify_bar_stateful_region_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t offset, void* values, uint64_t size )
修改 DOCA devemu PCI 设备中状态区域的寄存器值。
参数
pci_dev
DOCA devemu PCI 设备。必须已启动。
id
包含状态区域的 BAR ID。
offset
要修改的寄存器区域在 BAR 中的偏移量。必须位于状态 BAR 区域内。
values
包含值数据的输入缓冲区。
size
values 缓冲区的大小(以字节为单位)。(offset + size)必须位于状态 BAR 区域内。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此方法将修改 PCI 设备 BAR 中状态区域寄存器的值。这些值将覆盖关联 PCI 设备的状态区域的现有值。通过调用此方法修改寄存器不会触发 doca_devemu_pci_dev_event_bar_stateful_region_driver_write 事件的已注册事件处理程序。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_query_bar_stateful_region_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t offset, void* out_values, uint64_t size )
查询 DOCA devemu PCI 设备中状态区域的寄存器值。
参数
pci_dev
DOCA devemu PCI 设备。必须已启动。
id
包含状态区域的 BAR ID。
offset
要查询的寄存器区域在 BAR 中的偏移量。必须位于状态 BAR 区域内。
out_values
成功后将包含值数据的输出缓冲区。
size
out_values 缓冲区的大小(以字节为单位)。(offset + size)必须位于状态 BAR 区域内。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_mmap_create ( doca_devemu_pci_dev* pci_dev, doca_mmap** mmap )
分配零大小内存映射对象,该对象具有与 DOCA devemu PCI 设备关联的默认/未设置属性。
参数
pci_dev
要与 doca_mmap 关联的 DOCA devemu PCI 设备。必须已启动。
mmap
具有默认/未设置属性的 DOCA 内存映射结构。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

返回的内存映射对象可以使用通用的 doca_mmap API 进行操作。

创建的内存映射对象将覆盖托管 DOCA devemu PCI 设备的域中的内存范围。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_create_on_dpa ( doca_devemu_pci_dev* pci_dev, uint8_t bar_id, uint64_t bar_start_addr, uint16_t msix_idx, uint64_t user_data_on_dpa, doca_devemu_pci_msix** msix )
在 DPA 上分配 DOCA devemu PCI 设备 MSI-X 上下文。
参数
pci_dev
要与 MSI-X 关联的 DOCA devemu PCI 设备。必须已启动。
bar_id
包含为创建的 msix 关联的 MSI-X 表区域的 BAR 的标识符。此值必须与在与给定 PCI 设备关联的 pci 类型的配置周期中配置给 MSI-X 表区域的标识符一致。
bar_start_addr
关联的 MSI-X 表区域在 BAR 内的起始地址。此值必须与在与给定 PCI 设备关联的 PCI 类型的配置周期中配置给 MSI-X 表区域的起始地址一致。
msix_idx
关联的 MSI-X 表条目索引。
user_data_on_dpa
与 DOCA devemu PCI 设备 MSI-X DPA 句柄关联并可检索的用户数据。
msix
新创建的 DOCA devemu PCI 设备 MSI-X。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_destroy ( doca_devemu_pci_msix* msix )
销毁 DOCA devemu PCI 设备 MSI-X。
参数
msix
要销毁的 DOCA devemu PCI 设备 MSI-X 上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

如果 MSI-X 是在 dpa 上创建的,则关联的 dpa 句柄也将被销毁。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_get_dpa_handle ( doca_devemu_pci_msix* msix, doca_dpa_dev_devemu_pci_msix_t* msix_handle )
获取 DOCA devemu PCI 设备 MSI-X 的 DPA 句柄。
参数
msix
先前在 DPA 上创建的 DOCA devemu PCI 设备 MSI-X。
msix_handle
指向 dpa 内存空间中关联的 DPA 句柄的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA 设备模拟 - PCI 设备类型

2.10.1.1. DOCA 设备仿真 - PCI 设备类型
[ DOCA 设备仿真 - PCI 设备 ]

用于模拟 pci 设备的 DOCA PCI 类型

宏定义
#define DOCA_DEVEMU_PCI_TYPE_NAME_LEN 32
用于描述模拟 PCI 设备类型名称的 NULL 终止字符串的最大长度。
枚举
enum doca_devemu_pci_bar_mem_type
根据 PCI 规范,映射到内存空间的 BAR 可以定义内存类型。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个门铃 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个门铃区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的门铃 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个门铃 BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的门铃 BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_data_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其数据识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_data_conf() 配置门铃区域。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_offset_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其在 BAR 中的偏移量识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_offset_conf() 配置门铃区域。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 门铃区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X PBA 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X 表区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 状态区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X PBA BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X PBA 区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X PBA BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X PBA BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X PBA BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X 表 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X 表区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X 表 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X 表 BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X 表 BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个状态 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个状态区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的状态 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个状态 BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的状态 BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_get_max_types ( const doca_devinfo* devinfo, uint16_t* max_pci_types )
获取设备可以创建的最大 PCI 类型数。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大 BAR 大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大门铃大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最大步幅大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小 BAR 大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小门铃大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最小步幅大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大门铃 BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X PBA BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X 表 BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大状态 BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bars ( const doca_devinfo* devinfo, uint8_t* max_bars )
获取可以为模拟 PCI 设备配置的最大 BAR 数量,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_db ( const doca_devinfo* devinfo, uint16_t* num_db )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大门铃数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_msix ( const doca_devinfo* devinfo, uint16_t* num_msix )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大 MSIX 数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_bar_mem_type_supported ( const doca_devinfo* devinfo, doca_devemu_pci_bar_mem_type memory_type, uint8_t* supported )
获取设备的内存 BAR 类型能力。如果支持,可以使用 doca_devemu_pci_type_set_memory_bar_conf() 配置具有该内存类型的 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_hotplug_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的热插拔能力。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_mgmt_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的管理能力。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_create_rep ( const doca_devemu_pci_type* pci_type, doca_dev_rep** dev_rep )
为给定 pci 类型创建新的 representor 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_destroy_rep ( doca_dev_rep* rep_dev )
销毁使用 doca_devemu_pci_dev_create_rep() 创建的 representor 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create ( const char* name, doca_devemu_pci_type** pci_type )
创建已停止的 DOCA devemu pci 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create_rep_list ( doca_devemu_pci_type* pci_type, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
为给定的 devemu pci 类型创建可用 representor 设备列表。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_destroy ( doca_devemu_pci_type* pci_type )
销毁 DOCA devemu pci 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_class_code ( const doca_devemu_pci_type* pci_type, uint32_t* class_code )
获取 pci 类型的 PCI 类代码,以识别通用操作。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_dev ( const doca_devemu_pci_type* pci_type, doca_dev** dev )
获取 pci 类型的 doca 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_device_id ( const doca_devemu_pci_type* pci_type, uint16_t* device_id )
获取 pci 类型的 PCI 设备 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_name ( const doca_devemu_pci_type* pci_type, char(*) name[DOCA_DEVEMU_PCI_TYPE_NAME_LEN] )
获取 pci 类型的名称。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_num_msix ( const doca_devemu_pci_type* pci_type, uint16_t* num_msix )
从 pci 类型的 MSI-X 功能寄存器获取 MSI-X 表的大小(从 1 开始)。除非另行配置,否则此值将用作关联的 DOCA devemu pci 设备的默认 num_msix 值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_revision_id ( const doca_devemu_pci_type* pci_type, uint8_t* revision_id )
获取 pci 类型的 PCI 修订 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_id )
获取 pci 类型的 PCI 子系统 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_vid )
获取 pci 类型的 PCI 子系统供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* vendor_id )
获取 pci 类型的 PCI 供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_is_started ( const doca_devemu_pci_type* pci_type, uint8_t* started )
检查 pci 类型是否已启动。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_modify_bar_stateful_region_default_values ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, void* default_values, uint64_t size )
修改 DOCA devemu pci 类型中已配置的状态区域的默认寄存器值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_data_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint16_t db_id_msbyte, uint16_t db_id_lsbyte )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据写入门铃的数据来识别与此门铃 BAR 区域关联的门铃。门铃标识符将通过 db_id_lsbyte 和 db_id_msbyte 设置从写入的门铃数据中推断出来。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_offset_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint8_t log_stride_size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据门铃在其 BAR 中的偏移量来识别与此门铃 BAR 区域关联的门铃。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_pba_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X PBA BAR 区域配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_table_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X 表 BAR 区域配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_stateful_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个状态 BAR 区域配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_class_code ( doca_devemu_pci_type* pci_type, uint32_t class_code )
设置 pci 类型的 PCI 类代码,以标识通用操作。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_dev ( doca_devemu_pci_type* pci_type, doca_dev* dev )
设置 pci 类型的 doca 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_device_id ( doca_devemu_pci_type* pci_type, uint16_t device_id )
设置 pci 类型的 PCI 设备 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_io_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz )
为 DOCA devemu pci 类型设置 IO BAR 布局配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_memory_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz, doca_devemu_pci_bar_mem_type memory_type, uint8_t prefetchable )
为 DOCA devemu pci 类型设置内存 BAR 布局配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_num_msix ( doca_devemu_pci_type* pci_type, uint16_t num_msix )
从 pci 类型的 MSI-X 功能寄存器(基于 1)设置 MSI-X 表的大小。必须符合 doca_devemu_pci_cap_type_get_max_num_msix()。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_revision_id ( doca_devemu_pci_type* pci_type, uint8_t revision_id )
设置 pci 类型的 PCI 修订 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_id )
设置 pci 类型的 PCI 子系统 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_vid )
设置 pci 类型的 PCI 子系统供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t vendor_id )
设置 pci 类型的 PCI 供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_start ( doca_devemu_pci_type* pci_type )
启动 DOCA devemu pci 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_stop ( doca_devemu_pci_type* pci_type )
停止 DOCA devemu pci 类型。
宏定义
#define DOCA_DEVEMU_PCI_TYPE_NAME_LEN 32

枚举
enum doca_devemu_pci_bar_mem_type

DOCA_DEVEMU_PCI_BAR_MEM_TYPE_32_BIT = 0
基址寄存器为 32 位宽,可以映射到 32 位地址内存空间中的任何位置。基址寄存器支持 1 MB 以下的内存空间
DOCA_DEVEMU_PCI_BAR_MEM_TYPE_1_MB
基址寄存器为 64 位宽,可以映射到 64 位地址内存空间中的任何位置。
DOCA_DEVEMU_PCI_BAR_MEM_TYPE_64_BIT

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个门铃 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个门铃区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的单个门铃 BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的门铃 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个门铃 BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的门铃 BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的门铃 BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的门铃 BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_data_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其数据识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_data_conf() 配置门铃区域。
参数
devinfo
要查询的设备。
supported
如果支持按数据识别门铃区域,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_offset_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其在 BAR 中的偏移量识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_offset_conf() 配置门铃区域。
参数
devinfo
要查询的设备。
supported
如果支持按偏移量识别门铃区域,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 门铃区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 为每个 BAR 配置的 BAR 门铃区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X PBA 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 为每个 BAR 配置的 BAR MSI-X PBA 区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X 表区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 为每个 BAR 配置的 BAR MSI-X 表区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_bar_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_bar_*_region_conf_set() 为每个 BAR 配置的 BAR 区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 状态区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 为每个 BAR 配置的状态 BAR 区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X PBA BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X PBA 区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的单个 MSI-X PBA BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X PBA BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X PBA BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的 MSI-X PBA BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 成功时返回。错误代码 - 失败时返回。请参阅 doca_srror_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X PBA BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的 MSI-X PBA BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X 表 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X 表区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的单个 MSI-X 表 BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X 表 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X 表 BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的 MSI-X 表 BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 成功时返回。错误代码 - 失败时返回。请参阅 doca_srror_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X 表 BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的 MSI-X 表 BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个状态 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个状态区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的单个状态 BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的状态 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个状态 BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的状态 BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_get_max_types ( const doca_devinfo* devinfo, uint16_t* max_pci_types )
获取设备可以创建的最大 PCI 类型数。
参数
devinfo
要查询的设备。
max_pci_types
可以使用 doca_devemu_pci_type_create() 创建的 PCI 类型的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大 BAR 大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_bar_size
单个 BAR 的最大 BAR 大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大门铃大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_db_size
单个门铃的最大门铃大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最大步幅大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_stride_size
单个门铃的最大步幅大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小 BAR 大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_bar_size
单个 BAR 的最小 BAR 大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小门铃大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_db_size
单个门铃的最小门铃大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最小步幅大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_stride_size
单个门铃的最小步幅大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大门铃 BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的最大门铃 BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X PBA BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的最大 MSI-X PBA BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X 表 BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的最大 MSI-X 表 BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
参数
devinfo
要查询的设备。
max_bar_regions
可以使用 doca_devemu_pci_type_bar_*_region_conf_set() 配置的 BAR 区域的数量,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大状态 BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的最大状态 BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bars ( const doca_devinfo* devinfo, uint8_t* max_bars )
获取可以为模拟 PCI 设备配置的最大 BAR 数量,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
参数
devinfo
要查询的设备。
max_bars
可以使用 doca_devemu_pci_type_*_bar_conf_set() 为任何 pci 类型配置的 BAR 的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_db ( const doca_devinfo* devinfo, uint16_t* num_db )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大门铃数量。
参数
devinfo
要查询的设备。
num_db
门铃的最大数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_msix ( const doca_devinfo* devinfo, uint16_t* num_msix )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大 MSIX 数量。
参数
devinfo
要查询的设备。
num_msix
MSIX 的最大数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_bar_mem_type_supported ( const doca_devinfo* devinfo, doca_devemu_pci_bar_mem_type memory_type, uint8_t* supported )
获取设备的内存 BAR 类型能力。如果支持,可以使用 doca_devemu_pci_type_set_memory_bar_conf() 配置具有该内存类型的 BAR。
参数
devinfo
要查询的设备。
memory_type
要查询的 BAR 内存类型。
supported
如果设备支持 BAR 内存类型,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo' 或 'supported' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_hotplug_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的热插拔能力。
参数
devinfo
要查询的设备。
pci_type
要查询的 DOCA pci 类型。
supported
如果此类型支持热插拔功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo'、'pci_type' 或 'supported' 为 NULL,或者如果 doca_dev 已经分配给 pci_type,则 devinfo 与关联的 doca_dev 不匹配
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

获取 uint8_t 值,该值定义设备是否可以用于热插拔特定类型的设备。设备的热插拔功能意味着其管理功能。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_mgmt_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的管理能力。
参数
devinfo
要查询的设备。
pci_type
要查询的 DOCA pci 类型。
supported
如果此类型支持管理功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo'、'pci_type' 或 'supported' 为 NULL,或者如果 doca_dev 已经分配给 pci_type,则 devinfo 与关联的 doca_dev 不匹配
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

获取 uint8_t 值,该值定义设备是否可以用于管理特定类型的设备。设备的管理功能并不意味着其热插拔功能。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_create_rep ( const doca_devemu_pci_type* pci_type, doca_dev_rep** dev_rep )
为给定 pci 类型创建新的 representor 设备。
参数
pci_type
DOCA pci 类型。必须已启动。
dev_rep
成功时初始化的表示器 doca 设备实例。 仅在成功时有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'dev_rep' 为 NULL
  • DOCA_ERROR_BAD_STATE - 类型未启动
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

表示器设备对主机不可见。可以使用表示器的发现机制来发现表示器设备。

注意

pci 类型必须已启动。


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_destroy_rep ( doca_dev_rep* rep_dev )
销毁使用 doca_devemu_pci_dev_create_rep() 创建的 representor 设备。
参数
rep_dev
先前初始化的表示器设备实例。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'rep_dev' 为 NULL 或已损坏
  • DOCA_ERROR_NOT_PERMITTED - 表示器不是使用 doca_devemu_pci_dev_create_rep() 创建的
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

表示器设备对主机不可见。表示器设备将无法使用表示器的发现机制发现。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create ( const char* name, doca_devemu_pci_type** pci_type )
创建已停止的 DOCA devemu pci 类型。
参数
name
要分配给创建的 DOCA devemu pci 类型的名称。以 NULL 结尾的字符串不得超过 DOCA_DEVEMU_PCI_TYPE_NAME_LEN。
pci_type
已创建且已停止的 DOCA devemu pci 类型。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'name' 或 'pci_type' 为 NULL
  • DOCA_ERROR_NO_MEMORY - 分配失败
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create_rep_list ( doca_devemu_pci_type* pci_type, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
为给定的 devemu pci 类型创建可用 representor 设备列表。
参数
pci_type
DOCA devemu pci 类型。必须已启动。
dev_list_rep
指向指针数组的指针。然后可以按如下方式访问输出 (*dev_list_rep)[idx]。
nb_devs_rep
可用代表设备的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

返回与提供的 devemu pci 类型系列关联的所有表示器。提供的 pci 类型必须已启动。表示器可以表示当前连接到主机 PCI 子系统的模拟 PCI 功能,也可以表示旨在热插拔到主机 PCI 子系统中的模拟 PCI 功能。

注意

返回的列表必须使用 doca_devinfo_rep_destroy_list() 销毁


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_destroy ( doca_devemu_pci_type* pci_type )
销毁 DOCA devemu pci 类型。
参数
pci_type
要销毁的 DOCA devemu pci 类型。必须已停止。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_class_code ( const doca_devemu_pci_type* pci_type, uint32_t* class_code )
获取 pci 类型的 PCI 类代码,以识别通用操作。
参数
pci_type
要查询的 DOCA pci 类型。
class_code
PCI 类代码,用于标识通用操作。只有 24 个 LSB 位有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'class_code' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_dev ( const doca_devemu_pci_type* pci_type, doca_dev** dev )
获取 pci 类型的 doca 设备。
参数
pci_type
要查询的 DOCA devemu pci 类型。
dev
DOCA 设备。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'dev' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_device_id ( const doca_devemu_pci_type* pci_type, uint16_t* device_id )
获取 pci 类型的 PCI 设备 ID。
参数
pci_type
要查询的 DOCA pci 类型。
device_id
供应商分配的 PCI 设备 ID (DID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'device_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_name ( const doca_devemu_pci_type* pci_type, char(*) name[DOCA_DEVEMU_PCI_TYPE_NAME_LEN] )
获取 pci 类型的名称。
参数
pci_type
要查询的 DOCA pci 类型。
name
pci 类型的名称。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'name' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_num_msix ( const doca_devemu_pci_type* pci_type, uint16_t* num_msix )
从 pci 类型的 MSI-X 功能寄存器获取 MSI-X 表的大小(从 1 开始)。除非另行配置,否则此值将用作关联的 DOCA devemu pci 设备的默认 num_msix 值。
参数
pci_type
要查询的 DOCA pci 类型。
num_msix
MSI-X 表的大小,来自 MSI-X Capability Registers (基于 1)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'num_msix' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_revision_id ( const doca_devemu_pci_type* pci_type, uint8_t* revision_id )
获取 pci 类型的 PCI 修订 ID。
参数
pci_type
要查询的 DOCA pci 类型。
revision_id
供应商分配的 PCI 修订 ID。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'revision_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_id )
获取 pci 类型的 PCI 子系统 ID。
参数
pci_type
要查询的 DOCA pci 类型。
subsystem_id
子系统供应商分配的 PCI 子系统 ID (SSID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'subsystem_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_vid )
获取 pci 类型的 PCI 子系统供应商 ID。
参数
pci_type
要查询的 DOCA pci 类型。
subsystem_vid
PCI-SIG 分配的 PCI 子系统供应商 ID (SVID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'subsystem_vid' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* vendor_id )
获取 pci 类型的 PCI 供应商 ID。
参数
pci_type
要查询的 DOCA pci 类型。
vendor_id
PCI-SIG 分配的 PCI 供应商 ID (VID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'vendor_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_is_started ( const doca_devemu_pci_type* pci_type, uint8_t* started )
检查 pci 类型是否已启动。
参数
pci_type
要查询的 DOCA pci 类型。
started
如果 pci_type 已启动,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'started' 为 NULL。
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_modify_bar_stateful_region_default_values ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, void* default_values, uint64_t size )
修改 DOCA devemu pci 类型中已配置的状态区域的默认寄存器值。
参数
pci_type
DOCA devemu pci 类型。必须已启动,且不得与任何 pci_dev 或 doca_dev_rep 关联。
id
包含状态区域的 BAR id。此值必须与 doca_devemu_pci_type_set_bar_stateful_region_conf() 期间提供的 id 一致。
start_addr
BAR 内区域的起始地址。此值必须与在 doca_devemu_pci_type_set_bar_stateful_region_conf() 期间提供的起始地址一致。
default_values
包含默认值数据的输入缓冲区。
size
default_values 缓冲区的大小(以字节为单位)。该大小不得小于使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 bar 区域的实际大小。如果大小大于实际大小,则将根据实际大小使用前几个相关字节。缓冲区的其余部分将被忽略。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此方法将修改 pci 类型 BAR 中整个状态区域寄存器区域的默认值(在首次修改之前,状态区域寄存器的初始默认值被清零)。使用 doca_devemu_pci_dev_create_rep() 从关联的 pci_type 创建的 doca_dev_rep 将在创建时继承这些默认值。此外,每个从关联的 doca_dev_rep 创建的 pci_dev 都有机会通过调用 doca_devemu_pci_dev_modify_bar_stateful_region_default_values() 来更新其自身的默认值,而不会影响 pci_type 的默认值。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_data_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint16_t db_id_msbyte, uint16_t db_id_lsbyte )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据写入门铃的数据来识别与此门铃 BAR 区域关联的门铃。门铃标识符将通过 db_id_lsbyte 和 db_id_msbyte 设置从写入的门铃数据中推断出来。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 doca_devemu_pci_cap_bar_db_region_get_region_block_size()doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks() 一致。
log_db_size
单个门铃大小,以字节为单位,以 Log (以 2 为底) 单位给出。此值必须与 doca_devemu_pci_cap_type_get_log_min_db_size()doca_devemu_pci_cap_type_get_log_max_db_size() 一致。
db_id_msbyte
门铃标识符的起始字节,在驱动程序写入的门铃数据内。如果 db_id_msbyte > db_id_lsbyte,则门铃标识符将被视为小端序。
db_id_lsbyte
门铃标识符的结束字节,在驱动程序写入的门铃数据内。如果 db_id_msbyte > db_id_lsbyte,则门铃标识符将被视为小端序。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_offset_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint8_t log_stride_size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据门铃在其 BAR 中的偏移量来识别与此门铃 BAR 区域关联的门铃。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 doca_devemu_pci_cap_bar_db_region_get_region_block_size()doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks() 一致。
log_db_size
单个门铃大小,以字节为单位,以 Log (以 2 为底) 单位给出。此值必须与 doca_devemu_pci_cap_type_get_log_min_db_size()doca_devemu_pci_cap_type_get_log_max_db_size() 一致。
log_stride_size
单个门铃步长的大小,以字节为单位,以 Log (以 2 为底) 单位给出。此值必须与 doca_devemu_pci_cap_type_get_log_min_db_stride_size()doca_devemu_pci_cap_type_get_log_max_db_stride_size() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_pba_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X PBA BAR 区域配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_msix_pba_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 pci 类型的 num_msix 值相关联,并与 doca_devemu_pci_cap_bar_msix_pba_region_get_region_block_size()doca_devemu_pci_cap_bar_msix_pba_region_get_max_num_region_blocks() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_table_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X 表 BAR 区域配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_msix_table_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 pci 类型的 num_msix 值相关联,并与 doca_devemu_pci_cap_bar_msix_table_region_get_region_block_size()doca_devemu_pci_cap_bar_msix_table_region_get_max_num_region_blocks() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_stateful_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个状态 BAR 区域配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_stateful_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 doca_devemu_pci_cap_bar_stateful_region_get_region_block_size()doca_devemu_pci_cap_bar_stateful_region_get_max_num_region_blocks() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

状态 BAR 区域将由设备用于向驱动程序公开寄存器。此区域将由设备主动维护。对此区域的 PCI READ 事务将由设备自动应答。PCI WRITE 事务将由设备存储到此区域。如果注册了 doca_devemu_pci_dev_event_bar_stateful_region_driver_write 事件,则当设备驱动程序发起对此区域的任何 PCI WRITE 事务时,关联的 pci_dev 将收到通知。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_class_code ( doca_devemu_pci_type* pci_type, uint32_t class_code )
设置 pci 类型的 PCI 类代码,以标识通用操作。
参数
pci_type
要修改的 DOCA pci 上下文。必须未启动。
class_code
PCI 类代码,用于标识通用操作。只有 24 个 LSB 位有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_dev ( doca_devemu_pci_type* pci_type, doca_dev* dev )
设置 pci 类型的 doca 设备。
参数
pci_type
要修改的 DOCA devemu pci 类型。必须未启动。
dev
DOCA 设备。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
  • DOCA_ERROR_NOT_PERMITTED - 无法为默认 pci 类型设置设备
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_device_id ( doca_devemu_pci_type* pci_type, uint16_t device_id )
设置 pci 类型的 PCI 设备 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
device_id
要分配的 PCI 设备 ID (DID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_io_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz )
为 DOCA devemu pci 类型设置 IO BAR 布局配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
BAR id。
log_sz
BAR 大小,以 Log (以 2 为底) 单位给出。如果之前的 BAR 需要扩展(例如,对于 64 位 BAR),则必须设置为 0。否则,此值必须与 doca_devemu_pci_cap_type_get_log_min_bar_size()doca_devemu_pci_cap_type_get_log_max_bar_size() 功能一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述
注意

此配置仅适用于由 doca_devemu_pci_type_create() 创建的类型


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_memory_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz, doca_devemu_pci_bar_mem_type memory_type, uint8_t prefetchable )
为 DOCA devemu pci 类型设置内存 BAR 布局配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
BAR id。
log_sz
BAR 大小,以 Log (以 2 为底) 单位给出。如果之前的 BAR 需要扩展(例如,对于 64 位 BAR),则必须设置为 0。否则,此值必须与 doca_devemu_pci_cap_type_get_log_min_bar_size()doca_devemu_pci_cap_type_get_log_max_bar_size() 功能一致。
memory_type
要为此 BAR 公开的内存类型值。
prefetchable
要为此 BAR 公开的可预取位值。如果 BAR 不包含读取时会产生副作用的位置,则设置为 1。如果 BAR 包含读取时会产生副作用的位置,或函数不容忍写入合并的位置,则设置为 0。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述
注意

此配置仅适用于由 doca_devemu_pci_type_create() 创建的类型


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_num_msix ( doca_devemu_pci_type* pci_type, uint16_t num_msix )
从 pci 类型的 MSI-X 功能寄存器(基于 1)设置 MSI-X 表的大小。必须符合 doca_devemu_pci_cap_type_get_max_num_msix()。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
num_msix
MSI-X 表的大小,来自 MSI-X Capability Registers (基于 1)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_revision_id ( doca_devemu_pci_type* pci_type, uint8_t revision_id )
设置 pci 类型的 PCI 修订 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
revision_id
要分配的 PCI 修订 ID。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_id )
设置 pci 类型的 PCI 子系统 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
subsystem_id
要分配的 PCI 子系统 ID (SSID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_vid )
设置 pci 类型的 PCI 子系统供应商 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
subsystem_vid
PCI-SIG 分配的 PCI 子系统供应商 ID (SVID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t vendor_id )
设置 pci 类型的 PCI 供应商 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
vendor_id
PCI-SIG 分配的 PCI 供应商 ID (VID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_start ( doca_devemu_pci_type* pci_type )
启动 DOCA devemu pci 类型。
参数
pci_type
要启动的 DOCA devemu pci 类型。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL 或之前提供了无效的 PCI 参数
  • DOCA_ERROR_BAD_STATE - 类型已启动
  • DOCA_ERROR_NOT_FOUND - 未提供设备 - 使用 doca_devemu_pci_type_set_dev()
  • DOCA_ERROR_NO_MEMORY - 分配失败
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述
注意

此方法成功后,将禁用配置 DOCA devemu pci 类型的功能。


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_stop ( doca_devemu_pci_type* pci_type )
停止 DOCA devemu pci 类型。
参数
pci_type
要停止的 DOCA devemu pci 类型。不得与任何 pci 设备关联。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 类型已停止
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述
注意

此方法成功后,将重新启用配置 DOCA devemu pci 类型的功能。


2.10.2. DOCA 设备模拟 - Virtio FS 设备

[ DOCA 设备仿真 ]

用于模拟 virtio FS 设备的 DOCA 库

模块
 DOCA 设备模拟 - Virtio FS 设备类型
 
 DOCA 设备模拟 - Virtio FS IO 上下文
 
宏定义
#define DOCA_VFS_TAG_SIZE 21
DOCA 中 virtio FS 标签的大小,以字节为单位。根据规范,这是与文件系统关联的名称。标签以 UTF-8 编码,如果短于可用空间,则用 NULL 字节填充。根据 Virtio 规范,此字段不是以 NULL 结尾的。在 DOCA 中,标签编码比 Virtio 规范中短,并且必须以 NULL 结尾(仅允许前 20 个字节以非 NULL 字节编码)。
函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_dev_as_ctx ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA 上下文。
DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_vfs_dev_as_pci_dev ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA devemu PCI 设备。
DOCA_EXPERIMENTAL doca_devemu_virtio_dev* doca_devemu_vfs_dev_as_virtio_dev ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA Virtio 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_create ( doca_devemu_vfs_type* vfs_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_vfs_dev** vfs_dev )
分配 DOCA Virtio FS 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_destroy ( doca_devemu_vfs_dev* vfs_dev )
释放 DOCA Virtio FS 设备对象。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_notify_buf_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* notify_buf_size )
获取 VIRTIO FS 设备 notify_buf_size 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_num_request_queues ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* num_request_queues )
获取 VIRTIO FS 设备 num_request_queues 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_tag ( const doca_devemu_vfs_dev* vfs_dev, char  tag[DOCA_VFS_TAG_SIZE] )
获取 Virtio FS 设备标签的值。根据规范,标签以 UTF-8 编码,如果短于 36 字节的可用空间,则用 NULL 字节填充,如果编码字节占用整个 36 字节字段,则不以 NULL 结尾。在 DOCA 中,标签始终以 NULL 结尾,并且比 Virtio 规范定义短。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_vfs_notification_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
获取将为用户代表分配的每个 doca_devemu_vfs_notification_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_notification_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_notification_req 完成后变为无效。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_vfs_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
获取将为用户代表分配的每个 doca_devemu_vfs_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_req 完成后变为无效。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_notify_buf_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t notify_buf_size )
设置 VIRTIO FS 设备 notify_buf_size 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_num_request_queues ( doca_devemu_vfs_dev* vfs_dev, uint32_t num_request_queues )
设置 VIRTIO FS 设备 num_request_queues 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_tag ( doca_devemu_vfs_dev* vfs_dev, const char  tag[DOCA_VFS_TAG_SIZE] )
设置 Virtio FS 设备标签的值。根据规范,标签以 UTF-8 编码,如果短于 36 字节的可用空间,则用 NULL 字节填充,如果编码字节占用整个 36 字节字段,则不以 NULL 结尾。在 DOCA 中,标签始终以 NULL 结尾,并且比 Virtio 规范定义短。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_vfs_notification_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
设置将为用户代表分配的每个 doca_devemu_vfs_notification_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_notification_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_notification_req 完成后变为无效。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_vfs_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
设置将为用户代表分配的每个 doca_devemu_vfs_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_req 完成后变为无效。
宏定义
#define DOCA_VFS_TAG_SIZE 21

函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_dev_as_ctx ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA 上下文。
参数
vfs_dev
DOCA Virtio FS 设备实例。在不再需要 DOCA 上下文之前,它必须保持有效。

返回值

成功时返回 doca ctx,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_vfs_dev_as_pci_dev ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA devemu PCI 设备。
参数
vfs_dev
DOCA Virtio FS 设备实例。在不再需要 DOCA devemu PCI 设备之前,它必须保持有效。

返回值

成功时返回 DOCA devemu pci 设备,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_virtio_dev* doca_devemu_vfs_dev_as_virtio_dev ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA Virtio 设备。
参数
vfs_dev
DOCA Virtio FS 设备实例。在不再需要 DOCA Virtio 设备之前,它必须保持有效。

返回值

成功时返回 doca virtio 设备,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_create ( doca_devemu_vfs_type* vfs_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_vfs_dev** vfs_dev )
分配 DOCA Virtio FS 设备。
参数
vfs_type
要与设备关联的 DOCA Virtio FS 类型。必须已启动。
dev_rep
Representor DOCA 设备。
progress_engine
将用于接收事件和任务完成的进度引擎。
vfs_dev
新创建的 DOCA Virtio FS 设备。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_destroy ( doca_devemu_vfs_dev* vfs_dev )
释放 DOCA Virtio FS 设备对象。
参数
vfs_dev
先前创建的 DOCA Virtio FS 设备。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_notify_buf_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* notify_buf_size )
获取 VIRTIO FS 设备 notify_buf_size 寄存器的值。
参数
vfs_dev
要查询的 DOCA Virtio FS 设备实例。
notify_buf_size
根据 virtio 规范,virtio_fs_config:notify_buf_size 寄存器的值。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'notify_buf_size' 为 NULL
描述

仅当设置了 VIRTIO_FS_F_NOTIFICATION 特性位时,notify_buf_size 值才会被使用。因此,在启动关联的 vfs_dev 之前,notify_buf_size 值必须符合 VIRTIO_FS_F_NOTIFICATION 特性位。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_num_request_queues ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* num_request_queues )
获取 VIRTIO FS 设备 num_request_queues 寄存器的值。
参数
vfs_dev
要查询的 DOCA Virtio FS 设备实例。
num_request_queues
根据 virtio 规范,设备 virtio_fs_config:num_request_queues 寄存器的值。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'num_request_queues' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_tag ( const doca_devemu_vfs_dev* vfs_dev, char  tag[DOCA_VFS_TAG_SIZE] )
获取 Virtio FS 设备标签的值。根据规范,标签以 UTF-8 编码,如果短于 36 字节的可用空间,则用 NULL 字节填充,如果编码字节占用整个 36 字节字段,则不以 NULL 结尾。在 DOCA 中,标签始终以 NULL 结尾,并且比 Virtio 规范定义短。
参数
vfs_dev
要查询的 DOCA Virtio FS 设备实例。
tag
根据 Virtio 规范,Virtio FS 设备 virtio_fs_config:tag 的值(以 NULL 结尾)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'tag' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_vfs_notification_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
获取将为用户代表分配的每个 doca_devemu_vfs_notification_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_notification_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_notification_req 完成后变为无效。
参数
vfs_dev
要查询的 DOCA Virtio FS 设备实例。
req_user_data_size
将代表用户为每个 doca_devemu_vfs_notification_req 分配的用户数据缓冲区大小,以字节为单位。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'req_user_data_size' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_vfs_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
获取将为用户代表分配的每个 doca_devemu_vfs_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_req 完成后变为无效。
参数
vfs_dev
要查询的 DOCA Virtio FS 设备实例。
req_user_data_size
将代表用户为每个 doca_devemu_vfs_req 分配的用户数据缓冲区大小,以字节为单位。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'req_user_data_size' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_notify_buf_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t notify_buf_size )
设置 VIRTIO FS 设备 notify_buf_size 寄存器的值。
参数
vfs_dev
要修改的 DOCA Virtio FS 设备实例。必须处于空闲状态。
notify_buf_size
根据 virtio 规范,virtio_fs_config:notify_buf_size 寄存器的值。如果设置了 VIRTIO_FS_F_NOTIFICATION 位,则此值必须是 2 的幂。如果未设置 VIRTIO_FS_F_NOTIFICATION 特性位,则可以使用值 0。notify_buf_size 和 VIRTIO_FS_F_NOTIFICATION 之间的符合性将在启动关联的 vfs_dev 时进行验证。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 为 NULL 或 notify_buf_size 值无效。
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态
描述

仅当设置了 VIRTIO_FS_F_NOTIFICATION 特性位时,notify_buf_size 值才会被使用。因此,在启动关联的 vfs_dev 之前,notify_buf_size 值必须符合 VIRTIO_FS_F_NOTIFICATION 特性位。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_num_request_queues ( doca_devemu_vfs_dev* vfs_dev, uint32_t num_request_queues )
设置 VIRTIO FS 设备 num_request_queues 寄存器的值。
参数
vfs_dev
要修改的 DOCA Virtio FS 设备实例。必须处于空闲状态。
num_request_queues
根据 virtio 规范,设备 virtio_fs_config:num_request_queues 寄存器的值。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_tag ( doca_devemu_vfs_dev* vfs_dev, const char  tag[DOCA_VFS_TAG_SIZE] )
设置 Virtio FS 设备标签的值。根据规范,标签以 UTF-8 编码,如果短于 36 字节的可用空间,则用 NULL 字节填充,如果编码字节占用整个 36 字节字段,则不以 NULL 结尾。在 DOCA 中,标签始终以 NULL 结尾,并且比 Virtio 规范定义短。
参数
vfs_dev
要修改的 DOCA Virtio FS 设备实例。必须处于空闲状态。
tag
根据 Virtio 规范,Virtio FS 设备 virtio_fs_config:tag 的值(以 NULL 结尾)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'tag' 为 NULL
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态
  • DOCA_ERROR_TOO_BIG - 标签大于 20 字节
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_vfs_notification_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
设置将为用户代表分配的每个 doca_devemu_vfs_notification_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_notification_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_notification_req 完成后变为无效。
参数
vfs_dev
要修改的 DOCA Virtio FS 设备实例。必须处于空闲状态。
req_user_data_size
将代表用户为每个 doca_devemu_vfs_notification_req 分配的用户数据缓冲区大小,以字节为单位。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_vfs_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
设置将为用户代表分配的每个 doca_devemu_vfs_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_req 完成后变为无效。
参数
vfs_dev
要修改的 DOCA Virtio FS 设备实例。必须处于空闲状态。
req_user_data_size
将代表用户为每个 doca_devemu_vfs_req 分配的用户数据缓冲区大小,以字节为单位。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态
描述

DOCA 设备模拟 - Virtio FS IO 上下文

DOCA 设备模拟 - Virtio FS 设备类型

2.10.2.1. DOCA 设备模拟 - Virtio FS IO 上下文
[ DOCA 设备模拟 - Virtio FS 设备 ]

DOCA Virtio FS IO 上下文

类型定义
typedef void  ( *doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t )( doca_devemu_vfs_notification_req*  req, void*  req_user_data,  union doca_data event_user_data )
在 vfs_notification_req_notice 事件发生时要执行的函数。doca_devemu_vfs_notification_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。
typedef void  ( *doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t )( doca_devemu_vfs_req*  req, void*  req_user_data,  union doca_data event_user_data )
在 vfs_req_notice 事件发生时要执行的函数。doca_devemu_vfs_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。
函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_io_as_ctx ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA 上下文。
DOCA_EXPERIMENTAL doca_devemu_virtio_io* doca_devemu_vfs_io_as_virtio_io ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA Virtio 设备 IO 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_create ( doca_devemu_vfs_dev* vfs_dev, doca_pe* progress_engine, doca_devemu_vfs_io** io )
为 DOCA Virtio FS 设备分配 Virtio FS 设备 IO 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_destroy ( doca_devemu_vfs_io* io )
释放 Virtio FS 设备 IO 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_notification_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS notification_request 通知。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS 请求通知。
DOCA_EXPERIMENTAL void doca_devemu_vfs_notification_req_complete ( doca_devemu_vfs_notification_req* req, uint32_t len )
完成 Virtio FS notification_request。请求所有权(包括相关联的 dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_notification_req_get_dataout ( doca_devemu_vfs_notification_req* req )
获取与 Virtio FS 通知请求的 dataout 部分关联的 doca 缓冲区。
DOCA_EXPERIMENTAL void doca_devemu_vfs_req_complete ( doca_devemu_vfs_req* req, uint32_t len )
完成 Virtio FS 请求。请求所有权(包括相关联的 datain、dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_datain ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 datain 部分关联的 doca 缓冲区。
DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_datain_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_datain() 返回的 Virtio FS 请求的 datain 部分关联的原始 doca 缓冲区链表中的元素数量。
DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_dataout ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 dataout 部分关联的 doca 缓冲区。
DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_dataout_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_dataout() 返回的 Virtio FS 请求的 dataout 部分关联的原始 doca 缓冲区链表中的元素数量。
类型定义
void ( *doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t )( doca_devemu_vfs_notification_req*  req, void*  req_user_data,  union doca_data event_user_data )

在 vfs_notification_req_notice 事件发生时要执行的函数。doca_devemu_vfs_notification_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。

参数
req
到达的请求。
req_user_data
与请求关联的用户数据。
union doca_data event_user_data

void ( *doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t )( doca_devemu_vfs_req*  req, void*  req_user_data,  union doca_data event_user_data )

在 vfs_req_notice 事件发生时要执行的函数。doca_devemu_vfs_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。

参数
req
到达的请求。
req_user_data
与请求关联的用户数据。
union doca_data event_user_data

函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_io_as_ctx ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA 上下文。
参数
io
DOCA Virtio FS 设备 IO 上下文实例。在 DOCA 上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca ctx,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_virtio_io* doca_devemu_vfs_io_as_virtio_io ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA Virtio 设备 IO 上下文。
参数
io
DOCA Virtio FS 设备 IO 上下文实例。在 DOCA Virtio 设备 IO 上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca devemu virtio 设备 io 上下文,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_create ( doca_devemu_vfs_dev* vfs_dev, doca_pe* progress_engine, doca_devemu_vfs_io** io )
为 DOCA Virtio FS 设备分配 Virtio FS 设备 IO 上下文。
参数
vfs_dev
DOCA Virtio FS 设备。
progress_engine
将用于推进新上下文的进度引擎。
io
创建的 DOCA Virtio FS 设备 IO 上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

Virtio FS IO 上下文的职责是将来自设备驱动程序的请求中继到 Virtio FS 服务和应用程序。此外,它还负责将来自 Virtio FS 服务和应用程序的完成中继到设备驱动程序。每个 Virtio FS 设备 IO 上下文都与单个 DOCA Virtio FS 设备关联。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_destroy ( doca_devemu_vfs_io* io )
释放 Virtio FS 设备 IO 上下文。
参数
io
要释放的 DOCA Virtio FS 设备 IO 上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_notification_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS notification_request 通知。
参数
io
要与事件关联的 DOCA Virtio FS 设备 IO 上下文。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'io' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - IO 未处于空闲状态
描述

注册只能在 IO ctx 处于空闲状态时完成。如果多次调用,则只有最后一次调用生效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS 请求通知。
参数
io
要与事件关联的 DOCA Virtio FS 设备 IO 上下文。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'io' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - IO 未处于空闲状态
描述

注册只能在 IO ctx 处于空闲状态时完成。如果多次调用,则只有最后一次调用生效。

DOCA_EXPERIMENTAL void doca_devemu_vfs_notification_req_complete ( doca_devemu_vfs_notification_req* req, uint32_t len )
完成 Virtio FS notification_request。请求所有权(包括相关联的 dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
参数
req
要完成的 Virtio FS notification_request。
len
写入到 req 描述的缓冲区设备可写部分的字节数。

描述

DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_notification_req_get_dataout ( doca_devemu_vfs_notification_req* req )
获取与 Virtio FS 通知请求的 dataout 部分关联的 doca 缓冲区。
参数
req
要查询的 Virtio FS 通知请求。

返回值

表示设备可写部分主机内存的 doca 缓冲区,根据 virtio 规范,virtio_fs_notify::(out_hdr + outarg) 与成功时的通知请求相关联。否则为 NULL。

描述

此函数应在将请求调度到将写入 doca 缓冲区的执行上下文期间发出。

DOCA_EXPERIMENTAL void doca_devemu_vfs_req_complete ( doca_devemu_vfs_req* req, uint32_t len )
完成 Virtio FS 请求。请求所有权(包括相关联的 datain、dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
参数
req
要完成的 Virtio FS 请求。
len
写入到 req 描述的缓冲区设备可写部分的字节数。

描述

DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_datain ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 datain 部分关联的 doca 缓冲区。
参数
req
要查询的 Virtio FS 请求。

返回值

表示设备可读部分主机内存的 doca 缓冲区,根据 virtio 规范,virtio_fs_req::(in + datain) 与成功时的请求相关联。否则为 NULL。

描述

此函数应在将请求调度到将从 doca 缓冲区读取数据的执行上下文期间发出。

DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_datain_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_datain() 返回的 Virtio FS 请求的 datain 部分关联的原始 doca 缓冲区链表中的元素数量。
参数
req
要查询的 Virtio FS 请求。不得为 NULL。

返回值

原始 datain doca 缓冲区链表中的元素数量。仅当请求的所有权归用户所有时才有效。

描述

DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_dataout ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 dataout 部分关联的 doca 缓冲区。
参数
req
要查询的 Virtio FS 请求。

返回值

表示设备可写部分主机内存的 doca 缓冲区,根据 virtio 规范,virtio_fs_req::(out + dataout) 与成功时的请求相关联。否则为 NULL。

描述

此函数应在将请求调度到将写入 doca 缓冲区的执行上下文期间发出。

DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_dataout_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_dataout() 返回的 Virtio FS 请求的 dataout 部分关联的原始 doca 缓冲区链表中的元素数量。
参数
req
要查询的 Virtio FS 请求。不得为 NULL。

返回值

原始 dataout doca 缓冲区链表中的元素数量。仅当请求的所有权归用户所有时才有效。

描述

2.10.2.2. DOCA 设备仿真 - Virtio FS 设备类型
[ DOCA 设备模拟 - Virtio FS 设备 ]

DOCA Virtio FS 类型

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
查找与设备关联的默认 DOCA Virtio FS 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持默认 DOCA Virtio FS 类型。
DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA PCI 类型。
DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA Virtio 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
获取 num_request_queues 寄存器的值。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
查找与设备关联的默认 DOCA Virtio FS 类型。
参数
dev
与默认类型关联的 doca dev。
vfs_type
启动的 DOCA Virtio FS 默认类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持默认 DOCA Virtio FS 类型。
参数
devinfo
要查询的设备。
supported
如果设备支持默认 Virtio FS 类型,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo' 或 'supported' 为 NULL。
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

获取 uint8_t 值,定义设备是否可以用于管理与默认 Virtio FS 类型关联的 DOCA Virtio FS 仿真设备。

DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA PCI 类型。
参数
vfs_type
DOCA Virtio FS 类型实例。在 DOCA PCI 类型不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA PCI 类型,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA Virtio 类型。
参数
vfs_type
DOCA Virtio FS 类型实例。在 DOCA Virtio 类型不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA Virtio 类型,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
获取 num_request_queues 寄存器的值。
参数
vfs_type
要查询的 DOCA Virtio FS 类型实例。
num_request_queues
根据 virtio 规范,virtio_fs_config:num_request_queues 寄存器值,默认情况下,将由与 vfs_type 关联的设备使用。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_type' 或 'num_request_queues' 为 NULL
描述

2.10.3. DOCA 设备仿真 - Virtio 设备

[ DOCA 设备仿真 ]

用于仿真 virtio 设备逻辑的 DOCA 库

模块
 DOCA 设备模拟 - Virtio 设备类型
 
 DOCA 设备模拟 - Virtio IO 上下文
 
类型定义
typedef void  ( *doca_devemu_virtio_dev_event_reset_handler_cb_t )( doca_devemu_virtio_dev*  virtio_dev,  union doca_data event_user_data )
在 Virtio 设备复位时执行的函数。事件处理程序将允许用户暂停、刷新和复位与仿真的 Virtio 设备关联的必要资源。发生事件时,所有到/从主机内存的 PCI I/O 事务都被禁用。此外,用户应刷新与仿真的 Virtio 设备关联的所有未完成资源,这些资源最初由 Virtio 设备拥有,并已将所有权移交给用户。刷新所有未完成资源后,用户应调用 doca_devemu_virtio_dev_reset_complete()。
函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_virtio_dev_as_ctx ( doca_devemu_virtio_dev* virtio_dev )
将 DOCA Virtio 设备实例转换为 DOCA 上下文。
DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_virtio_dev_as_pci_dev ( doca_devemu_virtio_dev* virtio_dev )
将 DOCA Virtio 设备实例转换为 DOCA devemu PCI 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_event_reset_register ( doca_devemu_virtio_dev* virtio_dev, doca_devemu_virtio_dev_event_reset_handler_cb_t handler, doca_data user_data )
注册 Virtio 设备复位事件。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_config_generation ( const doca_devemu_virtio_dev* virtio_dev, uint8_t* config_generation )
根据 Virtio 规范,从公共配置结构中获取 Virtio config_generation 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_config_msix_vector ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* config_msix_vector )
根据 Virtio 规范,获取 Virtio config_msix_vector 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_device_features_63_0 ( const doca_devemu_virtio_dev* virtio_dev, uint64_t* features )
根据 Virtio 规范,获取 Virtio device_feature 位 (0-63)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_device_status ( const doca_devemu_virtio_dev* virtio_dev, uint8_t* device_status )
根据 Virtio 规范,从公共配置结构中获取 Virtio device_status 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_driver_features_63_0 ( const doca_devemu_virtio_dev* virtio_dev, uint64_t* features )
根据 Virtio 规范,获取 Virtio driver_feature 位 (0-63)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_enabled_queues ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* num_queues )
获取驱动程序启用的 Virtio 设备队列的数量。驱动程序通过将相应的队列索引设置为 queue_select 寄存器并将 queue_enable 寄存器设置为 1 来启用队列。仅当驱动程序设置了 DRIVER_OK 状态位时,num_queues 的返回值才有效。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_queues ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* num_queues )
根据 Virtio 规范,从公共配置结构中获取 Virtio 设备 num_queues 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_required_running_virtio_io_ctxs ( const doca_devemu_virtio_dev* virtio_dev, uint32_t* num_virtio_io )
获取绑定到 Virtio 设备上下文所需的正在运行的 Virtio io 上下文的数量。Virtio 设备上下文在绑定此数量的正在运行的 Virtio IO 上下文之前不会移动到“运行”状态。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_queue_size ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* queue_size )
获取所有 Virtio 队列的 Virtio 最大队列大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_reset_complete ( doca_devemu_virtio_dev* virtio_dev )
完成 Virtio 设备复位处理。在调用此函数之前,用户必须确保与 Virtio 设备关联的所有资源都已刷新回设备的所有权。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_device_features_63_0 ( doca_devemu_virtio_dev* virtio_dev, uint64_t features )
根据 Virtio 规范,设置 Virtio device_feature 位 (0-63)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_num_queues ( doca_devemu_virtio_dev* virtio_dev, uint16_t num_queues )
根据 Virtio 规范,在公共配置结构中设置 Virtio 设备 num_queues 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_num_required_running_virtio_io_ctxs ( doca_devemu_virtio_dev* virtio_dev, uint32_t num_virtio_io )
设置绑定到 Virtio 设备上下文所需的正在运行的 Virtio IO 上下文的数量。Virtio 设备上下文在绑定此数量的正在运行的 Virtio IO 上下文之前不会移动到“运行”状态。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_queue_size ( doca_devemu_virtio_dev* virtio_dev, uint16_t queue_size )
设置所有 Virtio 队列的 Virtio 最大队列大小。
类型定义
void ( *doca_devemu_virtio_dev_event_reset_handler_cb_t )( doca_devemu_virtio_dev*  virtio_dev,  union doca_data event_user_data )

在 Virtio 设备复位时执行的函数。事件处理程序将允许用户暂停、刷新和复位与仿真的 Virtio 设备关联的必要资源。发生事件时,所有到/从主机内存的 PCI I/O 事务都被禁用。此外,用户应刷新与仿真的 Virtio 设备关联的所有未完成资源,这些资源最初由 Virtio 设备拥有,并已将所有权移交给用户。刷新所有未完成资源后,用户应调用 doca_devemu_virtio_dev_reset_complete()。

参数
virtio_dev
DOCA Virtio 设备实例。
union doca_data event_user_data

函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_virtio_dev_as_ctx ( doca_devemu_virtio_dev* virtio_dev )
将 DOCA Virtio 设备实例转换为 DOCA 上下文。
参数
virtio_dev
DOCA Virtio 设备实例。在 DOCA 上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca ctx,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_virtio_dev_as_pci_dev ( doca_devemu_virtio_dev* virtio_dev )
将 DOCA Virtio 设备实例转换为 DOCA devemu PCI 设备。
参数
virtio_dev
DOCA Virtio 设备实例。在 DOCA devemu PCI 设备不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA devemu pci 设备,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_event_reset_register ( doca_devemu_virtio_dev* virtio_dev, doca_devemu_virtio_dev_event_reset_handler_cb_t handler, doca_data user_data )
注册 Virtio 设备复位事件。
参数
virtio_dev
要与事件关联的 DOCA Virtio dev 上下文。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'virtio_dev' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - virtio_dev 上下文未处于空闲状态
描述

注册只能在 Virtio 设备 ctx 处于空闲状态时完成。如果多次调用,则只有最后一次调用生效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_config_generation ( const doca_devemu_virtio_dev* virtio_dev, uint8_t* config_generation )
根据 Virtio 规范,从公共配置结构中获取 Virtio config_generation 寄存器。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
config_generation
config_generation 寄存器的值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_config_msix_vector ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* config_msix_vector )
根据 Virtio 规范,获取 Virtio config_msix_vector 寄存器。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
config_msix_vector
根据 Virtio 规范,config_msix_vector 寄存器的值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_device_features_63_0 ( const doca_devemu_virtio_dev* virtio_dev, uint64_t* features )
根据 Virtio 规范,获取 Virtio device_feature 位 (0-63)。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
features
根据 Virtio 规范,device_feature(位 0-63)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_device_status ( const doca_devemu_virtio_dev* virtio_dev, uint8_t* device_status )
根据 Virtio 规范,从公共配置结构中获取 Virtio device_status 寄存器。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
device_status
device_status 寄存器的值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_driver_features_63_0 ( const doca_devemu_virtio_dev* virtio_dev, uint64_t* features )
根据 Virtio 规范,获取 Virtio driver_feature 位 (0-63)。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
features
根据 Virtio 规范,driver_feature(位 0-63)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_enabled_queues ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* num_queues )
获取驱动程序启用的 Virtio 设备队列的数量。驱动程序通过将相应的队列索引设置为 queue_select 寄存器并将 queue_enable 寄存器设置为 1 来启用队列。仅当驱动程序设置了 DRIVER_OK 状态位时,num_queues 的返回值才有效。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
num_queues
virtio 设备启用的 Virtio 队列数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_queues ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* num_queues )
根据 Virtio 规范,从公共配置结构中获取 Virtio 设备 num_queues 寄存器。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
num_queues
num_queues 寄存器的值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_required_running_virtio_io_ctxs ( const doca_devemu_virtio_dev* virtio_dev, uint32_t* num_virtio_io )
获取绑定到 Virtio 设备上下文所需的正在运行的 Virtio io 上下文的数量。Virtio 设备上下文在绑定此数量的正在运行的 Virtio IO 上下文之前不会移动到“运行”状态。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
num_virtio_io
绑定到设备所需的正在运行的 Virtio IO ctx 数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_queue_size ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* queue_size )
获取所有 Virtio 队列的 Virtio 最大队列大小。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
queue_size
所有 Virtio 队列的最大队列大小。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_reset_complete ( doca_devemu_virtio_dev* virtio_dev )
完成 Virtio 设备复位处理。在调用此函数之前,用户必须确保与 Virtio 设备关联的所有资源都已刷新回设备的所有权。
参数
virtio_dev
DOCA Virtio 设备实例。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_device_features_63_0 ( doca_devemu_virtio_dev* virtio_dev, uint64_t features )
根据 Virtio 规范,设置 Virtio device_feature 位 (0-63)。
参数
virtio_dev
要修改的 DOCA Virtio 设备实例。
features
根据 Virtio 规范,device_feature(位 0-63)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_num_queues ( doca_devemu_virtio_dev* virtio_dev, uint16_t num_queues )
根据 Virtio 规范,在公共配置结构中设置 Virtio 设备 num_queues 寄存器。
参数
virtio_dev
要修改的 DOCA Virtio 设备实例。
num_queues
设备公共 num_queues 寄存器。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_num_required_running_virtio_io_ctxs ( doca_devemu_virtio_dev* virtio_dev, uint32_t num_virtio_io )
设置绑定到 Virtio 设备上下文所需的正在运行的 Virtio IO 上下文的数量。Virtio 设备上下文在绑定此数量的正在运行的 Virtio IO 上下文之前不会移动到“运行”状态。
参数
virtio_dev
要修改的 DOCA Virtio 设备实例。
num_virtio_io
要绑定的所需正在运行的 Virtio IO ctx 数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_queue_size ( doca_devemu_virtio_dev* virtio_dev, uint16_t queue_size )
设置所有 Virtio 队列的 Virtio 最大队列大小。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
queue_size
所有 Virtio 队列的最大队列大小。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA 设备模拟 - Virtio IO 上下文

DOCA 设备模拟 - Virtio 设备类型

2.10.3.1. DOCA 设备仿真 - Virtio IO 上下文
[ DOCA 设备仿真 - Virtio 设备 ]

DOCA VIRTIO IO 上下文

函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_virtio_io_as_ctx ( doca_devemu_virtio_io* io )
将 DOCA Virtio 设备 IO 上下文实例转换为 doca 上下文。
函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_virtio_io_as_ctx ( doca_devemu_virtio_io* io )
将 DOCA Virtio 设备 IO 上下文实例转换为 doca 上下文。
参数
io
DOCA Virtio 设备 IO 上下文实例。在上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca ctx,否则返回 NULL。

描述

2.10.3.2. DOCA 设备仿真 - Virtio 设备类型
[ DOCA 设备仿真 - Virtio 设备 ]

DOCA Virtio 类型

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_cap_default_type_get_configurable_device_features_63_0 ( const doca_devinfo* devinfo, uint64_t* features )
获取与默认 virtio 类型关联的 Virtio 设备的可配置设备功能位 (0-63) 的位图。
DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_virtio_type_as_pci_type ( doca_devemu_virtio_type* virtio_type )
将 DOCA Virtio 类型实例转换为 DOCA PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_config_generation ( const doca_devemu_virtio_type* virtio_type, uint8_t* config_generation )
根据 Virtio 规范,获取为此类型配置的初始 Virtio 设备 config_generation 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_device_features_63_0 ( const doca_devemu_virtio_type* virtio_type, uint64_t* features )
根据 Virtio 规范,获取为此类型配置的 Virtio device_feature 位 (0-63)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_num_queues ( const doca_devemu_virtio_type* virtio_type, uint16_t* num_queues )
获取 num_queues 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_queue_size ( const doca_devemu_virtio_type* virtio_type, uint16_t* queue_size )
获取 queue_size 寄存器的值。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_cap_default_type_get_configurable_device_features_63_0 ( const doca_devinfo* devinfo, uint64_t* features )
获取与默认 virtio 类型关联的 Virtio 设备的可配置设备功能位 (0-63) 的位图。
参数
devinfo
要查询的设备。
features
与默认 Virtio 类型关联的所有 Virtio 设备的可配置设备功能位的位图。功能位索引遵循 Virtio 规范。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_virtio_type_as_pci_type ( doca_devemu_virtio_type* virtio_type )
将 DOCA Virtio 类型实例转换为 DOCA PCI 类型。
参数
virtio_type
DOCA Virtio 类型实例。在 DOCA PCI 类型不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA PCI 类型,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_config_generation ( const doca_devemu_virtio_type* virtio_type, uint8_t* config_generation )
根据 Virtio 规范,获取为此类型配置的初始 Virtio 设备 config_generation 寄存器。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
config_generation
根据 Virtio 规范,与此类型关联的设备的 config_generation 寄存器的初始值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_device_features_63_0 ( const doca_devemu_virtio_type* virtio_type, uint64_t* features )
根据 Virtio 规范,获取为此类型配置的 Virtio device_feature 位 (0-63)。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
features
根据 Virtio 规范,与此类型关联的设备的 device_feature(位 0-63)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_num_queues ( const doca_devemu_virtio_type* virtio_type, uint16_t* num_queues )
获取 num_queues 寄存器的值。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
num_queues
virtio_type 关联设备在 virtio_common_config:num_queues 寄存器中使用的默认值(根据 Virtio 规范),除非另有设置。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_queue_size ( const doca_devemu_virtio_type* virtio_type, uint16_t* queue_size )
获取 queue_size 寄存器的值。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
queue_size
virtio_type 关联设备在 virtio_common_config:queue_size 寄存器中使用的默认值(根据 Virtio 规范),除非另有设置。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA 设备模拟 - PCI 设备

DOCA 设备模拟 - Virtio FS 设备

DOCA 设备模拟 - Virtio 设备

2.10.1. DOCA 设备仿真 - PCI 设备

[ DOCA 设备仿真 ]

用于仿真 PCI 设备的 DOCA 库

模块
 DOCA 设备模拟 - PCI 设备类型
 
类型定义
typedef void  ( *doca_devemu_pci_dev_event_bar_stateful_region_driver_write_handler_cb_t )( doca_devemu_pci_dev_event_bar_stateful_region_driver_write*  event,  union doca_data user_data )
在对 BAR 状态区域进行 PCI 写入事务时执行的函数。
typedef void  ( *doca_devemu_pci_dev_event_flr_handler_cb_t )( doca_devemu_pci_dev*  pci_dev,  union doca_data user_data )
在 PCI FLR(功能级复位)时执行的函数。事件处理程序将允许用户静止、刷新和复位与仿真的 PCI 设备相关的必要资源。发生事件时,所有到/从主机内存的 PCI I/O 事务均被禁用。此外,用户应重新配置仿真的 PCI 设备。此重新配置需要刷新与仿真的 PCI 设备相关的所有未完成资源,这些资源最初由 PCI 设备拥有,并将所有权转移给用户。重新配置还需要销毁所有相关资源(例如 DB、MSIX、MMAP),复位相关的仿真 PCI 设备(执行 stop() 和 start() 操作)并重新创建所有需要的资源。
typedef void  ( *doca_devemu_pci_dev_event_hotplug_state_change_handler_cb_t )( doca_devemu_pci_dev*  pci_dev,  union doca_data user_data )
在热插拔状态更改事件发生时执行的函数。
typedef uint64_t  doca_dpa_dev_devemu_pci_db_completion_t
用于仿真 PCI 设备门铃完成上下文的 DPA 句柄。
typedef uint64_t  doca_dpa_dev_devemu_pci_db_t
用于仿真 PCI 设备门铃的 DPA 句柄。
typedef uint64_t  doca_dpa_dev_devemu_pci_msix_t
用于仿真 PCI 设备 MSI-X 的 DPA 句柄。
枚举
enum doca_devemu_pci_hotplug_state
DOCA devemu pci 热插拔状态。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_get_max_hotplug_devices ( const doca_devinfo* devinfo, uint32_t* max_hotplug_devices )
获取设备可以热插拔的最大 PCI 设备数量,涵盖所有 PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_create ( doca_dpa_thread* th, doca_devemu_pci_db_completion** db_comp )
在 DPA 上分配 DOCA devemu PCI 设备门铃完成上下文。创建的完成上下文将与单个 dpa 线程关联。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_destroy ( doca_devemu_pci_db_completion* db_comp )
销毁 DOCA devemu PCI 设备门铃完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_curr_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t* num_dbs )
获取与完成上下文关联的当前门铃数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_dpa_handle ( doca_devemu_pci_db_completion* db_comp, doca_dpa_dev_devemu_pci_db_completion_t* db_comp_handle )
获取 DOCA devemu PCI 设备门铃完成上下文的 DPA 句柄。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_max_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t* num_dbs )
获取可以与完成上下文关联的最大门铃数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_set_max_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t num_dbs )
设置可以与完成上下文关联的最大门铃数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_start ( doca_devemu_pci_db_completion* db_comp )
启动 DOCA devemu PCI 设备门铃完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_stop ( doca_devemu_pci_db_completion* db_comp )
停止 DOCA devemu PCI 设备门铃完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_create_on_dpa ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_db_completion* db_comp, uint8_t bar_id, uint64_t bar_start_addr, uint32_t db_id, uint64_t user_data_on_dpa, doca_devemu_pci_db** db )
在 DPA 上分配 DOCA devemu PCI 设备门铃。创建的门铃将与也在 DPA 上创建的单个完成上下文关联。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_destroy ( doca_devemu_pci_db* db )
销毁 DOCA devemu PCI 设备门铃。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_get_dpa_handle ( doca_devemu_pci_db* db, doca_dpa_dev_devemu_pci_db_t* db_handle )
获取 DOCA devemu PCI 设备门铃的 DPA 句柄。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_modify_value ( doca_devemu_pci_db* db, uint32_t db_value )
修改 DOCA devemu PCI 设备门铃的当前值。如果门铃已启动,则此设置的行为将如同门铃值已被 PCI 设备驱动程序修改一样。如果在启动 DOCA devemu PCI 设备门铃之前未修改门铃值,则设备将保持门铃的当前值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_query_value ( doca_devemu_pci_db* db, uint32_t* db_value )
查询 DOCA devemu PCI 设备门铃的当前值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_start ( doca_devemu_pci_db* db )
启动 DOCA devemu PCI 设备门铃。启动的门铃将能够触发关联的门铃完成上下文的完成。因此,如果门铃是在 DPA 上创建的,则应在启动门铃之前将关联的门铃句柄绑定到其门铃完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_stop ( doca_devemu_pci_db* db )
停止 DOCA devemu PCI 设备门铃。停止的门铃将不会触发关联的门铃完成上下文的完成。因此,如果门铃是在 DPA 上创建的,则应在从其门铃完成上下文中取消绑定关联的门铃句柄之前停止门铃。
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_pci_dev_as_ctx ( doca_devemu_pci_dev* pci_dev )
将 DOCA devemu PCI 设备实例转换为 DOCA 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_create ( doca_devemu_pci_type* pci_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_pci_dev** pci_dev )
分配 DOCA devemu PCI 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_destroy ( doca_devemu_pci_dev* pci_dev )
释放 DOCA devemu PCI 设备。
DOCA_EXPERIMENTAL uint8_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_bar_id ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
从 BAR 状态区域驱动程序写入事件获取 BAR id。
DOCA_EXPERIMENTAL uint64_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_bar_region_start_addr ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
获取与 BAR 状态区域驱动程序写入事件关联的 BAR 区域起始地址。
DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_pci_dev ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
从 BAR 状态区域驱动程序写入事件获取 DOCA devemu PCI 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_bar_stateful_region_driver_write_handler_cb_t handler, uint8_t bar_id, uint64_t bar_region_start_addr, doca_data user_data )
注册 BAR 状态区域驱动程序写入事件。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_flr_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_flr_handler_cb_t handler, doca_data user_data )
注册 PCI FLR(功能级复位)事件。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_hotplug_state_change_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_hotplug_state_change_handler_cb_t handler, doca_data user_data )
注册热插拔状态更改。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_get_hotplug_state ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_hotplug_state ** state )
获取 DOCA devemu PCI 设备的热插拔状态。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_hotplug ( doca_devemu_pci_dev* pci_dev )
发出 DOCA devemu PCI 设备的热插拔过程。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_hotunplug ( doca_devemu_pci_dev* pci_dev )
发出 DOCA devemu PCI 设备的热拔出过程。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_is_flr ( const doca_devemu_pci_dev* pci_dev, uint8_t* flr )
查询 DOCA devemu PCI 设备是否正在进行 FLR(功能级复位)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_modify_bar_stateful_region_default_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t start_addr, void* default_values, uint64_t size )
修改 DOCA devemu PCI 设备中状态区域的默认寄存器值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_modify_bar_stateful_region_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t offset, void* values, uint64_t size )
修改 DOCA devemu PCI 设备中状态区域的寄存器值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_query_bar_stateful_region_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t offset, void* out_values, uint64_t size )
查询 DOCA devemu PCI 设备中状态区域的寄存器值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_mmap_create ( doca_devemu_pci_dev* pci_dev, doca_mmap** mmap )
分配零大小内存映射对象,该对象具有与 DOCA devemu PCI 设备关联的默认/未设置属性。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_create_on_dpa ( doca_devemu_pci_dev* pci_dev, uint8_t bar_id, uint64_t bar_start_addr, uint16_t msix_idx, uint64_t user_data_on_dpa, doca_devemu_pci_msix** msix )
在 DPA 上分配 DOCA devemu PCI 设备 MSI-X 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_destroy ( doca_devemu_pci_msix* msix )
销毁 DOCA devemu PCI 设备 MSI-X。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_get_dpa_handle ( doca_devemu_pci_msix* msix, doca_dpa_dev_devemu_pci_msix_t* msix_handle )
获取 DOCA devemu PCI 设备 MSI-X 的 DPA 句柄。
类型定义
void ( *doca_devemu_pci_dev_event_bar_stateful_region_driver_write_handler_cb_t )( doca_devemu_pci_dev_event_bar_stateful_region_driver_write*  event,  union doca_data user_data )

在对 BAR 状态区域进行 PCI 写入事务时执行的函数。

参数
event
BAR 状态区域驱动程序写入事件。
union doca_data user_data

void ( *doca_devemu_pci_dev_event_flr_handler_cb_t )( doca_devemu_pci_dev*  pci_dev,  union doca_data user_data )

在 PCI FLR(功能级复位)时执行的函数。事件处理程序将允许用户静止、刷新和复位与仿真的 PCI 设备相关的必要资源。发生事件时,所有到/从主机内存的 PCI I/O 事务均被禁用。此外,用户应重新配置仿真的 PCI 设备。此重新配置需要刷新与仿真的 PCI 设备相关的所有未完成资源,这些资源最初由 PCI 设备拥有,并将所有权转移给用户。重新配置还需要销毁所有相关资源(例如 DB、MSIX、MMAP),复位相关的仿真 PCI 设备(执行 stop() 和 start() 操作)并重新创建所有需要的资源。

参数
pci_dev
与事件关联的 DOCA devemu PCI 设备。
union doca_data user_data

void ( *doca_devemu_pci_dev_event_hotplug_state_change_handler_cb_t )( doca_devemu_pci_dev*  pci_dev,  union doca_data user_data )

在热插拔状态更改事件发生时执行的函数。

参数
pci_dev
与事件关联的 DOCA devemu PCI 设备。
union doca_data user_data

typedef uint64_t doca_dpa_dev_devemu_pci_db_completion_t

用于仿真 PCI 设备门铃完成上下文的 DPA 句柄。

typedef uint64_t doca_dpa_dev_devemu_pci_db_t

用于仿真 PCI 设备门铃的 DPA 句柄。

typedef uint64_t doca_dpa_dev_devemu_pci_msix_t

用于仿真 PCI 设备 MSI-X 的 DPA 句柄。

枚举
enum doca_devemu_pci_hotplug_state

热插拔设备的步骤如下: 1. 检查当前热插拔状态 1.1 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF,则发出热插拔操作(调用 doca_devemu_pci_dev_hotplug())并等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_ON。 1.2 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_PLUG_IN_PROGRESS,则等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_ON。 1.3 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_UNPLUG_IN_PROGRESS,则等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF 并转到步骤 1.1。 1.4 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_POWER_ON,则不执行任何操作 --> 设备已插入。

热拔出设备的步骤如下: 1. 检查当前热插拔状态 1.1 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_POWER_ON,则发出热拔出操作(调用 doca_devemu_pci_dev_hotunplug())并等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF。 1.2 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_UNPLUG_IN_PROGRESS,则等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF。 1.3 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_PLUG_IN_PROGRESS,则等待过渡到 DOCA_DEVEMU_PCI_HP_STATE_POWER_ON 并转到步骤 1.1,或发出热拔出操作(调用 doca_devemu_pci_dev_hotunplug())然后等待 DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF。 1.4 如果状态 == DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF,则不执行任何操作 --> 设备已拔出。

注意

建议使用 doca_devemu_pci_dev_event_hotplug_state_change 机制来获取有关热插拔状态更改的通知。


DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF = 0
设备已断电,主机不可见。设备处于过渡状态,即将从主机拔出。
DOCA_DEVEMU_PCI_HP_STATE_UNPLUG_IN_PROGRESS
设备处于过渡状态,即将插入主机。
DOCA_DEVEMU_PCI_HP_STATE_PLUG_IN_PROGRESS
设备已通电,主机可见。
DOCA_DEVEMU_PCI_HP_STATE_POWER_ON

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_get_max_hotplug_devices ( const doca_devinfo* devinfo, uint32_t* max_hotplug_devices )
获取设备可以热插拔的最大 PCI 设备数量,涵盖所有 PCI 类型。
参数
devinfo
要查询的设备。
max_hotplug_devices
设备可以热插拔的 PCI 设备数量。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误。
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_create ( doca_dpa_thread* th, doca_devemu_pci_db_completion** db_comp )
在 DPA 上分配 DOCA devemu PCI 设备门铃完成上下文。创建的完成上下文将与单个 dpa 线程关联。
参数
th
要与完成上下文关联的 DOCA dpa 线程。
db_comp
新创建的 DOCA devemu PCI 设备门铃完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_destroy ( doca_devemu_pci_db_completion* db_comp )
销毁 DOCA devemu PCI 设备门铃完成上下文。
参数
db_comp
要销毁的 DOCA devemu PCI 设备门铃完成上下文。必须已停止。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

关联的 dpa 句柄也将被销毁。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_curr_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t* num_dbs )
获取与完成上下文关联的当前门铃数量。
参数
db_comp
要查询的 DOCA devemu PCI 设备门铃完成上下文。
num_dbs
与上下文关联的当前门铃数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_dpa_handle ( doca_devemu_pci_db_completion* db_comp, doca_dpa_dev_devemu_pci_db_completion_t* db_comp_handle )
获取 DOCA devemu PCI 设备门铃完成上下文的 DPA 句柄。
参数
db_comp
先前在 DPA 上创建的 DOCA devemu PCI 设备门铃完成上下文。
db_comp_handle
指向 dpa 内存空间中关联的 DPA 句柄的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_get_max_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t* num_dbs )
获取可以与完成上下文关联的最大门铃数量。
参数
db_comp
要查询的 DOCA devemu PCI 设备门铃完成上下文。
num_dbs
可以与上下文关联的最大门铃数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_set_max_num_dbs ( doca_devemu_pci_db_completion* db_comp, uint32_t num_dbs )
设置可以与完成上下文关联的最大门铃数量。
参数
db_comp
要修改的 DOCA devemu PCI 设备门铃完成上下文。必须已停止。
num_dbs
可以与上下文关联的最大门铃数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_start ( doca_devemu_pci_db_completion* db_comp )
启动 DOCA devemu PCI 设备门铃完成上下文。
参数
db_comp
要启动的 DOCA devemu PCI 设备门铃完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

启动时,验证并最终确定完成上下文配置。

对于启动的完成上下文,可以进行以下操作:

  • 将 DOCA devemu PCI 设备门铃与完成上下文关联。

当完成上下文启动时,以下操作是不可能的:

  • 设置完成上下文的属性。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_completion_stop ( doca_devemu_pci_db_completion* db_comp )
停止 DOCA devemu PCI 设备门铃完成上下文。
参数
db_comp
要停止的 DOCA devemu PCI 设备门铃完成上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

停止时,阻止执行不同的操作,并允许执行启动前可用的操作。 有关详细信息,请参见 doca_devemu_pci_db_completion_start()。 当存在与完成上下文关联的 DOCA devemu PCI 设备门铃时,无法停止完成上下文。

对于停止的完成上下文,可以进行以下操作:

  • 设置完成上下文的属性。

当完成上下文停止时,以下操作是不可能的:

  • 将 DOCA devemu PCI 设备门铃与完成上下文关联。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_create_on_dpa ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_db_completion* db_comp, uint8_t bar_id, uint64_t bar_start_addr, uint32_t db_id, uint64_t user_data_on_dpa, doca_devemu_pci_db** db )
在 DPA 上分配 DOCA devemu PCI 设备门铃。创建的门铃将与也在 DPA 上创建的单个完成上下文关联。
参数
pci_dev
要与门铃关联的 DOCA devemu PCI 设备。必须已启动。
db_comp
要与门铃关联的 DOCA devemu PCI 设备门铃完成上下文。必须已启动。
bar_id
BAR 的标识符,其中包含为创建的门铃关联的门铃区域。
bar_start_addr
BAR 内关联的门铃区域的起始地址。此值必须与在 PCI 类型的配置周期内配置给门铃区域的起始地址一致,该 PCI 类型与给定的 PCI 设备关联。
db_id
门铃标识符,将用于将门铃映射到其处理程序。当 num_db 是为关联的 DOCA devemu PCI 设备配置的门铃数量时,此值必须在 [0, num_db - 1] 的范围内。 如果未另行配置,则由 doca_devemu_pci_dev_create() 创建的任何 DOCA devemu PCI 设备的默认 num_db 值等于 doca_devemu_pci_cap_type_get_max_num_db() 中返回的值。
user_data_on_dpa
用户数据,与 DOCA devemu PCI 设备门铃 DPA 句柄关联,并且可以通过该句柄检索。
db
新创建的 DOCA devemu PCI 设备门铃。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_destroy ( doca_devemu_pci_db* db )
销毁 DOCA devemu PCI 设备门铃。
参数
db
要销毁的 DOCA devemu PCI 设备门铃。必须已停止。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

如果门铃是在 dpa 上创建的,则关联的 dpa 句柄也将被销毁。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_get_dpa_handle ( doca_devemu_pci_db* db, doca_dpa_dev_devemu_pci_db_t* db_handle )
获取 DOCA devemu PCI 设备门铃的 DPA 句柄。
参数
db
先前在 DPA 上创建的 DOCA devemu PCI 设备门铃。
db_handle
指向 dpa 内存空间中关联的 DPA 句柄的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_modify_value ( doca_devemu_pci_db* db, uint32_t db_value )
修改 DOCA devemu PCI 设备门铃的当前值。如果门铃已启动,则此设置的行为将如同门铃值已被 PCI 设备驱动程序修改一样。如果在启动 DOCA devemu PCI 设备门铃之前未修改门铃值,则设备将保持门铃的当前值。
参数
db
要修改的 DOCA devemu PCI 设备门铃。
db_value
DOCA devemu PCI 设备门铃的新值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_query_value ( doca_devemu_pci_db* db, uint32_t* db_value )
查询 DOCA devemu PCI 设备门铃的当前值。
参数
db
要查询的 DOCA devemu PCI 设备门铃。
db_value
DOCA devemu PCI 设备门铃的当前值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_start ( doca_devemu_pci_db* db )
启动 DOCA devemu PCI 设备门铃。启动的门铃将能够触发关联的门铃完成上下文的完成。因此,如果门铃是在 DPA 上创建的,则应在启动门铃之前将关联的门铃句柄绑定到其门铃完成上下文。
参数
db
要启动的 DOCA devemu PCI 设备门铃。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_db_stop ( doca_devemu_pci_db* db )
停止 DOCA devemu PCI 设备门铃。停止的门铃将不会触发关联的门铃完成上下文的完成。因此,如果门铃是在 DPA 上创建的,则应在从其门铃完成上下文中取消绑定关联的门铃句柄之前停止门铃。
参数
db
要停止的 DOCA devemu PCI 设备门铃。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_ctx* doca_devemu_pci_dev_as_ctx ( doca_devemu_pci_dev* pci_dev )
将 DOCA devemu PCI 设备实例转换为 DOCA 上下文。
参数
pci_dev
DOCA devemu PCI 设备。 在返回的 DOCA 上下文不再需要之前,设备必须保持有效。

返回值

成功时返回 DOCA 上下文,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_create ( doca_devemu_pci_type* pci_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_pci_dev** pci_dev )
分配 DOCA devemu PCI 设备。
参数
pci_type
要与设备关联的 DOCA PCI 类型。必须已启动。
dev_rep
Representor DOCA 设备。
progress_engine
将用于接收事件和任务完成的进度引擎。
pci_dev
新创建的 DOCA devemu PCI 设备。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type'、'dev_rep'、'progress_engine' 或 'pci_dev' 为 NULL。或 representor 类型与 PCI 类型不匹配
  • DOCA_ERROR_NO_MEMORY - 分配失败
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_destroy ( doca_devemu_pci_dev* pci_dev )
释放 DOCA devemu PCI 设备。
参数
pci_dev
先前创建的 DOCA devemu PCI 设备。必须处于空闲状态。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态。使用 doca_ctx_stop() 停止它
  • DOCA_ERROR_NOT_PERMITTED - PCI 设备不是使用 doca_devemu_pci_dev_create() 创建的
描述

DOCA_EXPERIMENTAL uint8_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_bar_id ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
从 BAR 状态区域驱动程序写入事件获取 BAR id。
参数
event
已注册的 BAR 状态区域驱动程序写入事件。不得为 NULL。

返回值

与事件关联的 BAR ID。

描述

DOCA_EXPERIMENTAL uint64_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_bar_region_start_addr ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
获取与 BAR 状态区域驱动程序写入事件关联的 BAR 区域起始地址。
参数
event
已注册的 BAR 状态区域驱动程序写入事件。不得为 NULL。

返回值

与事件关联的 BAR 状态区域的起始地址。

描述

DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_pci_dev_event_bar_stateful_region_driver_write_get_pci_dev ( doca_devemu_pci_dev_event_bar_stateful_region_driver_write* event )
从 BAR 状态区域驱动程序写入事件获取 DOCA devemu PCI 设备。
参数
event
已注册的 BAR 状态区域驱动程序写入事件。不得为 NULL。

返回值

与事件关联的 DOCA devemu PCI 设备。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_bar_stateful_region_driver_write_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_bar_stateful_region_driver_write_handler_cb_t handler, uint8_t bar_id, uint64_t bar_region_start_addr, doca_data user_data )
注册 BAR 状态区域驱动程序写入事件。
参数
pci_dev
要与事件关联的 DOCA devemu PCI 设备。必须处于空闲状态。
handler
事件触发后调用的方法。
bar_id
要与事件关联的 BAR ID。必须符合使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 完成的 BAR 状态区域配置。
bar_region_start_addr
要与事件关联的 BAR 状态区域的起始地址。必须符合使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 完成的 BAR 状态区域配置。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未处于空闲状态
描述

只有当 DOCA devemu PCI 设备处于空闲状态时才能完成注册。如果对于相同的 {pci_dev, bar_id, bar_region_start_addr} 元组多次调用,则只有最后一次调用生效。注册对于为关联的 DOCA devemu PCI 设备配置的整个状态区域有效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_flr_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_flr_handler_cb_t handler, doca_data user_data )
注册 PCI FLR(功能级复位)事件。
参数
pci_dev
要与事件关联的 DOCA devemu PCI 设备。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未处于空闲状态
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_event_hotplug_state_change_register ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_dev_event_hotplug_state_change_handler_cb_t handler, doca_data user_data )
注册热插拔状态更改。
参数
pci_dev
要与事件关联的 DOCA devemu PCI 设备。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未处于空闲状态
描述

只有当 DOCA devemu PCI 设备处于空闲状态时才能完成注册。如果多次调用,则只有最后一次调用生效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_get_hotplug_state ( doca_devemu_pci_dev* pci_dev, doca_devemu_pci_hotplug_state ** state )
获取 DOCA devemu PCI 设备的热插拔状态。
参数
pci_dev
DOCA devemu PCI 设备。必须已启动。
state
给定 DOCA devemu PCI 设备的热插拔状态。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 或 'state' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_hotplug ( doca_devemu_pci_dev* pci_dev )
发出 DOCA devemu PCI 设备的热插拔过程。
参数
pci_dev
要热插拔的 DOCA devemu PCI 设备。必须已启动。

返回值

DOCA_SUCCESS - 成功时。成功后,pci_dev 处于 DOCA_DEVEMU_PCI_HP_STATE_PLUG_IN_PROGRESS 状态。成功时不会引发事件。失败时返回错误代码

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未启动,或热插拔状态不是 DOCA_DEVEMU_PCI_HP_STATE_POWER_OFF
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
  • DOCA_ERROR_NOT_SUPPORTED - 设置的 DOCA 设备不支持热插拔,使用 doca_devemu_pci_cap_type_is_hotplug_supported() 查找支持它的设备
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_hotunplug ( doca_devemu_pci_dev* pci_dev )
发出 DOCA devemu PCI 设备的热拔出过程。
参数
pci_dev
要热拔出的 DOCA devemu PCI 设备。必须已启动。

返回值

DOCA_SUCCESS - 成功时。成功后,pci_dev 处于 DOCA_DEVEMU_PCI_HP_STATE_UNPLUG_IN_PROGRESS 状态。成功时不会引发事件。失败时返回错误代码

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - PCI 设备未启动,或当前热插拔状态不是 DOCA_DEVEMU_PCI_HP_STATE_POWER_ON 或 DOCA_DEVEMU_PCI_HP_STATE_PLUG_IN_PROGRESS 之一
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
  • DOCA_ERROR_NOT_SUPPORTED - 设置的 DOCA 设备不支持热拔出,使用 doca_devemu_pci_cap_type_is_hotplug_supported() 查找支持它的设备
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_is_flr ( const doca_devemu_pci_dev* pci_dev, uint8_t* flr )
查询 DOCA devemu PCI 设备是否正在进行 FLR(功能级复位)。
参数
pci_dev
要查询的 DOCA devemu PCI 设备。必须已启动。
flr
如果 DOCA devemu PCI 设备具有 FLR,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_dev' 或 'flr' 为 NULL。
  • DOCA_ERROR_BAD_STATE - PCI 设备未启动。
描述

如果为 true,则禁用所有与主机内存的 PCI I/O 事务,并且用户应重新配置模拟 PCI 设备。此重新配置需要销毁所有关联的资源(例如 DB、MSIX、MMAP),复位关联的模拟 PCI 设备(执行 stop() 和 start() 操作),并重新创建所有需要的资源。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_modify_bar_stateful_region_default_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t start_addr, void* default_values, uint64_t size )
修改 DOCA devemu PCI 设备中状态区域的默认寄存器值。
参数
pci_dev
DOCA devemu PCI 设备。必须已启动。
id
包含状态区域的 BAR ID。
start_addr
BAR 内区域的起始地址。此值必须与在 doca_devemu_pci_type_set_bar_stateful_region_conf() 期间提供的起始地址一致。
default_values
包含默认值数据的输入缓冲区。
size
default_values 缓冲区的大小(以字节为单位)。该大小不得小于使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 bar 区域的实际大小。如果大小大于实际大小,则将根据实际大小使用前几个相关字节。缓冲区的其余部分将被忽略。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此方法将修改 PCI 设备 BAR 中整个状态区域寄存器区域的默认值(在首次修改之前,状态区域寄存器的初始默认值取自关联的 PCI 类型)。这些值将覆盖之前的默认值,并在关联的 PCI 设备下次暴露/热插拔到主机或下次 FLR 期间生效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_modify_bar_stateful_region_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t offset, void* values, uint64_t size )
修改 DOCA devemu PCI 设备中状态区域的寄存器值。
参数
pci_dev
DOCA devemu PCI 设备。必须已启动。
id
包含状态区域的 BAR ID。
offset
要修改的寄存器区域在 BAR 中的偏移量。必须位于状态 BAR 区域内。
values
包含值数据的输入缓冲区。
size
values 缓冲区的大小(以字节为单位)。(offset + size)必须位于状态 BAR 区域内。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此方法将修改 PCI 设备 BAR 中状态区域寄存器的值。这些值将覆盖关联 PCI 设备的状态区域的现有值。通过调用此方法修改寄存器不会触发 doca_devemu_pci_dev_event_bar_stateful_region_driver_write 事件的已注册事件处理程序。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_query_bar_stateful_region_values ( doca_devemu_pci_dev* pci_dev, uint8_t id, uint64_t offset, void* out_values, uint64_t size )
查询 DOCA devemu PCI 设备中状态区域的寄存器值。
参数
pci_dev
DOCA devemu PCI 设备。必须已启动。
id
包含状态区域的 BAR ID。
offset
要查询的寄存器区域在 BAR 中的偏移量。必须位于状态 BAR 区域内。
out_values
成功后将包含值数据的输出缓冲区。
size
out_values 缓冲区的大小(以字节为单位)。(offset + size)必须位于状态 BAR 区域内。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_mmap_create ( doca_devemu_pci_dev* pci_dev, doca_mmap** mmap )
分配零大小内存映射对象,该对象具有与 DOCA devemu PCI 设备关联的默认/未设置属性。
参数
pci_dev
要与 doca_mmap 关联的 DOCA devemu PCI 设备。必须已启动。
mmap
具有默认/未设置属性的 DOCA 内存映射结构。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

返回的内存映射对象可以使用通用的 doca_mmap API 进行操作。

创建的内存映射对象将覆盖托管 DOCA devemu PCI 设备的域中的内存范围。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_create_on_dpa ( doca_devemu_pci_dev* pci_dev, uint8_t bar_id, uint64_t bar_start_addr, uint16_t msix_idx, uint64_t user_data_on_dpa, doca_devemu_pci_msix** msix )
在 DPA 上分配 DOCA devemu PCI 设备 MSI-X 上下文。
参数
pci_dev
要与 MSI-X 关联的 DOCA devemu PCI 设备。必须已启动。
bar_id
包含为创建的 msix 关联的 MSI-X 表区域的 BAR 的标识符。此值必须与在与给定 PCI 设备关联的 pci 类型的配置周期中配置给 MSI-X 表区域的标识符一致。
bar_start_addr
关联的 MSI-X 表区域在 BAR 内的起始地址。此值必须与在与给定 PCI 设备关联的 PCI 类型的配置周期中配置给 MSI-X 表区域的起始地址一致。
msix_idx
关联的 MSI-X 表条目索引。
user_data_on_dpa
与 DOCA devemu PCI 设备 MSI-X DPA 句柄关联并可检索的用户数据。
msix
新创建的 DOCA devemu PCI 设备 MSI-X。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_destroy ( doca_devemu_pci_msix* msix )
销毁 DOCA devemu PCI 设备 MSI-X。
参数
msix
要销毁的 DOCA devemu PCI 设备 MSI-X 上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

如果 MSI-X 是在 dpa 上创建的,则关联的 dpa 句柄也将被销毁。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_msix_get_dpa_handle ( doca_devemu_pci_msix* msix, doca_dpa_dev_devemu_pci_msix_t* msix_handle )
获取 DOCA devemu PCI 设备 MSI-X 的 DPA 句柄。
参数
msix
先前在 DPA 上创建的 DOCA devemu PCI 设备 MSI-X。
msix_handle
指向 dpa 内存空间中关联的 DPA 句柄的指针。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA 设备模拟 - PCI 设备类型

2.10.1.1. DOCA 设备仿真 - PCI 设备类型
[ DOCA 设备仿真 - PCI 设备 ]

用于模拟 pci 设备的 DOCA PCI 类型

宏定义
#define DOCA_DEVEMU_PCI_TYPE_NAME_LEN 32
用于描述模拟 PCI 设备类型名称的 NULL 终止字符串的最大长度。
枚举
enum doca_devemu_pci_bar_mem_type
根据 PCI 规范,映射到内存空间的 BAR 可以定义内存类型。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个门铃 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个门铃区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的门铃 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个门铃 BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的门铃 BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_data_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其数据识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_data_conf() 配置门铃区域。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_offset_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其在 BAR 中的偏移量识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_offset_conf() 配置门铃区域。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 门铃区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X PBA 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X 表区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 状态区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X PBA BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X PBA 区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X PBA BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X PBA BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X PBA BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X 表 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X 表区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X 表 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X 表 BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X 表 BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个状态 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个状态区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的状态 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个状态 BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的状态 BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_get_max_types ( const doca_devinfo* devinfo, uint16_t* max_pci_types )
获取设备可以创建的最大 PCI 类型数。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大 BAR 大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大门铃大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最大步幅大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小 BAR 大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小门铃大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最小步幅大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大门铃 BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X PBA BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X 表 BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大状态 BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bars ( const doca_devinfo* devinfo, uint8_t* max_bars )
获取可以为模拟 PCI 设备配置的最大 BAR 数量,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_db ( const doca_devinfo* devinfo, uint16_t* num_db )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大门铃数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_msix ( const doca_devinfo* devinfo, uint16_t* num_msix )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大 MSIX 数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_bar_mem_type_supported ( const doca_devinfo* devinfo, doca_devemu_pci_bar_mem_type memory_type, uint8_t* supported )
获取设备的内存 BAR 类型能力。如果支持,可以使用 doca_devemu_pci_type_set_memory_bar_conf() 配置具有该内存类型的 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_hotplug_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的热插拔能力。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_mgmt_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的管理能力。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_create_rep ( const doca_devemu_pci_type* pci_type, doca_dev_rep** dev_rep )
为给定 pci 类型创建新的 representor 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_destroy_rep ( doca_dev_rep* rep_dev )
销毁使用 doca_devemu_pci_dev_create_rep() 创建的 representor 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create ( const char* name, doca_devemu_pci_type** pci_type )
创建已停止的 DOCA devemu pci 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create_rep_list ( doca_devemu_pci_type* pci_type, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
为给定的 devemu pci 类型创建可用 representor 设备列表。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_destroy ( doca_devemu_pci_type* pci_type )
销毁 DOCA devemu pci 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_class_code ( const doca_devemu_pci_type* pci_type, uint32_t* class_code )
获取 pci 类型的 PCI 类代码,以识别通用操作。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_dev ( const doca_devemu_pci_type* pci_type, doca_dev** dev )
获取 pci 类型的 doca 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_device_id ( const doca_devemu_pci_type* pci_type, uint16_t* device_id )
获取 pci 类型的 PCI 设备 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_name ( const doca_devemu_pci_type* pci_type, char(*) name[DOCA_DEVEMU_PCI_TYPE_NAME_LEN] )
获取 pci 类型的名称。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_num_msix ( const doca_devemu_pci_type* pci_type, uint16_t* num_msix )
从 pci 类型的 MSI-X 功能寄存器获取 MSI-X 表的大小(从 1 开始)。除非另行配置,否则此值将用作关联的 DOCA devemu pci 设备的默认 num_msix 值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_revision_id ( const doca_devemu_pci_type* pci_type, uint8_t* revision_id )
获取 pci 类型的 PCI 修订 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_id )
获取 pci 类型的 PCI 子系统 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_vid )
获取 pci 类型的 PCI 子系统供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* vendor_id )
获取 pci 类型的 PCI 供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_is_started ( const doca_devemu_pci_type* pci_type, uint8_t* started )
检查 pci 类型是否已启动。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_modify_bar_stateful_region_default_values ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, void* default_values, uint64_t size )
修改 DOCA devemu pci 类型中已配置的状态区域的默认寄存器值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_data_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint16_t db_id_msbyte, uint16_t db_id_lsbyte )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据写入门铃的数据来识别与此门铃 BAR 区域关联的门铃。门铃标识符将通过 db_id_lsbyte 和 db_id_msbyte 设置从写入的门铃数据中推断出来。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_offset_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint8_t log_stride_size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据门铃在其 BAR 中的偏移量来识别与此门铃 BAR 区域关联的门铃。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_pba_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X PBA BAR 区域配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_table_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X 表 BAR 区域配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_stateful_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个状态 BAR 区域配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_class_code ( doca_devemu_pci_type* pci_type, uint32_t class_code )
设置 pci 类型的 PCI 类代码,以标识通用操作。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_dev ( doca_devemu_pci_type* pci_type, doca_dev* dev )
设置 pci 类型的 doca 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_device_id ( doca_devemu_pci_type* pci_type, uint16_t device_id )
设置 pci 类型的 PCI 设备 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_io_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz )
为 DOCA devemu pci 类型设置 IO BAR 布局配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_memory_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz, doca_devemu_pci_bar_mem_type memory_type, uint8_t prefetchable )
为 DOCA devemu pci 类型设置内存 BAR 布局配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_num_msix ( doca_devemu_pci_type* pci_type, uint16_t num_msix )
从 pci 类型的 MSI-X 功能寄存器(基于 1)设置 MSI-X 表的大小。必须符合 doca_devemu_pci_cap_type_get_max_num_msix()。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_revision_id ( doca_devemu_pci_type* pci_type, uint8_t revision_id )
设置 pci 类型的 PCI 修订 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_id )
设置 pci 类型的 PCI 子系统 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_vid )
设置 pci 类型的 PCI 子系统供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t vendor_id )
设置 pci 类型的 PCI 供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_start ( doca_devemu_pci_type* pci_type )
启动 DOCA devemu pci 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_stop ( doca_devemu_pci_type* pci_type )
停止 DOCA devemu pci 类型。
宏定义
#define DOCA_DEVEMU_PCI_TYPE_NAME_LEN 32

枚举
enum doca_devemu_pci_bar_mem_type

DOCA_DEVEMU_PCI_BAR_MEM_TYPE_32_BIT = 0
基址寄存器为 32 位宽,可以映射到 32 位地址内存空间中的任何位置。基址寄存器支持 1 MB 以下的内存空间
DOCA_DEVEMU_PCI_BAR_MEM_TYPE_1_MB
基址寄存器为 64 位宽,可以映射到 64 位地址内存空间中的任何位置。
DOCA_DEVEMU_PCI_BAR_MEM_TYPE_64_BIT

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个门铃 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个门铃区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的单个门铃 BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的门铃 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个门铃 BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的门铃 BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的门铃 BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的门铃 BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_data_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其数据识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_data_conf() 配置门铃区域。
参数
devinfo
要查询的设备。
supported
如果支持按数据识别门铃区域,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_offset_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其在 BAR 中的偏移量识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_offset_conf() 配置门铃区域。
参数
devinfo
要查询的设备。
supported
如果支持按偏移量识别门铃区域,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 门铃区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 为每个 BAR 配置的 BAR 门铃区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X PBA 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 为每个 BAR 配置的 BAR MSI-X PBA 区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X 表区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 为每个 BAR 配置的 BAR MSI-X 表区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_bar_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_bar_*_region_conf_set() 为每个 BAR 配置的 BAR 区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 状态区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 为每个 BAR 配置的状态 BAR 区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X PBA BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X PBA 区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的单个 MSI-X PBA BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X PBA BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X PBA BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的 MSI-X PBA BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 成功时返回。错误代码 - 失败时返回。请参阅 doca_srror_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X PBA BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的 MSI-X PBA BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X 表 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X 表区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的单个 MSI-X 表 BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X 表 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X 表 BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的 MSI-X 表 BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 成功时返回。错误代码 - 失败时返回。请参阅 doca_srror_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X 表 BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的 MSI-X 表 BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个状态 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个状态区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的单个状态 BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的状态 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个状态 BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的状态 BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_get_max_types ( const doca_devinfo* devinfo, uint16_t* max_pci_types )
获取设备可以创建的最大 PCI 类型数。
参数
devinfo
要查询的设备。
max_pci_types
可以使用 doca_devemu_pci_type_create() 创建的 PCI 类型的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大 BAR 大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_bar_size
单个 BAR 的最大 BAR 大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大门铃大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_db_size
单个门铃的最大门铃大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最大步幅大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_stride_size
单个门铃的最大步幅大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小 BAR 大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_bar_size
单个 BAR 的最小 BAR 大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小门铃大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_db_size
单个门铃的最小门铃大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最小步幅大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_stride_size
单个门铃的最小步幅大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大门铃 BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的最大门铃 BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X PBA BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的最大 MSI-X PBA BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X 表 BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的最大 MSI-X 表 BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
参数
devinfo
要查询的设备。
max_bar_regions
可以使用 doca_devemu_pci_type_bar_*_region_conf_set() 配置的 BAR 区域的数量,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大状态 BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的最大状态 BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bars ( const doca_devinfo* devinfo, uint8_t* max_bars )
获取可以为模拟 PCI 设备配置的最大 BAR 数量,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
参数
devinfo
要查询的设备。
max_bars
可以使用 doca_devemu_pci_type_*_bar_conf_set() 为任何 pci 类型配置的 BAR 的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_db ( const doca_devinfo* devinfo, uint16_t* num_db )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大门铃数量。
参数
devinfo
要查询的设备。
num_db
门铃的最大数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_msix ( const doca_devinfo* devinfo, uint16_t* num_msix )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大 MSIX 数量。
参数
devinfo
要查询的设备。
num_msix
MSIX 的最大数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_bar_mem_type_supported ( const doca_devinfo* devinfo, doca_devemu_pci_bar_mem_type memory_type, uint8_t* supported )
获取设备的内存 BAR 类型能力。如果支持,可以使用 doca_devemu_pci_type_set_memory_bar_conf() 配置具有该内存类型的 BAR。
参数
devinfo
要查询的设备。
memory_type
要查询的 BAR 内存类型。
supported
如果设备支持 BAR 内存类型,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo' 或 'supported' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_hotplug_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的热插拔能力。
参数
devinfo
要查询的设备。
pci_type
要查询的 DOCA pci 类型。
supported
如果此类型支持热插拔功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo'、'pci_type' 或 'supported' 为 NULL,或者如果 doca_dev 已经分配给 pci_type,则 devinfo 与关联的 doca_dev 不匹配
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

获取 uint8_t 值,该值定义设备是否可以用于热插拔特定类型的设备。设备的热插拔功能意味着其管理功能。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_mgmt_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的管理能力。
参数
devinfo
要查询的设备。
pci_type
要查询的 DOCA pci 类型。
supported
如果此类型支持管理功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo'、'pci_type' 或 'supported' 为 NULL,或者如果 doca_dev 已经分配给 pci_type,则 devinfo 与关联的 doca_dev 不匹配
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

获取 uint8_t 值,该值定义设备是否可以用于管理特定类型的设备。设备的管理功能并不意味着其热插拔功能。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_create_rep ( const doca_devemu_pci_type* pci_type, doca_dev_rep** dev_rep )
为给定 pci 类型创建新的 representor 设备。
参数
pci_type
DOCA pci 类型。必须已启动。
dev_rep
成功时初始化的表示器 doca 设备实例。 仅在成功时有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'dev_rep' 为 NULL
  • DOCA_ERROR_BAD_STATE - 类型未启动
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

表示器设备对主机不可见。可以使用表示器的发现机制来发现表示器设备。

注意

pci 类型必须已启动。


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_destroy_rep ( doca_dev_rep* rep_dev )
销毁使用 doca_devemu_pci_dev_create_rep() 创建的 representor 设备。
参数
rep_dev
先前初始化的表示器设备实例。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'rep_dev' 为 NULL 或已损坏
  • DOCA_ERROR_NOT_PERMITTED - 表示器不是使用 doca_devemu_pci_dev_create_rep() 创建的
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

表示器设备对主机不可见。表示器设备将无法使用表示器的发现机制发现。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create ( const char* name, doca_devemu_pci_type** pci_type )
创建已停止的 DOCA devemu pci 类型。
参数
name
要分配给创建的 DOCA devemu pci 类型的名称。以 NULL 结尾的字符串不得超过 DOCA_DEVEMU_PCI_TYPE_NAME_LEN。
pci_type
已创建且已停止的 DOCA devemu pci 类型。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'name' 或 'pci_type' 为 NULL
  • DOCA_ERROR_NO_MEMORY - 分配失败
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create_rep_list ( doca_devemu_pci_type* pci_type, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
为给定的 devemu pci 类型创建可用 representor 设备列表。
参数
pci_type
DOCA devemu pci 类型。必须已启动。
dev_list_rep
指向指针数组的指针。然后可以按如下方式访问输出 (*dev_list_rep)[idx]。
nb_devs_rep
可用代表设备的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

返回与提供的 devemu pci 类型系列关联的所有表示器。提供的 pci 类型必须已启动。表示器可以表示当前连接到主机 PCI 子系统的模拟 PCI 功能,也可以表示旨在热插拔到主机 PCI 子系统中的模拟 PCI 功能。

注意

返回的列表必须使用 doca_devinfo_rep_destroy_list() 销毁


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_destroy ( doca_devemu_pci_type* pci_type )
销毁 DOCA devemu pci 类型。
参数
pci_type
要销毁的 DOCA devemu pci 类型。必须已停止。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_class_code ( const doca_devemu_pci_type* pci_type, uint32_t* class_code )
获取 pci 类型的 PCI 类代码,以识别通用操作。
参数
pci_type
要查询的 DOCA pci 类型。
class_code
PCI 类代码,用于标识通用操作。只有 24 个 LSB 位有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'class_code' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_dev ( const doca_devemu_pci_type* pci_type, doca_dev** dev )
获取 pci 类型的 doca 设备。
参数
pci_type
要查询的 DOCA devemu pci 类型。
dev
DOCA 设备。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'dev' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_device_id ( const doca_devemu_pci_type* pci_type, uint16_t* device_id )
获取 pci 类型的 PCI 设备 ID。
参数
pci_type
要查询的 DOCA pci 类型。
device_id
供应商分配的 PCI 设备 ID (DID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'device_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_name ( const doca_devemu_pci_type* pci_type, char(*) name[DOCA_DEVEMU_PCI_TYPE_NAME_LEN] )
获取 pci 类型的名称。
参数
pci_type
要查询的 DOCA pci 类型。
name
pci 类型的名称。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'name' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_num_msix ( const doca_devemu_pci_type* pci_type, uint16_t* num_msix )
从 pci 类型的 MSI-X 功能寄存器获取 MSI-X 表的大小(从 1 开始)。除非另行配置,否则此值将用作关联的 DOCA devemu pci 设备的默认 num_msix 值。
参数
pci_type
要查询的 DOCA pci 类型。
num_msix
MSI-X 表的大小,来自 MSI-X Capability Registers (基于 1)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'num_msix' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_revision_id ( const doca_devemu_pci_type* pci_type, uint8_t* revision_id )
获取 pci 类型的 PCI 修订 ID。
参数
pci_type
要查询的 DOCA pci 类型。
revision_id
供应商分配的 PCI 修订 ID。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'revision_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_id )
获取 pci 类型的 PCI 子系统 ID。
参数
pci_type
要查询的 DOCA pci 类型。
subsystem_id
子系统供应商分配的 PCI 子系统 ID (SSID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'subsystem_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_vid )
获取 pci 类型的 PCI 子系统供应商 ID。
参数
pci_type
要查询的 DOCA pci 类型。
subsystem_vid
PCI-SIG 分配的 PCI 子系统供应商 ID (SVID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'subsystem_vid' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* vendor_id )
获取 pci 类型的 PCI 供应商 ID。
参数
pci_type
要查询的 DOCA pci 类型。
vendor_id
PCI-SIG 分配的 PCI 供应商 ID (VID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'vendor_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_is_started ( const doca_devemu_pci_type* pci_type, uint8_t* started )
检查 pci 类型是否已启动。
参数
pci_type
要查询的 DOCA pci 类型。
started
如果 pci_type 已启动,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'started' 为 NULL。
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_modify_bar_stateful_region_default_values ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, void* default_values, uint64_t size )
修改 DOCA devemu pci 类型中已配置的状态区域的默认寄存器值。
参数
pci_type
DOCA devemu pci 类型。必须已启动,且不得与任何 pci_dev 或 doca_dev_rep 关联。
id
包含状态区域的 BAR id。此值必须与 doca_devemu_pci_type_set_bar_stateful_region_conf() 期间提供的 id 一致。
start_addr
BAR 内区域的起始地址。此值必须与在 doca_devemu_pci_type_set_bar_stateful_region_conf() 期间提供的起始地址一致。
default_values
包含默认值数据的输入缓冲区。
size
default_values 缓冲区的大小(以字节为单位)。该大小不得小于使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 bar 区域的实际大小。如果大小大于实际大小,则将根据实际大小使用前几个相关字节。缓冲区的其余部分将被忽略。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此方法将修改 pci 类型 BAR 中整个状态区域寄存器区域的默认值(在首次修改之前,状态区域寄存器的初始默认值被清零)。使用 doca_devemu_pci_dev_create_rep() 从关联的 pci_type 创建的 doca_dev_rep 将在创建时继承这些默认值。此外,每个从关联的 doca_dev_rep 创建的 pci_dev 都有机会通过调用 doca_devemu_pci_dev_modify_bar_stateful_region_default_values() 来更新其自身的默认值,而不会影响 pci_type 的默认值。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_data_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint16_t db_id_msbyte, uint16_t db_id_lsbyte )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据写入门铃的数据来识别与此门铃 BAR 区域关联的门铃。门铃标识符将通过 db_id_lsbyte 和 db_id_msbyte 设置从写入的门铃数据中推断出来。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 doca_devemu_pci_cap_bar_db_region_get_region_block_size()doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks() 一致。
log_db_size
单个门铃大小,以字节为单位,以 Log (以 2 为底) 单位给出。此值必须与 doca_devemu_pci_cap_type_get_log_min_db_size()doca_devemu_pci_cap_type_get_log_max_db_size() 一致。
db_id_msbyte
门铃标识符的起始字节,在驱动程序写入的门铃数据内。如果 db_id_msbyte > db_id_lsbyte,则门铃标识符将被视为小端序。
db_id_lsbyte
门铃标识符的结束字节,在驱动程序写入的门铃数据内。如果 db_id_msbyte > db_id_lsbyte,则门铃标识符将被视为小端序。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_offset_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint8_t log_stride_size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据门铃在其 BAR 中的偏移量来识别与此门铃 BAR 区域关联的门铃。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 doca_devemu_pci_cap_bar_db_region_get_region_block_size()doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks() 一致。
log_db_size
单个门铃大小,以字节为单位,以 Log (以 2 为底) 单位给出。此值必须与 doca_devemu_pci_cap_type_get_log_min_db_size()doca_devemu_pci_cap_type_get_log_max_db_size() 一致。
log_stride_size
单个门铃步长的大小,以字节为单位,以 Log (以 2 为底) 单位给出。此值必须与 doca_devemu_pci_cap_type_get_log_min_db_stride_size()doca_devemu_pci_cap_type_get_log_max_db_stride_size() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_pba_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X PBA BAR 区域配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_msix_pba_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 pci 类型的 num_msix 值相关联,并与 doca_devemu_pci_cap_bar_msix_pba_region_get_region_block_size()doca_devemu_pci_cap_bar_msix_pba_region_get_max_num_region_blocks() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_table_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X 表 BAR 区域配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_msix_table_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 pci 类型的 num_msix 值相关联,并与 doca_devemu_pci_cap_bar_msix_table_region_get_region_block_size()doca_devemu_pci_cap_bar_msix_table_region_get_max_num_region_blocks() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_stateful_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个状态 BAR 区域配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_stateful_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 doca_devemu_pci_cap_bar_stateful_region_get_region_block_size()doca_devemu_pci_cap_bar_stateful_region_get_max_num_region_blocks() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

状态 BAR 区域将由设备用于向驱动程序公开寄存器。此区域将由设备主动维护。对此区域的 PCI READ 事务将由设备自动应答。PCI WRITE 事务将由设备存储到此区域。如果注册了 doca_devemu_pci_dev_event_bar_stateful_region_driver_write 事件,则当设备驱动程序发起对此区域的任何 PCI WRITE 事务时,关联的 pci_dev 将收到通知。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_class_code ( doca_devemu_pci_type* pci_type, uint32_t class_code )
设置 pci 类型的 PCI 类代码,以标识通用操作。
参数
pci_type
要修改的 DOCA pci 上下文。必须未启动。
class_code
PCI 类代码,用于标识通用操作。只有 24 个 LSB 位有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_dev ( doca_devemu_pci_type* pci_type, doca_dev* dev )
设置 pci 类型的 doca 设备。
参数
pci_type
要修改的 DOCA devemu pci 类型。必须未启动。
dev
DOCA 设备。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
  • DOCA_ERROR_NOT_PERMITTED - 无法为默认 pci 类型设置设备
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_device_id ( doca_devemu_pci_type* pci_type, uint16_t device_id )
设置 pci 类型的 PCI 设备 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
device_id
要分配的 PCI 设备 ID (DID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_io_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz )
为 DOCA devemu pci 类型设置 IO BAR 布局配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
BAR id。
log_sz
BAR 大小,以 Log (以 2 为底) 单位给出。如果之前的 BAR 需要扩展(例如,对于 64 位 BAR),则必须设置为 0。否则,此值必须与 doca_devemu_pci_cap_type_get_log_min_bar_size()doca_devemu_pci_cap_type_get_log_max_bar_size() 功能一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述
注意

此配置仅适用于由 doca_devemu_pci_type_create() 创建的类型


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_memory_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz, doca_devemu_pci_bar_mem_type memory_type, uint8_t prefetchable )
为 DOCA devemu pci 类型设置内存 BAR 布局配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
BAR id。
log_sz
BAR 大小,以 Log (以 2 为底) 单位给出。如果之前的 BAR 需要扩展(例如,对于 64 位 BAR),则必须设置为 0。否则,此值必须与 doca_devemu_pci_cap_type_get_log_min_bar_size()doca_devemu_pci_cap_type_get_log_max_bar_size() 功能一致。
memory_type
要为此 BAR 公开的内存类型值。
prefetchable
要为此 BAR 公开的可预取位值。如果 BAR 不包含读取时会产生副作用的位置,则设置为 1。如果 BAR 包含读取时会产生副作用的位置,或函数不容忍写入合并的位置,则设置为 0。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述
注意

此配置仅适用于由 doca_devemu_pci_type_create() 创建的类型


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_num_msix ( doca_devemu_pci_type* pci_type, uint16_t num_msix )
从 pci 类型的 MSI-X 功能寄存器(基于 1)设置 MSI-X 表的大小。必须符合 doca_devemu_pci_cap_type_get_max_num_msix()。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
num_msix
MSI-X 表的大小,来自 MSI-X Capability Registers (基于 1)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_revision_id ( doca_devemu_pci_type* pci_type, uint8_t revision_id )
设置 pci 类型的 PCI 修订 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
revision_id
要分配的 PCI 修订 ID。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_id )
设置 pci 类型的 PCI 子系统 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
subsystem_id
要分配的 PCI 子系统 ID (SSID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_vid )
设置 pci 类型的 PCI 子系统供应商 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
subsystem_vid
PCI-SIG 分配的 PCI 子系统供应商 ID (SVID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t vendor_id )
设置 pci 类型的 PCI 供应商 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
vendor_id
PCI-SIG 分配的 PCI 供应商 ID (VID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_start ( doca_devemu_pci_type* pci_type )
启动 DOCA devemu pci 类型。
参数
pci_type
要启动的 DOCA devemu pci 类型。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL 或之前提供了无效的 PCI 参数
  • DOCA_ERROR_BAD_STATE - 类型已启动
  • DOCA_ERROR_NOT_FOUND - 未提供设备 - 使用 doca_devemu_pci_type_set_dev()
  • DOCA_ERROR_NO_MEMORY - 分配失败
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述
注意

此方法成功后,将禁用配置 DOCA devemu pci 类型的功能。


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_stop ( doca_devemu_pci_type* pci_type )
停止 DOCA devemu pci 类型。
参数
pci_type
要停止的 DOCA devemu pci 类型。不得与任何 pci 设备关联。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 类型已停止
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述
注意

此方法成功后,将重新启用配置 DOCA devemu pci 类型的功能。


DOCA 设备模拟 - PCI 设备类型

2.10.1.1. DOCA 设备仿真 - PCI 设备类型
[ DOCA 设备仿真 - PCI 设备 ]

用于模拟 pci 设备的 DOCA PCI 类型

宏定义
#define DOCA_DEVEMU_PCI_TYPE_NAME_LEN 32
用于描述模拟 PCI 设备类型名称的 NULL 终止字符串的最大长度。
枚举
enum doca_devemu_pci_bar_mem_type
根据 PCI 规范,映射到内存空间的 BAR 可以定义内存类型。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个门铃 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个门铃区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的门铃 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个门铃 BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的门铃 BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_data_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其数据识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_data_conf() 配置门铃区域。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_offset_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其在 BAR 中的偏移量识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_offset_conf() 配置门铃区域。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 门铃区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X PBA 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X 表区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 状态区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X PBA BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X PBA 区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X PBA BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X PBA BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X PBA BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X 表 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X 表区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X 表 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X 表 BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X 表 BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个状态 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个状态区域的最大大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的状态 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个状态 BAR 区域的最大区域块数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的状态 BAR 区域起始地址对齐方式。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_get_max_types ( const doca_devinfo* devinfo, uint16_t* max_pci_types )
获取设备可以创建的最大 PCI 类型数。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大 BAR 大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大门铃大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最大步幅大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小 BAR 大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小门铃大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最小步幅大小(以 2 为底的对数)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大门铃 BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X PBA BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X 表 BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大状态 BAR 区域数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bars ( const doca_devinfo* devinfo, uint8_t* max_bars )
获取可以为模拟 PCI 设备配置的最大 BAR 数量,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_db ( const doca_devinfo* devinfo, uint16_t* num_db )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大门铃数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_msix ( const doca_devinfo* devinfo, uint16_t* num_msix )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大 MSIX 数量。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_bar_mem_type_supported ( const doca_devinfo* devinfo, doca_devemu_pci_bar_mem_type memory_type, uint8_t* supported )
获取设备的内存 BAR 类型能力。如果支持,可以使用 doca_devemu_pci_type_set_memory_bar_conf() 配置具有该内存类型的 BAR。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_hotplug_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的热插拔能力。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_mgmt_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的管理能力。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_create_rep ( const doca_devemu_pci_type* pci_type, doca_dev_rep** dev_rep )
为给定 pci 类型创建新的 representor 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_destroy_rep ( doca_dev_rep* rep_dev )
销毁使用 doca_devemu_pci_dev_create_rep() 创建的 representor 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create ( const char* name, doca_devemu_pci_type** pci_type )
创建已停止的 DOCA devemu pci 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create_rep_list ( doca_devemu_pci_type* pci_type, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
为给定的 devemu pci 类型创建可用 representor 设备列表。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_destroy ( doca_devemu_pci_type* pci_type )
销毁 DOCA devemu pci 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_class_code ( const doca_devemu_pci_type* pci_type, uint32_t* class_code )
获取 pci 类型的 PCI 类代码,以识别通用操作。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_dev ( const doca_devemu_pci_type* pci_type, doca_dev** dev )
获取 pci 类型的 doca 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_device_id ( const doca_devemu_pci_type* pci_type, uint16_t* device_id )
获取 pci 类型的 PCI 设备 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_name ( const doca_devemu_pci_type* pci_type, char(*) name[DOCA_DEVEMU_PCI_TYPE_NAME_LEN] )
获取 pci 类型的名称。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_num_msix ( const doca_devemu_pci_type* pci_type, uint16_t* num_msix )
从 pci 类型的 MSI-X 功能寄存器获取 MSI-X 表的大小(从 1 开始)。除非另行配置,否则此值将用作关联的 DOCA devemu pci 设备的默认 num_msix 值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_revision_id ( const doca_devemu_pci_type* pci_type, uint8_t* revision_id )
获取 pci 类型的 PCI 修订 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_id )
获取 pci 类型的 PCI 子系统 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_vid )
获取 pci 类型的 PCI 子系统供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* vendor_id )
获取 pci 类型的 PCI 供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_is_started ( const doca_devemu_pci_type* pci_type, uint8_t* started )
检查 pci 类型是否已启动。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_modify_bar_stateful_region_default_values ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, void* default_values, uint64_t size )
修改 DOCA devemu pci 类型中已配置的状态区域的默认寄存器值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_data_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint16_t db_id_msbyte, uint16_t db_id_lsbyte )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据写入门铃的数据来识别与此门铃 BAR 区域关联的门铃。门铃标识符将通过 db_id_lsbyte 和 db_id_msbyte 设置从写入的门铃数据中推断出来。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_offset_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint8_t log_stride_size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据门铃在其 BAR 中的偏移量来识别与此门铃 BAR 区域关联的门铃。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_pba_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X PBA BAR 区域配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_table_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X 表 BAR 区域配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_stateful_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个状态 BAR 区域配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_class_code ( doca_devemu_pci_type* pci_type, uint32_t class_code )
设置 pci 类型的 PCI 类代码,以标识通用操作。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_dev ( doca_devemu_pci_type* pci_type, doca_dev* dev )
设置 pci 类型的 doca 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_device_id ( doca_devemu_pci_type* pci_type, uint16_t device_id )
设置 pci 类型的 PCI 设备 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_io_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz )
为 DOCA devemu pci 类型设置 IO BAR 布局配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_memory_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz, doca_devemu_pci_bar_mem_type memory_type, uint8_t prefetchable )
为 DOCA devemu pci 类型设置内存 BAR 布局配置。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_num_msix ( doca_devemu_pci_type* pci_type, uint16_t num_msix )
从 pci 类型的 MSI-X 功能寄存器(基于 1)设置 MSI-X 表的大小。必须符合 doca_devemu_pci_cap_type_get_max_num_msix()。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_revision_id ( doca_devemu_pci_type* pci_type, uint8_t revision_id )
设置 pci 类型的 PCI 修订 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_id )
设置 pci 类型的 PCI 子系统 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_vid )
设置 pci 类型的 PCI 子系统供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t vendor_id )
设置 pci 类型的 PCI 供应商 ID。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_start ( doca_devemu_pci_type* pci_type )
启动 DOCA devemu pci 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_stop ( doca_devemu_pci_type* pci_type )
停止 DOCA devemu pci 类型。
宏定义
#define DOCA_DEVEMU_PCI_TYPE_NAME_LEN 32

枚举
enum doca_devemu_pci_bar_mem_type

DOCA_DEVEMU_PCI_BAR_MEM_TYPE_32_BIT = 0
基址寄存器为 32 位宽,可以映射到 32 位地址内存空间中的任何位置。基址寄存器支持 1 MB 以下的内存空间
DOCA_DEVEMU_PCI_BAR_MEM_TYPE_1_MB
基址寄存器为 64 位宽,可以映射到 64 位地址内存空间中的任何位置。
DOCA_DEVEMU_PCI_BAR_MEM_TYPE_64_BIT

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个门铃 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个门铃区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的单个门铃 BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的门铃 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个门铃 BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的门铃 BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的门铃 BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的门铃 BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_data_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其数据识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_data_conf() 配置门铃区域。
参数
devinfo
要查询的设备。
supported
如果支持按数据识别门铃区域,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_db_region_is_identify_by_offset_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持配置可以通过其在 BAR 中的偏移量识别门铃的门铃区域。如果支持,则可以使用 doca_devemu_pci_type_set_bar_db_region_by_offset_conf() 配置门铃区域。
参数
devinfo
要查询的设备。
supported
如果支持按偏移量识别门铃区域,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 门铃区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 为每个 BAR 配置的 BAR 门铃区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X PBA 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 为每个 BAR 配置的 BAR MSI-X PBA 区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR MSI-X 表区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 为每个 BAR 配置的 BAR MSI-X 表区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_bar_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_bar_*_region_conf_set() 为每个 BAR 配置的 BAR 区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 状态区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型,每个 BAR。
参数
devinfo
要查询的设备。
max_regions
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 为每个 BAR 配置的状态 BAR 区域的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X PBA BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X PBA 区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的单个 MSI-X PBA BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X PBA BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X PBA BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的 MSI-X PBA BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 成功时返回。错误代码 - 失败时返回。请参阅 doca_srror_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_pba_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X PBA BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的 MSI-X PBA BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个 MSI-X 表 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个 MSI-X 表区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的单个 MSI-X 表 BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的 MSI-X 表 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个 MSI-X 表 BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的 MSI-X 表 BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 成功时返回。错误代码 - 失败时返回。请参阅 doca_srror_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_msix_table_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的 MSI-X 表 BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的 MSI-X 表 BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_max_num_region_blocks ( const doca_devinfo* devinfo, uint32_t* max_blocks )
获取单个状态 BAR 区域的最大区域块数,该区域块数可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置。最大区域块数与区域块大小一起定义单个状态区域的最大大小。
参数
devinfo
要查询的设备。
max_blocks
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的单个状态 BAR 区域的最大区域块数。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_region_block_size ( const doca_devinfo* devinfo, uint32_t* block_size )
获取可以为模拟 PCI 设备配置的状态 BAR 区域的区域块大小,适用于使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型。区域块大小是 BAR 区域的最小分配数据单元。例如,如果区域块大小为 64B,则 bar 区域大小可以是 64B/128B/192B/../N*64B(N = 每个状态 BAR 区域的最大区域块数)。
参数
devinfo
要查询的设备。
block_size
对于任何 pci 类型,使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 BAR 区域的区域块大小(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_bar_stateful_region_get_start_addr_alignment ( const doca_devinfo* devinfo, uint32_t* alignment )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的状态 BAR 区域起始地址对齐方式。
参数
devinfo
要查询的设备。
alignment
对于任何 pci 类型,可以使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 BAR 区域的起始地址对齐(以字节为单位)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_get_max_types ( const doca_devinfo* devinfo, uint16_t* max_pci_types )
获取设备可以创建的最大 PCI 类型数。
参数
devinfo
要查询的设备。
max_pci_types
可以使用 doca_devemu_pci_type_create() 创建的 PCI 类型的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大 BAR 大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_bar_size
单个 BAR 的最大 BAR 大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最大门铃大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_db_size
单个门铃的最大门铃大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_max_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最大步幅大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_stride_size
单个门铃的最大步幅大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_bar_size ( const doca_devinfo* devinfo, uint8_t* log_bar_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小 BAR 大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_bar_size
单个 BAR 的最小 BAR 大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_size ( const doca_devinfo* devinfo, uint8_t* log_db_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的最小门铃大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_db_size
单个门铃的最小门铃大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_log_min_db_stride_size ( const doca_devinfo* devinfo, uint8_t* log_stride_size )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型配置的单个门铃的最小步幅大小(以 2 为底的对数)。
参数
devinfo
要查询的设备。
log_stride_size
单个门铃的最小步幅大小,以字节为单位,以 Log (base 2) 单位给出。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_db_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大门铃 BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_bar_db_region_<*>_conf_set() 配置的最大门铃 BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_pba_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X PBA BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_set_bar_msix_pba_region_conf() 配置的最大 MSI-X PBA BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_msix_table_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大 MSI-X 表 BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_set_bar_msix_table_region_conf() 配置的最大 MSI-X 表 BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_regions ( const doca_devinfo* devinfo, uint32_t* max_bar_regions )
获取可以为模拟 PCI 设备配置的最大 BAR 区域数,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
参数
devinfo
要查询的设备。
max_bar_regions
可以使用 doca_devemu_pci_type_bar_*_region_conf_set() 配置的 BAR 区域的数量,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bar_stateful_regions ( const doca_devinfo* devinfo, uint32_t* max_regions )
获取可以为使用 doca_devemu_pci_type_create() 创建或将要创建的任何 PCI 类型配置的最大状态 BAR 区域数量。
参数
devinfo
要查询的设备。
max_regions
可以使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的最大状态 BAR 区域数,适用于任何 pci 类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_bars ( const doca_devinfo* devinfo, uint8_t* max_bars )
获取可以为模拟 PCI 设备配置的最大 BAR 数量,适用于使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型。
参数
devinfo
要查询的设备。
max_bars
可以使用 doca_devemu_pci_type_*_bar_conf_set() 为任何 pci 类型配置的 BAR 的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_db ( const doca_devinfo* devinfo, uint16_t* num_db )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大门铃数量。
参数
devinfo
要查询的设备。
num_db
门铃的最大数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_get_max_num_msix ( const doca_devinfo* devinfo, uint16_t* num_msix )
获取可以为使用 doca_devemu_pci_type_create() 创建的任何 PCI 类型以及与使用 doca_devemu_pci_type_create() 创建的 PCI 类型关联的任何 PCI 设备配置的最大 MSIX 数量。
参数
devinfo
要查询的设备。
num_msix
MSIX 的最大数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_bar_mem_type_supported ( const doca_devinfo* devinfo, doca_devemu_pci_bar_mem_type memory_type, uint8_t* supported )
获取设备的内存 BAR 类型能力。如果支持,可以使用 doca_devemu_pci_type_set_memory_bar_conf() 配置具有该内存类型的 BAR。
参数
devinfo
要查询的设备。
memory_type
要查询的 BAR 内存类型。
supported
如果设备支持 BAR 内存类型,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo' 或 'supported' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_hotplug_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的热插拔能力。
参数
devinfo
要查询的设备。
pci_type
要查询的 DOCA pci 类型。
supported
如果此类型支持热插拔功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo'、'pci_type' 或 'supported' 为 NULL,或者如果 doca_dev 已经分配给 pci_type,则 devinfo 与关联的 doca_dev 不匹配
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

获取 uint8_t 值,该值定义设备是否可以用于热插拔特定类型的设备。设备的热插拔功能意味着其管理功能。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_cap_type_is_mgmt_supported ( const doca_devinfo* devinfo, const doca_devemu_pci_type* pci_type, uint8_t* supported )
获取给定 pci 类型的设备的管理能力。
参数
devinfo
要查询的设备。
pci_type
要查询的 DOCA pci 类型。
supported
如果此类型支持管理功能,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo'、'pci_type' 或 'supported' 为 NULL,或者如果 doca_dev 已经分配给 pci_type,则 devinfo 与关联的 doca_dev 不匹配
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

获取 uint8_t 值,该值定义设备是否可以用于管理特定类型的设备。设备的管理功能并不意味着其热插拔功能。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_create_rep ( const doca_devemu_pci_type* pci_type, doca_dev_rep** dev_rep )
为给定 pci 类型创建新的 representor 设备。
参数
pci_type
DOCA pci 类型。必须已启动。
dev_rep
成功时初始化的表示器 doca 设备实例。 仅在成功时有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'dev_rep' 为 NULL
  • DOCA_ERROR_BAD_STATE - 类型未启动
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

表示器设备对主机不可见。可以使用表示器的发现机制来发现表示器设备。

注意

pci 类型必须已启动。


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_dev_destroy_rep ( doca_dev_rep* rep_dev )
销毁使用 doca_devemu_pci_dev_create_rep() 创建的 representor 设备。
参数
rep_dev
先前初始化的表示器设备实例。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'rep_dev' 为 NULL 或已损坏
  • DOCA_ERROR_NOT_PERMITTED - 表示器不是使用 doca_devemu_pci_dev_create_rep() 创建的
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

表示器设备对主机不可见。表示器设备将无法使用表示器的发现机制发现。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create ( const char* name, doca_devemu_pci_type** pci_type )
创建已停止的 DOCA devemu pci 类型。
参数
name
要分配给创建的 DOCA devemu pci 类型的名称。以 NULL 结尾的字符串不得超过 DOCA_DEVEMU_PCI_TYPE_NAME_LEN。
pci_type
已创建且已停止的 DOCA devemu pci 类型。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'name' 或 'pci_type' 为 NULL
  • DOCA_ERROR_NO_MEMORY - 分配失败
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_create_rep_list ( doca_devemu_pci_type* pci_type, doca_devinfo_rep*** dev_list_rep, uint32_t* nb_devs_rep )
为给定的 devemu pci 类型创建可用 representor 设备列表。
参数
pci_type
DOCA devemu pci 类型。必须已启动。
dev_list_rep
指向指针数组的指针。然后可以按如下方式访问输出 (*dev_list_rep)[idx]。
nb_devs_rep
可用代表设备的数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

返回与提供的 devemu pci 类型系列关联的所有表示器。提供的 pci 类型必须已启动。表示器可以表示当前连接到主机 PCI 子系统的模拟 PCI 功能,也可以表示旨在热插拔到主机 PCI 子系统中的模拟 PCI 功能。

注意

返回的列表必须使用 doca_devinfo_rep_destroy_list() 销毁


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_destroy ( doca_devemu_pci_type* pci_type )
销毁 DOCA devemu pci 类型。
参数
pci_type
要销毁的 DOCA devemu pci 类型。必须已停止。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_class_code ( const doca_devemu_pci_type* pci_type, uint32_t* class_code )
获取 pci 类型的 PCI 类代码,以识别通用操作。
参数
pci_type
要查询的 DOCA pci 类型。
class_code
PCI 类代码,用于标识通用操作。只有 24 个 LSB 位有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'class_code' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_dev ( const doca_devemu_pci_type* pci_type, doca_dev** dev )
获取 pci 类型的 doca 设备。
参数
pci_type
要查询的 DOCA devemu pci 类型。
dev
DOCA 设备。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'dev' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_device_id ( const doca_devemu_pci_type* pci_type, uint16_t* device_id )
获取 pci 类型的 PCI 设备 ID。
参数
pci_type
要查询的 DOCA pci 类型。
device_id
供应商分配的 PCI 设备 ID (DID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'device_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_name ( const doca_devemu_pci_type* pci_type, char(*) name[DOCA_DEVEMU_PCI_TYPE_NAME_LEN] )
获取 pci 类型的名称。
参数
pci_type
要查询的 DOCA pci 类型。
name
pci 类型的名称。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'name' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_num_msix ( const doca_devemu_pci_type* pci_type, uint16_t* num_msix )
从 pci 类型的 MSI-X 功能寄存器获取 MSI-X 表的大小(从 1 开始)。除非另行配置,否则此值将用作关联的 DOCA devemu pci 设备的默认 num_msix 值。
参数
pci_type
要查询的 DOCA pci 类型。
num_msix
MSI-X 表的大小,来自 MSI-X Capability Registers (基于 1)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'num_msix' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_revision_id ( const doca_devemu_pci_type* pci_type, uint8_t* revision_id )
获取 pci 类型的 PCI 修订 ID。
参数
pci_type
要查询的 DOCA pci 类型。
revision_id
供应商分配的 PCI 修订 ID。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'revision_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_id )
获取 pci 类型的 PCI 子系统 ID。
参数
pci_type
要查询的 DOCA pci 类型。
subsystem_id
子系统供应商分配的 PCI 子系统 ID (SSID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'subsystem_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_subsystem_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* subsystem_vid )
获取 pci 类型的 PCI 子系统供应商 ID。
参数
pci_type
要查询的 DOCA pci 类型。
subsystem_vid
PCI-SIG 分配的 PCI 子系统供应商 ID (SVID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'subsystem_vid' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_get_vendor_id ( const doca_devemu_pci_type* pci_type, uint16_t* vendor_id )
获取 pci 类型的 PCI 供应商 ID。
参数
pci_type
要查询的 DOCA pci 类型。
vendor_id
PCI-SIG 分配的 PCI 供应商 ID (VID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'vendor_id' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_is_started ( const doca_devemu_pci_type* pci_type, uint8_t* started )
检查 pci 类型是否已启动。
参数
pci_type
要查询的 DOCA pci 类型。
started
如果 pci_type 已启动,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'started' 为 NULL。
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_modify_bar_stateful_region_default_values ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, void* default_values, uint64_t size )
修改 DOCA devemu pci 类型中已配置的状态区域的默认寄存器值。
参数
pci_type
DOCA devemu pci 类型。必须已启动,且不得与任何 pci_dev 或 doca_dev_rep 关联。
id
包含状态区域的 BAR id。此值必须与 doca_devemu_pci_type_set_bar_stateful_region_conf() 期间提供的 id 一致。
start_addr
BAR 内区域的起始地址。此值必须与在 doca_devemu_pci_type_set_bar_stateful_region_conf() 期间提供的起始地址一致。
default_values
包含默认值数据的输入缓冲区。
size
default_values 缓冲区的大小(以字节为单位)。该大小不得小于使用 doca_devemu_pci_type_set_bar_stateful_region_conf() 配置的状态 bar 区域的实际大小。如果大小大于实际大小,则将根据实际大小使用前几个相关字节。缓冲区的其余部分将被忽略。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

此方法将修改 pci 类型 BAR 中整个状态区域寄存器区域的默认值(在首次修改之前,状态区域寄存器的初始默认值被清零)。使用 doca_devemu_pci_dev_create_rep() 从关联的 pci_type 创建的 doca_dev_rep 将在创建时继承这些默认值。此外,每个从关联的 doca_dev_rep 创建的 pci_dev 都有机会通过调用 doca_devemu_pci_dev_modify_bar_stateful_region_default_values() 来更新其自身的默认值,而不会影响 pci_type 的默认值。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_data_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint16_t db_id_msbyte, uint16_t db_id_lsbyte )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据写入门铃的数据来识别与此门铃 BAR 区域关联的门铃。门铃标识符将通过 db_id_lsbyte 和 db_id_msbyte 设置从写入的门铃数据中推断出来。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 doca_devemu_pci_cap_bar_db_region_get_region_block_size()doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks() 一致。
log_db_size
单个门铃大小,以字节为单位,以 Log (以 2 为底) 单位给出。此值必须与 doca_devemu_pci_cap_type_get_log_min_db_size()doca_devemu_pci_cap_type_get_log_max_db_size() 一致。
db_id_msbyte
门铃标识符的起始字节,在驱动程序写入的门铃数据内。如果 db_id_msbyte > db_id_lsbyte,则门铃标识符将被视为小端序。
db_id_lsbyte
门铃标识符的结束字节,在驱动程序写入的门铃数据内。如果 db_id_msbyte > db_id_lsbyte,则门铃标识符将被视为小端序。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_db_region_by_offset_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size, uint8_t log_db_size, uint8_t log_stride_size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个门铃 BAR 区域配置。将根据门铃在其 BAR 中的偏移量来识别与此门铃 BAR 区域关联的门铃。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_db_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 doca_devemu_pci_cap_bar_db_region_get_region_block_size()doca_devemu_pci_cap_bar_db_region_get_max_num_region_blocks() 一致。
log_db_size
单个门铃大小,以字节为单位,以 Log (以 2 为底) 单位给出。此值必须与 doca_devemu_pci_cap_type_get_log_min_db_size()doca_devemu_pci_cap_type_get_log_max_db_size() 一致。
log_stride_size
单个门铃步长的大小,以字节为单位,以 Log (以 2 为底) 单位给出。此值必须与 doca_devemu_pci_cap_type_get_log_min_db_stride_size()doca_devemu_pci_cap_type_get_log_max_db_stride_size() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_pba_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X PBA BAR 区域配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_msix_pba_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 pci 类型的 num_msix 值相关联,并与 doca_devemu_pci_cap_bar_msix_pba_region_get_region_block_size()doca_devemu_pci_cap_bar_msix_pba_region_get_max_num_region_blocks() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_msix_table_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个 MSI-X 表 BAR 区域配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_msix_table_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 pci 类型的 num_msix 值相关联,并与 doca_devemu_pci_cap_bar_msix_table_region_get_region_block_size()doca_devemu_pci_cap_bar_msix_table_region_get_max_num_region_blocks() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_bar_stateful_region_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint64_t start_addr, uint64_t size )
为 DOCA devemu pci 类型中的 BAR 布局设置一个状态 BAR 区域配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
将包含新区域的 BAR id。
start_addr
区域在 BAR 内的起始地址。此值必须与来自 doca_devemu_pci_cap_bar_stateful_region_get_start_addr_alignment() 的起始地址对齐能力一致。
size
区域的大小,以字节为单位。必须与 doca_devemu_pci_cap_bar_stateful_region_get_region_block_size()doca_devemu_pci_cap_bar_stateful_region_get_max_num_region_blocks() 一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

状态 BAR 区域将由设备用于向驱动程序公开寄存器。此区域将由设备主动维护。对此区域的 PCI READ 事务将由设备自动应答。PCI WRITE 事务将由设备存储到此区域。如果注册了 doca_devemu_pci_dev_event_bar_stateful_region_driver_write 事件,则当设备驱动程序发起对此区域的任何 PCI WRITE 事务时,关联的 pci_dev 将收到通知。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_class_code ( doca_devemu_pci_type* pci_type, uint32_t class_code )
设置 pci 类型的 PCI 类代码,以标识通用操作。
参数
pci_type
要修改的 DOCA pci 上下文。必须未启动。
class_code
PCI 类代码,用于标识通用操作。只有 24 个 LSB 位有效。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_dev ( doca_devemu_pci_type* pci_type, doca_dev* dev )
设置 pci 类型的 doca 设备。
参数
pci_type
要修改的 DOCA devemu pci 类型。必须未启动。
dev
DOCA 设备。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 或 'dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
  • DOCA_ERROR_NOT_PERMITTED - 无法为默认 pci 类型设置设备
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_device_id ( doca_devemu_pci_type* pci_type, uint16_t device_id )
设置 pci 类型的 PCI 设备 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
device_id
要分配的 PCI 设备 ID (DID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_io_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz )
为 DOCA devemu pci 类型设置 IO BAR 布局配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
BAR id。
log_sz
BAR 大小,以 Log (以 2 为底) 单位给出。如果之前的 BAR 需要扩展(例如,对于 64 位 BAR),则必须设置为 0。否则,此值必须与 doca_devemu_pci_cap_type_get_log_min_bar_size()doca_devemu_pci_cap_type_get_log_max_bar_size() 功能一致。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述
注意

此配置仅适用于由 doca_devemu_pci_type_create() 创建的类型


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_memory_bar_conf ( doca_devemu_pci_type* pci_type, uint8_t id, uint8_t log_sz, doca_devemu_pci_bar_mem_type memory_type, uint8_t prefetchable )
为 DOCA devemu pci 类型设置内存 BAR 布局配置。
参数
pci_type
DOCA devemu pci 类型。必须未启动。
id
BAR id。
log_sz
BAR 大小,以 Log (以 2 为底) 单位给出。如果之前的 BAR 需要扩展(例如,对于 64 位 BAR),则必须设置为 0。否则,此值必须与 doca_devemu_pci_cap_type_get_log_min_bar_size()doca_devemu_pci_cap_type_get_log_max_bar_size() 功能一致。
memory_type
要为此 BAR 公开的内存类型值。
prefetchable
要为此 BAR 公开的可预取位值。如果 BAR 不包含读取时会产生副作用的位置,则设置为 1。如果 BAR 包含读取时会产生副作用的位置,或函数不容忍写入合并的位置,则设置为 0。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述
注意

此配置仅适用于由 doca_devemu_pci_type_create() 创建的类型


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_num_msix ( doca_devemu_pci_type* pci_type, uint16_t num_msix )
从 pci 类型的 MSI-X 功能寄存器(基于 1)设置 MSI-X 表的大小。必须符合 doca_devemu_pci_cap_type_get_max_num_msix()。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
num_msix
MSI-X 表的大小,来自 MSI-X Capability Registers (基于 1)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_revision_id ( doca_devemu_pci_type* pci_type, uint8_t revision_id )
设置 pci 类型的 PCI 修订 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
revision_id
要分配的 PCI 修订 ID。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_id )
设置 pci 类型的 PCI 子系统 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
subsystem_id
要分配的 PCI 子系统 ID (SSID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_subsystem_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t subsystem_vid )
设置 pci 类型的 PCI 子系统供应商 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
subsystem_vid
PCI-SIG 分配的 PCI 子系统供应商 ID (SVID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_set_vendor_id ( doca_devemu_pci_type* pci_type, uint16_t vendor_id )
设置 pci 类型的 PCI 供应商 ID。
参数
pci_type
要修改的 DOCA pci 类型。必须未启动。
vendor_id
PCI-SIG 分配的 PCI 供应商 ID (VID)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 启动后无法配置类型
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_start ( doca_devemu_pci_type* pci_type )
启动 DOCA devemu pci 类型。
参数
pci_type
要启动的 DOCA devemu pci 类型。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL 或之前提供了无效的 PCI 参数
  • DOCA_ERROR_BAD_STATE - 类型已启动
  • DOCA_ERROR_NOT_FOUND - 未提供设备 - 使用 doca_devemu_pci_type_set_dev()
  • DOCA_ERROR_NO_MEMORY - 分配失败
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述
注意

此方法成功后,将禁用配置 DOCA devemu pci 类型的功能。


DOCA_EXPERIMENTAL doca_error_t doca_devemu_pci_type_stop ( doca_devemu_pci_type* pci_type )
停止 DOCA devemu pci 类型。
参数
pci_type
要停止的 DOCA devemu pci 类型。不得与任何 pci 设备关联。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
  • DOCA_ERROR_BAD_STATE - 类型已停止
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述
注意

此方法成功后,将重新启用配置 DOCA devemu pci 类型的功能。


2.10.2. DOCA 设备模拟 - Virtio FS 设备

[ DOCA 设备仿真 ]

用于模拟 virtio FS 设备的 DOCA 库

模块
 DOCA 设备模拟 - Virtio FS 设备类型
 
 DOCA 设备模拟 - Virtio FS IO 上下文
 
宏定义
#define DOCA_VFS_TAG_SIZE 21
DOCA 中 virtio FS 标签的大小,以字节为单位。根据规范,这是与文件系统关联的名称。标签以 UTF-8 编码,如果短于可用空间,则用 NULL 字节填充。根据 Virtio 规范,此字段不是以 NULL 结尾的。在 DOCA 中,标签编码比 Virtio 规范中短,并且必须以 NULL 结尾(仅允许前 20 个字节以非 NULL 字节编码)。
函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_dev_as_ctx ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA 上下文。
DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_vfs_dev_as_pci_dev ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA devemu PCI 设备。
DOCA_EXPERIMENTAL doca_devemu_virtio_dev* doca_devemu_vfs_dev_as_virtio_dev ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA Virtio 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_create ( doca_devemu_vfs_type* vfs_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_vfs_dev** vfs_dev )
分配 DOCA Virtio FS 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_destroy ( doca_devemu_vfs_dev* vfs_dev )
释放 DOCA Virtio FS 设备对象。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_notify_buf_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* notify_buf_size )
获取 VIRTIO FS 设备 notify_buf_size 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_num_request_queues ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* num_request_queues )
获取 VIRTIO FS 设备 num_request_queues 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_tag ( const doca_devemu_vfs_dev* vfs_dev, char  tag[DOCA_VFS_TAG_SIZE] )
获取 Virtio FS 设备标签的值。根据规范,标签以 UTF-8 编码,如果短于 36 字节的可用空间,则用 NULL 字节填充,如果编码字节占用整个 36 字节字段,则不以 NULL 结尾。在 DOCA 中,标签始终以 NULL 结尾,并且比 Virtio 规范定义短。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_vfs_notification_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
获取将为用户代表分配的每个 doca_devemu_vfs_notification_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_notification_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_notification_req 完成后变为无效。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_vfs_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
获取将为用户代表分配的每个 doca_devemu_vfs_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_req 完成后变为无效。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_notify_buf_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t notify_buf_size )
设置 VIRTIO FS 设备 notify_buf_size 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_num_request_queues ( doca_devemu_vfs_dev* vfs_dev, uint32_t num_request_queues )
设置 VIRTIO FS 设备 num_request_queues 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_tag ( doca_devemu_vfs_dev* vfs_dev, const char  tag[DOCA_VFS_TAG_SIZE] )
设置 Virtio FS 设备标签的值。根据规范,标签以 UTF-8 编码,如果短于 36 字节的可用空间,则用 NULL 字节填充,如果编码字节占用整个 36 字节字段,则不以 NULL 结尾。在 DOCA 中,标签始终以 NULL 结尾,并且比 Virtio 规范定义短。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_vfs_notification_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
设置将为用户代表分配的每个 doca_devemu_vfs_notification_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_notification_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_notification_req 完成后变为无效。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_vfs_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
设置将为用户代表分配的每个 doca_devemu_vfs_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_req 完成后变为无效。
宏定义
#define DOCA_VFS_TAG_SIZE 21

函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_dev_as_ctx ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA 上下文。
参数
vfs_dev
DOCA Virtio FS 设备实例。在不再需要 DOCA 上下文之前,它必须保持有效。

返回值

成功时返回 doca ctx,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_vfs_dev_as_pci_dev ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA devemu PCI 设备。
参数
vfs_dev
DOCA Virtio FS 设备实例。在不再需要 DOCA devemu PCI 设备之前,它必须保持有效。

返回值

成功时返回 DOCA devemu pci 设备,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_virtio_dev* doca_devemu_vfs_dev_as_virtio_dev ( doca_devemu_vfs_dev* vfs_dev )
将 DOCA Virtio FS 设备实例转换为 DOCA Virtio 设备。
参数
vfs_dev
DOCA Virtio FS 设备实例。在不再需要 DOCA Virtio 设备之前,它必须保持有效。

返回值

成功时返回 doca virtio 设备,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_create ( doca_devemu_vfs_type* vfs_type, doca_dev_rep* dev_rep, doca_pe* progress_engine, doca_devemu_vfs_dev** vfs_dev )
分配 DOCA Virtio FS 设备。
参数
vfs_type
要与设备关联的 DOCA Virtio FS 类型。必须已启动。
dev_rep
Representor DOCA 设备。
progress_engine
将用于接收事件和任务完成的进度引擎。
vfs_dev
新创建的 DOCA Virtio FS 设备。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_destroy ( doca_devemu_vfs_dev* vfs_dev )
释放 DOCA Virtio FS 设备对象。
参数
vfs_dev
先前创建的 DOCA Virtio FS 设备。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_notify_buf_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* notify_buf_size )
获取 VIRTIO FS 设备 notify_buf_size 寄存器的值。
参数
vfs_dev
要查询的 DOCA Virtio FS 设备实例。
notify_buf_size
根据 virtio 规范,virtio_fs_config:notify_buf_size 寄存器的值。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'notify_buf_size' 为 NULL
描述

仅当设置了 VIRTIO_FS_F_NOTIFICATION 特性位时,notify_buf_size 值才会被使用。因此,在启动关联的 vfs_dev 之前,notify_buf_size 值必须符合 VIRTIO_FS_F_NOTIFICATION 特性位。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_num_request_queues ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* num_request_queues )
获取 VIRTIO FS 设备 num_request_queues 寄存器的值。
参数
vfs_dev
要查询的 DOCA Virtio FS 设备实例。
num_request_queues
根据 virtio 规范,设备 virtio_fs_config:num_request_queues 寄存器的值。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'num_request_queues' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_tag ( const doca_devemu_vfs_dev* vfs_dev, char  tag[DOCA_VFS_TAG_SIZE] )
获取 Virtio FS 设备标签的值。根据规范,标签以 UTF-8 编码,如果短于 36 字节的可用空间,则用 NULL 字节填充,如果编码字节占用整个 36 字节字段,则不以 NULL 结尾。在 DOCA 中,标签始终以 NULL 结尾,并且比 Virtio 规范定义短。
参数
vfs_dev
要查询的 DOCA Virtio FS 设备实例。
tag
根据 Virtio 规范,Virtio FS 设备 virtio_fs_config:tag 的值(以 NULL 结尾)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'tag' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_vfs_notification_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
获取将为用户代表分配的每个 doca_devemu_vfs_notification_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_notification_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_notification_req 完成后变为无效。
参数
vfs_dev
要查询的 DOCA Virtio FS 设备实例。
req_user_data_size
将代表用户为每个 doca_devemu_vfs_notification_req 分配的用户数据缓冲区大小,以字节为单位。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'req_user_data_size' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_get_vfs_req_user_data_size ( const doca_devemu_vfs_dev* vfs_dev, uint32_t* req_user_data_size )
获取将为用户代表分配的每个 doca_devemu_vfs_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_req 完成后变为无效。
参数
vfs_dev
要查询的 DOCA Virtio FS 设备实例。
req_user_data_size
将代表用户为每个 doca_devemu_vfs_req 分配的用户数据缓冲区大小,以字节为单位。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'req_user_data_size' 为 NULL
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_notify_buf_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t notify_buf_size )
设置 VIRTIO FS 设备 notify_buf_size 寄存器的值。
参数
vfs_dev
要修改的 DOCA Virtio FS 设备实例。必须处于空闲状态。
notify_buf_size
根据 virtio 规范,virtio_fs_config:notify_buf_size 寄存器的值。如果设置了 VIRTIO_FS_F_NOTIFICATION 位,则此值必须是 2 的幂。如果未设置 VIRTIO_FS_F_NOTIFICATION 特性位,则可以使用值 0。notify_buf_size 和 VIRTIO_FS_F_NOTIFICATION 之间的符合性将在启动关联的 vfs_dev 时进行验证。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 为 NULL 或 notify_buf_size 值无效。
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态
描述

仅当设置了 VIRTIO_FS_F_NOTIFICATION 特性位时,notify_buf_size 值才会被使用。因此,在启动关联的 vfs_dev 之前,notify_buf_size 值必须符合 VIRTIO_FS_F_NOTIFICATION 特性位。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_num_request_queues ( doca_devemu_vfs_dev* vfs_dev, uint32_t num_request_queues )
设置 VIRTIO FS 设备 num_request_queues 寄存器的值。
参数
vfs_dev
要修改的 DOCA Virtio FS 设备实例。必须处于空闲状态。
num_request_queues
根据 virtio 规范,设备 virtio_fs_config:num_request_queues 寄存器的值。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_tag ( doca_devemu_vfs_dev* vfs_dev, const char  tag[DOCA_VFS_TAG_SIZE] )
设置 Virtio FS 设备标签的值。根据规范,标签以 UTF-8 编码,如果短于 36 字节的可用空间,则用 NULL 字节填充,如果编码字节占用整个 36 字节字段,则不以 NULL 结尾。在 DOCA 中,标签始终以 NULL 结尾,并且比 Virtio 规范定义短。
参数
vfs_dev
要修改的 DOCA Virtio FS 设备实例。必须处于空闲状态。
tag
根据 Virtio 规范,Virtio FS 设备 virtio_fs_config:tag 的值(以 NULL 结尾)。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 或 'tag' 为 NULL
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态
  • DOCA_ERROR_TOO_BIG - 标签大于 20 字节
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_vfs_notification_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
设置将为用户代表分配的每个 doca_devemu_vfs_notification_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_notification_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_notification_req 完成后变为无效。
参数
vfs_dev
要修改的 DOCA Virtio FS 设备实例。必须处于空闲状态。
req_user_data_size
将代表用户为每个 doca_devemu_vfs_notification_req 分配的用户数据缓冲区大小,以字节为单位。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态
描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_dev_set_vfs_req_user_data_size ( doca_devemu_vfs_dev* vfs_dev, uint32_t req_user_data_size )
设置将为用户代表分配的每个 doca_devemu_vfs_req 的用户数据缓冲区大小。此缓冲区在接收到新的 doca_devemu_vfs_req 时将有效并由用户使用。缓冲区将在 doca_devemu_vfs_req 完成后变为无效。
参数
vfs_dev
要修改的 DOCA Virtio FS 设备实例。必须处于空闲状态。
req_user_data_size
将代表用户为每个 doca_devemu_vfs_req 分配的用户数据缓冲区大小,以字节为单位。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_dev' 为 NULL
  • DOCA_ERROR_BAD_STATE - 设备未处于空闲状态
描述

DOCA 设备模拟 - Virtio FS IO 上下文

DOCA 设备模拟 - Virtio FS 设备类型

2.10.2.1. DOCA 设备模拟 - Virtio FS IO 上下文
[ DOCA 设备模拟 - Virtio FS 设备 ]

DOCA Virtio FS IO 上下文

类型定义
typedef void  ( *doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t )( doca_devemu_vfs_notification_req*  req, void*  req_user_data,  union doca_data event_user_data )
在 vfs_notification_req_notice 事件发生时要执行的函数。doca_devemu_vfs_notification_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。
typedef void  ( *doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t )( doca_devemu_vfs_req*  req, void*  req_user_data,  union doca_data event_user_data )
在 vfs_req_notice 事件发生时要执行的函数。doca_devemu_vfs_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。
函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_io_as_ctx ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA 上下文。
DOCA_EXPERIMENTAL doca_devemu_virtio_io* doca_devemu_vfs_io_as_virtio_io ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA Virtio 设备 IO 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_create ( doca_devemu_vfs_dev* vfs_dev, doca_pe* progress_engine, doca_devemu_vfs_io** io )
为 DOCA Virtio FS 设备分配 Virtio FS 设备 IO 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_destroy ( doca_devemu_vfs_io* io )
释放 Virtio FS 设备 IO 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_notification_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS notification_request 通知。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS 请求通知。
DOCA_EXPERIMENTAL void doca_devemu_vfs_notification_req_complete ( doca_devemu_vfs_notification_req* req, uint32_t len )
完成 Virtio FS notification_request。请求所有权(包括相关联的 dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_notification_req_get_dataout ( doca_devemu_vfs_notification_req* req )
获取与 Virtio FS 通知请求的 dataout 部分关联的 doca 缓冲区。
DOCA_EXPERIMENTAL void doca_devemu_vfs_req_complete ( doca_devemu_vfs_req* req, uint32_t len )
完成 Virtio FS 请求。请求所有权(包括相关联的 datain、dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_datain ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 datain 部分关联的 doca 缓冲区。
DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_datain_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_datain() 返回的 Virtio FS 请求的 datain 部分关联的原始 doca 缓冲区链表中的元素数量。
DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_dataout ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 dataout 部分关联的 doca 缓冲区。
DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_dataout_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_dataout() 返回的 Virtio FS 请求的 dataout 部分关联的原始 doca 缓冲区链表中的元素数量。
类型定义
void ( *doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t )( doca_devemu_vfs_notification_req*  req, void*  req_user_data,  union doca_data event_user_data )

在 vfs_notification_req_notice 事件发生时要执行的函数。doca_devemu_vfs_notification_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。

参数
req
到达的请求。
req_user_data
与请求关联的用户数据。
union doca_data event_user_data

void ( *doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t )( doca_devemu_vfs_req*  req, void*  req_user_data,  union doca_data event_user_data )

在 vfs_req_notice 事件发生时要执行的函数。doca_devemu_vfs_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。

参数
req
到达的请求。
req_user_data
与请求关联的用户数据。
union doca_data event_user_data

函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_io_as_ctx ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA 上下文。
参数
io
DOCA Virtio FS 设备 IO 上下文实例。在 DOCA 上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca ctx,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_virtio_io* doca_devemu_vfs_io_as_virtio_io ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA Virtio 设备 IO 上下文。
参数
io
DOCA Virtio FS 设备 IO 上下文实例。在 DOCA Virtio 设备 IO 上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca devemu virtio 设备 io 上下文,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_create ( doca_devemu_vfs_dev* vfs_dev, doca_pe* progress_engine, doca_devemu_vfs_io** io )
为 DOCA Virtio FS 设备分配 Virtio FS 设备 IO 上下文。
参数
vfs_dev
DOCA Virtio FS 设备。
progress_engine
将用于推进新上下文的进度引擎。
io
创建的 DOCA Virtio FS 设备 IO 上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

Virtio FS IO 上下文的职责是将来自设备驱动程序的请求中继到 Virtio FS 服务和应用程序。此外,它还负责将来自 Virtio FS 服务和应用程序的完成中继到设备驱动程序。每个 Virtio FS 设备 IO 上下文都与单个 DOCA Virtio FS 设备关联。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_destroy ( doca_devemu_vfs_io* io )
释放 Virtio FS 设备 IO 上下文。
参数
io
要释放的 DOCA Virtio FS 设备 IO 上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_notification_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS notification_request 通知。
参数
io
要与事件关联的 DOCA Virtio FS 设备 IO 上下文。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'io' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - IO 未处于空闲状态
描述

注册只能在 IO ctx 处于空闲状态时完成。如果多次调用,则只有最后一次调用生效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS 请求通知。
参数
io
要与事件关联的 DOCA Virtio FS 设备 IO 上下文。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'io' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - IO 未处于空闲状态
描述

注册只能在 IO ctx 处于空闲状态时完成。如果多次调用,则只有最后一次调用生效。

DOCA_EXPERIMENTAL void doca_devemu_vfs_notification_req_complete ( doca_devemu_vfs_notification_req* req, uint32_t len )
完成 Virtio FS notification_request。请求所有权(包括相关联的 dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
参数
req
要完成的 Virtio FS notification_request。
len
写入到 req 描述的缓冲区设备可写部分的字节数。

描述

DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_notification_req_get_dataout ( doca_devemu_vfs_notification_req* req )
获取与 Virtio FS 通知请求的 dataout 部分关联的 doca 缓冲区。
参数
req
要查询的 Virtio FS 通知请求。

返回值

表示设备可写部分主机内存的 doca 缓冲区,根据 virtio 规范,virtio_fs_notify::(out_hdr + outarg) 与成功时的通知请求相关联。否则为 NULL。

描述

此函数应在将请求调度到将写入 doca 缓冲区的执行上下文期间发出。

DOCA_EXPERIMENTAL void doca_devemu_vfs_req_complete ( doca_devemu_vfs_req* req, uint32_t len )
完成 Virtio FS 请求。请求所有权(包括相关联的 datain、dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
参数
req
要完成的 Virtio FS 请求。
len
写入到 req 描述的缓冲区设备可写部分的字节数。

描述

DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_datain ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 datain 部分关联的 doca 缓冲区。
参数
req
要查询的 Virtio FS 请求。

返回值

表示设备可读部分主机内存的 doca 缓冲区,根据 virtio 规范,virtio_fs_req::(in + datain) 与成功时的请求相关联。否则为 NULL。

描述

此函数应在将请求调度到将从 doca 缓冲区读取数据的执行上下文期间发出。

DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_datain_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_datain() 返回的 Virtio FS 请求的 datain 部分关联的原始 doca 缓冲区链表中的元素数量。
参数
req
要查询的 Virtio FS 请求。不得为 NULL。

返回值

原始 datain doca 缓冲区链表中的元素数量。仅当请求的所有权归用户所有时才有效。

描述

DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_dataout ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 dataout 部分关联的 doca 缓冲区。
参数
req
要查询的 Virtio FS 请求。

返回值

表示设备可写部分主机内存的 doca 缓冲区,根据 virtio 规范,virtio_fs_req::(out + dataout) 与成功时的请求相关联。否则为 NULL。

描述

此函数应在将请求调度到将写入 doca 缓冲区的执行上下文期间发出。

DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_dataout_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_dataout() 返回的 Virtio FS 请求的 dataout 部分关联的原始 doca 缓冲区链表中的元素数量。
参数
req
要查询的 Virtio FS 请求。不得为 NULL。

返回值

原始 dataout doca 缓冲区链表中的元素数量。仅当请求的所有权归用户所有时才有效。

描述

2.10.2.2. DOCA 设备仿真 - Virtio FS 设备类型
[ DOCA 设备模拟 - Virtio FS 设备 ]

DOCA Virtio FS 类型

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
查找与设备关联的默认 DOCA Virtio FS 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持默认 DOCA Virtio FS 类型。
DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA PCI 类型。
DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA Virtio 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
获取 num_request_queues 寄存器的值。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
查找与设备关联的默认 DOCA Virtio FS 类型。
参数
dev
与默认类型关联的 doca dev。
vfs_type
启动的 DOCA Virtio FS 默认类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持默认 DOCA Virtio FS 类型。
参数
devinfo
要查询的设备。
supported
如果设备支持默认 Virtio FS 类型,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo' 或 'supported' 为 NULL。
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

获取 uint8_t 值,定义设备是否可以用于管理与默认 Virtio FS 类型关联的 DOCA Virtio FS 仿真设备。

DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA PCI 类型。
参数
vfs_type
DOCA Virtio FS 类型实例。在 DOCA PCI 类型不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA PCI 类型,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA Virtio 类型。
参数
vfs_type
DOCA Virtio FS 类型实例。在 DOCA Virtio 类型不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA Virtio 类型,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
获取 num_request_queues 寄存器的值。
参数
vfs_type
要查询的 DOCA Virtio FS 类型实例。
num_request_queues
根据 virtio 规范,virtio_fs_config:num_request_queues 寄存器值,默认情况下,将由与 vfs_type 关联的设备使用。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_type' 或 'num_request_queues' 为 NULL
描述

DOCA 设备模拟 - Virtio FS IO 上下文

DOCA 设备模拟 - Virtio FS 设备类型

2.10.2.1. DOCA 设备模拟 - Virtio FS IO 上下文
[ DOCA 设备模拟 - Virtio FS 设备 ]

DOCA Virtio FS IO 上下文

类型定义
typedef void  ( *doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t )( doca_devemu_vfs_notification_req*  req, void*  req_user_data,  union doca_data event_user_data )
在 vfs_notification_req_notice 事件发生时要执行的函数。doca_devemu_vfs_notification_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。
typedef void  ( *doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t )( doca_devemu_vfs_req*  req, void*  req_user_data,  union doca_data event_user_data )
在 vfs_req_notice 事件发生时要执行的函数。doca_devemu_vfs_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。
函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_io_as_ctx ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA 上下文。
DOCA_EXPERIMENTAL doca_devemu_virtio_io* doca_devemu_vfs_io_as_virtio_io ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA Virtio 设备 IO 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_create ( doca_devemu_vfs_dev* vfs_dev, doca_pe* progress_engine, doca_devemu_vfs_io** io )
为 DOCA Virtio FS 设备分配 Virtio FS 设备 IO 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_destroy ( doca_devemu_vfs_io* io )
释放 Virtio FS 设备 IO 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_notification_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS notification_request 通知。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS 请求通知。
DOCA_EXPERIMENTAL void doca_devemu_vfs_notification_req_complete ( doca_devemu_vfs_notification_req* req, uint32_t len )
完成 Virtio FS notification_request。请求所有权(包括相关联的 dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_notification_req_get_dataout ( doca_devemu_vfs_notification_req* req )
获取与 Virtio FS 通知请求的 dataout 部分关联的 doca 缓冲区。
DOCA_EXPERIMENTAL void doca_devemu_vfs_req_complete ( doca_devemu_vfs_req* req, uint32_t len )
完成 Virtio FS 请求。请求所有权(包括相关联的 datain、dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_datain ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 datain 部分关联的 doca 缓冲区。
DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_datain_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_datain() 返回的 Virtio FS 请求的 datain 部分关联的原始 doca 缓冲区链表中的元素数量。
DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_dataout ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 dataout 部分关联的 doca 缓冲区。
DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_dataout_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_dataout() 返回的 Virtio FS 请求的 dataout 部分关联的原始 doca 缓冲区链表中的元素数量。
类型定义
void ( *doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t )( doca_devemu_vfs_notification_req*  req, void*  req_user_data,  union doca_data event_user_data )

在 vfs_notification_req_notice 事件发生时要执行的函数。doca_devemu_vfs_notification_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。

参数
req
到达的请求。
req_user_data
与请求关联的用户数据。
union doca_data event_user_data

void ( *doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t )( doca_devemu_vfs_req*  req, void*  req_user_data,  union doca_data event_user_data )

在 vfs_req_notice 事件发生时要执行的函数。doca_devemu_vfs_req 和 req_user_data 的所有权从 doca_devemu_vfs_io ctx 转移到用户。

参数
req
到达的请求。
req_user_data
与请求关联的用户数据。
union doca_data event_user_data

函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_vfs_io_as_ctx ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA 上下文。
参数
io
DOCA Virtio FS 设备 IO 上下文实例。在 DOCA 上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca ctx,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_virtio_io* doca_devemu_vfs_io_as_virtio_io ( doca_devemu_vfs_io* io )
将 DOCA Virtio FS 设备 IO 上下文实例转换为 DOCA Virtio 设备 IO 上下文。
参数
io
DOCA Virtio FS 设备 IO 上下文实例。在 DOCA Virtio 设备 IO 上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca devemu virtio 设备 io 上下文,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_create ( doca_devemu_vfs_dev* vfs_dev, doca_pe* progress_engine, doca_devemu_vfs_io** io )
为 DOCA Virtio FS 设备分配 Virtio FS 设备 IO 上下文。
参数
vfs_dev
DOCA Virtio FS 设备。
progress_engine
将用于推进新上下文的进度引擎。
io
创建的 DOCA Virtio FS 设备 IO 上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

Virtio FS IO 上下文的职责是将来自设备驱动程序的请求中继到 Virtio FS 服务和应用程序。此外,它还负责将来自 Virtio FS 服务和应用程序的完成中继到设备驱动程序。每个 Virtio FS 设备 IO 上下文都与单个 DOCA Virtio FS 设备关联。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_destroy ( doca_devemu_vfs_io* io )
释放 Virtio FS 设备 IO 上下文。
参数
io
要释放的 DOCA Virtio FS 设备 IO 上下文。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_notification_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_notification_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS notification_request 通知。
参数
io
要与事件关联的 DOCA Virtio FS 设备 IO 上下文。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'io' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - IO 未处于空闲状态
描述

注册只能在 IO ctx 处于空闲状态时完成。如果多次调用,则只有最后一次调用生效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_io_event_vfs_req_notice_register ( doca_devemu_vfs_io* io, doca_devemu_vfs_io_event_vfs_req_notice_handler_cb_t handler, doca_data user_data )
注册 Virtio FS 请求通知。
参数
io
要与事件关联的 DOCA Virtio FS 设备 IO 上下文。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'io' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - IO 未处于空闲状态
描述

注册只能在 IO ctx 处于空闲状态时完成。如果多次调用,则只有最后一次调用生效。

DOCA_EXPERIMENTAL void doca_devemu_vfs_notification_req_complete ( doca_devemu_vfs_notification_req* req, uint32_t len )
完成 Virtio FS notification_request。请求所有权(包括相关联的 dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
参数
req
要完成的 Virtio FS notification_request。
len
写入到 req 描述的缓冲区设备可写部分的字节数。

描述

DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_notification_req_get_dataout ( doca_devemu_vfs_notification_req* req )
获取与 Virtio FS 通知请求的 dataout 部分关联的 doca 缓冲区。
参数
req
要查询的 Virtio FS 通知请求。

返回值

表示设备可写部分主机内存的 doca 缓冲区,根据 virtio 规范,virtio_fs_notify::(out_hdr + outarg) 与成功时的通知请求相关联。否则为 NULL。

描述

此函数应在将请求调度到将写入 doca 缓冲区的执行上下文期间发出。

DOCA_EXPERIMENTAL void doca_devemu_vfs_req_complete ( doca_devemu_vfs_req* req, uint32_t len )
完成 Virtio FS 请求。请求所有权(包括相关联的 datain、dataout 和 req_user_data)从用户移回关联的 IO 上下文。关联的 IO 上下文将根据 virtio fs 规范完成对设备驱动程序的请求。
参数
req
要完成的 Virtio FS 请求。
len
写入到 req 描述的缓冲区设备可写部分的字节数。

描述

DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_datain ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 datain 部分关联的 doca 缓冲区。
参数
req
要查询的 Virtio FS 请求。

返回值

表示设备可读部分主机内存的 doca 缓冲区,根据 virtio 规范,virtio_fs_req::(in + datain) 与成功时的请求相关联。否则为 NULL。

描述

此函数应在将请求调度到将从 doca 缓冲区读取数据的执行上下文期间发出。

DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_datain_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_datain() 返回的 Virtio FS 请求的 datain 部分关联的原始 doca 缓冲区链表中的元素数量。
参数
req
要查询的 Virtio FS 请求。不得为 NULL。

返回值

原始 datain doca 缓冲区链表中的元素数量。仅当请求的所有权归用户所有时才有效。

描述

DOCA_EXPERIMENTAL doca_buf* doca_devemu_vfs_req_get_dataout ( doca_devemu_vfs_req* req )
获取与 Virtio FS 请求的 dataout 部分关联的 doca 缓冲区。
参数
req
要查询的 Virtio FS 请求。

返回值

表示设备可写部分主机内存的 doca 缓冲区,根据 virtio 规范,virtio_fs_req::(out + dataout) 与成功时的请求相关联。否则为 NULL。

描述

此函数应在将请求调度到将写入 doca 缓冲区的执行上下文期间发出。

DOCA_EXPERIMENTAL uint32_t doca_devemu_vfs_req_get_dataout_list_len ( doca_devemu_vfs_req* req )
获取与 doca_devemu_vfs_req_get_dataout() 返回的 Virtio FS 请求的 dataout 部分关联的原始 doca 缓冲区链表中的元素数量。
参数
req
要查询的 Virtio FS 请求。不得为 NULL。

返回值

原始 dataout doca 缓冲区链表中的元素数量。仅当请求的所有权归用户所有时才有效。

描述

2.10.2.2. DOCA 设备仿真 - Virtio FS 设备类型
[ DOCA 设备模拟 - Virtio FS 设备 ]

DOCA Virtio FS 类型

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
查找与设备关联的默认 DOCA Virtio FS 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持默认 DOCA Virtio FS 类型。
DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA PCI 类型。
DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA Virtio 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
获取 num_request_queues 寄存器的值。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_find_default_vfs_type_by_dev ( doca_dev* dev, doca_devemu_vfs_type** vfs_type )
查找与设备关联的默认 DOCA Virtio FS 类型。
参数
dev
与默认类型关联的 doca dev。
vfs_type
启动的 DOCA Virtio FS 默认类型。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_is_default_vfs_type_supported ( const doca_devinfo* devinfo, uint8_t* supported )
检查设备是否支持默认 DOCA Virtio FS 类型。
参数
devinfo
要查询的设备。
supported
如果设备支持默认 Virtio FS 类型,则为 1,否则为 0。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'devinfo' 或 'supported' 为 NULL。
  • DOCA_ERROR_DRIVER - 内部 doca 驱动程序错误
描述

获取 uint8_t 值,定义设备是否可以用于管理与默认 Virtio FS 类型关联的 DOCA Virtio FS 仿真设备。

DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_vfs_type_as_pci_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA PCI 类型。
参数
vfs_type
DOCA Virtio FS 类型实例。在 DOCA PCI 类型不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA PCI 类型,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_virtio_type* doca_devemu_vfs_type_as_virtio_type ( doca_devemu_vfs_type* vfs_type )
将 DOCA Virtio FS 类型实例转换为 DOCA Virtio 类型。
参数
vfs_type
DOCA Virtio FS 类型实例。在 DOCA Virtio 类型不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA Virtio 类型,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_vfs_type_get_num_request_queues ( const doca_devemu_vfs_type* vfs_type, uint32_t* num_request_queues )
获取 num_request_queues 寄存器的值。
参数
vfs_type
要查询的 DOCA Virtio FS 类型实例。
num_request_queues
根据 virtio 规范,virtio_fs_config:num_request_queues 寄存器值,默认情况下,将由与 vfs_type 关联的设备使用。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'vfs_type' 或 'num_request_queues' 为 NULL
描述

2.10.3. DOCA 设备仿真 - Virtio 设备

[ DOCA 设备仿真 ]

用于仿真 virtio 设备逻辑的 DOCA 库

模块
 DOCA 设备模拟 - Virtio 设备类型
 
 DOCA 设备模拟 - Virtio IO 上下文
 
类型定义
typedef void  ( *doca_devemu_virtio_dev_event_reset_handler_cb_t )( doca_devemu_virtio_dev*  virtio_dev,  union doca_data event_user_data )
在 Virtio 设备复位时执行的函数。事件处理程序将允许用户暂停、刷新和复位与仿真的 Virtio 设备关联的必要资源。发生事件时,所有到/从主机内存的 PCI I/O 事务都被禁用。此外,用户应刷新与仿真的 Virtio 设备关联的所有未完成资源,这些资源最初由 Virtio 设备拥有,并已将所有权移交给用户。刷新所有未完成资源后,用户应调用 doca_devemu_virtio_dev_reset_complete()。
函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_virtio_dev_as_ctx ( doca_devemu_virtio_dev* virtio_dev )
将 DOCA Virtio 设备实例转换为 DOCA 上下文。
DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_virtio_dev_as_pci_dev ( doca_devemu_virtio_dev* virtio_dev )
将 DOCA Virtio 设备实例转换为 DOCA devemu PCI 设备。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_event_reset_register ( doca_devemu_virtio_dev* virtio_dev, doca_devemu_virtio_dev_event_reset_handler_cb_t handler, doca_data user_data )
注册 Virtio 设备复位事件。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_config_generation ( const doca_devemu_virtio_dev* virtio_dev, uint8_t* config_generation )
根据 Virtio 规范,从公共配置结构中获取 Virtio config_generation 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_config_msix_vector ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* config_msix_vector )
根据 Virtio 规范,获取 Virtio config_msix_vector 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_device_features_63_0 ( const doca_devemu_virtio_dev* virtio_dev, uint64_t* features )
根据 Virtio 规范,获取 Virtio device_feature 位 (0-63)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_device_status ( const doca_devemu_virtio_dev* virtio_dev, uint8_t* device_status )
根据 Virtio 规范,从公共配置结构中获取 Virtio device_status 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_driver_features_63_0 ( const doca_devemu_virtio_dev* virtio_dev, uint64_t* features )
根据 Virtio 规范,获取 Virtio driver_feature 位 (0-63)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_enabled_queues ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* num_queues )
获取驱动程序启用的 Virtio 设备队列的数量。驱动程序通过将相应的队列索引设置为 queue_select 寄存器并将 queue_enable 寄存器设置为 1 来启用队列。仅当驱动程序设置了 DRIVER_OK 状态位时,num_queues 的返回值才有效。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_queues ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* num_queues )
根据 Virtio 规范,从公共配置结构中获取 Virtio 设备 num_queues 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_required_running_virtio_io_ctxs ( const doca_devemu_virtio_dev* virtio_dev, uint32_t* num_virtio_io )
获取绑定到 Virtio 设备上下文所需的正在运行的 Virtio io 上下文的数量。Virtio 设备上下文在绑定此数量的正在运行的 Virtio IO 上下文之前不会移动到“运行”状态。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_queue_size ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* queue_size )
获取所有 Virtio 队列的 Virtio 最大队列大小。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_reset_complete ( doca_devemu_virtio_dev* virtio_dev )
完成 Virtio 设备复位处理。在调用此函数之前,用户必须确保与 Virtio 设备关联的所有资源都已刷新回设备的所有权。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_device_features_63_0 ( doca_devemu_virtio_dev* virtio_dev, uint64_t features )
根据 Virtio 规范,设置 Virtio device_feature 位 (0-63)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_num_queues ( doca_devemu_virtio_dev* virtio_dev, uint16_t num_queues )
根据 Virtio 规范,在公共配置结构中设置 Virtio 设备 num_queues 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_num_required_running_virtio_io_ctxs ( doca_devemu_virtio_dev* virtio_dev, uint32_t num_virtio_io )
设置绑定到 Virtio 设备上下文所需的正在运行的 Virtio IO 上下文的数量。Virtio 设备上下文在绑定此数量的正在运行的 Virtio IO 上下文之前不会移动到“运行”状态。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_queue_size ( doca_devemu_virtio_dev* virtio_dev, uint16_t queue_size )
设置所有 Virtio 队列的 Virtio 最大队列大小。
类型定义
void ( *doca_devemu_virtio_dev_event_reset_handler_cb_t )( doca_devemu_virtio_dev*  virtio_dev,  union doca_data event_user_data )

在 Virtio 设备复位时执行的函数。事件处理程序将允许用户暂停、刷新和复位与仿真的 Virtio 设备关联的必要资源。发生事件时,所有到/从主机内存的 PCI I/O 事务都被禁用。此外,用户应刷新与仿真的 Virtio 设备关联的所有未完成资源,这些资源最初由 Virtio 设备拥有,并已将所有权移交给用户。刷新所有未完成资源后,用户应调用 doca_devemu_virtio_dev_reset_complete()。

参数
virtio_dev
DOCA Virtio 设备实例。
union doca_data event_user_data

函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_virtio_dev_as_ctx ( doca_devemu_virtio_dev* virtio_dev )
将 DOCA Virtio 设备实例转换为 DOCA 上下文。
参数
virtio_dev
DOCA Virtio 设备实例。在 DOCA 上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca ctx,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_devemu_pci_dev* doca_devemu_virtio_dev_as_pci_dev ( doca_devemu_virtio_dev* virtio_dev )
将 DOCA Virtio 设备实例转换为 DOCA devemu PCI 设备。
参数
virtio_dev
DOCA Virtio 设备实例。在 DOCA devemu PCI 设备不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA devemu pci 设备,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_event_reset_register ( doca_devemu_virtio_dev* virtio_dev, doca_devemu_virtio_dev_event_reset_handler_cb_t handler, doca_data user_data )
注册 Virtio 设备复位事件。
参数
virtio_dev
要与事件关联的 DOCA Virtio dev 上下文。必须处于空闲状态。
handler
事件触发后调用的方法。
user_data
用户数据,将在调用处理程序后提供。

返回值

DOCA_SUCCESS - 成功时返回。Error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 'virtio_dev' 或 'handler' 为 NULL
  • DOCA_ERROR_BAD_STATE - virtio_dev 上下文未处于空闲状态
描述

注册只能在 Virtio 设备 ctx 处于空闲状态时完成。如果多次调用,则只有最后一次调用生效。

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_config_generation ( const doca_devemu_virtio_dev* virtio_dev, uint8_t* config_generation )
根据 Virtio 规范,从公共配置结构中获取 Virtio config_generation 寄存器。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
config_generation
config_generation 寄存器的值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_config_msix_vector ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* config_msix_vector )
根据 Virtio 规范,获取 Virtio config_msix_vector 寄存器。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
config_msix_vector
根据 Virtio 规范,config_msix_vector 寄存器的值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_device_features_63_0 ( const doca_devemu_virtio_dev* virtio_dev, uint64_t* features )
根据 Virtio 规范,获取 Virtio device_feature 位 (0-63)。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
features
根据 Virtio 规范,device_feature(位 0-63)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_device_status ( const doca_devemu_virtio_dev* virtio_dev, uint8_t* device_status )
根据 Virtio 规范,从公共配置结构中获取 Virtio device_status 寄存器。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
device_status
device_status 寄存器的值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_driver_features_63_0 ( const doca_devemu_virtio_dev* virtio_dev, uint64_t* features )
根据 Virtio 规范,获取 Virtio driver_feature 位 (0-63)。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
features
根据 Virtio 规范,driver_feature(位 0-63)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_enabled_queues ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* num_queues )
获取驱动程序启用的 Virtio 设备队列的数量。驱动程序通过将相应的队列索引设置为 queue_select 寄存器并将 queue_enable 寄存器设置为 1 来启用队列。仅当驱动程序设置了 DRIVER_OK 状态位时,num_queues 的返回值才有效。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
num_queues
virtio 设备启用的 Virtio 队列数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_queues ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* num_queues )
根据 Virtio 规范,从公共配置结构中获取 Virtio 设备 num_queues 寄存器。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
num_queues
num_queues 寄存器的值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_num_required_running_virtio_io_ctxs ( const doca_devemu_virtio_dev* virtio_dev, uint32_t* num_virtio_io )
获取绑定到 Virtio 设备上下文所需的正在运行的 Virtio io 上下文的数量。Virtio 设备上下文在绑定此数量的正在运行的 Virtio IO 上下文之前不会移动到“运行”状态。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
num_virtio_io
绑定到设备所需的正在运行的 Virtio IO ctx 数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_get_queue_size ( const doca_devemu_virtio_dev* virtio_dev, uint16_t* queue_size )
获取所有 Virtio 队列的 Virtio 最大队列大小。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
queue_size
所有 Virtio 队列的最大队列大小。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_reset_complete ( doca_devemu_virtio_dev* virtio_dev )
完成 Virtio 设备复位处理。在调用此函数之前,用户必须确保与 Virtio 设备关联的所有资源都已刷新回设备的所有权。
参数
virtio_dev
DOCA Virtio 设备实例。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_device_features_63_0 ( doca_devemu_virtio_dev* virtio_dev, uint64_t features )
根据 Virtio 规范,设置 Virtio device_feature 位 (0-63)。
参数
virtio_dev
要修改的 DOCA Virtio 设备实例。
features
根据 Virtio 规范,device_feature(位 0-63)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_num_queues ( doca_devemu_virtio_dev* virtio_dev, uint16_t num_queues )
根据 Virtio 规范,在公共配置结构中设置 Virtio 设备 num_queues 寄存器。
参数
virtio_dev
要修改的 DOCA Virtio 设备实例。
num_queues
设备公共 num_queues 寄存器。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_num_required_running_virtio_io_ctxs ( doca_devemu_virtio_dev* virtio_dev, uint32_t num_virtio_io )
设置绑定到 Virtio 设备上下文所需的正在运行的 Virtio IO 上下文的数量。Virtio 设备上下文在绑定此数量的正在运行的 Virtio IO 上下文之前不会移动到“运行”状态。
参数
virtio_dev
要修改的 DOCA Virtio 设备实例。
num_virtio_io
要绑定的所需正在运行的 Virtio IO ctx 数量。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_dev_set_queue_size ( doca_devemu_virtio_dev* virtio_dev, uint16_t queue_size )
设置所有 Virtio 队列的 Virtio 最大队列大小。
参数
virtio_dev
要查询的 DOCA Virtio 设备实例。
queue_size
所有 Virtio 队列的最大队列大小。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA 设备模拟 - Virtio IO 上下文

DOCA 设备模拟 - Virtio 设备类型

2.10.3.1. DOCA 设备仿真 - Virtio IO 上下文
[ DOCA 设备仿真 - Virtio 设备 ]

DOCA VIRTIO IO 上下文

函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_virtio_io_as_ctx ( doca_devemu_virtio_io* io )
将 DOCA Virtio 设备 IO 上下文实例转换为 doca 上下文。
函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_virtio_io_as_ctx ( doca_devemu_virtio_io* io )
将 DOCA Virtio 设备 IO 上下文实例转换为 doca 上下文。
参数
io
DOCA Virtio 设备 IO 上下文实例。在上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca ctx,否则返回 NULL。

描述

2.10.3.2. DOCA 设备仿真 - Virtio 设备类型
[ DOCA 设备仿真 - Virtio 设备 ]

DOCA Virtio 类型

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_cap_default_type_get_configurable_device_features_63_0 ( const doca_devinfo* devinfo, uint64_t* features )
获取与默认 virtio 类型关联的 Virtio 设备的可配置设备功能位 (0-63) 的位图。
DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_virtio_type_as_pci_type ( doca_devemu_virtio_type* virtio_type )
将 DOCA Virtio 类型实例转换为 DOCA PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_config_generation ( const doca_devemu_virtio_type* virtio_type, uint8_t* config_generation )
根据 Virtio 规范,获取为此类型配置的初始 Virtio 设备 config_generation 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_device_features_63_0 ( const doca_devemu_virtio_type* virtio_type, uint64_t* features )
根据 Virtio 规范,获取为此类型配置的 Virtio device_feature 位 (0-63)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_num_queues ( const doca_devemu_virtio_type* virtio_type, uint16_t* num_queues )
获取 num_queues 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_queue_size ( const doca_devemu_virtio_type* virtio_type, uint16_t* queue_size )
获取 queue_size 寄存器的值。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_cap_default_type_get_configurable_device_features_63_0 ( const doca_devinfo* devinfo, uint64_t* features )
获取与默认 virtio 类型关联的 Virtio 设备的可配置设备功能位 (0-63) 的位图。
参数
devinfo
要查询的设备。
features
与默认 Virtio 类型关联的所有 Virtio 设备的可配置设备功能位的位图。功能位索引遵循 Virtio 规范。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_virtio_type_as_pci_type ( doca_devemu_virtio_type* virtio_type )
将 DOCA Virtio 类型实例转换为 DOCA PCI 类型。
参数
virtio_type
DOCA Virtio 类型实例。在 DOCA PCI 类型不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA PCI 类型,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_config_generation ( const doca_devemu_virtio_type* virtio_type, uint8_t* config_generation )
根据 Virtio 规范,获取为此类型配置的初始 Virtio 设备 config_generation 寄存器。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
config_generation
根据 Virtio 规范,与此类型关联的设备的 config_generation 寄存器的初始值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_device_features_63_0 ( const doca_devemu_virtio_type* virtio_type, uint64_t* features )
根据 Virtio 规范,获取为此类型配置的 Virtio device_feature 位 (0-63)。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
features
根据 Virtio 规范,与此类型关联的设备的 device_feature(位 0-63)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_num_queues ( const doca_devemu_virtio_type* virtio_type, uint16_t* num_queues )
获取 num_queues 寄存器的值。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
num_queues
virtio_type 关联设备在 virtio_common_config:num_queues 寄存器中使用的默认值(根据 Virtio 规范),除非另有设置。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_queue_size ( const doca_devemu_virtio_type* virtio_type, uint16_t* queue_size )
获取 queue_size 寄存器的值。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
queue_size
virtio_type 关联设备在 virtio_common_config:queue_size 寄存器中使用的默认值(根据 Virtio 规范),除非另有设置。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA 设备模拟 - Virtio IO 上下文

DOCA 设备模拟 - Virtio 设备类型

2.10.3.1. DOCA 设备仿真 - Virtio IO 上下文
[ DOCA 设备仿真 - Virtio 设备 ]

DOCA VIRTIO IO 上下文

函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_virtio_io_as_ctx ( doca_devemu_virtio_io* io )
将 DOCA Virtio 设备 IO 上下文实例转换为 doca 上下文。
函数
DOCA_EXPERIMENTAL doca_ctx* doca_devemu_virtio_io_as_ctx ( doca_devemu_virtio_io* io )
将 DOCA Virtio 设备 IO 上下文实例转换为 doca 上下文。
参数
io
DOCA Virtio 设备 IO 上下文实例。在上下文不再需要之后,此实例必须保持有效。

返回值

成功时返回 doca ctx,否则返回 NULL。

描述

2.10.3.2. DOCA 设备仿真 - Virtio 设备类型
[ DOCA 设备仿真 - Virtio 设备 ]

DOCA Virtio 类型

函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_cap_default_type_get_configurable_device_features_63_0 ( const doca_devinfo* devinfo, uint64_t* features )
获取与默认 virtio 类型关联的 Virtio 设备的可配置设备功能位 (0-63) 的位图。
DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_virtio_type_as_pci_type ( doca_devemu_virtio_type* virtio_type )
将 DOCA Virtio 类型实例转换为 DOCA PCI 类型。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_config_generation ( const doca_devemu_virtio_type* virtio_type, uint8_t* config_generation )
根据 Virtio 规范,获取为此类型配置的初始 Virtio 设备 config_generation 寄存器。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_device_features_63_0 ( const doca_devemu_virtio_type* virtio_type, uint64_t* features )
根据 Virtio 规范,获取为此类型配置的 Virtio device_feature 位 (0-63)。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_num_queues ( const doca_devemu_virtio_type* virtio_type, uint16_t* num_queues )
获取 num_queues 寄存器的值。
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_queue_size ( const doca_devemu_virtio_type* virtio_type, uint16_t* queue_size )
获取 queue_size 寄存器的值。
函数
DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_cap_default_type_get_configurable_device_features_63_0 ( const doca_devinfo* devinfo, uint64_t* features )
获取与默认 virtio 类型关联的 Virtio 设备的可配置设备功能位 (0-63) 的位图。
参数
devinfo
要查询的设备。
features
与默认 Virtio 类型关联的所有 Virtio 设备的可配置设备功能位的位图。功能位索引遵循 Virtio 规范。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_devemu_pci_type* doca_devemu_virtio_type_as_pci_type ( doca_devemu_virtio_type* virtio_type )
将 DOCA Virtio 类型实例转换为 DOCA PCI 类型。
参数
virtio_type
DOCA Virtio 类型实例。在 DOCA PCI 类型不再需要之后,此实例必须保持有效。

返回值

成功时返回 DOCA PCI 类型,否则返回 NULL。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_config_generation ( const doca_devemu_virtio_type* virtio_type, uint8_t* config_generation )
根据 Virtio 规范,获取为此类型配置的初始 Virtio 设备 config_generation 寄存器。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
config_generation
根据 Virtio 规范,与此类型关联的设备的 config_generation 寄存器的初始值。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_device_features_63_0 ( const doca_devemu_virtio_type* virtio_type, uint64_t* features )
根据 Virtio 规范,获取为此类型配置的 Virtio device_feature 位 (0-63)。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
features
根据 Virtio 规范,与此类型关联的设备的 device_feature(位 0-63)。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_num_queues ( const doca_devemu_virtio_type* virtio_type, uint16_t* num_queues )
获取 num_queues 寄存器的值。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
num_queues
virtio_type 关联设备在 virtio_common_config:num_queues 寄存器中使用的默认值(根据 Virtio 规范),除非另有设置。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA_EXPERIMENTAL doca_error_t doca_devemu_virtio_type_get_queue_size ( const doca_devemu_virtio_type* virtio_type, uint16_t* queue_size )
获取 queue_size 寄存器的值。
参数
virtio_type
要查询的 DOCA Virtio 类型实例。
queue_size
virtio_type 关联设备在 virtio_common_config:queue_size 寄存器中使用的默认值(根据 Virtio 规范),除非另有设置。

返回值

DOCA_SUCCESS - 如果成功。错误代码 - 如果失败。请参阅 doca_error_t。

描述

DOCA DMA 库。更多详情请参考 DOCA devzone 上的用户指南。

类型定义

typedef void  ( *doca_dma_task_memcpy_completion_cb_t )( doca_dma_task_memcpy*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )
DMA memcpy 任务完成时执行的函数。

函数

DOCA_STABLE doca_ctx* doca_dma_as_ctx ( doca_dma* dma )
DOCA_STABLE doca_error_t doca_dma_cap_get_max_num_tasks ( doca_dma* dma, uint32_t* max_num_tasks )
DOCA_STABLE doca_error_t doca_dma_cap_task_memcpy_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )
DOCA_STABLE doca_error_t doca_dma_cap_task_memcpy_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* buf_size )
DOCA_STABLE doca_error_t doca_dma_cap_task_memcpy_is_supported ( const doca_devinfo* devinfo )
DOCA_STABLE doca_error_t doca_dma_create ( doca_dev* dev, doca_dma** dma )
DOCA_STABLE doca_error_t doca_dma_destroy ( doca_dma* dma )
DOCA_EXPERIMENTAL doca_error_t doca_dma_get_gpu_handle ( doca_dma* dma, doca_gpu_dma** gpu_dma )
检索 doca_dma 的 GPU 内存空间中的句柄。
DOCA_STABLE doca_error_t doca_dma_task_memcpy_alloc_init ( doca_dma* dma, const doca_buf* src, doca_buf* dst, doca_data user_data, doca_dma_task_memcpy** task )
此方法分配并初始化一个 DMA memcpy 任务。
DOCA_STABLE doca_task* doca_dma_task_memcpy_as_task ( doca_dma_task_memcpy* task )
此方法将 memcpy 任务转换为 doca_task。
DOCA_STABLE doca_buf* doca_dma_task_memcpy_get_dst ( const doca_dma_task_memcpy* task )
此方法从 memcpy 任务获取目标缓冲区。
DOCA_STABLE doca_buf* doca_dma_task_memcpy_get_src ( const doca_dma_task_memcpy* task )
此方法从 memcpy 任务获取源缓冲区。
DOCA_STABLE doca_error_t doca_dma_task_memcpy_set_conf ( doca_dma* dma, doca_dma_task_memcpy_completion_cb_t task_completion_cb, doca_dma_task_memcpy_completion_cb_t task_error_cb, uint32_t num_memcpy_tasks )
此方法设置 DMA memcpy 任务配置。
DOCA_STABLE void doca_dma_task_memcpy_set_dst ( doca_dma_task_memcpy* task, doca_buf* dst )
此方法设置 memcpy 任务的目标缓冲区。
DOCA_STABLE void doca_dma_task_memcpy_set_src ( doca_dma_task_memcpy* task, const doca_buf* src )
此方法设置 memcpy 任务的源缓冲区。

类型定义

void ( *doca_dma_task_memcpy_completion_cb_t )( doca_dma_task_memcpy*  task,  union doca_data task_user_data,  union doca_data ctx_user_data )

DMA memcpy 任务完成时执行的函数。当相关任务被 doca_pe_progress() 识别为成功完成时,将调用此函数。当此函数被调用时,任务对象的所有权从 DOCA 返回给用户。在此回调函数内部,用户可以决定任务对象的操作

  • 使用 doca_task_submit() 重新提交任务;任务对象所有权传递给 DOCA

  • 使用 doca_task_free() 释放任务;任务对象所有权传递给 DOCA

  • 保留任务对象以供将来重用;用户保留任务对象的所有权。在此回调函数内部,用户不应调用 doca_pe_progress()。请参阅 doca_pe_progress 获取详细信息。

此函数内部的任何失败/错误都应在内部处理或延迟;由于嵌套在 doca_pe_progress() 执行模式中,此回调函数不返回错误。

注意:此回调类型用于成功和失败的任务完成。

参数
task
DMA memcpy 任务。
union doca_data task_user_data
union doca_data ctx_user_data

函数

DOCA_STABLE doca_ctx* doca_dma_as_ctx ( doca_dma* dma )

参数
dma
DMA 实例。在不再需要上下文之前,此实例必须保持有效。

返回值

成功时返回非 NULL,否则返回 NULL。

描述

将 doca_dma 实例转换为通用上下文,以便与 doca 核心对象一起使用。

DOCA_STABLE doca_error_t doca_dma_cap_get_max_num_tasks ( doca_dma* dma, uint32_t* max_num_tasks )

参数
dma
dma 上下文
max_num_tasks
memcpy 任务的最大数量

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取任务的最大对数数量

此方法检索设备的最大任务数。

DOCA_STABLE doca_error_t doca_dma_cap_task_memcpy_get_max_buf_list_len ( const doca_devinfo* devinfo, uint32_t* max_buf_list_len )

参数
devinfo
DOCA 设备信息。
max_buf_list_len
给定 DOCA 链表缓冲区中支持的最大元素数量,其中 1 表示不支持链表缓冲区。

返回值

DOCA_SUCCESS - 成功时。 错误代码 - 失败时

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取 DMA memcpy 任务的给定 DOCA 链表缓冲区中支持的最大元素数量。

DOCA_STABLE doca_error_t doca_dma_cap_task_memcpy_get_max_buf_size ( const doca_devinfo* devinfo, uint64_t* buf_size )

参数
devinfo
DOCA 设备信息。
buf_size
支持的最大缓冲区大小(以字节为单位)。

返回值

DOCA_SUCCESS - 成功时。 错误代码 - 失败时

  • DOCA_ERROR_INVALID_VALUE - 输入无效时返回。
描述

获取 DMA memcpy 任务支持的最大缓冲区大小。

DOCA_STABLE doca_error_t doca_dma_cap_task_memcpy_is_supported ( const doca_devinfo* devinfo )

参数
devinfo
DOCA 设备信息

返回值

DOCA_SUCCESS - 如果设备支持 memcpy。 错误代码 - 失败时

  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入。
  • DOCA_ERROR_DRIVER - 查询设备功能失败。
  • DOCA_ERROR_NOT_SUPPORTED - 提供的 devinfo 不支持 memcpy。
描述

检查给定设备是否能够执行 DMA memcpy 任务。

DOCA_STABLE doca_error_t doca_dma_create ( doca_dev* dev, doca_dma** dma )

参数
dev
要附加到 DMA 上下文的设备
dma
指向指针的指针,将被设置为指向创建的 doca_dma 实例。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - dma 参数为 NULL 指针。
  • DOCA_ERROR_NO_MEMORY - 分配 doca_dma 失败。
  • DOCA_ERROR_INITIALIZATION - 初始化互斥锁失败。
描述

创建 DOCA DMA 实例。

DOCA_STABLE doca_error_t doca_dma_destroy ( doca_dma* dma )

参数
dma
要销毁的实例的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_IN_USE - 无法获得对 dma 实例的独占访问权。
  • DOCA_ERROR_IN_USE - 仍附加一个或多个工作队列。必须先分离这些队列。
描述

DOCA_EXPERIMENTAL doca_error_t doca_dma_get_gpu_handle ( doca_dma* dma, doca_gpu_dma** gpu_dma )
检索 doca_dma 的 GPU 内存空间中的句柄。
参数
dma
doca_dma 上下文,从中获取 GPU 句柄。
gpu_dma
指向 gpu 内存空间中句柄的指针。

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - 如果给出了无效参数。
  • DOCA_ERROR_BAD_STATE - 如果在调用 ctx_start() 之前调用,或者如果未分配给 gpu 数据路径。
描述

DOCA_STABLE doca_error_t doca_dma_task_memcpy_alloc_init ( doca_dma* dma, const doca_buf* src, doca_buf* dst, doca_data user_data, doca_dma_task_memcpy** task )
此方法分配并初始化一个 DMA memcpy 任务。
参数
dma
要为其分配任务的 DMA
src
源缓冲区
dst
目标缓冲区
user_data
要附加到任务的 doca_data
task
要分配的 memcpy 任务

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_NO_MEMEORY - 没有更多任务可分配
描述

DOCA_STABLE doca_task* doca_dma_task_memcpy_as_task ( doca_dma_task_memcpy* task )
此方法将 memcpy 任务转换为 doca_task。
参数
task
doca_dma_task_memcpy 任务

返回值

doca_task

描述

DOCA_STABLE doca_buf* doca_dma_task_memcpy_get_dst ( const doca_dma_task_memcpy* task )
此方法从 memcpy 任务获取目标缓冲区。
参数
task
要获取的任务

返回值

目标缓冲区

描述

DOCA_STABLE doca_buf* doca_dma_task_memcpy_get_src ( const doca_dma_task_memcpy* task )
此方法从 memcpy 任务获取源缓冲区。
参数
task
要获取的任务

返回值

源缓冲区

描述

DOCA_STABLE doca_error_t doca_dma_task_memcpy_set_conf ( doca_dma* dma, doca_dma_task_memcpy_completion_cb_t task_completion_cb, doca_dma_task_memcpy_completion_cb_t task_error_cb, uint32_t num_memcpy_tasks )
此方法设置 DMA memcpy 任务配置。
参数
dma
要配置的 DMA 上下文
task_completion_cb
任务完成回调
task_error_cb
任务错误回调
num_memcpy_tasks
DMA 可以分配的 memcpy 任务数

返回值

DOCA_SUCCESS - 成功时返回。doca_error 代码 - 失败时返回

  • DOCA_ERROR_INVALID_VALUE - doca_pe_dma 参数为 NULL 指针。
  • DOCA_ERROR_NOT_SUPPORTED - 上下文处于工作队列模式
描述

DOCA_STABLE void doca_dma_task_memcpy_set_dst ( doca_dma_task_memcpy* task, doca_buf* dst )
此方法设置 memcpy 任务的目标缓冲区。
参数
task
要设置的任务
dst
目标缓冲区

描述

DOCA_STABLE void doca_dma_task_memcpy_set_src ( doca_dma_task_memcpy* task, const doca_buf* src )
此方法设置 memcpy 任务的源缓冲区。
参数
task
要设置的任务
src
源缓冲区

描述

DOCA DPA 主机库。更多详情请参考 DOCA devzone 上的用户指南。

宏定义

#define DOCA_DPA_COMPLETION_LOG_MAX_USER_DATA (24)
DPA 完成日志最大用户数据类型定义。

类型定义

typedef uint64_t  doca_dpa_dev_async_ops_t
DPA 异步操作句柄类型定义。
typedef uint64_t  doca_dpa_dev_completion_t
DPA 完成句柄类型定义。
typedef uint64_t  doca_dpa_dev_hash_table_t
DPA 哈希表句柄类型定义。
typedef uint64_t  doca_dpa_dev_notification_completion_t
DPA 通知完成句柄类型定义。
typedef uint64_t  doca_dpa_dev_t
DPA 上下文句柄类型定义。
typedef uint64_t  doca_dpa_dev_uintptr_t
DPA 指针类型定义。
typedef void(  doca_dpa_func_t
通用函数指针类型。

枚举

enum doca_dpa_dev_log_level_t
DOCA DPA 设备日志级别,按详细程度从高到低排序。

函数

DOCA_EXPERIMENTAL doca_error_t doca_dpa_app_get_name ( doca_dpa_app* app, char* app_name, uint32_t* app_name_len )
获取 DPA 应用程序名称。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_attach ( doca_dpa_async_ops* async_ops, doca_dpa_completion* dpa_comp )
将 DPA 异步操作上下文附加到 DPA 完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_create ( doca_dpa* dpa, unsigned int  queue_size, uint64_t user_data, doca_dpa_async_ops** async_ops )
创建 DPA 异步操作上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_destroy ( doca_dpa_async_ops* async_ops )
销毁 DPA 异步操作上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_get_dpa_handle ( doca_dpa_async_ops* async_ops, doca_dpa_dev_async_ops_t* handle )
获取 DPA 异步操作上下文句柄。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_get_queue_size ( doca_dpa_async_ops* async_ops, unsigned int* queue_size )
获取 DPA 异步操作队列大小。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_get_user_data ( doca_dpa_async_ops* async_ops, uint64_t* user_data )
获取 DPA 异步操作上下文用户数据。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_start ( doca_dpa_async_ops* async_ops )
启动 DPA 异步操作上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_stop ( doca_dpa_async_ops* async_ops )
停止 DPA 异步操作上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_cap_is_supported ( const doca_devinfo* devinfo )
获取 DOCA 设备是否支持 DPA。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_create ( doca_dpa* dpa, unsigned int  queue_size, doca_dpa_completion** dpa_comp )
创建 DPA 完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_destroy ( doca_dpa_completion* dpa_comp )
销毁 DPA 完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_get_dpa_handle ( doca_dpa_completion* dpa_comp, doca_dpa_dev_completion_t* handle )
获取 DPA 完成上下文句柄。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_get_queue_size ( doca_dpa_completion* dpa_comp, unsigned int* queue_size )
获取 DPA 完成上下文队列大小。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_get_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread** dpa_thread )
获取 DPA 完成上下文附加线程。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_set_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread* dpa_thread )
设置 DPA 完成上下文线程。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_start ( doca_dpa_completion* dpa_comp )
启动 DPA 完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_stop ( doca_dpa_completion* dpa_comp )
停止 DPA 完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_create ( doca_dev* dev, doca_dpa** dpa )
创建一个 DOCA DPA 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_d2h_buf_memcpy ( doca_dpa* dpa, doca_buf* buf, doca_dpa_dev_uintptr_t src_ptr, size_t size )
从 DPA 堆复制到 DOCA Buf。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_d2h_memcpy ( doca_dpa* dpa, void* dst_ptr, doca_dpa_dev_uintptr_t src_ptr, size_t size )
从 DPA 堆复制到主机内存。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_destroy ( doca_dpa* dpa )
销毁 DOCA DPA 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_device_extend ( doca_dpa* dpa, doca_dev* other_dev, doca_dpa** extended_dpa )
创建一个扩展的 DPA 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_eu_affinity_clear ( doca_dpa_eu_affinity* affinity )
清除 DPA EU 亲和性。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_eu_affinity_create ( doca_dpa* dpa, doca_dpa_eu_affinity** affinity )
创建 DPA EU 亲和性。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_eu_affinity_destroy ( doca_dpa_eu_affinity* affinity )
销毁 DPA EU 亲和性。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_eu_affinity_get ( doca_dpa_eu_affinity* affinity, unsigned int* eu_id )
从 DPA EU 亲和性获取 EU ID。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_eu_affinity_set ( doca_dpa_eu_affinity* affinity, unsigned int  eu_id )
在 DPA EU 亲和性中设置 EU ID。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_app ( doca_dpa* dpa, doca_dpa_app** app )
获取为 DPA 上下文设置的程序应用。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_core_num ( doca_dpa* dpa, unsigned int* num_cores )
检索可用的 DPA 核心数量。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_dpa_handle ( doca_dpa* dpa, doca_dpa_dev_t* handle )
获取 DPA 上下文句柄。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_kernel_max_run_time ( const doca_dpa* dpa, unsigned long long* value )
获取内核可以在 DPA 上保持调度的最大允许时间(秒)。超过此限制保持调度的内核可能会被运行时终止,并导致致命行为。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t* log_level )
获取为 DPA 上下文设置的设备日志详细级别。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_max_threads_per_kernel ( const doca_dpa* dpa, unsigned int* value )
获取运行单个内核启动操作的最大 DPA 线程数。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_num_eus_per_core ( doca_dpa* dpa, unsigned int* eus_per_core )
检索每个 DPA 核心可用的 EU 数量。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_total_num_eus_available ( doca_dpa* dpa, unsigned int* total_num_eus )
检索应用程序可用的 EU 总数。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_h2d_buf_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, doca_buf* buf, size_t size )
从 DOCA Buf 复制到 DPA 堆。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_h2d_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, void* src_ptr, size_t size )
从主机内存复制到 DPA 堆。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_hash_table_create ( doca_dpa* dpa, unsigned int  num_entries, doca_dpa_hash_table** ht )
在 DPA 上创建一个哈希表。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_hash_table_destroy ( doca_dpa_hash_table* ht )
销毁 DPA 哈希表。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_hash_table_get_dpa_handle ( doca_dpa_hash_table* ht, doca_dpa_dev_hash_table_t* ht_handle )
获取 DPA 哈希表句柄。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_kernel_launch_update_add ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int  num_threads, doca_dpa_func_t* func, ... )
向 DPA 提交一个内核。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_kernel_launch_update_set ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int  num_threads, doca_dpa_func_t* func, ... )
向 DPA 提交一个内核,该内核设置完成事件。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_log_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
获取用于写入设备日志的日志文件路径。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_log_file_set_path ( doca_dpa* dpa, const char* file_path )
设置用于写入设备日志的日志文件路径。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_mem_alloc ( doca_dpa* dpa, size_t size, doca_dpa_dev_uintptr_t* dev_ptr )
分配 DPA 堆内存。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_mem_free ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr )
释放先前分配的 DPA 内存。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_memset ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr, int  value, size_t size )
将 DPA 堆内存设置为一个值。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_create ( doca_dpa* dpa, doca_dpa_thread* dpa_thread, doca_dpa_notification_completion** notify_comp )
创建 DPA 通知完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_destroy ( doca_dpa_notification_completion* notify_comp )
销毁 DPA 通知完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_get_dpa_handle ( doca_dpa_notification_completion* notify_comp, doca_dpa_dev_notification_completion_t* handle )
获取 DPA 通知完成上下文句柄。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_get_thread ( doca_dpa_notification_completion* notify_comp, doca_dpa_thread** dpa_thread )
获取 DPA 通知完成上下文附加线程。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_start ( doca_dpa_notification_completion* notify_comp )
启动 DPA 通知完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_stop ( doca_dpa_notification_completion* notify_comp )
停止 DPA 通知完成上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_peek_at_last_error ( const doca_dpa* dpa )
返回 DPA 上生成的最后一个错误。检查设备端运行时是否发生错误。此调用不会重置错误状态。如果发生错误,DPA 上下文将进入致命状态,必须由用户销毁。在致命错误的情况下,核心转储和崩溃数据将被写入文件路径 /tmp/doca_dpa_fatal 或 API doca_dpa_log_file_set_path() 设置的文件路径,后缀分别为 .PID.core 和 .PID.crash,其中 PID 是进程 ID。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_rpc ( doca_dpa* dpa, doca_dpa_func_t* func, uint64_t* retval, ... )
RPC 运行 DPA 内核。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_set_app ( doca_dpa* dpa, doca_dpa_app* app )
为 DPA 上下文设置程序应用。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_set_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t log_level )
设置设备日志详细级别。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_start ( doca_dpa* dpa )
启动 DPA 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_stop ( doca_dpa* dpa )
停止 DPA 上下文。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_create ( doca_dpa* dpa, doca_dpa_thread** dpa_thread )
创建 DPA 线程。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_destroy ( doca_dpa_thread* dpa_thread )
销毁 DPA 线程。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_get_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity** affinity )
获取 DPA 线程亲和性。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_get_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t** func, uint64_t* arg )
获取 DPA 线程入口点及其参数。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_get_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t* dev_ptr )
获取 DPA 线程本地存储。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_create ( doca_dpa* dpa, unsigned int  num_threads, doca_dpa_tg** tg )
创建 DPA 线程组。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_destroy ( doca_dpa_tg* tg )
销毁 DPA 线程组。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_get_num_threads ( doca_dpa_tg* tg, unsigned int* num_threads )
获取 DPA 线程组线程数量。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_set_thread ( doca_dpa_tg* tg, doca_dpa_thread* thread, unsigned int  rank )
在 DPA 线程组中的 'rank' 位置设置 DPA 线程。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_start ( doca_dpa_tg* tg )
启动 DPA 线程组。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_stop ( doca_dpa_tg* tg )
停止 DPA 线程组。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_run ( doca_dpa_thread* dpa_thread )
运行 DPA 线程。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_set_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity* affinity )
设置 DPA 线程亲和性。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_set_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t* func, uint64_t arg )
设置 DPA 线程入口点及其参数。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_set_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t dev_ptr )
设置 DPA 线程本地存储。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_start ( doca_dpa_thread* dpa_thread )
启动 DPA 线程。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_stop ( doca_dpa_thread* dpa_thread )
停止 DPA 线程。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_trace_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
获取用于写入设备跟踪信息的跟踪文件路径。
DOCA_EXPERIMENTAL doca_error_t doca_dpa_trace_file_set_path ( doca_dpa* dpa, const char* file_path )
设置用于写入设备跟踪信息的跟踪文件路径。

宏定义

#define DOCA_DPA_COMPLETION_LOG_MAX_USER_DATA (24)

有效值大于等于 0 且小于 (1 << DOCA_DPA_COMPLETION_LOG_MAX_USER_DATA)

类型定义

typedef uint64_t doca_dpa_dev_async_ops_t

DPA 异步操作句柄类型定义。

typedef uint64_t doca_dpa_dev_completion_t

DPA 完成句柄类型定义。

typedef uint64_t doca_dpa_dev_hash_table_t

DPA 哈希表句柄类型定义。

typedef uint64_t doca_dpa_dev_notification_completion_t

DPA 通知完成句柄类型定义。

typedef uint64_t doca_dpa_dev_t

DPA 上下文句柄类型定义。

typedef uint64_t doca_dpa_dev_uintptr_t

DPA 指针类型定义。

typedef void( doca_dpa_func_t

通用函数指针类型。内核启动通过使用表示设备函数的主机函数指针来完成。主机函数存根由相关的 DPA 编译器提供。C 语言未定义函数指针到对象指针(如 void*)的转换。程序员可以使用此通用函数指针类型进行类型转换并遵守严格的 ISO C 语言要求。

枚举

enum doca_dpa_dev_log_level_t

DOCA_DPA_DEV_LOG_LEVEL_DISABLE = 10
禁用日志消息
DOCA_DPA_DEV_LOG_LEVEL_CRIT = 20
严重日志级别
DOCA_DPA_DEV_LOG_LEVEL_ERROR = 30
错误日志级别
DOCA_DPA_DEV_LOG_LEVEL_WARNING = 40
警告日志级别
DOCA_DPA_DEV_LOG_LEVEL_INFO = 50
信息日志级别
DOCA_DPA_DEV_LOG_LEVEL_DEBUG = 60
调试日志级别

函数

DOCA_EXPERIMENTAL doca_error_t doca_dpa_app_get_name ( doca_dpa_app* app, char* app_name, uint32_t* app_name_len )
获取 DPA 应用程序名称。
参数
app
- 由 DPACC 生成的 DPA 应用程序
app_name
- 应用程序名称
app_name_len
- app_name 长度。输出是实际写入的字节数

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入,或接收到的缓冲区长度不足
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
描述

DPA 应用程序的名称在构建阶段使用 DPACC 分配。一旦应用程序形成,其名称便嵌入其中。此函数允许 DOCA DPA 的主机应用程序检索先前分配的名称。

app_name 缓冲区由调用者分配,并设置 app_name_len 指示已分配的长度。返回时,app_name_len 字段设置为 app_name 的实际长度

DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_attach ( doca_dpa_async_ops* async_ops, doca_dpa_completion* dpa_comp )
将 DPA 异步操作上下文附加到 DPA 完成上下文。
参数
async_ops
- DPA 异步操作
dpa_comp
- DPA 完成

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - DPA 异步操作已启动
描述

此函数将 DPA 异步操作上下文附加到 DPA 完成上下文。一旦上下文被附加且两个上下文都已启动,异步操作完成将在 DPA 完成时引发(如果用户在发出操作时请求完成)。此函数必须在 DPA 异步操作启动之前调用

DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_create ( doca_dpa* dpa, unsigned int  queue_size, uint64_t user_data, doca_dpa_async_ops** async_ops )
创建 DPA 异步操作上下文。
参数
dpa
- DPA 上下文
queue_size
- DPA 异步操作队列大小
user_data
- DPA 异步操作用户数据
async_ops
- 创建的 DPA 异步操作

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_NO_MEMORY - 内部内存分配失败
描述

此函数创建 DPA 异步操作上下文。这允许 DPA 线程发出异步操作,如 DMA 或其他操作。用户可以提供 DPA 异步操作上下文 `user_data`,并在设备中使用 doca_dpa_dev_get_completion_user_data() API 检索此元数据

注意

队列大小将四舍五入为下一个 2 的幂


DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_destroy ( doca_dpa_async_ops* async_ops )
销毁 DPA 异步操作上下文。
参数
async_ops
- 先前创建的 DPA 异步操作

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

此函数销毁由 doca_dpa_async_ops_create() 创建的 DPA 异步操作上下文

DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_get_dpa_handle ( doca_dpa_async_ops* async_ops, doca_dpa_dev_async_ops_t* handle )
获取 DPA 异步操作上下文句柄。
参数
async_ops
- DPA 异步操作
handle
- DPA 异步操作句柄

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - DPA 异步操作未启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_get_queue_size ( doca_dpa_async_ops* async_ops, unsigned int* queue_size )
获取 DPA 异步操作队列大小。
参数
async_ops
- DPA 异步操作
queue_size
- DPA 异步操作队列大小

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_get_user_data ( doca_dpa_async_ops* async_ops, uint64_t* user_data )
获取 DPA 异步操作上下文用户数据。
参数
async_ops
- DPA 异步操作
user_data
- DPA 异步操作用户数据

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_start ( doca_dpa_async_ops* async_ops )
启动 DPA 异步操作上下文。
参数
async_ops
- DPA 异步操作

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_async_ops_stop ( doca_dpa_async_ops* async_ops )
停止 DPA 异步操作上下文。
参数
async_ops
- DPA 异步操作

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_cap_is_supported ( const doca_devinfo* devinfo )
获取 DOCA 设备是否支持 DPA。
参数
devinfo
- 要查询的设备

返回值
  • DOCA_SUCCESS - 如果查询的 DOCA 设备支持 DPA
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_NOT_SUPPORTED - 查询的设备不支持 DPA
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_create ( doca_dpa* dpa, unsigned int  queue_size, doca_dpa_completion** dpa_comp )
创建 DPA 完成上下文。
参数
dpa
- DPA 上下文
queue_size
- DPA 完成队列大小
dpa_comp
- 创建的 DPA 完成

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_NO_MEMORY - 内部内存分配失败
描述

此函数创建 DPA 完成上下文。用户负责创建和管理上下文。如果完成上下文附加到 DPA 线程,则可以引发激活。用户还可以决定通过手动轮询来推进上下文

注意

队列大小将四舍五入为下一个 2 的幂


DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_destroy ( doca_dpa_completion* dpa_comp )
销毁 DPA 完成上下文。
参数
dpa_comp
- 先前创建的 DPA 完成

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

此函数销毁由 doca_dpa_completion_create() 创建的 DPA 完成上下文

DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_get_dpa_handle ( doca_dpa_completion* dpa_comp, doca_dpa_dev_completion_t* handle )
获取 DPA 完成上下文句柄。
参数
dpa_comp
- DPA 完成
handle
- DPA 完成句柄

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - DPA 完成未启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_get_queue_size ( doca_dpa_completion* dpa_comp, unsigned int* queue_size )
获取 DPA 完成上下文队列大小。
参数
dpa_comp
- DPA 完成
queue_size
- DPA 完成队列大小

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_get_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread** dpa_thread )
获取 DPA 完成上下文附加线程。
参数
dpa_comp
- DPA 完成
dpa_thread
- DPA 线程

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_set_thread ( doca_dpa_completion* dpa_comp, doca_dpa_thread* dpa_thread )
设置 DPA 完成上下文线程。
参数
dpa_comp
- DPA 完成
dpa_thread
- DPA 线程

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - DPA 完成已启动
描述

此函数将 DPA 线程附加到 DPA 完成上下文。如果用户希望在完成上下文上引发完成时激活线程,则需要附加到 DPA 线程。此函数必须在 DPA 完成启动之前调用

DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_start ( doca_dpa_completion* dpa_comp )
启动 DPA 完成上下文。
参数
dpa_comp
- DPA 完成

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_completion_stop ( doca_dpa_completion* dpa_comp )
停止 DPA 完成上下文。
参数
dpa_comp
- DPA 完成

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_create ( doca_dev* dev, doca_dpa** dpa )
创建一个 DOCA DPA 上下文。
参数
dev
- DOCA 设备
dpa
- 创建的上下文

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_NOT_SUPPORTED - 设备不支持 DPA
  • DOCA_ERROR_NO_MEMORY - 内部内存分配失败时
描述

此函数根据给定的 DOCA 设备创建 DOCA DPA 上下文。该上下文表示 DPA 上的程序,由调用上下文创建 API 的主机进程引用

DOCA_EXPERIMENTAL doca_error_t doca_dpa_d2h_buf_memcpy ( doca_dpa* dpa, doca_buf* buf, doca_dpa_dev_uintptr_t src_ptr, size_t size )
从 DPA 堆复制到 DOCA Buf。
参数
dpa
- DPA 上下文
buf
- 目标 DOCA Buf
src_ptr
- DPA 设备堆源指针
size
- 要复制的数据大小

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_BAD_STATE - DPA 上下文未启动
描述

此函数将数据从 DPA 堆复制到 DOCA Buf 的开头。这是一个阻塞调用。当调用返回时,DOCA Buf 上的内存将设置为 DPA 堆指针中提供的值

DOCA_EXPERIMENTAL doca_error_t doca_dpa_d2h_memcpy ( doca_dpa* dpa, void* dst_ptr, doca_dpa_dev_uintptr_t src_ptr, size_t size )
从 DPA 堆复制到主机内存。
参数
dpa
- DPA 上下文
dst_ptr
- 主机目标缓冲区地址
src_ptr
- DPA 设备堆源指针
size
- 要复制的数据大小

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_BAD_STATE - DPA 上下文未启动
描述

此函数将数据从 DPA 堆复制到主机内存。这是一个阻塞调用。当调用返回时,主机缓冲区上的内存将设置为 DPA 堆指针中提供的值

DOCA_EXPERIMENTAL doca_error_t doca_dpa_destroy ( doca_dpa* dpa )
销毁 DOCA DPA 上下文。
参数
dpa
- 先前创建的 DPA 上下文

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_IN_USE - 如果 DPA 上下文仍被另一个 DOCA 上下文使用
描述

此函数销毁由 doca_dpa_create() 创建的 DPA 上下文

DOCA_EXPERIMENTAL doca_error_t doca_dpa_device_extend ( doca_dpa* dpa, doca_dev* other_dev, doca_dpa** extended_dpa )
创建一个扩展的 DPA 上下文。
参数
dpa
- 基础 DPA 上下文
other_dev
- 要扩展到的 DOCA 设备。
extended_dpa
- 创建的扩展 DPA 上下文

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE
  • DOCA_ERROR_NO_MEMORY - 内部内存分配失败时
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
描述

此函数将基础 DPA 上下文(在 PF DOCA 设备上创建)扩展到其他 DOCA 设备(VF/SF 设备),并创建扩展 DPA 上下文。这允许在其他设备上创建 DPA 资源,例如 RDMA/DPA 完成/DPA 异步操作...上下文。扩展 DPA 上下文稍后可用于所有 DOCA DPA API,例如创建 DPA 内存/DPA 完成上下文/... 请注意

  • 返回的 DPA 上下文将已启动。

  • 创建扩展 DPA 上下文后,用户必须先销毁它,然后再销毁基础 DPA 上下文。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_eu_affinity_clear ( doca_dpa_eu_affinity* affinity )
清除 DPA EU 亲和性。
参数
affinity
- DPA EU 亲和性

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

此函数清除给定 DPA EU 亲和性中的 EU ID

DOCA_EXPERIMENTAL doca_error_t doca_dpa_eu_affinity_create ( doca_dpa* dpa, doca_dpa_eu_affinity** affinity )
创建 DPA EU 亲和性。
参数
dpa
- DPA 上下文
affinity
- 创建的 DPA EU 亲和性

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

此函数创建 DPA EU 亲和性。可以使用 doca_dpa_thread_set_affinity() 为 DPA 线程设置 DPA EU 亲和性,以指定 DPA 线程将在 DPA 上使用的 EU ID。请参阅 sched_getaffinity(3) 了解相应的 CPU 用例。我们在此处为 DPA 复制它

DOCA_EXPERIMENTAL doca_error_t doca_dpa_eu_affinity_destroy ( doca_dpa_eu_affinity* affinity )
销毁 DPA EU 亲和性。
参数
affinity
- 先前创建的 DPA EU 亲和性

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

此函数销毁由 doca_dpa_eu_affinity_create() 创建的 DPA EU 亲和性

DOCA_EXPERIMENTAL doca_error_t doca_dpa_eu_affinity_get ( doca_dpa_eu_affinity* affinity, unsigned int* eu_id )
从 DPA EU 亲和性获取 EU ID。
参数
affinity
- DPA EU 亲和性
eu_id
- EU ID

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

此函数从给定的 DPA EU 亲和性中获取 EU ID

DOCA_EXPERIMENTAL doca_error_t doca_dpa_eu_affinity_set ( doca_dpa_eu_affinity* affinity, unsigned int  eu_id )
在 DPA EU 亲和性中设置 EU ID。
参数
affinity
- DPA EU 亲和性
eu_id
- EU ID

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

此函数在给定的 DPA EU 亲和性中设置 EU ID

DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_app ( doca_dpa* dpa, doca_dpa_app** app )
获取为 DPA 上下文设置的程序应用。
参数
dpa
- DPA 上下文
app
- 为 DPA 上下文设置的 DPA 应用程序

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_core_num ( doca_dpa* dpa, unsigned int* num_cores )
检索可用的 DPA 核心数量。
参数
dpa
- DPA 上下文
num_cores
- DPA 核心数量

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

使用此信息选择 DPA EU 亲和性的 EU ID

DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_dpa_handle ( doca_dpa* dpa, doca_dpa_dev_t* handle )
获取 DPA 上下文句柄。
参数
dpa
- DPA 上下文
handle
- DPA 上下文句柄

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - DPA 完成未启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_kernel_max_run_time ( const doca_dpa* dpa, unsigned long long* value )
获取内核可以在 DPA 上保持调度的最大允许时间(秒)。超过此限制保持调度的内核可能会被运行时终止,并导致致命行为。
参数
dpa
- DPA 上下文
value
- 内核保持调度的最大允许时间(秒)

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效的 NULL 输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t* log_level )
获取为 DPA 上下文设置的设备日志详细级别。
参数
dpa
- DPA 上下文
log_level
- 设备日志的详细级别

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效的 null 输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_max_threads_per_kernel ( const doca_dpa* dpa, unsigned int* value )
获取运行单个内核启动操作的最大 DPA 线程数。
参数
dpa
- DPA 上下文
value
- 运行内核的最大线程数

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效的 NULL 输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_num_eus_per_core ( doca_dpa* dpa, unsigned int* eus_per_core )
检索每个 DPA 核心可用的 EU 数量。
参数
dpa
- DPA 上下文
eus_per_core
- 每个 DPA 核心的 EU 数量

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

使用此信息选择 DPA EU 亲和性的 EU ID

DOCA_EXPERIMENTAL doca_error_t doca_dpa_get_total_num_eus_available ( doca_dpa* dpa, unsigned int* total_num_eus )
检索应用程序可用的 EU 总数。
参数
dpa
- DPA 上下文
total_num_eus
- 可用 EU 总数

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

使用此信息选择 DPA EU 亲和性的 EU ID

DOCA_EXPERIMENTAL doca_error_t doca_dpa_h2d_buf_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, doca_buf* buf, size_t size )
从 DOCA Buf 复制到 DPA 堆。
参数
dpa
- DPA 上下文
dst_ptr
- DPA 设备堆目标指针
buf
- 源 DOCA Buf
size
- 要复制的数据大小

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_BAD_STATE - DPA 上下文未启动
描述

此函数将数据从 DOCA Buf 的开头复制到 DPA 堆。这是一个阻塞调用。当调用返回时,DPA 上的内存将设置为 DOCA Buf 中提供的值

DOCA_EXPERIMENTAL doca_error_t doca_dpa_h2d_memcpy ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dst_ptr, void* src_ptr, size_t size )
从主机内存复制到 DPA 堆。
参数
dpa
- DPA 上下文
dst_ptr
- DPA 设备堆目标指针
src_ptr
- 主机源缓冲区地址
size
- 要复制的数据大小

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_BAD_STATE - DPA 上下文未启动
描述

此函数将数据从主机内存复制到 DPA 堆。这是一个阻塞调用。当调用返回时,DPA 上的内存将设置为主机缓冲区中提供的值

DOCA_EXPERIMENTAL doca_error_t doca_dpa_hash_table_create ( doca_dpa* dpa, unsigned int  num_entries, doca_dpa_hash_table** ht )
在 DPA 上创建一个哈希表。
参数
dpa
- DPA 上下文
num_entries
- 哈希表中的条目数
ht
- 创建的 DPA 哈希表

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_BAD_STATE - DPA 上下文未启动
描述

此函数在 DPA 上创建哈希表。创建后,用户可以检索其 DPA 句柄,并在 DPA 内核中使用它进行添加、删除和查找操作

注意

表大小将四舍五入为下一个 2 的幂


DOCA_EXPERIMENTAL doca_error_t doca_dpa_hash_table_destroy ( doca_dpa_hash_table* ht )
销毁 DPA 哈希表。
参数
ht
- 先前创建的 DPA 哈希表

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE
描述

此函数销毁由 doca_dpa_hash_table_create() 创建的 DPA 哈希表

DOCA_EXPERIMENTAL doca_error_t doca_dpa_hash_table_get_dpa_handle ( doca_dpa_hash_table* ht, doca_dpa_dev_hash_table_t* ht_handle )
获取 DPA 哈希表句柄。
参数
ht
- DPA 哈希表
ht_handle
- DPA 哈希表句柄

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_kernel_launch_update_add ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int  num_threads, doca_dpa_func_t* func, ... )
向 DPA 提交一个内核。
参数
dpa
- 先前创建的 DPA 上下文
wait_event
- 在执行内核之前要等待的事件(可选)
wait_threshold
- 等待事件计数阈值,用于在执行之前等待。有效值 [0-254]
comp_event
- 内核执行完成后要发出信号的事件(可选)
comp_count
- 当 func 完成时,要为完成事件添加的完成计数
num_threads
- 要使用的线程数。此数字必须等于或低于允许的最大值(请参阅 doca_dpa_get_max_threads_per_kernel)
func
- 表示 DPA 内核的主机函数指针

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_BAD_STATE - DPA 上下文未启动
描述

此函数提交一个内核以在指定的 `dpa` 上下文中启动。当其等待事件值大于或等于指定的阈值时,内核开始执行。当内核完成执行时,`comp_count` 中指定的值将添加到 `comp_event`。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_kernel_launch_update_set ( doca_dpa* dpa, doca_sync_event* wait_event, uint64_t wait_threshold, doca_sync_event* comp_event, uint64_t comp_count, unsigned int  num_threads, doca_dpa_func_t* func, ... )
向 DPA 提交一个内核,该内核设置完成事件。
参数
dpa
- 先前创建的 DPA 上下文
wait_event
- 在执行内核之前要等待的事件(可选)
wait_threshold
- 等待事件计数阈值,用于在执行之前等待。有效值 [0-254]
comp_event
- 内核执行完成后要发出信号的事件(可选)
comp_count
- 当 func 完成时,要为完成事件设置的完成计数
num_threads
- 要使用的线程数。此数字必须等于或低于允许的最大值(请参阅 doca_dpa_get_max_threads_per_kernel)
func
- 表示 DPA 内核的主机函数指针

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_BAD_STATE - DPA 上下文未启动
描述

此函数提交一个内核以在指定的 `dpa` 上下文中启动。当其等待事件值大于或等于指定的阈值时,内核开始执行。当内核完成执行时,完成事件将设置为 `comp_count` 中指定的值。

要启动的函数 `func` 是与 DPA 设备函数对应的主机函数指针。例如,如果设备函数声明为:`__dpa_global__ hello(int arg1)`,则用户应在主机应用程序中将该函数声明为 `extern doca_dpa_func_t hello;`。在使用编译器链接和加载应用程序后,可以使用函数指针 `hello` 作为 `func` 参数。函数 `hello` 的参数可以在调用中内联作为 var args 传递。例如,要使用 `4` 个线程和参数 `5` 在设备上调用 `hello`,调用看起来像:`doca_dpa_kernel_launch_update_set(..., 4, hello, 5);`

DOCA_EXPERIMENTAL doca_error_t doca_dpa_log_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
获取用于写入设备日志的日志文件路径。
参数
dpa
- DPA 上下文
file_path
- 要将设备日志写入到的日志文件的路径名
file_path_len
- file_path 长度。输出是实际写入的字节数

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效的 null 输入
  • DOCA_ERROR_NO_MEMORY - 内存分配错误
描述

file_path 缓冲区由调用者分配,并设置 file_path_len 指示已分配的长度。返回时,file_path_len 字段设置为 file_path 的实际长度

DOCA_EXPERIMENTAL doca_error_t doca_dpa_log_file_set_path ( doca_dpa* dpa, const char* file_path )
设置用于写入设备日志的日志文件路径。
参数
dpa
- DPA 上下文
file_path
- 要将设备日志写入到的日志文件的路径名

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效的 null 输入
  • DOCA_ERROR_BAD_STATE - DPA 上下文已启动
  • DOCA_ERROR_NO_MEMORY - 内存分配错误
  • DOCA_ERROR_OPERATING_SYSTEM - 打开文件时发生错误
描述

必须在调用 doca_dpa_start() 之前设置

注意

如果未设置,则默认使用 stdout


DOCA_EXPERIMENTAL doca_error_t doca_dpa_mem_alloc ( doca_dpa* dpa, size_t size, doca_dpa_dev_uintptr_t* dev_ptr )
分配 DPA 堆内存。
参数
dpa
- DPA 上下文
size
- 请求的分配大小
dev_ptr
- 指向 DPA 设备上已分配内存的指针

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_BAD_STATE - DPA 上下文未启动
描述

此函数在 DPA 进程堆上分配 `size` 字节的内存。内存针对任何受支持的语言数据类型进行对齐。分配时内存未清零。成功时,已分配的内存将返回到 `dev_ptr` 中。当内存分配失败时,`dev_ptr` 将设置为 0x0 (NULL)

DOCA_EXPERIMENTAL doca_error_t doca_dpa_mem_free ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr )
释放先前分配的 DPA 内存。
参数
dpa
- DPA 上下文
dev_ptr
- 指向先前在 DPA 设备上分配的内存的指针

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_BAD_STATE - DPA 上下文未启动
描述

此函数释放 DPA 堆上分配的内存。用户应确保 DPA 上的内核不再使用已建立的同步机制(请参阅事件)访问内存

DOCA_EXPERIMENTAL doca_error_t doca_dpa_memset ( doca_dpa* dpa, doca_dpa_dev_uintptr_t dev_ptr, int  value, size_t size )
将 DPA 堆内存设置为一个值。
参数
dpa
- DPA 上下文
dev_ptr
- DPA 设备堆指针
value
- 要设置的值
size
- 设备缓冲区大小

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_BAD_STATE - DPA 上下文未启动
描述

此函数将 DPA 堆内存设置为提供的值。这是一个阻塞调用。当调用返回时,DPA 上的内存将设置为提供的值

DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_create ( doca_dpa* dpa, doca_dpa_thread* dpa_thread, doca_dpa_notification_completion** notify_comp )
创建 DPA 通知完成上下文。
参数
dpa
- DPA 上下文
dpa_thread
- 附加的 DPA 线程
notify_comp
- 创建的 DPA 通知完成

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_NO_MEMORY - 内部内存分配失败
描述

此函数创建 DPA 通知完成上下文。此上下文用于使用 doca_dpa_dev_thread_notify() API 在设备中激活附加的 DPA 线程。线程激活的完成无需在线程的附加完成上下文中接收完成。因此,期望此线程激活方法的用户将以另一种方式传递消息 - 例如共享内存

DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_destroy ( doca_dpa_notification_completion* notify_comp )
销毁 DPA 通知完成上下文。
参数
notify_comp
- 先前创建的 DPA 通知完成

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

此函数销毁由 doca_dpa_notification_completion_create() 创建的 DPA 通知完成上下文

DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_get_dpa_handle ( doca_dpa_notification_completion* notify_comp, doca_dpa_dev_notification_completion_t* handle )
获取 DPA 通知完成上下文句柄。
参数
notify_comp
- DPA 通知完成
handle
- DPA 通知完成句柄

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - DPA 通知完成未启动
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_get_thread ( doca_dpa_notification_completion* notify_comp, doca_dpa_thread** dpa_thread )
获取 DPA 通知完成上下文附加线程。
参数
notify_comp
- DPA 通知完成
dpa_thread
- DPA 线程

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_start ( doca_dpa_notification_completion* notify_comp )
启动 DPA 通知完成上下文。
参数
notify_comp
- DPA 通知完成

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_notification_completion_stop ( doca_dpa_notification_completion* notify_comp )
停止 DPA 通知完成上下文。
参数
notify_comp
- DPA 通知完成

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_peek_at_last_error ( const doca_dpa* dpa )
返回 DPA 上生成的最后一个错误。检查设备端运行时是否发生错误。此调用不会重置错误状态。如果发生错误,DPA 上下文将进入致命状态,必须由用户销毁。在致命错误的情况下,核心转储和崩溃数据将被写入文件路径 /tmp/doca_dpa_fatal 或 API doca_dpa_log_file_set_path() 设置的文件路径,后缀分别为 .PID.core 和 .PID.crash,其中 PID 是进程 ID。
参数
dpa
- DPA 上下文

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效的 NULL 输入
  • DOCA_ERROR_BAD_STATE - 设备端收到错误
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_rpc ( doca_dpa* dpa, doca_dpa_func_t* func, uint64_t* retval, ... )
RPC 运行 DPA 内核。
参数
dpa
- DPA 上下文
func
- 表示要运行的 DPA 内核的主机函数指针
retval
- 指向 DPA 内核返回值的指针

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文未启动
描述

此函数在指定的 `dpa` 上下文中执行提供的 `func` 及其参数。这是一个阻塞 API。

`func` 是与 DPA 设备函数对应的主机函数指针。请注意,DPA 设备 `func` 必须使用 `__dpa_rpc__` 注释进行注释,例如 `__dpa_rpc__ uint64_t hello(int arg1)`。此外,用户应在主机应用程序中将该函数声明为 `extern doca_dpa_func_t hello;`。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_set_app ( doca_dpa* dpa, doca_dpa_app* app )
为 DPA 上下文设置程序应用。
参数
dpa
- DPA 上下文
app
- 由 DPACC 生成的 DPA 应用程序

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - 如果 DPA 上下文已启动
描述

程序应用 (program app) 代表 DPA 上的一个程序,该程序被调用上下文创建 API 的主机进程引用。必须在调用 doca_dpa_start() 之前设置。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_set_log_level ( doca_dpa* dpa, doca_dpa_dev_log_level_t log_level )
设置设备日志详细级别。
参数
dpa
- DPA 上下文
log_level
- 设备日志的详细级别

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - DPA 上下文已启动
描述

来自设备的日志打印将以等于或低于设置的日志级别的详细程度打印到主机。必须在调用 doca_dpa_start() 之前设置。

注意

DPA 日志级别的默认值为 DOCA_DPA_DEV_LOG_LEVEL_INFO


DOCA_EXPERIMENTAL doca_error_t doca_dpa_start ( doca_dpa* dpa )
启动 DPA 上下文。
参数
dpa
- DPA 上下文

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_NO_MEMORY - 内部内存分配失败时
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_stop ( doca_dpa* dpa )
停止 DPA 上下文。
参数
dpa
- DPA 上下文

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错时
  • DOCA_ERROR_IN_USE - 如果存在未销毁的已连接线程/完成/扩展 DPA 上下文
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_create ( doca_dpa* dpa, doca_dpa_thread** dpa_thread )
创建 DPA 线程。
参数
dpa
- DPA 上下文
dpa_thread
- 创建的 DPA 线程

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_NO_MEMORY - 内部内存分配失败
描述

此函数创建一个 DPA 线程。DPA 线程用于在 DPA 上运行用户内核。用户可以控制在哪个 EU 上运行 DPA 内核。线程通过两种方法在 DPA 上激活:1- 使用 DPA 通知完成上下文的线程激活。2- 将完成上下文附加到线程。为了激活线程以启用接收任何消息或完成,用户必须:1- 创建 DPA 线程并使用线程设置器函数对其进行配置。2- 附加到完成上下文。3- 使用 doca_dpa_thread_run() API 将线程设置为可运行状态。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_destroy ( doca_dpa_thread* dpa_thread )
销毁 DPA 线程。
参数
dpa_thread
- 之前创建的 DPA 线程

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

此函数销毁由 doca_dpa_thread_create() 创建的 DPA 线程。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_get_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity** affinity )
获取 DPA 线程亲和性。
参数
dpa_thread
- DPA 线程
affinity
- DPA EU 亲和性

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_get_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t** func, uint64_t* arg )
获取 DPA 线程入口点及其参数。
参数
dpa_thread
- DPA 线程
func
- DPA 线程入口点
arg
- DPA 线程入口点参数

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_get_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t* dev_ptr )
获取 DPA 线程本地存储。
参数
dpa_thread
- DPA 线程
dev_ptr
- DPA 设备内存地址

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_create ( doca_dpa* dpa, unsigned int  num_threads, doca_dpa_tg** tg )
创建 DPA 线程组。
参数
dpa
- DPA 上下文
num_threads
- DPA 线程组的线程数
tg
- 创建的线程组

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_NO_MEMORY - 内部内存分配失败
描述

此函数创建一个给定大小的空线程组(没有填充线程)。用户可以使用 doca_dpa_thread_group_set_thread() API 在特定 rank 设置线程。线程必须在线程组启动之前在所有 rank 中设置。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_destroy ( doca_dpa_tg* tg )
销毁 DPA 线程组。
参数
tg
- 之前创建的 DPA 线程组

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

此函数销毁由 doca_dpa_thread_group_create() 创建的 DPA 线程组。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_get_num_threads ( doca_dpa_tg* tg, unsigned int* num_threads )
获取 DPA 线程组线程数量。
参数
tg
- DPA 线程组
num_threads
- DPA 线程组的线程数

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_set_thread ( doca_dpa_tg* tg, doca_dpa_thread* thread, unsigned int  rank )
在 DPA 线程组中的 'rank' 位置设置 DPA 线程。
参数
tg
- DPA 线程组
thread
- DPA 线程
rank
- DPA 线程组中 DPA 线程的 rank

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE
描述

线程 rank 是组内线程的索引(介于 0 和 size()-1 之间)。此函数必须在启动 DPA 线程和 DPA 线程组之前调用。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_start ( doca_dpa_tg* tg )
启动 DPA 线程组。
参数
tg
- DPA 线程组

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_group_stop ( doca_dpa_tg* tg )
停止 DPA 线程组。
参数
tg
- DPA 线程组

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_run ( doca_dpa_thread* dpa_thread )
运行 DPA 线程。
参数
dpa_thread
- DPA 线程

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE
描述

此函数将线程设置为可运行状态,以便当附加到线程的完成上下文收到消息时,线程将运行。此函数必须在 DPA 线程完成以下操作后调用:1- 创建和启动。2- 附加到完成上下文。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_set_affinity ( doca_dpa_thread* dpa_thread, const doca_dpa_eu_affinity* affinity )
设置 DPA 线程亲和性。
参数
dpa_thread
- DPA 线程
affinity
- DPA EU 亲和性

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - DPA 线程已启动
描述

此函数将 DPA 线程的 affinity 类型设置为 “fixed”(固定)。固定 affinity 意味着线程将仅在给定的 DPA EU affinity 中提供的 EU ID 上运行。当未指定 affinity 时,默认 affinity 模式为 “relaxed”(宽松),意味着线程在重新调度时将在任何可用的 EU ID 上运行。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_set_func_arg ( doca_dpa_thread* dpa_thread, doca_dpa_func_t* func, uint64_t arg )
设置 DPA 线程入口点及其参数。
参数
dpa_thread
- DPA 线程
func
- 主机函数指针,表示 DPA 内核,线程在被触发时运行
arg
- DPA 线程入口点参数

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - DPA 线程已启动
描述

DPA 线程函数 `func` 是一个主机函数指针,对应于 DPA 设备函数。设备函数必须使用 `__dpa_global__` 关键字进行注释,例如 `__dpa_global__ void hello(int arg1)`。在主机应用程序中,用户应将该函数声明为 `extern doca_dpa_func_t hello;`。在使用编译器链接和加载应用程序后,函数指针 `hello` 可以用作 `func` 参数。此函数必须在 DPA 线程启动之前调用。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_set_local_storage ( doca_dpa_thread* dpa_thread, doca_dpa_dev_uintptr_t dev_ptr )
设置 DPA 线程本地存储。
参数
dpa_thread
- DPA 线程
dev_ptr
- DPA 设备内存地址

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_BAD_STATE - DPA 线程已启动
描述

用户可以请求使用线程本地存储实用程序在主机端为 DPA 线程存储一个不透明的(DPA 设备内存指针)。在设备内核中,用户可以使用 doca_dpa_dev_thread_get_local_storage() API 获取此不透明指针。此函数必须在 DPA 线程启动之前调用。

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_start ( doca_dpa_thread* dpa_thread )
启动 DPA 线程。
参数
dpa_thread
- DPA 线程

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_thread_stop ( doca_dpa_thread* dpa_thread )
停止 DPA 线程。
参数
dpa_thread
- DPA 线程

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效输入
  • DOCA_ERROR_DRIVER - DOCA 驱动程序调用出错
  • DOCA_ERROR_BAD_STATE - 附加的 DPA 上下文被销毁
描述

DOCA_EXPERIMENTAL doca_error_t doca_dpa_trace_file_get_path ( doca_dpa* dpa, char* file_path, uint32_t* file_path_len )
获取用于写入设备跟踪信息的跟踪文件路径。
参数
dpa
- DPA 上下文
file_path
- 跟踪文件的路径名,用于写入设备跟踪信息
file_path_len
- file_path 长度。输出是实际写入的字节数

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效的 null 输入
  • DOCA_ERROR_NO_MEMORY - 内存分配错误
描述

file_path 缓冲区由调用者分配,并设置 file_path_len 指示已分配的长度。返回时,file_path_len 字段设置为 file_path 的实际长度

DOCA_EXPERIMENTAL doca_error_t doca_dpa_trace_file_set_path ( doca_dpa* dpa, const char* file_path )
设置用于写入设备跟踪信息的跟踪文件路径。
参数
dpa
- DPA 上下文
file_path
- 跟踪文件的路径名,用于写入设备跟踪信息

返回值
  • DOCA_SUCCESS - 成功时
  • DOCA_ERROR_INVALID_VALUE - 接收到无效的 null 输入
  • DOCA_ERROR_BAD_STATE - DPA 上下文已启动
  • DOCA_ERROR_NO_MEMORY - 内存分配错误
  • DOCA_ERROR_OPERATING_SYSTEM - 打开文件时发生错误
描述

必须在调用 doca_dpa_start() 之前设置

注意

如果未设置,则默认使用 stdout


© Copyright 2024, NVIDIA. 最后更新于 2024 年 11 月 7 日。