* This file is part of the MindStudio project.
* Copyright (c) 2025 Huawei Technologies Co.,Ltd.
*
* MindStudio is licensed under Mulan PSL v2.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
*
* http://license.coscl.org.cn/MulanPSL2
*
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
* -------------------------------------------------------------------------
*/
#ifndef DRIVER_PROF_API_H
#define DRIVER_PROF_API_H
#include <cstdint>
#include "vallina_symbol.h"
namespace MemScope {
constexpr uint64_t MAX_BUFFER_SIZE = 1024 * 1024 * 2;
constexpr uint32_t SECTONSEC = 1000000000UL;
constexpr uint32_t MSTONS = 1000000;
typedef enum ProfChannelType {
PROF_CHANNEL_TYPE_TS,
PROF_CHANNEL_TYPE_PERIPHERAL,
PROF_CHANNEL_TYPE_MAX,
} PROF_CHANNEL_TYPE;
typedef struct TagStarsSocLogConfig {
uint32_t acsq_task;
uint32_t acc_pmu;
uint32_t cdqm_reg;
uint32_t dvpp_vpc_block;
uint32_t dvpp_jpegd_block;
uint32_t dvpp_jpede_block;
uint32_t ffts_thread_task;
uint32_t ffts_block;
uint32_t sdma_dmu;
} StarsSocLogConfigT;
typedef enum TAG_TS_PROFILE_COMMAND_TYPE {
TS_PROFILE_COMMAND_TYPE_ACK = 0,
TS_PROFILE_COMMAND_TYPE_PROFILING_ENABLE = 1,
TS_PROFILE_COMMAND_TYPE_PROFILING_DISABLE = 2,
TS_PROFILE_COMMAND_TYPE_BUFFERFULL = 3,
TS_PROFILE_COMMAND_TASK_BASE_ENABLE = 4,
TS_PROFILE_COMMAND_TASK_BASE_DISENABLE = 5,
TS_PROFILE_COMMAND_TS_FW_ENABLE = 6,
TS_PROFILE_COMMAND_TS_FW_DISENABLE = 7,
} TS_PROFILE_COMMAND_TYPE_T;
typedef struct ProfStartPara {
PROF_CHANNEL_TYPE channelType;
unsigned int samplePeriod;
unsigned int realTime;
void *userData;
unsigned int userDataSize;
} ProfStartParaT;
enum AI_DRV_CHANNEL {
PROF_CHANNEL_UNKNOWN = 0,
PROF_CHANNEL_TS_FW = 44,
PROF_CHANNEL_STARS_SOC_LOG = 50,
PROF_CHANNEL_MAX = 160,
};
struct StarsSocLog {
uint32_t funcType : 6;
uint32_t cnt : 4;
uint32_t sqeType : 6;
uint32_t magic : 16;
uint32_t streamId : 16;
uint32_t taskId : 16;
uint32_t sysCntL : 32;
uint32_t sysCntH : 32;
uint32_t res0 : 16;
uint32_t accId : 6;
uint32_t acsqId : 10;
uint32_t res1[11];
};
struct DevTimeInfo {
uint64_t freq;
uint64_t startRealTime;
uint64_t startSysCnt;
};
enum class PlatformType {
CHIP_910B = 5,
CHIP_310B = 7,
END_TYPE
};
typedef enum {
DRV_INFO_TYPE_ENV = 0,
DRV_INFO_TYPE_VERSION,
DRV_INFO_TYPE_MASTERID,
DRV_INFO_TYPE_CORE_NUM,
DRV_INFO_TYPE_FREQUE,
DRV_INFO_TYPE_OS_SCHED,
DRV_INFO_TYPE_IN_USED,
DRV_INFO_TYPE_ERROR_MAP,
DRV_INFO_TYPE_OCCUPY,
DRV_INFO_TYPE_ID,
DRV_INFO_TYPE_IP,
DRV_INFO_TYPE_ENDIAN,
DRV_INFO_TYPE_P2P_CAPABILITY,
DRV_INFO_TYPE_SYS_COUNT,
DRV_INFO_TYPE_MONOTONIC_RAW,
DRV_INFO_TYPE_CORE_NUM_LEVEL,
DRV_INFO_TYPE_FREQUE_LEVEL,
DRV_INFO_TYPE_FFTS_TYPE,
DRV_INFO_TYPE_PHY_CHIP_ID,
DRV_INFO_TYPE_PHY_DIE_ID,
DRV_INFO_TYPE_PF_CORE_NUM,
DRV_INFO_TYPE_PF_OCCUPY,
DRV_INFO_TYPE_WORK_MODE,
DRV_INFO_TYPE_UTILIZATION,
DRV_INFO_TYPE_HOST_OSC_FREQUE,
DRV_INFO_TYPE_DEV_OSC_FREQUE,
DRV_INFO_TYPE_SDID,
DRV_INFO_TYPE_SERVER_ID,
DRV_INFO_TYPE_SCALE_TYPE,
DRV_INFO_TYPE_SUPER_POD_ID,
DRV_INFO_TYPE_ADDR_MODE,
DRV_INFO_TYPE_RUN_MACH,
DRV_INFO_TYPE_CURRENT_FREQ,
DRV_INFO_TYPE_CONFIG,
} DrvInfoType;
typedef enum {
DRV_MODULE_TYPE_SYSTEM = 0,
DRV_MODULE_TYPE_AICPU,
DRV_MODULE_TYPE_CCPU,
DRV_MODULE_TYPE_DCPU,
DRV_MODULE_TYPE_AICORE,
DRV_MODULE_TYPE_TSCPU,
DRV_MODULE_TYPE_PCIE,
DRV_MODULE_TYPE_VECTOR_CORE,
DRV_MODULE_TYPE_HOST_AICPU,
DRV_MODULE_TYPE_QOS,
DRV_MODULE_TYPE_COMPUTING = 0x8000,
} DrvModuleType;
enum StarsFuncType {
STARS_FUNC_TYPE_BEGIN = 0,
STARS_FUNC_TYPE_END = 1,
};
void StartDriverKernelInfoTrace(int32_t devId);
void EndDriverKernelInfoTrace();
uint64_t GetRealTimeFromSysCnt(uint32_t deviceId, uint64_t sysCnt);
}
#endif