Updating prebuilts and/or headers

14db918b92057564d64438c2b7d4b569ad859394 - nvscibuf.h
34c3d9f93fae7bc534aa27ef5316a4e0ce354647 - nvsciipc.cfg
2a4d0df309b74b2cae0a0271329ec8b9613624f7 - nvscistream_api.h
9a0cfbf8a7456e7494343e1a5a54b394a1d539fe - nvscisync.h
6b8809ed1b39dcb64c4da2f34ffee2aec10bb0b1 - nvscistream.h
f34deae53b24e77983e4b8db37589d9033c7d4de - nvscievent.h
85df23885e34c0b4d392915a5369f1f0d13f1576 - nvscistream_types.h
89deade79f6a8fa70403b1c2a5be68a12a86b711 - nvscierror.h
4cb4315ec986dee85722642476cd157a46bc88a4 - nvsciipc.h

Change-Id: I90715b37bac5de8d4bb6c249898d92cabd261243
This commit is contained in:
svcmobrel-release
2025-08-25 10:24:30 -07:00
parent 7c6da0aae1
commit cca59bc829
12 changed files with 18354 additions and 0 deletions

11
commitFile.txt Normal file
View File

@@ -0,0 +1,11 @@
Updating prebuilts and/or headers
14db918b92057564d64438c2b7d4b569ad859394 - nvscibuf.h
34c3d9f93fae7bc534aa27ef5316a4e0ce354647 - nvsciipc.cfg
2a4d0df309b74b2cae0a0271329ec8b9613624f7 - nvscistream_api.h
9a0cfbf8a7456e7494343e1a5a54b394a1d539fe - nvscisync.h
6b8809ed1b39dcb64c4da2f34ffee2aec10bb0b1 - nvscistream.h
f34deae53b24e77983e4b8db37589d9033c7d4de - nvscievent.h
85df23885e34c0b4d392915a5369f1f0d13f1576 - nvscistream_types.h
89deade79f6a8fa70403b1c2a5be68a12a86b711 - nvscierror.h
4cb4315ec986dee85722642476cd157a46bc88a4 - nvsciipc.h

15
nvsci_headers_README.txt Normal file
View File

@@ -0,0 +1,15 @@
#
# SPDX-FileCopyrightText: Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: LicenseRef-NvidiaProprietary
#
# NVIDIA CORPORATION, its affiliates and licensors retain all intellectual
# property and proprietary rights in and to this material, related
# documentation and any modifications thereto. Any use, reproduction,
# disclosure or distribution of this material and related documentation
# without an express license agreement from NVIDIA CORPORATION or
# its affiliates is strictly prohibited.
* nvsci_headers.tbz2 contains NvSci headers and a sample nvsciipc.cfg.
* nvsciipc.cfg has to be put in /etc/.
Use the below command to copy the file to /etc directory:
$sudo cp ./nvsciipc.cfg /etc/nvsciipc.cfg

6321
nvscibuf.h Normal file
View File

File diff suppressed because it is too large Load Diff

294
nvscierror.h Normal file
View File

