|
|
|
/**
|
|
|
|
* Copyright 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.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef __CCE_RUNTIME_STREAM_H__
|
|
|
|
#define __CCE_RUNTIME_STREAM_H__
|
|
|
|
|
|
|
|
#include "base.h"
|
|
|
|
#include "event.h"
|
|
|
|
|
|
|
|
#if defined(__cplusplus) && !defined(COMPILE_OMG_PACKAGE)
|
|
|
|
extern "C" {
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup stream_flags
|
|
|
|
* @brief stream op bit flags
|
|
|
|
*/
|
|
|
|
#define RT_STREAM_DEFAULT (0x00)
|
|
|
|
#define RT_STREAM_PERSISTENT (0x01)
|
|
|
|
#define RT_STREAM_FORCE_COPY (0x02)
|
|
|
|
#define RT_STREAM_HUGE (0x04)
|
|
|
|
#define RT_STREAM_AICPU (0x08)
|
|
|
|
#define RT_STREAM_FORBIDDEN_DEFAULT (0x10)
|
|
|
|
#define RT_STREAM_HEAD (0x20)
|
|
|
|
#define RT_STREAM_PRIMARY_DEFAULT (0x40)
|
|
|
|
#define RT_STREAM_PRIMARY_FIRST_DEFAULT (0x80)
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup stream_type
|
|
|
|
* @brief stream type
|
|
|
|
*/
|
|
|
|
#define RT_NORMAL_STREAM (0x00)
|
|
|
|
#define RT_HUGE_STREAM (0x01)
|
|
|
|
|
|
|
|
/**
|
|
|
|
* priority level default value when create a stream
|
|
|
|
*/
|
|
|
|
#define RT_STREAM_PRIORITY_DEFAULT (0)
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief create stream instance
|
|
|
|
* @param [in|out] stream created stream
|
|
|
|
* @param [in] priority stream priority
|
|
|
|
* @return RT_ERROR_NONE for ok
|
|
|
|
* @return RT_ERROR_INVALID_VALUE for error input
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtStreamCreate(rtStream_t *stream, int32_t priority);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief create stream instance
|
|
|
|
* @param [in|out] stream created stream
|
|
|
|
* @param [in] priority stream priority
|
|
|
|
* @param [in] flags stream op flags
|
|
|
|
* @return RT_ERROR_NONE for ok
|
|
|
|
* @return RT_ERROR_INVALID_VALUE for error input
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtStreamCreateWithFlags(rtStream_t *stream, int32_t priority, uint32_t flags);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief destroy stream instance.
|
|
|
|
* @param [in] stream the stream to destroy
|
|
|
|
* @return RT_ERROR_NONE for ok
|
|
|
|
* @return RT_ERROR_INVALID_VALUE for error input
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtStreamDestroy(rtStream_t stream);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief wait an recorded event for stream
|
|
|
|
* @param [in] stream the wait stream
|
|
|
|
* @param [in] event the event to wait
|
|
|
|
* @return RT_ERROR_NONE for ok
|
|
|
|
* @return RT_ERROR_INVALID_VALUE for error input
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtStreamWaitEvent(rtStream_t stream, rtEvent_t event);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief wait stream to be complete
|
|
|
|
* @param [in] stream stream to wait
|
|
|
|
* @return RT_ERROR_NONE for ok
|
|
|
|
* @return RT_ERROR_INVALID_VALUE for error input
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtStreamSynchronize(rtStream_t stream);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief queries an asynchronous stream for completion status
|
|
|
|
* @param [in] stream stream to query
|
|
|
|
* @return RT_ERROR_NONE for complete
|
|
|
|
* @return RT_ERROR_STREAM_NOT_COMPLETE for not complete
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtStreamQuery(rtStream_t stream);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief get stream id from a stream handle
|
|
|
|
* @param [in] stream stream hadle
|
|
|
|
* @param [in] streamId stream id
|
|
|
|
* @return RT_ERROR_NONE for complete
|
|
|
|
* @return RT_ERROR_INVALID_VALUE for error input
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtGetStreamId(rtStream_t stream, int32_t *streamId);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief inquire max stream count and max task count per stream
|
|
|
|
* @param [in] streamType Stream Type
|
|
|
|
* @param [in] MaxStrCount Max stream count
|
|
|
|
* @param [in] MaxTaskCount max task count per stream
|
|
|
|
* @return RT_ERROR_NONE for complete
|
|
|
|
* @return RT_ERROR_INVALID_VALUE for error input
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtGetMaxStreamAndTask(uint32_t streamType, uint32_t *maxStrCount, uint32_t *maxTaskCount);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief Name a stream
|
|
|
|
* @param [in] stream stream to be named
|
|
|
|
* @param [in] name identification name
|
|
|
|
* @return RT_ERROR_NONE for complete
|
|
|
|
* @return RT_ERROR_INVALID_VALUE for error input
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtNameStream(rtStream_t stream, const char *name);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief switch to the corresponding stream according to the contents of the ptr
|
|
|
|
* @param [in] ptr Determine the address where the value of the true and false branches is located
|
|
|
|
* @param [in] condition switch condition
|
|
|
|
* @param [in] value switch value
|
|
|
|
* @param [in] trueStream Stream that needs to be activated when the value is non-zero
|
|
|
|
* @param [in] stream input stream to init task
|
|
|
|
* @return RT_ERROR_NONE for complete
|
|
|
|
* @return RT_ERROR_INVALID_VALUE for error input
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtStreamSwitch(void *ptr, rtCondition_t condition, int64_t value, rtStream_t trueStream,
|
|
|
|
rtStream_t stream);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief execute extensible stream switch task
|
|
|
|
* @param [in] ptr pointer of value
|
|
|
|
* @param [in] condition judge condition
|
|
|
|
* @param [in] value_ptr pointer of target value
|
|
|
|
* @param [in] true_stream stream to be activated when value is not zero
|
|
|
|
* @param [in] stream stream id
|
|
|
|
* @param [in] dataType data type of target value
|
|
|
|
* @return RT_ERROR_NONE for complete
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtStreamSwitchEx(void *ptr, rtCondition_t condition, void *valuePtr, rtStream_t trueStream,
|
|
|
|
rtStream_t stream, rtSwitchDataType_t dataType);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @ingroup dvrt_stream
|
|
|
|
* @brief Active a stream
|
|
|
|
* @param [in] activeStream stream to be activated
|
|
|
|
* @param [in] stream input stream to init task
|
|
|
|
* @return RT_ERROR_NONE for complete
|
|
|
|
* @return RT_ERROR_INVALID_VALUE for error input
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtStreamActive(rtStream_t activeStream, rtStream_t stream);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @brief execute extensible stream case switch task
|
|
|
|
* @param [in] ptr pointer of value
|
|
|
|
* @param [in] size pointer num of value
|
|
|
|
* @param [in] valuePtr pointer of target value, length = size * elementSize
|
|
|
|
* @param [in] trueStreamPtr streams to be activated
|
|
|
|
* @param [in] elementSize size of to be activated true streams
|
|
|
|
* @param [in] stream input stream to init task
|
|
|
|
* @param [in] dataType data type of target value
|
|
|
|
* @return RT_ERROR_NONE for complete
|
|
|
|
*/
|
|
|
|
RTS_API rtError_t rtStreamSwitchN(void *ptr, uint32_t size, void *valuePtr, rtStream_t *trueStreamPtr,
|
|
|
|
uint32_t elementSize, rtStream_t stream, rtSwitchDataType_t dataType);
|
|
|
|
#if defined(__cplusplus) && !defined(COMPILE_OMG_PACKAGE)
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif // __CCE_RUNTIME_STREAM_H__
|