鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

默认场景

  1. 申请队列前,和默认场景一样,声明一个struct wd_queue的结构体变量并在这个成员变量capa的成员变量alg中指定需要的算法字符串。
  2. 申请队列时,和章节默认场景一样,取第1步struct wd_queue结构体变量的地址作为参数,调用int wd_request_queue(struct wd_queue *q)申请指定算法的队列。
  3. 创建算法context时,取第1步struct wd_queue结构体变量的地址作为参数,调用wcrypto_create_digest_ctx函数创建context,成功则返回一个指向context的void *指针,失败则返回空指针。
  4. 调用算法操作前,声明一个该算法的操作结构体struct wcrypto_digest_op_data变量(结构体定义如下,细节请参考HASH算法类相关接口),根据需求申请好合适大小的内存给in、out,并将需要操作的数据填入in,或者把in、out指向已申请好的内存,并指定in_bytes,out_bytes大小。处理完之后由用户负责释放这些内存。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct wcrypto_digest_op_data{
    void *in;
    void *out;
    __u32 in_bytes;
    __u32 out_bytes;
    void *priv;
    int status;
    bool has_next;
    };
    
  5. 调用算法操作通知硬件执行算法处理数据时,取第3步返回的context指针和第4步struct wcrypto_digest_op_data变量地址作为参数,调用wcrypto_do_digest函数将数据通过WD基础层send/recv接口交给加速器硬件处理,成功则返回0,并将硬件处理好的数据填到第4步struct wcrypto_digest_op_data变量的成员变量out中;失败则返回负值。
  6. 释放算法context前,用户处理完加速器返回的数据之后,释放第4步中涉及到的in、out内存。
  7. 释放算法context时,取第3步返回的context指针作为参数,调用wcrypto_del_digest_ctx函数释放context。
  8. 释放队列时,取第1步struct wd_queue结构体变量的地址作为参数,调用void wd_release_queue(struct wd_queue *q)释放队列和涉及到的硬件资源。