@@ -0,0 +1,294 @@
/*
* Copyright (c) 2019-2023, NVIDIA CORPORATION. All rights reserved.
*
* NVIDIA Corporation and its licensors retain all intellectual property
* and proprietary rights in and to this software, related documentation
* and any modifications thereto. Any use, reproduction, disclosure or
* distribution of this software and related documentation without an express
* license agreement from NVIDIA Corporation is strictly prohibited.
*/
/**
* @file
*
* <b> NVIDIA Software Communications Interface (SCI): Error Handling </b>
*
* @b Description: This file declares error codes for NvSci APIs.
*/
#ifndef INCLUDED_NVSCI_ERROR_H
#define INCLUDED_NVSCI_ERROR_H
#ifdef __cplusplus
extern "C" {
#endif
/**
* @defgroup NvSciError SCI Error Handling
*
* Contains error code enumeration and helper macros.
*
* @ingroup nvsci_top
* @{
*/
/**
* @brief Return/error codes for all NvSci functions.
*
* This enumeration contains unique return/error codes to identify the
* source of a failure. Some errors have direct correspondence to standard
* errno.h codes, indicated [IN BRACKETS], and may result from failures in
* lower level system calls. Others indicate failures specific to misuse
* of NvSci library function.
*
*/
typedef enum {
/* Range 0x00000000 - 0x00FFFFFF : Common errors
* This range is used for errors common to all NvSci libraries. */
/** [EOK] No error */
NvSciError_Success = 0x00000000,
/** Unidentified error with no additional info */
NvSciError_Unknown = 0x00000001,
/* Generic errors */
/** [ENOSYS] Feature is not implemented */
NvSciError_NotImplemented = 0x00000010,
/** [ENOTSUP] Feature is not supported */
NvSciError_NotSupported = 0x00000011,
/** [EACCES] Access to resource denied */
NvSciError_AccessDenied = 0x00000020,
/** [EPERM] No permission to perform operation */
NvSciError_NotPermitted = 0x00000021,
/** Resource is in wrong state to perform operation */
NvSciError_InvalidState = 0x00000022,
/** Requested operation is not legal */
NvSciError_InvalidOperation = 0x00000023,
/** Required resource is not initialized */
NvSciError_NotInitialized = 0x00000024,
/** Requested resource is already in use */
NvSciError_AlreadyInUse = 0x00000025,
/** Operation has already been performed */
NvSciError_AlreadyDone = 0x00000026,
/** Resource/information not yet available */
NvSciError_NotYetAvailable = 0x00000027,
/** Resource/information no longer available */
NvSciError_NoLongerAvailable = 0x00000028,
/** [ENOMEM] Not enough memory */
NvSciError_InsufficientMemory = 0x00000030,
/** Not enough (non-memory) resources */
NvSciError_InsufficientResource = 0x00000031,
/** Resource failed */
NvSciError_ResourceError = 0x00000032,
/* Function parameter errors */
/** [EINVAL] Invalid parameter value */
NvSciError_BadParameter = 0x00000100,
/** [EFAULT] Invalid address */
NvSciError_BadAddress = 0x00000101,
/** [E2BIG] Parameter list too long */
NvSciError_TooBig = 0x00000102,
/** [EOVERFLOW] Value too large for data type */
NvSciError_Overflow = 0x00000103,
/** Parameters are inconsistent with each other or prior settings */
NvSciError_InconsistentData = 0x00000104,
/** Parameters or prior settings are insufficient */
NvSciError_InsufficientData = 0x00000105,
/** An index is not in the allowed range */
NvSciError_IndexOutOfRange = 0x00000106,
/** A value is not in the allowed range */
NvSciError_ValueOutOfRange = 0x00000107,
/** An object is successfully revalidated */
NvSciError_Revalidation_Success = 0x00000108,
/* Timing/temporary errors */
/** [ETIMEDOUT] Operation timed out*/
NvSciError_Timeout = 0x00000200,
/** [EAGAIN] Resource unavailable. Try again. */
NvSciError_TryItAgain = 0x00000201,
/** [EBUSY] Resource is busy */
NvSciError_Busy = 0x00000202,
/** [EINTR] An interrupt ocurred */
NvSciError_InterruptedCall = 0x00000203,
/* Device errors */
/** [ENODEV] No such device */
NvSciError_NoSuchDevice = 0x00001000,
/** [ENOSPC] No space left on device */
NvSciError_NoSpace = 0x00001001,
/** [ENXIO] No such device or address */
NvSciError_NoSuchDevAddr = 0x00001002,
/** [EIO] Input/output error */
NvSciError_IO = 0x00001003,
/** [ENOTTY] Inappropriate I/O control operation */
NvSciError_InvalidIoctlNum = 0x00001004,
/* File system errors */
/** [ENOENT] No such file or directory*/
NvSciError_NoSuchEntry = 0x00001100,
/** [EBADF] Bad file descriptor */
NvSciError_BadFileDesc = 0x00001101,
/** [EBADFSYS] Corrupted file system detected */
NvSciError_CorruptedFileSys = 0x00001102,
/** [EEXIST] File already exists */
NvSciError_FileExists = 0x00001103,
/** [EISDIR] File is a directory */
NvSciError_IsDirectory = 0x00001104,
/** [EROFS] Read-only file system */
NvSciError_ReadOnlyFileSys = 0x00001105,
/** [ETXTBSY] Text file is busy */
NvSciError_TextFileBusy = 0x00001106,
/** [ENAMETOOLONG] File name is too long */
NvSciError_FileNameTooLong = 0x00001107,
/** [EFBIG] File is too large */
NvSciError_FileTooBig = 0x00001108,
/** [ELOOP] Too many levels of symbolic links */
NvSciError_TooManySymbolLinks = 0x00001109,
/** [EMFILE] Too many open files in process*/
NvSciError_TooManyOpenFiles = 0x0000110A,
/** [ENFILE] Too many open files in system */
NvSciError_FileTableOverflow = 0x0000110B,
/** End of file reached */
NvSciError_EndOfFile = 0x0000110C,
/* Communication errors */
/** [ECONNRESET] Connection was closed or lost */
NvSciError_ConnectionReset = 0x00001200,
/** [EALREADY] Pending connection is already in progress */
NvSciError_AlreadyInProgress = 0x00001201,
/** [ENODATA] No message data available */
NvSciError_NoData = 0x00001202,
/** [ENOMSG] No message of the desired type available*/
NvSciError_NoDesiredMessage = 0x00001203,
/** [EMSGSIZE] Message is too large */
NvSciError_MessageSize = 0x00001204,
/** [ENOREMOTE] Remote node doesn't exist */
NvSciError_NoRemote = 0x00001205,
/* Process/thread errors */
/** [ESRCH] No such process */
NvSciError_NoSuchProcess = 0x00002000,
/* Mutex errors */
/** [ENOTRECOVERABLE] Mutex damaged by previous owner's death */
NvSciError_MutexNotRecoverable = 0x00002100,
/** [EOWNERDEAD] Previous owner died while holding mutex */
NvSciError_LockOwnerDead = 0x00002101,
/** [EDEADLK] Taking ownership would cause deadlock */
NvSciError_ResourceDeadlock = 0x00002102,
/* NvSci attribute list errors */
/** Could not reconcile attributes */
NvSciError_ReconciliationFailed = 0x00010100,
/** Could not validate attributes */
NvSciError_AttrListValidationFailed = 0x00010101,
/** Object validation has errors */
NvSciError_ObjValidationFailed = 0x00010102,
/** End of range for common error codes */
NvSciError_CommonEnd = 0x00FFFFFF,
/* Range 0x01000000 - 0x01FFFFFF : NvSciBuf errors */
/** Unidentified NvSciBuf error with no additional info */
NvSciError_NvSciBufUnknown = 0x01000000,
/** End of range for NvSciBuf errors */
NvSciError_NvSciBufEnd = 0x01FFFFFF,
/* Range 0x02000000 - 0x02FFFFFF : NvSciSync errors */
/** Unidentified NvSciSync error with no additional info */
NvSciError_NvSciSyncUnknown = 0x02000000,
/** Unsupported configuration */
NvSciError_UnsupportedConfig = 0x02000001,
/** Provided fence is cleared */
NvSciError_ClearedFence = 0x02000002,
/* End of range for NvScSync errors */
NvSciError_NvSciSyncEnd = 0x02FFFFFF,
/* Range 0x03000000 - 0x03FFFFFF : NvSciStream errors */
/** Unidentified NvSciStream error with no additional info */
NvSciError_NvSciStreamUnknown = 0x03000000,
/** Internal stream resource failure occurred */
NvSciError_StreamInternalError = 0x03000001,
/** Unrecognized block handle */
NvSciError_StreamBadBlock = 0x03000100,
/** Unrecognized packet handle */
NvSciError_StreamBadPacket = 0x03000101,
/** Invalid packet cookie value */
NvSciError_StreamBadCookie = 0x03000102,
/** Operation requires stream be fully connected */
NvSciError_StreamNotConnected = 0x03000200,
/** Operation can only be performed in setup phase */
NvSciError_StreamNotSetupPhase = 0x03000201,
/** Operation can only be performed in safety phase */
NvSciError_StreamNotSafetyPhase = 0x03000202,
/** No stream packet available */
NvSciError_NoStreamPacket = 0x03001000,
/** Referenced packet's current location does not allow this operation */
NvSciError_StreamPacketInaccessible = 0x03001001,
/** Internal error due to operation on deleted packet */
NvSciError_StreamPacketDeleted = 0x03001002,
/** Queried info not exist */
NvSciError_StreamInfoNotProvided = 0x03003000,
/**
* These stream errors represent failures detected from lower level
* system components. They generally are not due to any user error,
* but might be caused by the system running out of resources.
*/
/** Failed to acquire lock on mutex used to ensure thread safety */
NvSciError_StreamLockFailed = 0x03400000,
/**
* These stream errors represent internal failures which should never
* be possible in a production system. They exist only for internal
* unit testing.
*/
/** Invalid input index was passed to a block. */
NvSciError_StreamBadSrcIndex = 0x03800000,
/** Invalid output index was passed to a block. */
NvSciError_StreamBadDstIndex = 0x03800001,
/** End of range for NvSciStream errors */
NvSciError_NvSciStreamEnd = 0x03FFFFFF,
/* Range 0x04000000 - 0x04FFFFFF : NvSciIpc errors */
/** Unidentified NvSciIpc error with no additional info */
NvSciError_NvSciIpcUnknown = 0x04000000,
/** Indicates there is uncorrectable fatal error during PCIE operation. */
NvSciError_PcieUncorrectableFatal = 0x04000001,
/** Indicates there is uncorrectable non fatal error during PCIE operation. */
NvSciError_PcieUncorrectableNonFatal= 0x04000002,
/** Indicates there is eDMA error during PCIE operation. */
NvSciError_PcieEdmaTransferErr = 0x04000003,
/** Indicates there is validation error. */
NvSciError_PcieValidationError = 0x04000004,
/** End of range for NvSciIpc errors */
NvSciError_NvSciIpcEnd = 0x04FFFFFF,
/* Range 0x05000000 - 0x05FFFFFF : NvSciEvent errors */
/** Unidentified NvSciEvent error with no additional info */
NvSciError_NvSciEventUnknown = 0x05000000,
/** End of range for NvSciEvent errors */
NvSciError_NvSciEventEnd = 0x05FFFFFF,
} NvSciError;
/**
* @}
*/
#ifdef __cplusplus
}
#endif
#endif /* INCLUDED_NVSCI_ERROR_H */

