* 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 __RUNTIME_ORIGIN_H__
#define __RUNTIME_ORIGIN_H__
#include <string>
#include <iostream>
#include "runtime.h"
#include "core/FunctionLoader.h"
void RuntimeOriginCtor();
RTS_API rtError_t rtFreeOrigin(void *devPtr);
RTS_API rtError_t rtMallocOrigin(void **devPtr, uint64_t size, rtMemType_t type, const uint16_t moduleId);
RTS_API rtError_t rtMemsetOrigin(void *devPtr, uint64_t destMax, uint32_t val, uint64_t cnt);
RTS_API rtError_t rtMemcpyOrigin(void *dst, uint64_t destMax, const void *src, uint64_t cnt, rtMemcpyKind_t kind);
RTS_API rtError_t rtMemcpyAsyncOrigin(void *dst, uint64_t destMax, const void *src, uint64_t cnt,
rtMemcpyKind_t kind, rtStream_t stm);
RTS_API rtError_t rtRegisterAllKernelOrigin(const rtDevBinary_t *bin, void **hdl);
RTS_API rtError_t rtDevBinaryRegisterOrigin(const rtDevBinary_t *bin, void **hdl);
RTS_API rtError_t rtDevBinaryUnRegisterOrigin(void *hdl);
RTS_API rtError_t rtFunctionRegisterOrigin(void *binHandle, const void *stubFunc, const char *stubName,
const void *kernelInfoExt, uint32_t funcMode);
RTS_API rtError_t rtKernelLaunchWithHandleV2Origin(void *hdl, const uint64_t tilingKey, uint32_t blockDim,
rtArgsEx_t *argsInfo, rtSmDesc_t *smDesc, rtStream_t stm, const rtTaskCfgInfo_t *cfgInfo);
RTS_API rtError_t rtAicpuKernelLaunchExWithArgsOrigin(const uint32_t kernelType, const char *const opName,
const uint32_t blockDim, const rtAicpuArgsEx_t *argsInfo, rtSmDesc_t *const smDesc, const rtStream_t stm,
const uint32_t flags);
RTS_API rtError_t rtKernelLaunchOrigin(const void *stubFunc, uint32_t blockDim, void *args,
uint32_t argsSize, rtSmDesc_t *smDesc, rtStream_t stm);
RTS_API rtError_t rtKernelLaunchWithFlagV2Origin(const void *stubFunc, uint32_t blockDim, rtArgsEx_t *argsInfo,
rtSmDesc_t *smDesc, rtStream_t stm, uint32_t flags, const rtTaskCfgInfo_t *cfgInfo);
RTS_API rtError_t rtStreamSynchronizeOrigin(rtStream_t stm);
RTS_API rtError_t rtCtxGetCurrentDefaultStreamOrigin(rtStream_t *stm);
RTS_API rtError_t rtKernelGetAddrAndPrefCntOrigin(void *hdl, const uint64_t tilingKey, const void * const stubFunc,
const uint32_t flag, void **addr, uint32_t *prefetchCnt);
RTS_API rtError_t rtProfSetProSwitchOrigin(void *data, uint32_t len);
RTS_API rtError_t rtGetSocVersionOrigin(char *ver, const uint32_t maxLen);
RTS_API rtError_t rtGetVisibleDeviceIdByLogicDeviceIdOrigin(const int32_t logicDeviceId,
int32_t *const visibleDeviceId);
RTS_API rtError_t rtStreamCreateOrigin(rtStream_t *stream, int32_t priority);
RTS_API rtError_t rtStreamDestroyOrigin(rtStream_t stream);
RTS_API rtError_t rtGetC2cCtrlAddrOrigin(uint64_t *addr, uint32_t *fftsLen);
RTS_API rtError_t rtMallocHostOrigin(void **hostPtr, uint64_t size, const uint16_t moduleId);
RTS_API rtError_t rtFreeHostOrigin(void *hostPtr);
RTS_API rtError_t rtStreamSynchronizeWithTimeoutOrigin(rtStream_t stream, int32_t timeout);
RTS_API rtError_t rtDeviceStatusQueryOrigin(const uint32_t devId, rtDeviceStatus *deviceStatus);
RTS_API rtError_t rtGetDeviceOrigin(int32_t* devId);
RTS_API rtError_t rtSetDeviceOrigin(int32_t devId);
RTS_API rtError_t rtCallbackLaunchOrigin(rtCallback_t callBackFunc, void *fnData, rtStream_t stm, bool isBlock);
RTS_API rtError_t rtSubscribeReportOrigin(uint64_t threadId, rtStream_t stm);
RTS_API rtError_t rtProcessReportOrigin(int32_t timeout);
RTS_API rtError_t rtUnSubscribeReportOrigin(uint64_t threadId, rtStream_t stm);
RTS_API rtError_t rtModelBindStreamOrigin(rtModel_t mdl, rtStream_t stm, uint32_t flag);
RTS_API rtError_t rtGetL2CacheOffsetOrigin(uint32_t deviceId, uint64_t *offset);
RTS_API rtError_t rtDeviceResetForceOrigin(int32_t devId);
RTS_API rtError_t rtDeviceSetLimitOrigin(int32_t devId, rtLimitType_t type, uint32_t val);
#endif