LCOV - code coverage report
Current view: top level - aicpu_schedule/common - aicpusd_sqe_adapter.h (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 11 11
Test Date: 2026-07-28 10:54:05 Functions: 100.0 % 5 5

            Line data    Source code
       1              : /**
       2              :  * Copyright (c) 2025 Huawei Technologies Co., Ltd.
       3              :  * This program is free software, you can redistribute it and/or modify it under the terms and conditions of
       4              :  * CANN Open Software License Agreement Version 2.0 (the "License").
       5              :  * Please refer to the License for details. You may not use this file except in compliance with the License.
       6              :  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED,
       7              :  * INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
       8              :  * See LICENSE in the root of the software repository for the full text of the License.
       9              :  */
      10              : #ifndef AICPUSD_SQE_ADAPTER_H
      11              : #define AICPUSD_SQE_ADAPTER_H
      12              : 
      13              : #include "aicpusd_common.h"
      14              : #include "aicpusd_drv_manager.h"
      15              : #include "type_def.h"
      16              : #include "ts_api.h"
      17              : 
      18              : namespace AicpuSchedule {
      19              : struct ErrLogRptInfo;
      20              : class AicpuSqeAdapter {
      21              : public:
      22              :     static constexpr uint16_t INVALID_VALUE16 = 0xFFFF;
      23              :     static constexpr uint32_t INVALID_VALUE32 = 0xFFFFFFFF;
      24              :     static constexpr uint8_t STARS_DATADUMP_LOAD_INFO = 8;
      25              :     static constexpr uint8_t VERSION_0 = 0;
      26              :     static constexpr uint8_t VERSION_1 = 1;
      27              :     static constexpr uint8_t MSG_EVENT_SUB_EVENTID_RECORD = 1;
      28              : 
      29              :     struct AicpuTaskReportInfo {
      30              :         volatile uint16_t model_id;
      31              :         volatile uint16_t result_code;
      32              :         volatile uint16_t stream_id;
      33              :         volatile uint32_t task_id;
      34              :     };
      35              : 
      36              :     struct AicpuModelOperateInfo {
      37              :         volatile uint64_t arg_ptr;
      38              :         volatile uint16_t stream_id;
      39              :         volatile uint16_t task_id;
      40              :         volatile uint16_t model_id;
      41              :         volatile uint8_t cmd_type;
      42              :         volatile uint8_t reserved[3];
      43              :     };
      44              : 
      45              :     struct AicpuDataDumpInfo {
      46              :         volatile bool is_debug;
      47              :         volatile uint32_t dump_task_id;
      48              :         volatile uint16_t dump_stream_id;
      49              :         volatile uint32_t debug_dump_task_id;
      50              :         volatile uint16_t debug_dump_stream_id;
      51              :         volatile bool is_model;
      52              :         volatile uint32_t file_name_task_id;
      53              :         volatile uint16_t file_name_stream_id;
      54              :     };
      55              : 
      56              :     struct AicpuDumpFFTSPlusDataInfo {
      57              :         TsToAicpuFFTSPlusDataDump i;
      58              :     };
      59              : 
      60              :     struct AicpuDataDumpInfoLoad {
      61              :         volatile uint64_t dumpinfoPtr;
      62              :         volatile uint32_t length;
      63              :         volatile uint16_t stream_id;
      64              :         volatile uint32_t task_id;
      65              :     };
      66              : 
      67              :     struct AicpuTimeOutConfigInfo {
      68              :         TsToAicpuTimeOutConfig i;
      69              :     };
      70              : 
      71              :     struct AicpuInfoLoad {
      72              :         volatile uint64_t aicpuInfoPtr;
      73              :         volatile uint32_t length;
      74              :         volatile uint16_t stream_id;
      75              :         volatile uint32_t task_id;
      76              :     };
      77              : 
      78              :     struct AicErrReportInfo {
      79              :         union {
      80              :             TsToAicpuAicErrReport aicError;
      81              :             TsToAicpuAicErrMsgReport aicErrorMsg;
      82              :         } u;
      83              :     };
      84              : 
      85              :     struct AicpuMsgVersionInfo {
      86              :         volatile uint16_t magic_num;
      87              :         volatile uint16_t version;
      88              :     };
      89              : 
      90              :     struct AicpuOpMappingDumpTaskInfo {
      91           61 :         AicpuOpMappingDumpTaskInfo(uint32_t protoTaskId, uint32_t protoStreamId, uint32_t taskId, uint32_t streamId)
      92           61 :             : proto_info_task_id(protoTaskId), proto_info_stream_id(protoStreamId), task_id(taskId), stream_id(streamId)
      93           61 :         {}
      94              :         volatile uint32_t proto_info_task_id;
      95              :         volatile uint32_t proto_info_stream_id;
      96              :         volatile uint32_t task_id;
      97              :         volatile uint32_t stream_id;
      98              :     };
      99              : 
     100              :     struct AicpuDumpTaskInfo {
     101              :         volatile uint32_t task_id;
     102              :         volatile uint32_t stream_id;
     103              :         volatile uint32_t context_id;
     104              :         volatile uint32_t thread_id;
     105              :     };
     106              : 
     107              :     struct AicpuRecordInfo {
     108            9 :         AicpuRecordInfo(uint32_t recordId, uint8_t recordType, uint16_t retCode, uint8_t tsId, uint32_t taskId,
     109              :             uint16_t streamId, uint32_t devId)
     110            9 :             : record_id(recordId), record_type(recordType), ret_code(retCode), ts_id(tsId), fault_task_id(taskId),
     111            9 :               fault_stream_id(streamId), dev_id(devId){};
     112              :         volatile uint32_t record_id;
     113              :         volatile uint8_t record_type;
     114              :         volatile uint16_t ret_code;
     115              :         volatile uint8_t ts_id;
     116              :         volatile uint32_t fault_task_id;
     117              :         volatile uint32_t fault_stream_id;
     118              :         volatile uint32_t dev_id;
     119              :     };
     120              : 
     121              :     struct ActiveStreamInfo {
     122            8 :         ActiveStreamInfo(uint16_t streamId, uint8_t tsId, uint64_t aicpuStamp, uint32_t deviceId, uint32_t handleId)
     123            8 :             : stream_id(streamId), ts_id(tsId), aicpu_stamp(aicpuStamp), device_id(deviceId), handle_id(handleId){};
     124              :         volatile uint16_t stream_id;
     125              :         volatile uint8_t ts_id;
     126              :         volatile uint64_t aicpu_stamp;
     127              :         volatile uint32_t device_id;
     128              :         volatile uint32_t handle_id;
     129              :     };
     130              : 
     131              : #pragma pack(push, 1)
     132              :     struct ErrMsgRspInfo {
     133           10 :         ErrMsgRspInfo(
     134              :             uint32_t off, uint32_t errCode, uint32_t streamId, uint32_t taskId, uint32_t modelId, uint32_t tsId)
     135           10 :             : offset(off), err_code(errCode), stream_id(streamId), task_id(taskId), model_id(modelId), ts_id(tsId){};
     136              :         uint32_t offset;
     137              :         uint32_t err_code;
     138              :         uint32_t stream_id;
     139              :         uint32_t task_id;
     140              :         uint32_t model_id;
     141              :         uint32_t ts_id;
     142              :     };
     143              : #pragma pack(pop)
     144              : 
     145              :     AicpuSqeAdapter(const TsAicpuSqe &sqe, const int16_t version);
     146              : 
     147              :     AicpuSqeAdapter(const TsAicpuMsgInfo &msgInfo, const int16_t version);
     148              : 
     149              :     AicpuSqeAdapter(const int16_t version);
     150              : 
     151              :     AicpuSqeAdapter(const AicpuSqeAdapter &) = delete;
     152              : 
     153              :     AicpuSqeAdapter(AicpuSqeAdapter &&) = delete;
     154              : 
     155              :     AicpuSqeAdapter &operator=(const AicpuSqeAdapter &) = delete;
     156              : 
     157              :     AicpuSqeAdapter &operator=(AicpuSqeAdapter &&) = delete;
     158              : 
     159          200 :     ~AicpuSqeAdapter() = default;
     160              : 
     161              :     uint8_t GetCmdType() const;
     162              : 
     163              :     void InitAdapterFuncMap();
     164              : 
     165              :     bool IsAdapterInvalidParameter() const;
     166              : 
     167              :     void GetAicpuDataDumpInfo(AicpuDataDumpInfo &info);
     168              : 
     169              :     int32_t AicpuDumpResponseToTs(const int32_t ret);
     170              : 
     171              :     bool IsOpMappingDumpTaskInfoVaild(const AicpuOpMappingDumpTaskInfo &info) const;
     172              : 
     173              :     void GetAicpuDumpTaskInfo(AicpuOpMappingDumpTaskInfo &opmappingInfo, AicpuDumpTaskInfo &dumpTaskInfo);
     174              : 
     175              :     void GetAicpuDumpFFTSPlusDataInfo(AicpuDumpFFTSPlusDataInfo &info);
     176              : 
     177              :     void GetAicpuModelOperateInfo(AicpuModelOperateInfo &info);
     178              : 
     179              :     int32_t AicpuModelOperateResponseToTs(const int32_t ret, const uint32_t subEvent);
     180              : 
     181              :     void GetAicpuTaskReportInfo(AicpuTaskReportInfo &info);
     182              : 
     183              :     int32_t ErrorMsgResponseToTs(ErrMsgRspInfo &rspInfo);
     184              : 
     185              :     void AicpuActiveStreamSetMsg(ActiveStreamInfo &info);
     186              : 
     187              :     int32_t GetAicpuNotifyResponse();
     188              : 
     189              :     int32_t AicpuMsgVersionResponseToTs(const int32_t ret);
     190              : 
     191              :     void GetAicpuDataDumpInfoLoad(AicpuDataDumpInfoLoad &info);
     192              : 
     193              :     int32_t AicpuDataDumpLoadResponseToTs(const int32_t ret);
     194              : 
     195              :     int32_t GetTaskActiveForWaitResponse();
     196              : 
     197              :     int32_t AicpuNoticeTsPidResponse(const uint32_t deviceId) const;
     198              : 
     199              :     int32_t AicpuRecordResponseToTs();
     200              : 
     201              :     void GetAicpuTimeOutConfigInfo(AicpuTimeOutConfigInfo &info);
     202              : 
     203              :     int32_t AicpuTimeOutConfigResponseToTs(const int32_t ret);
     204              : 
     205              :     void GetAicpuInfoLoad(AicpuInfoLoad &info);
     206              : 
     207              :     int32_t AicpuInfoLoadResponseToTs(const int32_t ret);
     208              : 
     209              :     void GetAicErrReportInfo(AicErrReportInfo &info);
     210              : 
     211              :     void GetAicpuMsgVersionInfo(AicpuMsgVersionInfo &info);
     212              : 
     213              :     int32_t AicpuRecordResponseToTs(AicpuRecordInfo &info);
     214              : 
     215              : private:
     216              :     void GetAicErrReportInfoV0(AicErrReportInfo &info);
     217              : 
     218              :     void GetAicErrReportInfoV1(AicErrReportInfo &info);
     219              : 
     220              :     void GetAicpuModelOperateInfoV0(AicpuModelOperateInfo &info);
     221              : 
     222              :     void GetAicpuModelOperateInfoV1(AicpuModelOperateInfo &info);
     223              : 
     224              :     int32_t AicpuModelOperateResponseToTsV0(const int32_t ret, const uint32_t subEvent);
     225              : 
     226              :     int32_t AicpuModelOperateResponseToTsV1(const int32_t ret, const uint32_t subEvent);
     227              : 
     228              :     void GetAicpuDataDumpInfoV0(AicpuDataDumpInfo &info);
     229              : 
     230              :     void GetAicpuDataDumpInfoV1(AicpuDataDumpInfo &info);
     231              : 
     232              :     void GetAicpuDumpTaskInfoV0(AicpuOpMappingDumpTaskInfo &opmappingInfo, AicpuDumpTaskInfo &dumpTaskInfo);
     233              : 
     234              :     void GetAicpuDumpTaskInfoV1(AicpuOpMappingDumpTaskInfo &opmappingInfo, AicpuDumpTaskInfo &dumpTaskInfo);
     235              : 
     236              :     int32_t AicpuDumpResponseToTsV1(const int32_t ret);
     237              : 
     238              :     int32_t AicpuDumpResponseToTsV0(const int32_t ret);
     239              : 
     240              :     void GetAicpuDataDumpInfoLoadV0(AicpuDataDumpInfoLoad &info);
     241              : 
     242              :     void GetAicpuDataDumpInfoLoadV1(AicpuDataDumpInfoLoad &info);
     243              : 
     244              :     int32_t AicpuDataDumpLoadResponseToTsV1(const int32_t ret);
     245              : 
     246              :     int32_t AicpuDataDumpLoadResponseToTsV0(const int32_t ret);
     247              : 
     248              :     void GetAicpuTaskReportInfoV0(AicpuTaskReportInfo &info);
     249              : 
     250              :     void GetAicpuTaskReportInfoV1(AicpuTaskReportInfo &info);
     251              : 
     252              :     int32_t ErrorMsgResponseToTsV0(ErrMsgRspInfo &rspInfo);
     253              : 
     254              :     int32_t ErrorMsgResponseToTsV1(ErrMsgRspInfo &rspInfo);
     255              : 
     256              :     int32_t AicpuTimeOutConfigResponseToTsV0(const int32_t ret);
     257              : 
     258              :     int32_t AicpuTimeOutConfigResponseToTsV1(const int32_t ret);
     259              : 
     260              :     void GetAicpuInfoLoadV0(AicpuInfoLoad &info);
     261              : 
     262              :     void GetAicpuInfoLoadV1(AicpuInfoLoad &info);
     263              : 
     264              :     int32_t AicpuInfoLoadResponseToTsV0(const int32_t ret);
     265              : 
     266              :     int32_t AicpuInfoLoadResponseToTsV1(const int32_t ret);
     267              : 
     268              :     int32_t AicpuRecordResponseToTsV0(AicpuRecordInfo &info);
     269              : 
     270              :     int32_t AicpuRecordResponseToTsV1(AicpuRecordInfo &info);
     271              : 
     272              :     void AicpuActiveStreamSetMsgV0(ActiveStreamInfo &info);
     273              : 
     274              :     void AicpuActiveStreamSetMsgV1(ActiveStreamInfo &info);
     275              : 
     276              :     int32_t ResponseToTs(TsAicpuSqe &aicpuSqe, unsigned int handleId, unsigned int devId, unsigned int tsId) const;
     277              : 
     278              :     int32_t ResponseToTs(
     279              :         TsAicpuMsgInfo &aicpuMsgInfo, unsigned int handleId, unsigned int devId, unsigned int tsId) const;
     280              : 
     281              :     int32_t ResponseToTs(hwts_response_t &hwtsResp, uint32_t devId, EVENT_ID eventId, uint32_t subeventId) const;
     282              : 
     283              :     using getModelOperateInfoFunc = void (AicpuSqeAdapter::*)(AicpuModelOperateInfo &);
     284              : 
     285              :     using getRspFunc = int32_t (AicpuSqeAdapter::*)(const int32_t);
     286              : 
     287              :     using getModelOperateRspFunc = int32_t (AicpuSqeAdapter::*)(const int32_t, const uint32_t);
     288              : 
     289              :     std::map<uint16_t, getModelOperateInfoFunc> getModelOperateInfoFuncMap_;
     290              : 
     291              :     std::map<uint16_t, getModelOperateRspFunc> getModelOperateRspFuncMap_;
     292              : 
     293              :     using getDataDumpInfoFunc = void (AicpuSqeAdapter::*)(AicpuDataDumpInfo &);
     294              : 
     295              :     std::map<uint16_t, getDataDumpInfoFunc> getDataDumpInfoFuncMap_;
     296              : 
     297              :     std::map<uint16_t, getRspFunc> getDataDumpRspFuncMap_;
     298              : 
     299              :     using getDataDumpLoadInfoFunc = void (AicpuSqeAdapter::*)(AicpuDataDumpInfoLoad &);
     300              : 
     301              :     std::map<uint16_t, getDataDumpLoadInfoFunc> getDataDumpLoadInfoFuncMap_;
     302              : 
     303              :     std::map<uint16_t, getRspFunc> getDataDumpLoadRspFuncMap_;
     304              : 
     305              :     using getTaskReportInfoFunc = void (AicpuSqeAdapter::*)(AicpuTaskReportInfo &);
     306              : 
     307              :     using getErrorMsgRspFunc = int32_t (AicpuSqeAdapter::*)(ErrMsgRspInfo &);
     308              : 
     309              :     std::map<uint16_t, getTaskReportInfoFunc> getTaskReportInfoFuncMap_;
     310              : 
     311              :     std::map<uint16_t, getErrorMsgRspFunc> getErrorMsgRspFuncMap_;
     312              : 
     313              :     std::map<uint16_t, getRspFunc> getTimeOutConfigRspFuncMap_;
     314              : 
     315              :     using getLoadInfoFunc = void (AicpuSqeAdapter::*)(AicpuInfoLoad &);
     316              : 
     317              :     std::map<uint16_t, getLoadInfoFunc> getLoadInfoFuncMap_;
     318              : 
     319              :     std::map<uint16_t, getRspFunc> getInfoLoadRspFuncMap_;
     320              : 
     321              :     using getDumpTaskInfoFunc = void (AicpuSqeAdapter::*)(AicpuOpMappingDumpTaskInfo &, AicpuDumpTaskInfo &);
     322              : 
     323              :     std::map<uint16_t, getDumpTaskInfoFunc> getDumpTaskInfoFuncMap_;
     324              : 
     325              :     using getRecordRspFunc = int32_t (AicpuSqeAdapter::*)(AicpuRecordInfo &);
     326              : 
     327              :     std::map<uint16_t, getRecordRspFunc> getRecordRspFuncMap_;
     328              : 
     329              :     using activeStreamSetMsgFunc = void (AicpuSqeAdapter::*)(ActiveStreamInfo &);
     330              : 
     331              :     std::map<uint16_t, activeStreamSetMsgFunc> activeStreamSetMsgFuncMap_;
     332              : 
     333              :     using getAicErrReportInfoFunc = void (AicpuSqeAdapter::*)(AicErrReportInfo &);
     334              : 
     335              :     std::map<uint16_t, getAicErrReportInfoFunc> getAicErrReportInfoFuncMap_;
     336              : 
     337              :     uint32_t pid_ = 0U;
     338              : 
     339              :     uint8_t cmd_type_ = 0U;
     340              : 
     341              :     uint8_t vf_id_ = 0U;
     342              : 
     343              :     uint8_t tid_ = 0U;
     344              : 
     345              :     uint8_t ts_id_ = 0U;
     346              : 
     347              :     TsAicpuSqe sqe_ = { };
     348              : 
     349              :     TsAicpuMsgInfo msg_Info_ = { };
     350              : 
     351              :     uint16_t version_ = 0U;
     352              : 
     353              :     bool invalid_msg_info_ = false;
     354              : 
     355              :     bool invalid_sqe_ = false;
     356              : };
     357              : 
     358              : }  // namespace AicpuSchedule
     359              : #endif
        

Generated by: LCOV version 2.0-1