1087
nvscievent.h Normal file
View File

File diff suppressed because it is too large Load Diff

83
nvsciipc.cfg Normal file
View File

@@ -0,0 +1,83 @@
#
# Copyright (c) 2019-2022, NVIDIA CORPORATION. All rights reserved.
#
# Format of NvSciIpc Config file
#
# First column should specify the backend. All possible backend types
# are listed below:
# INTER_THREAD, INTER_PROCESS, INTER_VM, INTER_CHIP
#
# For INTER_THREAD/PROCESS backend type, format will be:
# <backend_type> <endpoint1_name> <endpoint2_name> <backend_info1> <backend_info2>
#
# For INTER_THREAD and INTER_PROCESS, two endpoints name should be different.
# You can use different suffix with basename for them. <backend_info1> denotes
# "number of frames" and <backend_info2> denotes "frame size"
#
# For INTER_VM/CHIP backend type, format will be:
# <backend_type> <endpoint_name> <backend_info1>
#
# For INTER_CHIP optional backend info is derive with below rule:
# <xfer_role><device_id>
# Both should be written as two digit decimal number.
# eg: device_id = 5, xfer_role = producer
# backend info: 0105
#
# For INTER_VM backend type, BACKEND_INFO1 denotes ivc queue number
#
# This is NvSciIpc CFG file for x86 machine, so only 3 backends are supported
# as of now : INTER_PROCESS, INTER_THREAD and INTER_CHIP
INTER_PROCESS ipc_test_0 ipc_test_1 64 1536
INTER_PROCESS ipc_test_a_0 ipc_test_a_1 64 1536
INTER_PROCESS ipc_test_b_0 ipc_test_b_1 64 1536
INTER_PROCESS ipc_test_c_0 ipc_test_c_1 64 1536
INTER_PROCESS ipc_latency_0 ipc_latency_1 1 64
INTER_THREAD itc_test_0 itc_test_1 64 1536
INTER_THREAD nvscistream_itc_0 nvscistream_itc_1 64 1536
INTER_THREAD nvscibuf_itc_0 nvscibuf_itc_1 64 1536
INTER_PROCESS nvscistream_0 nvscistream_1 16 24576
INTER_PROCESS nvscistream_2 nvscistream_3 16 24576
INTER_PROCESS nvscistream_4 nvscistream_5 16 24576
INTER_PROCESS nvscistream_6 nvscistream_7 16 24576
INTER_PROCESS nvscisync_a_0 nvscisync_a_1 16 24576
INTER_PROCESS nvscisync_b_0 nvscisync_b_1 16 24576
INTER_PROCESS nvscisync_c_0 nvscisync_c_1 16 24576
INTER_PROCESS nvscisync_d_0 nvscisync_d_1 16 24576
INTER_PROCESS nvscibuf_ipc_A_B nvscibuf_ipc_B_A 16 24576
INTER_PROCESS nvscibuf_ipc_B_C nvscibuf_ipc_C_B 16 24576
INTER_PROCESS nvscibuf_ipc_A_D nvscibuf_ipc_D_A 16 24576
INTER_PROCESS nvscibuf_ipc_B_E nvscibuf_ipc_E_B 16 24576
INTER_PROCESS nvmap_sciipc_1 nvmap_sciipc_2 16 24576
INTER_PROCESS nvmap_sciipc_3 nvmap_sciipc_4 16 24576
INTER_CHIP nvscic2c_pcie_s0_c5_1 0000
INTER_CHIP nvscic2c_pcie_s0_c5_2 0000
INTER_CHIP nvscic2c_pcie_s0_c5_3 0000
INTER_CHIP nvscic2c_pcie_s0_c5_4 0000
INTER_CHIP nvscic2c_pcie_s0_c5_5 0000
INTER_CHIP nvscic2c_pcie_s0_c5_6 0000
INTER_CHIP nvscic2c_pcie_s0_c5_7 0000
INTER_CHIP nvscic2c_pcie_s0_c5_8 0000
INTER_CHIP nvscic2c_pcie_s0_c5_9 0000
INTER_CHIP nvscic2c_pcie_s0_c5_10 0000
INTER_CHIP nvscic2c_pcie_s0_c5_11 0000
INTER_CHIP nvscic2c_pcie_s0_c6_1 0000
INTER_CHIP nvscic2c_pcie_s0_c6_2 0000
INTER_CHIP nvscic2c_pcie_s0_c6_3 0000
INTER_CHIP nvscic2c_pcie_s0_c6_4 0000
INTER_CHIP nvscic2c_pcie_s0_c6_5 0000
INTER_CHIP nvscic2c_pcie_s0_c6_6 0000
INTER_CHIP nvscic2c_pcie_s0_c6_7 0000
INTER_CHIP nvscic2c_pcie_s0_c6_8 0000
INTER_CHIP nvscic2c_pcie_s0_c6_9 0000
INTER_CHIP nvscic2c_pcie_s0_c6_10 0000
INTER_CHIP nvscic2c_pcie_s0_c6_11 0000
INTER_CHIP egl_nvscic2c_5_prod 0105
INTER_CHIP egl_nvscic2c_5_cons 1005
INTER_CHIP egl_nvscic2c_6_prod 0106
INTER_CHIP egl_nvscic2c_6_cons 1006
INTER_CHIP egl_nvscic2c_7_prod 0107
INTER_CHIP egl_nvscic2c_7_cons 1007
INTER_CHIP egl_nvscic2c_8_prod 0108
INTER_CHIP egl_nvscic2c_8_cons 1008
INTER_CHIP egl_nvscic2c_9_prod 0109
INTER_CHIP egl_nvscic2c_9_cons 1009

