You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
graphengine/third_party/fwkacllib/inc/toolchain/prof_callback.h

136 lines
4.0 KiB

/**
* Copyright 2020-2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @file prof_callback.h
* @brief declaraion of profiling callbacks
*/
#ifndef MSPROFILER_PROF_CALLBACK_H_
#define MSPROFILER_PROF_CALLBACK_H_
#ifdef __cplusplus
extern "C" {
#endif // __cplusplus
#include "stddef.h"
#include "stdint.h"
/**
* @name MsprofErrorCode
* @brief error code
*/
enum MsprofErrorCode {
MSPROF_ERROR_NONE = 0,
MSPROF_ERROR_MEM_NOT_ENOUGH,
MSPROF_ERROR_GET_ENV,
MSPROF_ERROR_CONFIG_INVALID,
MSPROF_ERROR_ACL_JSON_OFF,
MSPROF_ERROR,
};
#define MSPROF_ENGINE_MAX_TAG_LEN (31)
/**
* @name ReporterData
* @brief struct of data to report
*/
struct ReporterData {
char tag[MSPROF_ENGINE_MAX_TAG_LEN + 1]; // the sub-type of the module, data with different tag will be writen
int deviceId; // the index of device
size_t dataLen; // the length of send data
unsigned char *data; // the data content
};
/**
* @name MsprofReporterModuleId
* @brief module id of data to report
*/
enum MsprofReporterModuleId {
MSPROF_MODULE_DATA_PREPROCESS = 0, // DATA_PREPROCESS
MSPROF_MODULE_HCCL, // HCCL
MSPROF_MODULE_ACL, // AclModule
MSPROF_MODULE_FRAMEWORK, // Framework
MSPROF_MODULE_RUNTIME // runtime
};
/**
* @name MsprofReporterCallbackType
* @brief reporter callback request type
*/
enum MsprofReporterCallbackType {
MSPROF_REPORTER_REPORT = 0, // report data
MSPROF_REPORTER_INIT, // init reporter
MSPROF_REPORTER_UNINIT, // uninit reporter
};
/**
* @name MsprofReporterCallback
* @brief callback to start reporter/stop reporter/report date
* @param moduleId [IN] enum MsprofReporterModuleId
* @param type [IN] enum MsprofReporterCallbackType
* @param data [IN] callback data (nullptr on INTI/UNINIT)
* @param len [IN] callback data size (0 on INIT/UNINIT)
* @return enum MsprofErrorCode
*/
typedef int32_t (*MsprofReporterCallback)(uint32_t moduleId, uint32_t type, void *data, uint32_t len);
#define MSPROF_OPTIONS_DEF_LEN_MAX (2048)
/**
* @name MsprofGeOptions
* @brief struct of MSPROF_CTRL_INIT_GE_OPTIONS
*/
struct MsprofGeOptions {
char jobId[MSPROF_OPTIONS_DEF_LEN_MAX];
char options[MSPROF_OPTIONS_DEF_LEN_MAX];
};
/**
* @name MsprofCtrlCallbackType
* @brief ctrl callback request type
*/
enum MsprofCtrlCallbackType {
MSPROF_CTRL_INIT_ACL_ENV = 0, // start profiling with acl env
MSPROF_CTRL_INIT_ACL_JSON, // start profiling with acl.json
MSPROF_CTRL_INIT_GE_OPTIONS, // start profiling with ge env and options
MSPROF_CTRL_FINALIZE // stop profiling
};
/**
* @name MsprofCtrlCallback
* @brief callback to start/stop profiling
* @param type [IN] enum MsprofCtrlCallbackType
* @param data [IN] callback data
* @param len [IN] callback data size
* @return enum MsprofErrorCode
*/
typedef int32_t (*MsprofCtrlCallback)(uint32_t type, void *data, uint32_t len);
/**
* @name MsprofSetDeviceCallback
* @brief callback to notify set/reset device
* @param devId [IN] device id
* @param isOpenDevice [IN] true: set device, false: reset device
*/
typedef void (*MsprofSetDeviceCallback)(uint32_t devId, bool isOpenDevice);
#ifdef __cplusplus
}
#endif
#endif // MSPROFILER_PROF_CALLBACK_H_