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
参数
参数
枚举
函数
- 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 功能完成的。请遵循程序员指南进行系统配置。
模块
宏定义
- #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
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 设备
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 缓冲区数组。
类型定义
函数
- 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_buf_get_by_addr() 从清单中检索空闲元素。
-
使用 doca_buf_inventory_buf_dup() 将缓冲区的内容复制到从清单分配的缓冲区中。
首次调用启动后,以下操作不可能实现
-
使用 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。
以下操作仅在启动后才可能实现
-
使用 doca_buf_pool_buf_alloc() 分配 doca_bufs。
当 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 )
上下文状态更改时执行的函数。当上下文状态更改时,将调用此函数。
另请参阅
- 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 后再次可用
-
更改 CTX 属性
-
使用 doca_ctx_set_datapath_on_gpu() 将 gpu 设备绑定到 CTX
-
使用 doca_ctx_set_datapath_on_dpa() 将 dpa 设备绑定到 CTX
- 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 的缓冲区大小。 包括空终止符。
枚举
函数
- 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 - 发生意外错误。
描述
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 缓冲区数组。
类型定义
函数
- 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_buf_get_by_addr() 从清单中检索空闲元素。
-
使用 doca_buf_inventory_buf_dup() 将缓冲区的内容复制到从清单分配的缓冲区中。
首次调用启动后,以下操作不可能实现
-
使用 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。
以下操作仅在启动后才可能实现
-
使用 doca_buf_pool_buf_alloc() 分配 doca_bufs。
当 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 )
上下文状态更改时执行的函数。当上下文状态更改时,将调用此函数。
另请参阅
- 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 后再次可用
-
更改 CTX 属性
-
使用 doca_ctx_set_datapath_on_gpu() 将 gpu 设备绑定到 CTX
-
使用 doca_ctx_set_datapath_on_dpa() 将 dpa 设备绑定到 CTX
- 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 的缓冲区大小。 包括空终止符。
枚举
函数
- 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 协议栈的一部分。请遵循程序员指南以获取使用说明。
模块
类型定义
- 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 实例中设置立即数据。
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 的统计信息
类型定义
枚举
函数
- 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
- 要设置的源缓冲区
描述
模块
DOCA 设备模拟 - PCI 设备
DOCA 设备模拟 - Virtio FS 设备
DOCA 设备模拟 - Virtio 设备
2.10.1. DOCA 设备仿真 - PCI 设备
[ DOCA 设备仿真 ]
用于仿真 PCI 设备的 DOCA 库
模块
类型定义
- 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 类型。
宏定义
枚举
- 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_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
- DOCA_ERROR_BAD_STATE - 类型在启动时无法销毁。需要先停止它 - doca_devemu_pci_type_stop()
- DOCA_ERROR_NOT_PERMITTED - 类型不是使用 doca_devemu_pci_type_create() 创建的
描述
- 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 库
模块
宏定义
- #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 完成后变为无效。
宏定义
函数
- 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 库
模块
类型定义
- 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。
描述
2.10.1. DOCA 设备仿真 - PCI 设备
[ DOCA 设备仿真 ]
用于仿真 PCI 设备的 DOCA 库
模块
类型定义
- 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 类型。
宏定义
枚举
- 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_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
- DOCA_ERROR_BAD_STATE - 类型在启动时无法销毁。需要先停止它 - doca_devemu_pci_type_stop()
- DOCA_ERROR_NOT_PERMITTED - 类型不是使用 doca_devemu_pci_type_create() 创建的
描述
- 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.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 类型。
宏定义
枚举
- 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_ERROR_INVALID_VALUE - 'pci_type' 为 NULL
- DOCA_ERROR_BAD_STATE - 类型在启动时无法销毁。需要先停止它 - doca_devemu_pci_type_stop()
- DOCA_ERROR_NOT_PERMITTED - 类型不是使用 doca_devemu_pci_type_create() 创建的
描述
- 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 库
模块
宏定义
- #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 完成后变为无效。
宏定义
函数
- 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.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 库
模块
类型定义
- 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。
描述
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