1547
nvsciipc.h Normal file
View File

File diff suppressed because it is too large Load Diff

31
nvscistream.h Normal file
View File

@@ -0,0 +1,31 @@
/*
* Copyright (c) 2018-2020 NVIDIA Corporation. All rights reserved.
*
* NVIDIA Corporation and its licensors retain all intellectual property and
* proprietary rights in and to this software, related documentation and any
* modifications thereto. Any use, reproduction, disclosure or distribution
* of this software and related documentation without an express license
* agreement from NVIDIA Corporation is strictly prohibited.
*/
/**
* @file
*
* @brief <b> NVIDIA Software Communications Interface (SCI) : NvSciStream </b>
*
* The NvSciStream library is a layer on top of NvSciBuf and NvSciSync libraries
* to provide utilities for streaming sequences of data packets between
* multiple application modules to support a wide variety of use cases.
*/
#ifndef NVSCISTREAM_H
#define NVSCISTREAM_H
#ifdef __cplusplus
#include <cstdint>
#else
#include <stdint.h>
#endif
#include "nvscistream_api.h"
#include "nvscistream_types.h"
#endif /* NVSCISTREAM_H */

5065
nvscistream_api.h Normal file
View File

File diff suppressed because it is too large Load Diff

559
nvscistream_types.h Normal file
View File

@@ -0,0 +1,559 @@
/*
* Copyright (c) 2020-2024 NVIDIA Corporation. All rights reserved.
*
* NVIDIA Corporation and its licensors retain all intellectual property and
* proprietary rights in and to this software, related documentation and any
* modifications thereto. Any use, reproduction, disclosure or distribution
* of this software and related documentation without an express license
* agreement from NVIDIA Corporation is strictly prohibited.
*/
/**
* @file
*
* @brief <b> NVIDIA Software Communications Interface (SCI) : NvSciStream </b>
*
* The NvSciStream library is a layer on top of NvSciBuf and NvSciSync libraries
* to provide utilities for streaming sequences of data packets between
* multiple application modules to support a wide variety of use cases.
*/
#ifndef NVSCISTREAM_TYPES_H
#define NVSCISTREAM_TYPES_H
#ifdef __cplusplus
#include <cstdint>
#else
#include <stdint.h>
#endif
#include "nvscierror.h"
#include "nvscibuf.h"
#include "nvscisync.h"
#include "nvsciipc.h"
#ifdef __cplusplus
extern "C" {
#endif
/**
* @defgroup nvsci_stream_data_types NvSciStream Data Types
*
* Contains a list of NvSciStream datatypes.
*
* @ingroup nvsci_stream
* @{
*
* NvSciStream version:
* It is expected that, when the NvSciStream library is being developed, it
* might potentially be incompatible with previous versions. An application
* built for a given major and minor version of NvSciStream will be compatible
* with any NvSciStream library with the same major version and equal or
* greater minor version.
*
* Different processes using different minor versions of NvSciStream libraries
* with the same major version may share a stream as long as the stream does
* not make use of any features not supported in the lower minor version.
*
* NvSciStream version numbers are incremented in the following circumstances:
* - Major version:
* - A public interface is modified or removed, so as to make the library
* incompatible with applications built for a previous version.
* - A data structure used by the public interfaces is modified.
* - Existing message formats used by IPC blocks to communicate between
* processes are modified, or new messages are added for existing features.
* - Minor version:
* - A new public interface or feature is added which does not affect
* applications using old features.
* - Additional values are added to existing enums which do not affect
* applications using old features.
*
*/
/*! \brief NvSciStream major version number.*/
static uint32_t const NvSciStreamMajorVersion = 4U;
/*! \brief NvSciStream minor version number.*/
static uint32_t const NvSciStreamMinorVersion = 2U;
/*! \brief Handle to a block.
*
* NvSciStreamBlock is valid if it is returned from a successful call to any
* one of the block create APIs and has not yet been destroyed using
* NvSciStreamBlockDelete().
*/
typedef uintptr_t NvSciStreamBlock;
/*! \brief NvSciStream assigned handle for a packet.
*
* In the pool, NvSciStreamPacket is valid if it is returned from a successful
* call to NvSciStreamPoolPacketCreate() API and has not been deleted using
* NvSciStreamPoolPacketDelete().
*
* In other blocks, NvSciStreamPacket is valid if it was received earlier
* from a call to NvSciStreamBlockPacketNewHandleGet() and was accepted in
* a call to NvSciStreamBlockPacketStatusSet(), and its cookie has not yet
* been received from a call to NvSciStreamBlockPacketOldCookieGet().
*/
typedef uintptr_t NvSciStreamPacket;
/*! \brief Application assigned cookie for a
* NvSciStreamPacket.
*/
typedef uintptr_t NvSciStreamCookie;
/*! \brief Constant variable denoting an invalid
* NvSciStreamPacket.
*
* \implements{19620996}
*/
static NvSciStreamPacket const NvSciStreamPacket_Invalid = 0U;
/*! \brief Constant variable denoting an invalid
* NvSciStreamCookie.
*
* \implements{19620999}
*/
static NvSciStreamCookie const NvSciStreamCookie_Invalid = 0U;
/**
* \cond Non-doxygen comment
* page nvsci_stream_logical_data_types NvSciStream logical data types
* section NvSciStream logical data types
* Block: A block is a modular portion of a stream which resides
* in a single process and manages one aspect of the stream's
* behavior. Blocks are connected together in a tree to form
* arbitrary streams.
*
* NvSciStream supports the following types of blocks:
* - Producer: Producer is a type of block responsible for
* generating stream data. Each stream begins with a producer
* block, it is also referred to as the upstream endpoint of the
* stream.
*
* - Consumer: Consumer is a type of block responsible for
* processing stream data. Each stream ends with one or
* more consumer blocks, it is also referred to as the
* downstream endpoint of the stream.
*
* - Pool: Pool is a type of block containing the set of
* packets available for use by @a Producer. NvSciStream
* supports only a static pool in which the number of
* packets managed by the pool is fixed when the pool
* is created.
*
* - Queue: Queue is a type of block containing set of
* packets available for use by @a Consumer.
* NvSciStream supports two types of queue blocks:
* - Fifo: A Fifo Queue block is used when all
* packets must be acquired by the consumer in
* the order received. Packets will wait in the FIFO
* until the consumer acquires them.
* - Mailbox: Mailbox Queue block is used when the consumer
* should acquire the most recent data. If a new
* packet is inserted in the mailbox when one
* is already waiting, the previous one will be skipped
* and its buffers will immediately be returned to the
* Producer for reuse.
*
* - Multicast: Multicast is a type of block which is responsible
* for connecting separate pipelines when a stream has more than
* one Consumer.
*
* - IpcSrc - IpcSrc is a type of block which is the upstream
* half of an IPC block pair which allows NvSciSyncObj waiter
* requirements, NvSciSyncObj(s), packet element
* information and packets to be transmitted to or received from
* the downstream half of the stream which resides in another
* process.
*
* - IpcDst - IpcDst is a type of block which is the downstream
* half of an IPC block pair which allows NvSciSyncObj waiter
* requirements, NvSciSyncObj(s), packet element
* information and packets to be transmitted to or received from
* the upstream half of the stream which resides in another process.
*
* Packet: A packet represents a set of NvSciBufObjs containing stream
* data, each NvSciBufObj it contains is also referred to as an element
* of the packet.
* \endcond
*/
/*! \brief Defines NvSciStream attributes that are queryable.
*
* \implements{19621074}
*/
typedef enum {
/*! \brief Maximum number of elements allowed per packet. */
NvSciStreamQueryableAttrib_MaxElements = 0x000000,
/*! \brief Maximum number of NvSciSyncObjs allowed. */
NvSciStreamQueryableAttrib_MaxSyncObj = 0x000001,
/*! \brief Maximum number of multicast outputs allowed. */
NvSciStreamQueryableAttrib_MaxMulticastOutputs = 0x000002
} NvSciStreamQueryableAttrib;
/*! \brief Most queries on one block request information received from
*! another block. Where there is ambiguity in the kind of block the
*! information originated from, this type is used to specify it.
*/
typedef enum {
/*! \brief Query information received from the producer */
NvSciStreamBlockType_Producer,
/*! \brief Query information received from a consumer */
NvSciStreamBlockType_Consumer,
/*! \brief Query information received from the pool */
NvSciStreamBlockType_Pool
} NvSciStreamBlockType;
/*! \brief Setup information will be broken into several distinct groups,
*! with restrictions on when they can be specified and queried. The
*! application will indicate when each group has been fully specified
*! and is ready to send (for *Export groups) or when it has finished
*! querying the group and the driver can reclaim space and allow dependent
*! operations to proceed (for *Import groups).
*/
typedef enum {
/*! \brief Specification of element-related support.
*
* In the producer and consumer(s), this group contains the list of
* elements supported by the endpoint. Marking this complete causes
* the list to be sent to the pool.
*
* In the pool, this group contains the list of elements which will
* be used for the final packet layout. Marking this complete causes
* the list to be sent to the producer and consumer(s). This group of
* operations are not supported on the secondary pool.
*
* When element export is complete, the following functions are no longer
* available on the block:
* - NvSciStreamBlockElementAttrSet()
*
* When element export is complete, the following functions become
* available on the pool:
* - NvSciStreamPoolPacketCreate()
* - NvSciStreamPoolPacketInsertBuffer()
* - NvSciStreamPoolPacketComplete()
* - NvSciStreamPoolPacketStatusAcceptGet()
* - NvSciStreamPoolPacketStatusValueGet()
*/
NvSciStreamSetup_ElementExport = 0x0001,
/*! \brief Processing of element-related support
*
* In the pool, this group contains the lists of supported elements sent by
* the producer and consumer(s). Marking this complete releases resources
* associated with these lists. This must be completed before element
* export can complete.
*
* In the producer and consumer(s), this group contains the list of
* elements sent by the pool for use in the final packet layout, as
* well as the flags tracking whether the block uses each element (for
* consumers only). Marking this complete releases resources associated
* with the element list, sends the usage list through the stream for
* use in optimization, and unblocks any pending
* NvSciStreamEventType_PacketCreate events waiting at the block.
*
* When element import is complete, the following functions are no longer
* available on the block:
* - NvSciStreamBlockElementCountGet()
* - NvSciStreamBlockElementAttrGet()
* - NvSciStreamBlockElementUsageSet()
*/
NvSciStreamSetup_ElementImport = 0x0002,
/*! \brief Specification of all packets
*
* In the pool, this group contains the lists of all packet definitions.
* Marking this complete releases resources associated with the packet
* setup, and indicates no more packets will be created. The producer
* and consumer will receive an NvSciStreamEventType_PacketsComplete
* event after receiving all of the individual packets.
*
* When packet export is completed, the following functions are no longer
* available on the pool:
* - NvSciStreamPoolPacketCreate()
* - NvSciStreamPoolPacketInsertBuffer()
* - NvSciStreamPoolPacketComplete()
*/
NvSciStreamSetup_PacketExport = 0x0011,
/*! \brief Mapping of all packets
*
* In the producer and consumer, this group contains the lists of all
* packet definitions and their status. This cannot be completed
* until the NvSciStreamEventType_PacketsComplete event arrives from
* the pool and status has been returned for all received packets.
*
* In the pool, this group contains the packet status returned by
* the producer and consumers. This cannot be completed until
* packet export has finished and NvSciStreamEventType_PacketStatus
* events have arrived for all packets.
*
* Marking this complete releases resources associated with the packet
* setup.
*
* When packet import is completed, the following functions are no longer
* available on the relevant blocks:
* - NvSciStreamBlockPacketNewHandleGet()
* - NvSciStreamBlockPacketBufferGet()
* - NvSciStreamBlockPacketStatusSet()
* - NvSciStreamPoolPacketStatusAcceptGet()
* - NvSciStreamPoolPacketStatusValueGet()
*/
NvSciStreamSetup_PacketImport = 0x0012,
/*! \brief Specification of waiter sync attributes
*
* In the producer and consumer, this group contains the per-element
* NvSciSync attribute lists containing the requirements to wait for
* sync objects signalled by the opposing endpoints. This cannot be
* completed until NvSciStreamSetup_ElementImport is completed, so
* the list of used elements is known.
*
* When waiter information export is completed, the following functions
* are no longer available:
* - NvSciStreamBlockElementWaiterAttrSet()
*/
NvSciStreamSetup_WaiterAttrExport = 0x0021,
/*! \brief Processing of waiter sync attributes
*
* In the producer and consumer, this group contains the per-element
* NvSciSync attribute lists containing the requirements provided
* by the opposing endpoints so that they can wait for sync objects
* signalled by this endpoint. This cannot be completed until
* NvSciStreamSetup_ElementImport is completed and the
* NvSciStreamEventType_WaiterAttr event has arrived.
*
* When waiter information import is completed, the following functions
* are no longer available:
* - NvSciStreamBlockElementWaiterAttrGet()
*/
NvSciStreamSetup_WaiterAttrImport = 0x0022,
/*! \brief Specification of signaling sync objects
*
* In the producer and consumer, this group contains the per-element
* NvSciSync objects used to signal when writing and reading,
* respectively, of each element has completed. This cannot be
* completed until NvSciStreamSetup_WaiterAttrImport is completed.
*
* When signal information export is completed, the following functions
* are no longer available:
* - NvSciStreamBlockElementSignalObjSet()
*/
NvSciStreamSetup_SignalObjExport = 0x0031,
/*! \brief Mapping of signaling sync objects
*
* In the producer and consumer, this group contains the per-element
* NvSciSync objects that are signalled when the opposing endpoint(s)
* are done reading and writing, respectively, each element. This cannot
* be completed until the NvSciStreamEventType_SignalObj event has
* arrived.
*
* When waiter information import is completed, the following functions
* are no longer available:
* - NvSciStreamBlockElementSignalObjGet()
*/
NvSciStreamSetup_SignalObjImport = 0x0032,
/*! \brief Continue initialization with the new connected consumers.
*
* In the multicast, even though not all consumers are connected, marking
* this complete allows the application to continue the initialization
* and streaming with the existing consumers. This is applicable to both
* early-attach and late-attach consumers. This cannot be completed until
* there's a new connection to the multicast.
*
* When the existing consumer(s) finish initialization and enter the
* streaming phase, the multicast can start another connection with the
* new late-attach consumer(s), after receiving the
* NvSciStreamEventType_SetupComplete event.
*/
NvSciStreamSetup_Connect = 0x0041,
/*! \brief Indication for successful CRC validation.
*
* In the producer, marking this complete means the producer finishes
* all validation and validation is successful, which unblocks the
* pending NvSciStreamEventType_SetupComplete event.
*
* This must be used by producer after receiving the
* NvSciStreamEventType_Validate event.
*/
NvSciStreamSetup_CrcImport = 0x0051,
/*! \brief Specification CRC validation data
*
* In the consumer, marking this complete means that CRC data is set and is
* ready for validation. This triggers the validation event
* NvSciStreamEventType_Validate at producer.
*/
NvSciStreamSetup_CrcExport = 0x0052
} NvSciStreamSetup;
/*! \brief Defines event types for the blocks.
*
* \implements{19621083}
*/
typedef enum {
/*! \brief
* Indicates the stream containing the block is fully connected.
*
* At all blocks, the following functions become available:
* - NvSciStreamBlockConsumerCountGet()
*
* At the producer and consumer blocks, the element export phase may
* begin, and the following functions become available:
* - NvSciStreamBlockElementAttrSet()
*/
NvSciStreamEventType_Connected = 0x004004,
/*! \brief
* Indicates portions of the stream have disconnected such that no
* more useful work can be done with the block. Note that this
* event is not always triggered immediately when any disconnect
* occurs. For instance:
* - If a consumer still has packets waiting in its queue when
* a producer is destroyed, it will not be informed of the
* disconnection until all packets are acquired
* by calling NvSciStreamConsumerPacketAcquire().
* - If disconnect is initiated by any downstream block of a
* multicast block, the multicast block will not forward the
* disconnect message upstream until all outputs of the multicast
* are disconnected.
*
* Received by all blocks.
*/
NvSciStreamEventType_Disconnected = 0x004005,
/*! \brief
* Signals the arrival of NvSciSync waiter information from the
* opposing endpoint(s).
*
* Received by producer and consumer blocks.
*
* The following function becomes available:
* - NvSciStreamBlockElementWaiterAttrGet()
* - NvSciStreamBlockElementSignalObjSet()
*/
NvSciStreamEventType_WaiterAttr = 0x004013,
/*! \brief
* Signals the arrival of NvSciSync signal information from the
* opposing endpoint(s).
*
* Received by producer and consumer blocks.
*
* The following function becomes available:
* - NvSciStreamBlockElementSignalObjGet()
*/
NvSciStreamEventType_SignalObj = 0x004014,
/*! \brief
* Signals the arrival of all element-related information.
*
* At the pool, both the element import and export phases may begin,
* and the following functions become available:
* - NvSciStreamBlockElementCountGet()
* - NvSciStreamBlockElementAttrGet()
* - NvSciStreamBlockElementAttrSet()
*
* At the producer and consumer(s), the element import and waiter
* information export phases may begin, and the following functions
* become available:
* - NvSciStreamBlockElementCountGet()
* - NvSciStreamBlockElementAttrGet()
* - NvSciStreamBlockElementUsageSet() (consumer only)
* - NvSciStreamBlockElementWaiterAttrSet()
*
* Not received by any other block types.
*/
NvSciStreamEventType_Elements = 0x004026,
/*! \brief
* Signals the arrival of a new packet definition from the pool.
*
* Received by producer and consumer blocks.
*
* These events become available to the producer and consumer after
* they have indicated that they are done importing element
* information by calling NvSciStreamBlockSetupStatusSet()
* with NvSciStreamSetup_ElementImport. The following functions
* become available to query and accept or reject packet information:
* - NvSciStreamBlockPacketNewHandleGet()
* - NvSciStreamBlockPacketBufferGet()
* - NvSciStreamBlockPacketStatusSet()
*/
NvSciStreamEventType_PacketCreate = 0x004030,
/*! \brief
* Signals that the pool has finished defining all of its packets.
*
* Received by producer and consumer blocks.
*
* This event becomes available to the producer and consumer after
* the pool indicates it has sent all the packets.
*/
NvSciStreamEventType_PacketsComplete = 0x004038,
/*! \brief
* Signals that the pool has deleted a packet and no further paylaods
* using the packet will arrive.
*
* Received by producer and consumer blocks.
*
* The following function becomes available to query the deleted packet:
* - NvSciStreamBlockPacketOldCookieGet()
*/
NvSciStreamEventType_PacketDelete = 0x004032,
/*! \brief
* Signals the arrival of status for a packet from producer and all
* consumers.
*
* Received by pool blocks.
*
* The following functions become available to query the packet status:
* - NvSciStreamPoolPacketStatusAcceptGet()
* - NvSciStreamPoolPacketStatusValueGet()
*/
NvSciStreamEventType_PacketStatus = 0x004037,
/*! \brief
* Specifies a packet is available for reuse or acquire.
*
* Received by producer and consumer blocks.
*/
NvSciStreamEventType_PacketReady = 0x004040,
/*! \brief
* Specifies all setup operations have completed and streaming may begin.
*
* Received by all blocks.
*/
NvSciStreamEventType_SetupComplete = 0x004050,
/*! \brief
* Signals the validation data provided by all consumers.
*
* Received by producer block only.
*/
NvSciStreamEventType_Validate = 0x004060,
/*! \brief
* Indicates a failure not directly triggered by user action.
*
* Received by any block.
*/
NvSciStreamEventType_Error = 0x0040FF
} NvSciStreamEventType;
#ifdef __cplusplus
}
#endif
/** @} */
#endif /* NVSCISTREAM_TYPES_H */

3340
nvscisync.h Normal file
View File

File diff suppressed because it is too large Load Diff

1
push_info.txt Normal file
View File

@@ -0,0 +1 @@
jetson_38.2