Processing math: 4%
  • <xmp id="om0om">
  • <table id="om0om"><noscript id="om0om"></noscript></table>
  • NVIDIA DRIVE OS Linux SDK API Reference

    6.0.9 Release
    All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages

    Detailed Description

    The NvSciSync library allows applications to manage synchronization objects which coordinate when sequences of operations begin and end.

    The following constants are defined and have type unsigned int:

    In C and C++ these constants are guaranteed to be defined as global const variables.

    Upon each new release of NvSciSync:

    This version of this specification corresponds to NvSciSync version 1.0 (major version 1, minor version 0).

    Different processes using the NvSciSync inter-process APIs may use different minor versions of NvSciSync within the same major version, provided that if a process uses a feature newer than another processor's NvSciSync version, the latter process does not import an unreconciled NvSciSyncAttrList (directly or indirectly) from the former process.

    In general, an NvSciSync API call will not return an error code if it has caused any side effects other than allocating resources and subsequently freeing those resources.

    In general, unless specified otherwise, if a NULL pointer is passed to an NvSciSync API call, the API call will either return NvSciError_BadParameter or (if there are other applicable error conditions as well) an error code corresponding to another error.

    Each NvSciSyncAttrList is either unreconciled or reconciled. It is unreconciled if it was:

    It is reconciled if it was:

    Data Structures

    struct  NvSciSyncFence
     Defines the opaque NvSciSyncFence. More...
     
    struct  NvSciSyncFenceIpcExportDescriptor
     Defines the exported form of NvSciSyncFence intended to be shared across an NvSciIpc channel. More...
     
    struct  NvSciSyncObjIpcExportDescriptor
     Defines the exported form of NvSciSyncObj intended to be shared across an NvSciIpc channel. More...
     
    struct  NvSciSyncAttrKeyValuePair
     This structure defines a key/value pair used to get or set the NvSciSyncAttrKey(s) and their corresponding values from or to NvSciSyncAttrList. More...
     

    Macros

    #define PACK_SYNC(__Declaration__, ...)   __pragma(pack(push, 1)) __Declaration__,##__VA_ARGS__ __pragma(pack(pop))
     
    #define NvSciSyncAccessPerm_WaitOnly   ((uint64_t)1U << 0U)
     This represents the capability to wait on an NvSciSyncObj as it progresses through points on its sync timeline. More...
     
    #define NvSciSyncAccessPerm_SignalOnly   ((uint64_t)1U << 1U)
     This represents the capability to advance an NvSciSyncObj to its next point on its sync timeline. More...
     
    #define NvSciSyncAccessPerm_WaitSignal   (NvSciSyncAccessPerm_WaitOnly | NvSciSyncAccessPerm_SignalOnly)
     This represents the capability to advance an NvSciSyncObj to its next point on its sync timeline and also wait until that next point is reached. More...
     
    #define NvSciSyncAccessPerm_Auto   ((uint64_t)1U << 63U)
     Usage of Auto permissions is restricted only for export/import APIs and shouldn't be used as valid value for NvSciSyncAttrKey_RequiredPerm Attribute. More...
     

    Typedefs

    typedef struct NvSciSyncModuleRec * NvSciSyncModule
     Represents an instance of the NvSciSyncModule. More...
     
    typedef struct NvSciSyncCpuWaitContextRec * NvSciSyncCpuWaitContext
     Represents the right to perform a CPU wait on an NvSciSyncFence. More...
     
    typedef struct NvSciSyncFence NvSciSyncFence
     Defines the opaque NvSciSyncFence. More...
     
    typedef struct NvSciSyncObjRec * NvSciSyncObj
     A Synchronization Object is a container holding the reconciled NvSciSyncAttrList defining constraints of the Fence and the handle of the actual Primitive, with access permissions being enforced by the NvSciSyncAttrKey_RequiredPerm and NvSciSyncAttrKey_NeedCpuAccess Attribute Keys. More...
     
    typedef const struct NvSciSyncObjRec * NvSciSyncObjConst
     A reference, that is not modifiable, to a particular Synchronization Object. More...
     
    typedef struct NvSciSyncAttrListRec * NvSciSyncAttrList
     A container constituting an NvSciSyncAttrList which contains: More...
     
    typedef uint64_t NvSciSyncAccessPerm
     Describes NvSciSyncObj access permissions. More...
     
    typedef enum NvSciSyncAttrValPrimitiveTypeRec NvSciSyncAttrValPrimitiveType
     Alias for enum NvSciSyncAttrValPrimitiveTypeRec. More...
     

    Enumerations

    enum  NvSciSyncTaskStatusVal {
      NvSciSyncTaskStatus_Success = 0U,
      NvSciSyncTaskStatus_Failure = 1U,
      NvSciSyncTaskStatus_Invalid = UINT16_MAX
    }
     Status of the signaler's task that signals a particular NvSciSyncFence. More...
     
    enum  NvSciSyncAttrValPrimitiveTypeRec {
      NvSciSyncAttrValPrimitiveType_LowerBound,
      NvSciSyncAttrValPrimitiveType_Syncpoint,
      NvSciSyncAttrValPrimitiveType_SysmemSemaphore,
      NvSciSyncAttrValPrimitiveType_VidmemSemaphore,
      NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b,
      NvSciSyncAttrValPrimitiveType_VidmemSemaphorePayload64b,
      NvSciSyncAttrValPrimitiveType_UpperBound
    }
     Types of synchronization primitives. More...
     
    enum  NvSciSyncAttrKey {
      NvSciSyncAttrKey_LowerBound,
      NvSciSyncAttrKey_NeedCpuAccess,
      NvSciSyncAttrKey_RequiredPerm,
      NvSciSyncAttrKey_ActualPerm,
      NvSciSyncAttrKey_WaiterContextInsensitiveFenceExports,
      NvSciSyncAttrKey_WaiterRequireTimestamps,
      NvSciSyncAttrKey_RequireDeterministicFences,
      NvSciSyncAttrKey_NumTimestampSlots,
      NvSciSyncAttrKey_NumTaskStatusSlots,
      NvSciSyncAttrKey_MaxPrimitiveValue,
      NvSciSyncAttrKey_PrimitiveInfo,
      NvSciSyncAttrKey_PeerLocationInfo,
      NvSciSyncAttrKey_GpuId,
      NvSciSyncAttrKey_PeerHwEngineArray,
      NvSciSyncAttrKey_UpperBound
    }
     Describes the NvSciSync public attribute keys holding the corresponding values specifying synchronization object constraints. More...
     
    enum  NvSciSyncWaitMode {
      NvSciSyncWaitMode_Default = 0U,
      NvSciSyncWaitMode_BusyWithYield = 1U,
      NvSciSyncWaitMode_BusyNoYield = 2U,
      NvSciSyncWaitMode_Blocking = 3U
    }
     Modes of CPU waiting. More...
     

    Functions

     PACK_SYNC (typedef struct { uint64_t timestamp;uint32_t statusEngine;uint16_t subframe;uint16_t status;}) NvSciSyncTaskStatus
     A single slot in the task status buffer. More...
     
    NvSciError NvSciSyncModuleOpen (NvSciSyncModule *newModule)
     Initializes and returns a new NvSciSyncModule with no NvSciSyncAttrLists, NvSciSyncCpuWaitContexts, NvSciSyncObjs or NvSciSyncFences bound to it. More...
     
    void NvSciSyncModuleClose (NvSciSyncModule module)
     Closes an instance of the NvSciSyncModule that was obtained through an earlier call to NvSciSyncModuleOpen(). More...
     
    NvSciError NvSciSyncCpuWaitContextAlloc (NvSciSyncModule module, NvSciSyncCpuWaitContext *newContext)
     Allocates a new NvSciSyncCpuWaitContext. More...
     
    void NvSciSyncCpuWaitContextFree (NvSciSyncCpuWaitContext context)
     Releases the NvSciSyncCpuWaitContext. More...
     
    NvSciError NvSciSyncAttrListCreate (NvSciSyncModule module, NvSciSyncAttrList *attrList)
     Creates a new, single-slot unreconciled NvSciSyncAttrList associated with the input NvSciSyncModule with empty NvSciSyncAttrKeys. More...
     
    void NvSciSyncAttrListFree (NvSciSyncAttrList attrList)
     Frees the NvSciSyncAttrList and removes its association with the NvSciSyncModule with which it was created. More...
     
    NvSciError NvSciSyncAttrListIsReconciled (NvSciSyncAttrList attrList, bool *isReconciled)
     Checks whether the NvSciSyncAttrList is reconciled. More...
     
    NvSciError NvSciSyncAttrListValidateReconciled (NvSciSyncAttrList reconciledAttrList, const NvSciSyncAttrList inputUnreconciledAttrListArray[], size_t inputUnreconciledAttrListCount, bool *isReconciledListValid)
     Validates a reconciled NvSciSyncAttrList against a set of input unreconciled NvSciSyncAttrLists. More...
     
    NvSciError NvSciSyncAttrListSetAttrs (NvSciSyncAttrList attrList, const NvSciSyncAttrKeyValuePair *pairArray, size_t pairCount)
     Sets the values for NvSciSyncAttrKey(s) in slot 0 of the input NvSciSyncAttrList. More...
     
    NvSciError NvSciSyncAttrListGetAttrs (NvSciSyncAttrList attrList, NvSciSyncAttrKeyValuePair *pairArray, size_t pairCount)
     Gets the value of NvSciSyncAttrKey from slot 0 of the input NvSciSyncAttrList. More...
     
    size_t NvSciSyncAttrListGetSlotCount (NvSciSyncAttrList attrList)
     Gets the slot count of the given NvSciSyncAttrList. More...
     
    NvSciError NvSciSyncAttrListAppendUnreconciled (const NvSciSyncAttrList inputUnreconciledAttrListArray[], size_t inputUnreconciledAttrListCount, NvSciSyncAttrList *newUnreconciledAttrList)
     Appends multiple unreconciled NvSciSyncAttrLists together, forming a single new unreconciled NvSciSyncAttrList with a slot count equal to the sum of all the slot counts of NvSciSyncAttrList(s) in the input array which is no longer writable. More...
     
    NvSciError NvSciSyncAttrListClone (NvSciSyncAttrList origAttrList, NvSciSyncAttrList *newAttrList)
     Clones an NvSciSyncAttrList. More...
     
    NvSciError NvSciSyncAttrListSlotGetAttrs (NvSciSyncAttrList attrList, size_t slotIndex, NvSciSyncAttrKeyValuePair *pairArray, size_t pairCount)
     Gets the value(s) of NvSciSyncAttrKey(s) from an NvSciSyncAttrList at given slot index in a multi-slot unreconciled NvSciSyncAttrList. More...
     
    NvSciError NvSciSyncAttrListReconcile (const NvSciSyncAttrList inputArray[], size_t inputCount, NvSciSyncAttrList *newReconciledList, NvSciSyncAttrList *newConflictList)
     Reconciles the input unreconciled NvSciSyncAttrLists into a new reconciled NvSciSyncAttrList. More...
     
    NvSciError NvSciSyncAttrListIpcExportUnreconciled (const NvSciSyncAttrList unreconciledAttrListArray[], size_t unreconciledAttrListCount, NvSciIpcEndpoint ipcEndpoint, void **descBuf, size_t *descLen)
     Transforms the input unreconciled NvSciSyncAttrList(s) to an exportable unreconciled NvSciSyncAttrList descriptor that can be transported by the application to any remote process as a serialized set of bytes over an NvSciIpc channel. More...
     
    NvSciError NvSciSyncAttrListIpcExportReconciled (const NvSciSyncAttrList reconciledAttrList, NvSciIpcEndpoint ipcEndpoint, void **descBuf, size_t *descLen)
     Transforms the reconciled NvSciSyncAttrList to an exportable reconciled NvSciSyncAttrList descriptor that can be transported by the application to any remote process as a serialized set of bytes over an NvSciIpc channel. More...
     
    NvSciError NvSciSyncAttrListIpcImportUnreconciled (NvSciSyncModule module, NvSciIpcEndpoint ipcEndpoint, const void *descBuf, size_t descLen, NvSciSyncAttrList *importedUnreconciledAttrList)
     Transforms an exported unreconciled NvSciSyncAttrList descriptor (potentially received from any process) into an unreconciled NvSciSyncAttrList which is no longer writable. More...
     
    NvSciError NvSciSyncAttrListIpcImportReconciled (NvSciSyncModule module, NvSciIpcEndpoint ipcEndpoint, const void *descBuf, size_t descLen, const NvSciSyncAttrList inputUnreconciledAttrListArray[], size_t inputUnreconciledAttrListCount, NvSciSyncAttrList *importedReconciledAttrList)
     Translates an exported reconciled NvSciSyncAttrList descriptor (potentially received from any process) into a reconciled NvSciSyncAttrList. More...
     
    void NvSciSyncAttrListFreeDesc (void *descBuf)
     Frees an exported NvSciSyncAttrList descriptor previously returned by any NvSciSyncAttrList exporting function. More...
     
    void NvSciSyncFenceClear (NvSciSyncFence *syncFence)
     Frees any resources allocated for the NvSciSyncFence. More...
     
    NvSciError NvSciSyncFenceDup (const NvSciSyncFence *srcSyncFence, NvSciSyncFence *dstSyncFence)
     Duplicates the given NvSciSyncFence, such that any wait on duplicated NvSciSyncFence will complete at the same time as a wait on given NvSciSyncFence. More...
     
    NvSciError NvSciSyncFenceExtractFence (const NvSciSyncFence *syncFence, uint64_t *id, uint64_t *value)
     Extracts the id and value from the input NvSciSyncFence. More...
     
    NvSciError NvSciSyncFenceUpdateFence (NvSciSyncObj syncObj, uint64_t id, uint64_t value, NvSciSyncFence *syncFence)
     Populates the input NvSciSyncFence based on the input id and value. More...
     
    NvSciError NvSciSyncFenceAddTimestampSlot (NvSciSyncFence *syncFence, uint32_t timestampSlot)
     Sets the current timestamp slot index in the NvSciSyncFence. More...
     
    NvSciError NvSciSyncFenceAddTaskStatusSlot (NvSciSyncFence *syncFence, uint32_t taskStatusSlot)
     Sets the current task status slot index to the NvSciSyncFence. More...
     
    NvSciError NvSciSyncFenceExtractTimestampSlot (NvSciSyncFence *syncFence, uint32_t *timeStampSlot)
     Reads the current timestamp slot index from the NvSciSyncFence. More...
     
    NvSciError NvSciSyncObjAlloc (NvSciSyncAttrList reconciledList, NvSciSyncObj *syncObj)
     Allocates and initializes a NvSciSyncObj that meets all the constraints specified in the given reconciled NvSciSyncAttrList. More...
     
    NvSciError NvSciSyncObjDup (NvSciSyncObj syncObj, NvSciSyncObj *dupObj)
     Creates a new NvSciSyncObj holding a reference to the original resources to which the input NvSciSyncObj holds reference to. More...
     
    NvSciError NvSciSyncObjGetAttrList (NvSciSyncObj syncObj, NvSciSyncAttrList *syncAttrList)
     Retrieves the reconciled NvSciSyncAttrList associated with an input NvSciSyncObj. More...
     
    void NvSciSyncObjFree (NvSciSyncObj syncObj)
     Destroys a valid NvSciSyncObj and frees any resources that were allocated for it. More...
     
    NvSciError NvSciSyncObjIpcExport (NvSciSyncObj syncObj, NvSciSyncAccessPerm permissions, NvSciIpcEndpoint ipcEndpoint, NvSciSyncObjIpcExportDescriptor *desc)
     Exports an NvSciSyncObj into an NvSciIpc-transferable object binary descriptor. More...
     
    NvSciError NvSciSyncObjIpcImport (NvSciIpcEndpoint ipcEndpoint, const NvSciSyncObjIpcExportDescriptor *desc, NvSciSyncAttrList inputAttrList, NvSciSyncAccessPerm permissions, int64_t timeoutUs, NvSciSyncObj *syncObj)
     Creates and returns an NvSciSyncObj based on the supplied binary descriptor describing an exported NvSciSyncObj. More...
     
    NvSciError NvSciSyncIpcExportFence (const NvSciSyncFence *syncFence, NvSciIpcEndpoint ipcEndpoint, NvSciSyncFenceIpcExportDescriptor *desc)
     Exports the input NvSciSyncFence into a binary descriptor shareable across the NvSciIpc channel. More...
     
    NvSciError NvSciSyncIpcImportFence (NvSciSyncObj syncObj, const NvSciSyncFenceIpcExportDescriptor *desc, NvSciSyncFence *syncFence)
     Fills in the NvSciSyncFence based on the input binary descriptor. More...
     
    NvSciError NvSciSyncObjValidate (NvSciSyncObj syncObj)
     Validates the NvSciSyncObj satisfies the constraints of the NvSciSyncAttrList that it is associated with. More...
     
    NvSciError NvSciSyncObjGenerateFence (NvSciSyncObj syncObj, NvSciSyncFence *syncFence)
     Generates next point on sync timeline of an NvSciSyncObj and fills in the supplied NvSciSyncFence object. More...
     
    NvSciError NvSciSyncObjSignal (NvSciSyncObj syncObj)
     Signals the NvSciSyncObj using the reconciled primitive that was allocated along with the NvSciSyncObj. More...
     
    NvSciError NvSciSyncFenceWait (const NvSciSyncFence *syncFence, NvSciSyncCpuWaitContext context, int64_t timeoutUs)
     Performs a synchronous wait on the NvSciSyncFence object until the NvSciSyncFence has been signaled or the timeout expires. More...
     
    NvSciError NvSciSyncFenceGetTimestamp (const NvSciSyncFence *syncFence, uint64_t *timestampUS)
     Read the timestamp associated with the NvSciSyncFence. More...
     
    NvSciError NvSciSyncFenceGetTaskStatus (const NvSciSyncFence *syncFence, NvSciSyncTaskStatus *taskStatus)
     Reads the task status associated with the NvSciSyncFence and stores it in the user provided out parameter. More...
     
    NvSciError NvSciSyncAttrListGetAttr (NvSciSyncAttrList attrList, NvSciSyncAttrKey key, const void **value, size_t *len)
     Gets the attribute value from the slot 0 of the passed NvSciSyncAttrList with the given NvSciSyncAttrKey. More...
     
    NvSciError NvSciSyncAttrListReconcileAndObjAlloc (const NvSciSyncAttrList inputArray[], size_t inputCount, NvSciSyncObj *syncObj, NvSciSyncAttrList *newConflictList)
     Reconciles the input unreconciled NvSciSyncAttrList(s) into a new reconciled NvSciSyncAttrList. More...
     
    NvSciError NvSciSyncIpcExportAttrListAndObj (NvSciSyncObj syncObj, NvSciSyncAccessPerm permissions, NvSciIpcEndpoint ipcEndpoint, void **attrListAndObjDesc, size_t *attrListAndObjDescSize)
     Exports an NvSciSyncAttrList and NvSciSyncObj into an NvSciIpc-transferable object binary descriptor pointed to by data. More...
     
    void NvSciSyncAttrListAndObjFreeDesc (void *attrListAndObjDescBuf)
     Frees an NvSciSyncIpcExportAttrListAndObj descriptor returned by a successful call to NvSciSyncIpcExportAttrListAndObj. More...
     
    NvSciError NvSciSyncIpcImportAttrListAndObj (NvSciSyncModule module, NvSciIpcEndpoint ipcEndpoint, const void *attrListAndObjDesc, size_t attrListAndObjDescSize, NvSciSyncAttrList const attrList[], size_t attrListCount, NvSciSyncAccessPerm minPermissions, int64_t timeoutUs, NvSciSyncObj *syncObj)
     Creates an NvSciSyncObj based on the supplied binary descriptor returned from a successful call to NvSciSyncIpcExportAttrListAndObj that has not yet been freed via NvSciSyncAttrListAndObjFreeDesc. More...
     
    NvSciError NvSciSyncCheckVersionCompatibility (uint32_t majorVer, uint32_t minorVer, bool *isCompatible)
     Checks if the loaded library version is compatible with the version the application was compiled against. More...
     
    NvSciError NvSciSyncObjAttachPeer (NvSciSyncObj syncObj, const NvSciSyncAttrList inputArray[], size_t inputCount)
     Allows remote peer NvSciIpcEndpoint to gain access to already allocated NvSciSyncObj. More...
     
    NvSciError NvSciSyncFillC2cAttrs (NvSciSyncAttrList unrecAttrList, NvSciSyncAccessPerm permissions)
     Fills appropriate attributes for C2C copy in the input NvSciSyncAttrList. More...
     
    NvSciError NvSciSyncAttrListValidateReconciledAgainstAttrs (NvSciSyncAttrList reconciledAttrList, const NvSciSyncAttrKeyValuePair *pairArray, size_t pairCount, NvSciSyncAccessPerm permissions)
     Validates reconciledAttrList against the set of input attributes that the user has set in the unreconciled NvSciSyncAttrList(s). More...
     
    NvSciError NvSciSyncFenceWaitWithMode (const NvSciSyncFence *syncFence, NvSciSyncCpuWaitContext context, int64_t timeoutUs, NvSciSyncWaitMode waitMode)
     Performs a synchronous wait on the NvSciSyncFence object until the NvSciSyncFence has been signaled or the timeout expires. More...
     

    Variables

    static const uint32_t NvSciSyncMajorVersion = 2U
     NvSciSync major version number. More...
     
    static const uint32_t NvSciSyncMinorVersion = 8U
     NvSciSync minor version number. More...
     
    static const int64_t NvSciSyncFenceMaxTimeout = (0x7fffffffffffffff / 1000)
     Maximum supported timeout value. More...
     
    static const NvSciSyncFence NvSciSyncFenceInitializer = {{0U}}
     Defines the value used to zero-initialize the NvSciSyncFence object. More...
     

    NvSciSync blanket statements

    Input/Output parameters

    Output parameters

    • In general, output parameters are passed by reference through pointers. Also, since a null pointer cannot be used to convey an output parameter, API functions typically return an error code if a null pointer is supplied for a required output parameter unless otherwise stated explicitly. Output parameter is valid only if error code returned by an API is NvSciError_Success unless otherwise stated explicitly.

    Concurrency

    • Every individual function can be called concurrently with itself without any side-effects unless otherwise stated explicitly in the interface specifications.
    • The conditions for combinations of functions that cannot be called concurrently or calling them concurrently leads to side effects are explicitly stated in the interface specifications.

    Fence states

    Macro Definition Documentation

    ◆ NvSciSyncAccessPerm_Auto

    #define NvSciSyncAccessPerm_Auto   ((uint64_t)1U << 63U)

    Usage of Auto permissions is restricted only for export/import APIs and shouldn't be used as valid value for NvSciSyncAttrKey_RequiredPerm Attribute.

    Definition at line 373 of file nvscisync.h.

    ◆ NvSciSyncAccessPerm_SignalOnly

    #define NvSciSyncAccessPerm_SignalOnly   ((uint64_t)1U << 1U)

    This represents the capability to advance an NvSciSyncObj to its next point on its sync timeline.

    Definition at line 356 of file nvscisync.h.

    ◆ NvSciSyncAccessPerm_WaitOnly

    #define NvSciSyncAccessPerm_WaitOnly   ((uint64_t)1U << 0U)

    This represents the capability to wait on an NvSciSyncObj as it progresses through points on its sync timeline.

    Definition at line 346 of file nvscisync.h.

    ◆ NvSciSyncAccessPerm_WaitSignal

    #define NvSciSyncAccessPerm_WaitSignal   (NvSciSyncAccessPerm_WaitOnly | NvSciSyncAccessPerm_SignalOnly)

    This represents the capability to advance an NvSciSyncObj to its next point on its sync timeline and also wait until that next point is reached.

    Definition at line 364 of file nvscisync.h.

    ◆ PACK_SYNC

    #define PACK_SYNC (   __Declaration__,
      ... 
    )    __pragma(pack(push, 1)) __Declaration__,##__VA_ARGS__ __pragma(pack(pop))

    Definition at line 176 of file nvscisync.h.

    Typedef Documentation

    ◆ NvSciSyncAccessPerm

    typedef uint64_t NvSciSyncAccessPerm

    Describes NvSciSyncObj access permissions.

    Definition at line 337 of file nvscisync.h.

    ◆ NvSciSyncAttrList

    typedef struct NvSciSyncAttrListRec* NvSciSyncAttrList

    A container constituting an NvSciSyncAttrList which contains:

    • set of NvSciSyncAttrKey attributes defining synchronization object constraints
    • slot count defining number of slots in an NvSciSyncAttrList
    • flag specifying if NvSciSyncAttrList is reconciled or unreconciled.
    Note
    Every NvSciSyncAttrList that has been created but not freed holds a reference to the NvSciSyncModule, preventing the module from being de-initialized.

    Definition at line 330 of file nvscisync.h.

    ◆ NvSciSyncAttrValPrimitiveType

    Alias for enum NvSciSyncAttrValPrimitiveTypeRec.

    Definition at line 461 of file nvscisync.h.

    ◆ NvSciSyncCpuWaitContext

    typedef struct NvSciSyncCpuWaitContextRec* NvSciSyncCpuWaitContext

    Represents the right to perform a CPU wait on an NvSciSyncFence.

    It holds resources necessary to perform a CPU wait using NvSciSyncFenceWait(). It can be used to wait on NvSciSyncFence(s) associated with the same NvSciSyncModule that this NvSciSyncCpuWaitContext is associated with. An NvSciSyncCpuWaitContext can be used to wait on only one NvSciSyncFence at a time. However, a single NvSciSyncCpuWaitContext can be used to wait on different NvSciSyncFences at different instants of time.

    Definition at line 223 of file nvscisync.h.

    ◆ NvSciSyncFence

    Defines the opaque NvSciSyncFence.

    This structure describes a synchronization primitive snapshot that must be reached to release the waiters.

    Unlike NvSciSyncAttrList and NvSciSyncObj objects, applications are responsible for the memory management of NvSciSyncFences.

    Every NvSciSyncFence must be initialized to all zeros after its storage is allocated before the first time it is passed to any NvSciSync API calls. NvSciSyncFenceInitializer can be used for this, or memset(), or any other mechanism for zeroing memory.

    Every NvSciSyncFence not in a cleared state holds a reference to the NvSciSyncObj it is related to, preventing that NvSciSyncObj from being deleted. It also contains id and value of the synchronization primitive corresponding to the desired snapshot.

    In case if the corresponding NvSciSyncObj supports timestamps, this structure also contains information about the memory location of the timestamp of the event unblocking the NvSciSyncFence.

    This structure also contains information about the memory location of the status of the task triggering the event unblocking the NvSciSyncFence.

    ◆ NvSciSyncModule

    typedef struct NvSciSyncModuleRec* NvSciSyncModule

    Represents an instance of the NvSciSyncModule.

    Any NvSciSyncAttrList created or imported using a particular NvSciSyncModule is bound to that module instance, along with any NvSciSyncObjs created or imported using those NvSciSyncAttrLists and any NvSciSyncFences created or imported using those NvSciSyncObjs.

    Note
    For any NvSciSync API call that has more than one input of type NvSciSyncModule, NvSciSyncAttrList, NvSciSyncObj, and/or NvSciSyncFence, all such inputs must agree on the NvSciSyncModule instance.

    Definition at line 211 of file nvscisync.h.

    ◆ NvSciSyncObj

    typedef struct NvSciSyncObjRec* NvSciSyncObj

    A Synchronization Object is a container holding the reconciled NvSciSyncAttrList defining constraints of the Fence and the handle of the actual Primitive, with access permissions being enforced by the NvSciSyncAttrKey_RequiredPerm and NvSciSyncAttrKey_NeedCpuAccess Attribute Keys.

    If Timestamps have been requested prior to Reconciliation via the NvSciSyncAttrKey_WaiterRequireTimestamps key, this will also hold the Timestamp Buffer allocated by NvSciBuf.

    The object will also hold a buffer containing the task statuses of the tasks signaling this Object.

    A reference to a particular Synchronization Object.

    Note
    Every NvSciSyncObj that has been created but not freed holds a reference to the NvSciSyncModule, preventing the module from being de-initialized.

    Definition at line 311 of file nvscisync.h.

    ◆ NvSciSyncObjConst

    typedef const struct NvSciSyncObjRec* NvSciSyncObjConst

    A reference, that is not modifiable, to a particular Synchronization Object.

    Definition at line 317 of file nvscisync.h.

    Enumeration Type Documentation

    ◆ NvSciSyncAttrKey

    Describes the NvSciSync public attribute keys holding the corresponding values specifying synchronization object constraints.

    Input attribute keys specify desired synchronization object constraints and can be set/retrieved from the unreconciled NvSciSyncAttrList using NvSciSyncAttrListSetAttrs()/NvSciSyncAttrListGetAttrs() respectively. Output attribute keys specify actual constraints computed by NvSciSync if reconciliation succeeds. Output attribute keys can be retrieved from a reconciled NvSciSyncAttrList using NvSciSyncAttrListGetAttrs().

    Enumerator
    NvSciSyncAttrKey_LowerBound 

    Specifies the lower bound - for NvSciSync internal use only.

    NvSciSyncAttrKey_NeedCpuAccess 

    (bool, inout) Specifies if CPU access is required.

    During reconciliation, reconciler sets value of this key to true in the reconciled NvSciSyncAttrList if any of the unreconciled NvSciSyncAttrList(s) involved in reconciliation that is owned by the reconciler has this key set to true, otherwise it is set to false in reconciled NvSciSyncAttrList. If the user sets it to true in the unreconciled list but does not set NvSciSyncAttrKey_PrimitiveInfo, then NvSciSync will add the following values to NvSciSyncAttrKey_PrimitiveInfo attribute just before reconciliation or exporting unreconciled attribute list:

    • NvSciSyncAttrValPrimitiveType_Syncpoint
    • NvSciSyncAttrValPrimitiveType_SysmemSemaphore
    • NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b

    When importing the reconciled NvSciSyncAttrList NvSciSync will set the key to OR of values of this key in unreconciled NvSciSyncAttrList(s) relayed by the peer.

    During validation of reconciled NvSciSyncAttrList against input unreconciled NvSciSyncAttrList(s), validation succeeds if value of this attribute in the reconciled NvSciSyncAttrList is true provided any of the input unreconciled NvSciSyncAttrList(s) owned by the peer set it to true OR if value of this attribute in the reconciled NvSciSyncAttrList is false provided all of the input unreconciled NvSciSyncAttrList(s) owned by the peer set it to false.

    NvSciSyncAttrKey_RequiredPerm 

    (NvSciSyncAccessPerm, inout) Specifies the required access permissions.

    If NvSciSyncAttrKey_NeedCpuAccess is true, the CPU will be offered at least these permissions. Any hardware accelerators that contribute to this NvSciSyncAttrList will be offered at least these permissions.

    NvSciSyncAttrKey_ActualPerm 

    (NvSciSyncAccessPerm, out) Actual permission granted after reconciliation.

    Note
    This key is read-only.

    It represents the cumulative permissions of the NvSciSyncAttrKey_RequiredPerm in all NvSciSyncAttrLists being reconciled. The reconciliation fails if any of the following conditions are met:

    • no NvSciSyncAttrList with NvSciSyncAttrKey_RequiredPerm being set to NvSciSyncAccessPerm_SignalOnly,
    • more than one NvSciSyncAttrList with NvSciSyncAttrKey_RequiredPerm being set to NvSciSyncAccessPerm_SignalOnly,
    • no NvSciSyncAttrList with NvSciSyncAttrKey_RequiredPerm being set to NvSciSyncAccessPerm_WaitOnly.

    If NvSciSyncObj is obtained by calling NvSciSyncObjAlloc(), NvSciSyncAttrKey_ActualPerm is set to NvSciSyncAccessPerm_WaitSignal in the reconciled NvSciSyncAttrList corresponding to it since allocated NvSciSyncObj gets wait-signal permissions by default.

    For any peer importing the NvSciSyncObj, this key is set in the reconciled NvSciSyncAttrList to the sum of NvSciSyncAttrKey_RequiredPerm requested by the peer and all peers relaying their NvSciSyncAttrList export descriptors via it.

    During validation of reconciled NvSciSyncAttrList against input unreconciled NvSciSyncAttrList(s), validation succeeds only if NvSciSyncAttrKey_ActualPerm in reconciled is bigger or equal than NvSciSyncAttrKey_RequiredPerm of all the input unreconciled NvSciSyncAttrLists.

    NvSciSyncAttrKey_WaiterContextInsensitiveFenceExports 

    (bool, inout) Importing and then exporting an NvSciSyncFenceIpcExportDescriptor has no side effects and yields an identical NvSciSyncFenceIpcExportDescriptor even if the NvSciIpcEndpoint(s) used for import and export are different from ones used for exporting/importing NvSciSyncAttrList(s).

    If this attribute key is set to false, this indicates that the NvSciSyncFenceIpcExportDescriptor must be exported through the same IPC path as the NvSciSyncObj. Otherwise if set to true, this indicates that the NvSciSyncFenceIpcExportDescriptor must be exported via NvSciIpc through the first peer that was part of the IPC path travelled through by the NvSciSyncObj (but not necessarily an identical path).

    During reconciliation, this key is set to true in reconciled NvSciSyncAttrList if any one of the input NvSciSyncAttrList has this set to true.

    NvSciSyncAttrKey_WaiterRequireTimestamps 

    (bool, inout) Specifies if timestamps are required.

    If the waiter wishes to read timestamps then the NvSciSyncAttrKey_NeedCpuAccess key should be set to true.

    During reconciliation, reconciler sets value of this key to true in the reconciled NvSciSyncAttrList if any of the unreconciled NvSciSyncAttrList(s) involved in reconciliation has NvSciSyncAttrKey_RequiredPerm set to NvSciSyncAccessPerm_WaitOnly/NvSciSyncAccessPerm_WaitSignal and NvSciSyncAttrKey_NeedCpuAccess is set to true, otherwise it is set to false in reconciled NvSciSyncAttrList.

    NvSciSyncAttrKey_RequireDeterministicFences 

    (bool, inout) Specifies if deterministic primitives are required.

    This allows for the possibility of generating fences on the waiter's side without needing to import them. This means that the Signaler will increment the instance 0 of the primitive in NvSciSyncObj by 1 at each submission.

    During reconciliation, this key is set to true in the reconciled NvSciSyncAttrList if any one of the input NvSciSyncAttrList(s) has this set to true.

    NvSciSyncAttrKey_NumTimestampSlots 

    (uint32_t, out) Specifies the total number of slots in the timestamps buffer.

    This allows the user to iterate over the slots by incrementing the current slot index modulo _NumTimestampsSlots.

    During reconciliation, the value of this key is set to the number of slots in the timestamps buffer. If timestamps are not required by this attribute list, then the value of this key is undefined.

    NvSciSyncAttrKey_NumTaskStatusSlots 

    (uint32_t, out) Specifies the total number of slots in the task status buffer.

    This allows the user to iterate over the slots by incrementing the current slot index modulo _NumTaskStatusSlots.

    During reconciliation, the value of this key is set to the number of slots in the task status buffer. If task status is not required by this attribute list, then the value of this key will be 0.

    NvSciSyncAttrKey_MaxPrimitiveValue 

    (uint64_t, out) Specifies the maximum value of the reconciled primitive.

    During reconciliation, value of this key is set to UINT64_MAX if the reconciled primitive type is 64bit-SysmemSemaphore, otherwise value of the key is set to UINT32_MAX

    NvSciSyncAttrKey_PrimitiveInfo 

    (NvSciSyncAttrValPrimitiveType[], inout) supported primitive types.

    If set, the value of this key is used in reconciliation and determines the primitive type backing the NvSciSyncObj. If this key is not set, then it has no impact on reconciliation. During reconciliation, the reconciler sets the value of this key to the reconciled primitive type.

    The reconciliation will fail if this key is set to value which does not intersect with values of primitive type set internally by user mode drivers or NvSciSync.

    During validation of a reconciled NvSciSyncAttrList against input unreconciled NvSciSyncAttrList(s), validation succeeds if the NvSciSyncAttrValPrimitiveType in NvSciSyncAttrKey_PrimitiveInfo of the reconciled NvSciSyncAttrList is present in NvSciSyncAttrKey_PrimitiveInfo or any of the internal attributes related to NvSciSyncAttrValPrimitiveType of the input unreconciled NvSciSyncAttrLists.

    NvSciSyncAttrKey_PeerLocationInfo 

    (NvSciBufPeerLocationInfo[], inout) An attribute indicating location information of late peer which are going to gain access to the allocated NvSciSyncObj using NvSciSyncObjAttachPeer() API.

    NvSciSyncAttrKey_GpuId 

    (NvSciRmGpuId[], inout) GpuID of the GPU in the system that will access the semaphore buffer.

    NvSciSyncAttrKey_PeerHwEngineArray 

    (NvSciBufPeerHwEngine[], inout) An attribute indicating engine information of late peer which are going to gain access to the allocated NvSciSyncObj using NvSciSyncObjAttachPeer() API.

    NvSciSyncAttrKey_UpperBound 

    Specifies the upper bound - for NvSciSync internal use only.

    Definition at line 475 of file nvscisync.h.

    ◆ NvSciSyncAttrValPrimitiveTypeRec

    Types of synchronization primitives.

    Enumerator
    NvSciSyncAttrValPrimitiveType_LowerBound 

    For NvSciSync internal use only.

    NvSciSyncAttrValPrimitiveType_Syncpoint 

    Syncpoint.

    Supported only on Tegra platforms.

    NvSciSyncAttrValPrimitiveType_SysmemSemaphore 

    16 bytes semaphore backed by system memory.

    Contains space for 8-byte timestamp and 4-byte payload. Supported on Tegra and x86_64 platforms.

    NvSciSyncAttrValPrimitiveType_VidmemSemaphore 

    16 bytes semaphore backed by video memory.

    Contains space for 8-byte timestamp and 4-byte payload. Currently not supported.

    NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b 

    16 bytes semaphore backed by system memory.

    Contains space for 8-byte timestamp and 8-byte payload. Supported on Tegra and x86_64 platforms.

    NvSciSyncAttrValPrimitiveType_VidmemSemaphorePayload64b 

    16 bytes semaphore backed by video memory.

    Contains space for 8-byte timestamp and 8-byte payload. Currently not supported.

    NvSciSyncAttrValPrimitiveType_UpperBound 

    For NvSciSync internal use only.

    Definition at line 420 of file nvscisync.h.

    ◆ NvSciSyncTaskStatusVal

    Status of the signaler's task that signals a particular NvSciSyncFence.

    This is defined as an enum but will be kept in a 16-bit field of a slot in the shared task status buffer.

    A value outside of range defined here is an engine specific failure.

    Enumerator
    NvSciSyncTaskStatus_Success 

    The task has completed successfully.

    NvSciSyncTaskStatus_Failure 

    The task has failed.

    NvSciSyncTaskStatus_Invalid 

    The signaler did not report any task status.

    The default value set by NvSciSync when a new slot is requested.

    Definition at line 387 of file nvscisync.h.

    ◆ NvSciSyncWaitMode

    Modes of CPU waiting.

    Enumerator
    NvSciSyncWaitMode_Default 

    same behavior as with NvSciSyncFenceWait()

    NvSciSyncWaitMode_BusyWithYield 

    Polling with processor yielding.

    NvSciSyncWaitMode_BusyNoYield 

    Polling with spin, no yielding.

    NvSciSyncWaitMode_Blocking 

    Blocked wait, released by a trigger, like an interrupt.

    Definition at line 682 of file nvscisync.h.

    Function Documentation

    ◆ NvSciSyncAttrListAndObjFreeDesc()

    void NvSciSyncAttrListAndObjFreeDesc ( void *  attrListAndObjDescBuf)

    Frees an NvSciSyncIpcExportAttrListAndObj descriptor returned by a successful call to NvSciSyncIpcExportAttrListAndObj.

    Does nothing for NULL.

    Parameters
    [in]attrListAndObjDescBufExported NvSciSyncIpcExportAttrListAndObj descriptor to be freed.
    Returns
    void
    • Panics if Init Mode API is called in Runtime Mode.
    Precondition
    • Valid NvSciSyncAttrListAndObj export descriptor is obtained


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions:
        • Provided there is no active operation involving the input attrListAndObjDescBuf to be freed
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListAppendUnreconciled()

    NvSciError NvSciSyncAttrListAppendUnreconciled ( const NvSciSyncAttrList  inputUnreconciledAttrListArray[],
    size_t  inputUnreconciledAttrListCount,
    NvSciSyncAttrList newUnreconciledAttrList 
    )

    Appends multiple unreconciled NvSciSyncAttrLists together, forming a single new unreconciled NvSciSyncAttrList with a slot count equal to the sum of all the slot counts of NvSciSyncAttrList(s) in the input array which is no longer writable.

    Parameters
    [in]inputUnreconciledAttrListArrayArray containing the unreconciled NvSciSyncAttrList(s) to be appended together. Valid value: Array of unreconciled NvSciSyncAttrList(s) where the array size is at least 1.
    [in]inputUnreconciledAttrListCountNumber of unreconciled NvSciSyncAttrList(s) in inputUnreconciledAttrListArray. Valid value: inputUnreconciledAttrListCount is valid input if it is non-zero.
    [out]newUnreconciledAttrListAppended NvSciSyncAttrList created out of the input unreconciled NvSciSyncAttrList(s). The output NvSciSyncAttrList is non-writable.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_InvalidState if the Init Mode API check fails.
    • NvSciError_BadParameter if any of the following occurs:
      • inputUnreconciledAttrListArray is NULL
      • inputUnreconciledAttrListCount is 0
      • an NvSciSyncAttrList appears multiple times in inputUnreconciledAttrListArray
      • newUnreconciledAttrList is NULL
      • any of the input NvSciSyncAttrLists in inputUnreconciledAttrListArray are not unreconciled
      • not all the NvSciSyncAttrLists in inputUnreconciledAttrListArray are bound to the same NvSciSyncModule instance.
    • NvSciError_InsufficientMemory if there is insufficient system memory to create the new unreconciled NvSciSyncAttrList.
    • NvSciError_Overflow if the combined slot counts of all the input NvSciSyncAttrLists exceeds UINT64_MAX
    • NvSciError_InvalidState if no more references can be taken for NvSciSyncModule associated with the NvSciSyncAttrList in inputUnreconciledAttrListArray to create the new NvSciSyncAttrList.
    • Panics if any of the input NvSciSyncAttrLists are not valid
    Precondition
    • Valid unreconciled NvSciSyncAttrList(s) are obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListClone()

    NvSciError NvSciSyncAttrListClone ( NvSciSyncAttrList  origAttrList,
    NvSciSyncAttrList newAttrList 
    )

    Clones an NvSciSyncAttrList.

    The cloned NvSciSyncAttrList will contain slot count, reconciliation type and all the attribute values of the original NvSciSyncAttrList. If the original NvSciSyncAttrList is unreconciled, then modification will be allowed on the cloned NvSciSyncAttrList using set attributes APIs even if the attributes had been set in the original NvSciSyncAttrList, but the calls to set attributes in either NvSciSyncAttrList will not affect the other.

    Parameters
    [in]origAttrListNvSciSyncAttrList to be cloned.
    [out]newAttrListThe new NvSciSyncAttrList.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListCreate()

    NvSciError NvSciSyncAttrListCreate ( NvSciSyncModule  module,
    NvSciSyncAttrList attrList 
    )

    Creates a new, single-slot unreconciled NvSciSyncAttrList associated with the input NvSciSyncModule with empty NvSciSyncAttrKeys.

    Parameters
    [in]moduleThe NvSciSyncModule instance with which to associate the new NvSciSyncAttrList.
    [out]attrListThe new NvSciSyncAttrList.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid NvSciSyncModule is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListFree()

    void NvSciSyncAttrListFree ( NvSciSyncAttrList  attrList)

    Frees the NvSciSyncAttrList and removes its association with the NvSciSyncModule with which it was created.

    Parameters
    [in]attrListThe NvSciSyncAttrList to be freed.
    Returns
    void
    • Panics if:
      • Init Mode API is called in Runtime Mode.
      • attrList is not valid.
    Precondition
    • Valid NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions:
        • Provided there is no active operation involving the input NvSciSyncAttrList attrList
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListFreeDesc()

    void NvSciSyncAttrListFreeDesc ( void *  descBuf)

    Frees an exported NvSciSyncAttrList descriptor previously returned by any NvSciSyncAttrList exporting function.

    Parameters
    [in]descBufThe exported NvSciSyncAttrList descriptor to be freed. The valid value is non-NULL.
    Returns
    void
    • Panics if Init Mode API is called in Runtime Mode.
    Precondition
    ID-BEGIN:-{Valid_Descriptor}ID-END- Valid NvSciIpcEndpoint is obtained. ASIL-BEGIN:-ASILDASIL-END-
    Postcondition
    ID-BEGIN:-{Success}ID-END- descBuf is freed. ASIL-BEGIN:-ASILDASIL-END-


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions:
        • Provided there is no active operation involving the input descBuf to be freed
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListGetAttr()

    NvSciError NvSciSyncAttrListGetAttr ( NvSciSyncAttrList  attrList,
    NvSciSyncAttrKey  key,
    const void **  value,
    size_t *  len 
    )

    Gets the attribute value from the slot 0 of the passed NvSciSyncAttrList with the given NvSciSyncAttrKey.

    If an NvSciSyncAttrKey was not set, this function will set *value to NULL and *len to 0.

    Parameters
    [in]attrListNvSciSyncAttrList to retrieve the NvSciSyncAttrKey and value from.
    [in]keyNvSciSyncAttrKey for which value to retrieve. Valid value: key is a valid input if it is an input or input/output attribute and it is > NvSciSyncAttrKey_LowerBound and < NvSciSyncAttrKey_UpperBound
    [out]valueA pointer to the location where the attribute value is written.
    [out]lenLength of the value.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncAttrListGetAttrs()

    NvSciError NvSciSyncAttrListGetAttrs ( NvSciSyncAttrList  attrList,
    NvSciSyncAttrKeyValuePair pairArray,
    size_t  pairCount 
    )

    Gets the value of NvSciSyncAttrKey from slot 0 of the input NvSciSyncAttrList.

    The return values, stored in NvSciSyncAttrKeyValuePair, consist of const void* pointers to the attribute values from NvSciSyncAttrList. The application must not write to this data. If an attribute was never set, the corresponding value will be set to NULL and length to 0.

    Parameters
    [in]attrListNvSciSyncAttrList to retrieve the value for given NvSciSyncAttrKey(s) from
    [in,out]pairArrayA pointer to the array of NvSciSyncAttrKeyValuePair. Valid value: pairArray is valid input if it is not NULL and key member of every NvSciSyncAttrKeyValuePair in the array > NvSciSyncAttrKey_LowerBound and < NvSciSyncAttrKey_UpperBound.
    [in]pairCountThe number of elements/entries in pairArray. Valid value: pairCount is valid input if it is non-zero.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncAttrListGetSlotCount()

    size_t NvSciSyncAttrListGetSlotCount ( NvSciSyncAttrList  attrList)

    Gets the slot count of the given NvSciSyncAttrList.

    Parameters
    [in]attrListNvSciSyncAttrList to get the slot count from.
    Returns
    Number of slots or 0 if attrList is NULL or panic if attrList is not valid
    Precondition
    • Valid NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncAttrListIpcExportReconciled()

    NvSciError NvSciSyncAttrListIpcExportReconciled ( const NvSciSyncAttrList  reconciledAttrList,
    NvSciIpcEndpoint  ipcEndpoint,
    void **  descBuf,
    size_t *  descLen 
    )

    Transforms the reconciled NvSciSyncAttrList to an exportable reconciled NvSciSyncAttrList descriptor that can be transported by the application to any remote process as a serialized set of bytes over an NvSciIpc channel.

    Parameters
    [in]reconciledAttrListThe NvSciSyncAttrList to be exported.
    [in]ipcEndpointThe NvSciIpcEndpoint through which the caller may send the exported reconciled NvSciSyncAttrList descriptor.
    [out]descBufA pointer to the new reconciled NvSciSyncAttrList descriptor, which the caller can deallocate later using NvSciSyncAttrListFreeDesc().
    [out]descLenThe size of the new reconciled NvSciSyncAttrList descriptor.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    ID-BEGIN:-{Valid_IpcEndpoint}ID-END- Valid NvSciIpcEndpoint is obtained. ASIL-BEGIN:-ASILDASIL-END-
    ID-BEGIN:-{Valid_list}ID-END- Valid unreconciled NvSciSyncAttrList(s) are obtained. ASIL-BEGIN:-ASILDASIL-END-
    Postcondition
    ID-BEGIN:-{Success}ID-END- If returns NvSciError_Success then descBuf and descLen contain an export descriptor of the input reconciled NvSciSyncAttrList. ASIL-BEGIN:-ASILDASIL-END-
    ID-BEGIN:-{Panic}ID-END- If the input NvSciSyncAttrList is not valid, it panics. ASIL-BEGIN:-ASILDASIL-END-
    ID-BEGIN:-{Error}ID-END- If could not prepare the export descriptor, then the return value differs from NvSciError_Success. ASIL-BEGIN:-ASILDASIL-END-


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListIpcExportUnreconciled()

    NvSciError NvSciSyncAttrListIpcExportUnreconciled ( const NvSciSyncAttrList  unreconciledAttrListArray[],
    size_t  unreconciledAttrListCount,
    NvSciIpcEndpoint  ipcEndpoint,
    void **  descBuf,
    size_t *  descLen 
    )

    Transforms the input unreconciled NvSciSyncAttrList(s) to an exportable unreconciled NvSciSyncAttrList descriptor that can be transported by the application to any remote process as a serialized set of bytes over an NvSciIpc channel.

    Note
    When exporting an array containing multiple unreconciled NvSciSyncAttrLists, the importing endpoint still imports just one unreconciled NvSciSyncAttrList. This unreconciled NvSciSyncAttrList is referred to as a multi-slot NvSciSyncAttrList. It logically represents an array of NvSciSyncAttrLists, where each key has an array of values, one per slot.
    Parameters
    [in]unreconciledAttrListArrayNvSciSyncAttrList(s) to be exported. Valid value: Array of valid NvSciSyncAttrList(s) where the array size is at least 1.
    [in]unreconciledAttrListCountNumber of NvSciSyncAttrList(s) in unreconciledAttrListArray. Valid value: unreconciledAttrListCount is valid input if it is non-zero.
    [in]ipcEndpointThe NvSciIpcEndpoint through which the caller may send the exported unreconciled NvSciSyncAttrList descriptor.
    [out]descBufA pointer to the new unreconciled NvSciSyncAttrList descriptor, which the caller can deallocate later using NvSciSyncAttrListFreeDesc().
    [out]descLenThe size of the new unreconciled NvSciSyncAttrList descriptor.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_InvalidState if the Init Mode API check fails.
    • NvSciError_BadParameter if any of the following occurs:
      • unreconciledAttrListCount is 0
      • unreconciledAttrListArray is NULL
      • ipcEndpoint is not a valid NvSciIpcEndpoint
      • descBuf is NULL
      • descLen is NULL
      • any of the input NvSciSyncAttrLists is not unreconciled
      • Not all of the NvSciSyncAttrLists in unreconciledAttrListArray are bound to the same NvSciSyncModule instance.
      • an NvSciSyncAttrList appears multiple times in unreconciledAttrListArray
    • NvSciError_InsufficientMemory if memory allocation failed.
    • NvSciError_InvalidState if no more references can be taken for the NvSciSyncModule associated with unreconciledAttrListArray.
    • NvSciError_Overflow if the combined slot count of all the unreconciled NvSciSyncAttrList exceeds UINT64_MAX
    • NvSciError_ResourceError if system lacks resource other than memory or there was a problem with NvSciIpc
    • NvSciError_NoSpace if no space is left in transport buffer to append the key-value pair.
    • Panic if any of the input NvSciSyncAttrLists is not valid.
    Precondition
    ID-BEGIN:-{Valid_IpcEndpoint}ID-END- Valid NvSciIpcEndpoint is obtained. ASIL-BEGIN:-asilDASIL-END-
    ID-BEGIN:-{Valid_list}ID-END- Valid unreconciled NvSciSyncAttrList(s) are obtained. ASIL-BEGIN:-asilDASIL-END-
    Postcondition
    ID-BEGIN:-{Success}ID-END- If returns NvSciError_Success then descBuf and descLen contain an export descriptor of the input array of unreconciled NvSciSyncAttrList(s). ASIL-BEGIN:-asilDASIL-END-
    ID-BEGIN:-{Panic}ID-END- If any of the input NvSciSyncAttrLists is not valid, it panics. ASIL-BEGIN:-asilDASIL-END-
    ID-BEGIN:-{Error}ID-END- If could not prepare the export descriptor, then the return value differs from NvSciError_Success. ASIL-BEGIN:-asilDASIL-END-


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListIpcImportReconciled()

    NvSciError NvSciSyncAttrListIpcImportReconciled ( NvSciSyncModule  module,
    NvSciIpcEndpoint  ipcEndpoint,
    const void *  descBuf,
    size_t  descLen,
    const NvSciSyncAttrList  inputUnreconciledAttrListArray[],
    size_t  inputUnreconciledAttrListCount,
    NvSciSyncAttrList importedReconciledAttrList 
    )

    Translates an exported reconciled NvSciSyncAttrList descriptor (potentially received from any process) into a reconciled NvSciSyncAttrList.

    It also validates that the reconciled NvSciSyncAttrList to be imported will be a reconciled NvSciSyncAttrList that is consistent with the constraints in an array of input unreconciled NvSciSyncAttrList(s). This is recommended while importing what is expected to be a reconciled NvSciSyncAttrList to cause NvSciSync to validate the reconciled NvSciSyncAttrList against the input unreconciled NvSciSyncAttrList(s), so that the importing process can be sure that an NvSciSyncObj will satisfy the input constraints.

    Parameters
    [in]moduleThe NvSciSyncModule instance with which to associate the imported NvSciSyncAttrList.
    [in]ipcEndpointThe NvSciIpcEndpoint through which the caller receives the exported reconciled NvSciSyncAttrList descriptor.
    [in]descBufThe reconciled NvSciSyncAttrList descriptor to be transformed into a reconciled NvSciSyncAttrList. Valid value: descBuf is valid if it is non-NULL.
    [in]descLenThe size of the reconciled NvSciSyncAttrList descriptor. Valid value: descLen is valid if it is not 0.
    [in]inputUnreconciledAttrListArrayThe array of NvSciSyncAttrLists against which the new NvSciSyncAttrList is to be validated. Valid value: Array of valid NvSciSyncAttrList(s)
    [in]inputUnreconciledAttrListCountThe number of NvSciSyncAttrLists in inputUnreconciledAttrListArray. If inputUnreconciledAttrListCount is non-zero, then this operation will fail with an error unless all the constraints of all the NvSciSyncAttrLists in inputUnreconciledAttrListArray are met by the imported NvSciSyncAttrList. Valid value: [0, SIZE_MAX]
    [out]importedReconciledAttrListImported NvSciSyncAttrList.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_InvalidState if the Init Mode API check fails.
    • NvSciError_BadParameter if any of the following occurs:
      • module is NULL
      • ipcEndpoint is not a valid NvSciIpcEndpoint
      • the array of bytes indicated by descBuf and descLen do not constitute a valid exported NvSciSyncAttrList descriptor for a reconciled NvSciSyncAttrList
      • inputUnreconciledAttrListArray is NULL but inputUnreconciledAttrListCount is not 0
      • any of the NvSciSyncAttrLists in inputUnreconciledAttrListArray are not unreconciled
      • any of the NvSciSyncAttrLists in inputUnreconciledAttrListArray is not bound to module.
      • an NvSciSyncAttrList appears multiple times in inputUnreconciledAttrListArray
      • importedReconciledAttrList is NULL
    • NvSciError_AttrListValidationFailed if the NvSciSyncAttrList to be imported either would not be a reconciled NvSciSyncAttrList or would not meet at least one of constraints in one of the input unreconciled NvSciSyncAttrLists.
    • NvSciError_InsufficientMemory if memory allocation failed.
    • NvSciError_InvalidState if no more references can be taken on the NvSciSyncModule.
    • NvSciError_Overflow if internal integer overflow is detected.
    • NvSciError_ResourceError if system lacks resource other than memory.
    • Panics if module or any of the input NvSciSyncAttrLists are not valid
    Precondition
    • Valid NvSciIpcEndpoint is obtained.
    • Valid NvSciSyncModule is obtained.
    • Valid reconciled NvSciSyncAttrList export descriptor is obtained.
    • Valid unreconciled NvSciSyncAttrList(s) are obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListIpcImportUnreconciled()

    NvSciError NvSciSyncAttrListIpcImportUnreconciled ( NvSciSyncModule  module,
    NvSciIpcEndpoint  ipcEndpoint,
    const void *  descBuf,
    size_t  descLen,
    NvSciSyncAttrList importedUnreconciledAttrList 
    )

    Transforms an exported unreconciled NvSciSyncAttrList descriptor (potentially received from any process) into an unreconciled NvSciSyncAttrList which is no longer writable.

    Parameters
    [in]moduleThe NvSciSyncModule instance with which to associate the imported NvSciSyncAttrList.
    [in]ipcEndpointThe NvSciIpcEndpoint through which the caller receives the exported unreconciled NvSciSyncAttrList descriptor.
    [in]descBufThe unreconciled NvSciSyncAttrList descriptor to be translated into an unreconciled NvSciSyncAttrList. It should be the result of NvSciSyncAttrListIpcExportUnreconciled Valid value: descBuf is valid input if it is non-NULL.
    [in]descLenThe size of the unreconciled NvSciSyncAttrList descriptor. Valid value: descLen is valid input if it is not 0.
    [out]importedUnreconciledAttrListImported unreconciled NvSciSyncAttrList.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid NvSciIpcEndpoint is obtained.
    • Valid NvSciSyncModule is obtained.
    • Valid unreconciled NvSciSyncAttrList export descriptor is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListIsReconciled()

    NvSciError NvSciSyncAttrListIsReconciled ( NvSciSyncAttrList  attrList,
    bool *  isReconciled 
    )

    Checks whether the NvSciSyncAttrList is reconciled.

    Parameters
    [in]attrListNvSciSyncAttrList to check.
    [out]isReconciledA pointer to a boolean to store whether the attrList is reconciled or not.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListReconcile()

    NvSciError NvSciSyncAttrListReconcile ( const NvSciSyncAttrList  inputArray[],
    size_t  inputCount,
    NvSciSyncAttrList newReconciledList,
    NvSciSyncAttrList newConflictList 
    )

    Reconciles the input unreconciled NvSciSyncAttrLists into a new reconciled NvSciSyncAttrList.

    On success, this API call allocates memory for the reconciled NvSciSyncAttrList which has to be freed by the caller using NvSciSyncAttrListFree(). On reconciliation failure, this API call allocates memory for the conflicting NvSciSyncAttrList which has to be freed by the caller using NvSciSyncAttrListFree().

    Parameters
    [in]inputArrayArray containing unreconciled NvSciSyncAttrLists to be reconciled. Valid value: Array of valid NvSciSyncAttrLists where the array size is at least 1
    [in]inputCountThe number of unreconciled NvSciSyncAttrLists in inputArray. Valid value: inputCount is valid input if is non-zero.
    [out]newReconciledListReconciled NvSciSyncAttrList. This field is populated only if the reconciliation succeeded.
    [out]newConflictListUnreconciled NvSciSyncAttrList consisting of the key/value pairs which caused the reconciliation failure. This field is populated only if the reconciliation failed.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_InvalidState if the Init Mode API check fails.
    • NvSciError_BadParameter if any of the following occurs:
      • inputCount is 0
      • any of the input NvSciSyncAttrLists are not unreconciled
      • not all the NvSciSyncAttrLists in inputArray are bound to the same NvSciSyncModule instance.
      • any of the attributes in any of the input NvSciSyncAttrLists has an invalid value for that attribute
      • inputArray is NULL
      • newReconciledList is NULL
      • an NvSciSyncAttrList appears multiple times in inputArray
    • newConflictList is NULL
    • NvSciError_InsufficientMemory if memory allocation failed.
    • NvSciError_InvalidState if a new NvSciSyncAttrList cannot be associated with the NvSciSyncModule associated with the NvSciSyncAttrList(s) in the given inputArray to create a new reconciled NvSciSyncAttrList
    • NvSciError_Overflow if internal integer overflow is detected.
    • NvSciError_ReconciliationFailed if reconciliation failed because of conflicting attributes
    • NvSciError_UnsupportedConfig if any of the following occurs:
      • there is an attribute mismatch between signaler and waiters
      • an unsuported combination of attributes is requested
    • Panics if any of the input NvSciSyncAttrLists is not valid
    Precondition
    • Valid unreconciled NvSciSyncAttrList(s) are obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListReconcileAndObjAlloc()

    NvSciError NvSciSyncAttrListReconcileAndObjAlloc ( const NvSciSyncAttrList  inputArray[],
    size_t  inputCount,
    NvSciSyncObj syncObj,
    NvSciSyncAttrList newConflictList 
    )

    Reconciles the input unreconciled NvSciSyncAttrList(s) into a new reconciled NvSciSyncAttrList.

    If successful, a reconciled NvSciSyncAttrList will be associated with a newly-allocated NvSciSyncObj that satisfies all the constraints specified in the reconciled NvSciSyncAttrList.

    Note: This function serves as a convenience function that combines calls to NvSciSyncAttrListReconcile and NvSciSyncObjAlloc.

    Parameters
    [in]inputArrayArray containing the unreconciled NvSciSyncAttrList(s) to reconcile. Valid value: Array of valid NvSciSyncAttrLists where the array size is at least 1
    [in]inputCountNumber of unreconciled NvSciSyncAttrLists in inputArray. Valid value: inputCount is valid input if is non-zero.
    [out]syncObjThe new NvSciSyncObj.
    [out]newConflictListunreconciled NvSciSyncAttrList consisting of the key-value pairs which caused the reconciliation failure. Valid value: This parameter is a valid output parameter only if the return code is NvSciError_ReconciliationFailed
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_InvalidState if the Init Mode API check fails.
    • NvSciError_BadParameter if any of the following occurs:
      • inputCount is 0
      • inputArray is NULL
      • syncObj is NULL
      • not all the NvSciSyncAttrLists in inputArray are bound to the same NvSciSyncModule instance
      • any of the attributes in any of the input NvSciSyncAttrLists has an invalid value for that attribute
      • if any of the NvSciSyncAttrList in inputArray are not unreconciled
      • an NvSciSyncAttrList appears multiple times in inputArray
    • newConflictList is NULL
    • NvSciError_InsufficientMemory if memory allocation failed.
    • NvSciError_InvalidState if the newly created NvSciSyncObj cannot be associated with the NvSciSyncModule with which the NvSciSyncAttrList(s) in inputArray are associated.
    • NvSciError_ReconciliationFailed if reconciliation failed.
    • NvSciError_ResourceError if system lacks resource other than memory.
    • NvSciError_UnsupportedConfig if there is an NvSciSyncAttrList mismatch between Signaler and Waiters.
    • Panics if any of the input NvSciSyncAttrLists are not valid
    Precondition
    • Valid unreconciled NvSciSyncAttrList(s) are obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListSetAttrs()

    NvSciError NvSciSyncAttrListSetAttrs ( NvSciSyncAttrList  attrList,
    const NvSciSyncAttrKeyValuePair pairArray,
    size_t  pairCount 
    )

    Sets the values for NvSciSyncAttrKey(s) in slot 0 of the input NvSciSyncAttrList.

    Reads values only during the call, saving copies. Only allows writing attributes once, making them non writable in the NvSciSyncAttrList.

    Parameters
    [in]attrListAn unreconciled NvSciSyncAttrList containing the attribute key and value to set.
    [in]pairArrayArray of NvSciSyncAttrKeyValuePair. Valid value: pairArray is valid input if it is not NULL and key member of every NvSciSyncAttrKeyValuePair in the array is an input or input/output attribute and it is > NvSciSyncAttrKey_LowerBound and < NvSciSyncAttrKey_UpperBound and value member of every NvSciSyncAttrKeyValuePair in the array is not NULL.
    [in]pairCountThe number of elements/entries in pairArray. Valid value: pairCount is valid input if it is non-zero.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_InvalidState if the Init Mode API check fails.
    • NvSciError_BadParameter if any of the following occurs:
      • pairArray is NULL
      • attrList is NULL
      • attrList is not unreconciled and/or not writable,
      • pairCount is 0
      • pairArray has duplicate keys
      • any of the keys in pairArray is not a supported public key
      • any of the values in pairArray is NULL
      • any of the len(s) in pairArray is invalid for a given attribute
      • any of the attributes to be written is non-writable in attrList
    • Panics if attrList is not valid
    Precondition
    • Valid unreconciled NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListSlotGetAttrs()

    NvSciError NvSciSyncAttrListSlotGetAttrs ( NvSciSyncAttrList  attrList,
    size_t  slotIndex,
    NvSciSyncAttrKeyValuePair pairArray,
    size_t  pairCount 
    )

    Gets the value(s) of NvSciSyncAttrKey(s) from an NvSciSyncAttrList at given slot index in a multi-slot unreconciled NvSciSyncAttrList.

    The returned pairArray consist of const void* pointers to the actual attribute values from NvSciSyncAttrList. The application must not overwrite this data. If an attribute was never set, the corresponding value will be set to NULL and length to 0.

    Parameters
    [in]attrListNvSciSyncAttrList to retrieve the NvSciSyncAttrKey and value from.
    [in]slotIndexIndex in the NvSciSyncAttrList. Valid value: 0 to slot count of NvSciSyncAttrList - 1.
    [in,out]pairArrayArray of NvSciSyncAttrKeyValuePair. Holds the NvSciSyncAttrKey(s) passed into the function and returns an array of NvSciSyncAttrKeyValuePair structures. Valid value: pairArray is valid input if it is not NULL and key member of every NvSciSyncAttrKeyValuePair in the array > NvSciSyncAttrKey_LowerBound and < NvSciSyncAttrKey_UpperBound.
    [in]pairCountIndicates the number of elements/entries in pairArray. Valid value: pairCount is valid input if it is non-zero.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_BadParameter if any of the following occurs:
      • slotIndex is not a valid slot in attrList
      • attrList is NULL
      • pairArray is NULL
      • pairCount is 0
      • any of the keys in pairArray is not a NvSciSyncAttrKey
    • Panics if attrList is not valid
    Precondition
    • Valid NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncAttrListValidateReconciled()

    NvSciError NvSciSyncAttrListValidateReconciled ( NvSciSyncAttrList  reconciledAttrList,
    const NvSciSyncAttrList  inputUnreconciledAttrListArray[],
    size_t  inputUnreconciledAttrListCount,
    bool *  isReconciledListValid 
    )

    Validates a reconciled NvSciSyncAttrList against a set of input unreconciled NvSciSyncAttrLists.

    Parameters
    [in]reconciledAttrListReconciled NvSciSyncAttrList to be validated.
    [in]inputUnreconciledAttrListArrayArray containing the unreconciled NvSciSyncAttrLists used for validation. Valid value: Array of valid unreconciled NvSciSyncAttrLists
    [in]inputUnreconciledAttrListCountnumber of elements/indices in inputUnreconciledAttrListArray Valid value: [1, SIZE_MAX]
    [out]isReconciledListValidA pointer to a boolean to store whether the reconciled NvSciSyncAttrList satisfies the parameters of set of unreconciled NvSciSyncAttrList(s) or not.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_InvalidState if the Init Mode API check fails.
    • NvSciError_BadParameter if any of the following occurs:
      • inputUnreconciledAttrListArray is NULL
      • inputUnreconciledAttrListCount is 0
      • an NvSciSyncAttrList appears multiple times in inputUnreconciledAttrListArray
      • isReconciledListValid is NULL
      • any of the input NvSciSyncAttrLists in inputUnreconciledAttrListArray are not unreconciled
      • reconciledAttrList is NULL or not reconciled
      • not all the NvSciSyncAttrLists in inputUnreconciledAttrListArray and the reconciledAttrList are bound to the same NvSciSyncModule instance.
      • reconciled NvSciSyncAttrList does not satisfy the unreconciled NvSciSyncAttrLists requirements.
    • NvSciError_InsufficientMemory if there is insufficient system memory to create temporary data structures
    • NvSciError_Overflow if internal integer overflow occurs.
    • Panics if reconciledAttrList or any of the input unreconciled NvSciSyncAttrList are not valid.
    Precondition
    • Valid reconciled NvSciSyncAttrList is obtained.
    • Valid unreconciled NvSciSyncAttrList(s) are obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncAttrListValidateReconciledAgainstAttrs()

    NvSciError NvSciSyncAttrListValidateReconciledAgainstAttrs ( NvSciSyncAttrList  reconciledAttrList,
    const NvSciSyncAttrKeyValuePair pairArray,
    size_t  pairCount,
    NvSciSyncAccessPerm  permissions 
    )

    Validates reconciledAttrList against the set of input attributes that the user has set in the unreconciled NvSciSyncAttrList(s).

    This API provides the safety mechanism to detect and report any reconciliation errors

    Parameters
    [in]reconciledAttrListUnused
    [in]pairArrayUnused
    [in]pairCountUnused
    [in]permissionsUnused
    Returns
    NvSciError, the completion code of this operation:
    Note
    This is a no-op.
    Precondition
    • Valid reconciled NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncCheckVersionCompatibility()

    NvSciError NvSciSyncCheckVersionCompatibility ( uint32_t  majorVer,
    uint32_t  minorVer,
    bool *  isCompatible 
    )

    Checks if the loaded library version is compatible with the version the application was compiled against.

    This function checks the version of all dependent libraries and sets the output variable to true if all libraries are compatible and all in parameters valid, else sets output to false.

    Parameters
    [in]majorVerbuild major version. Valid value: valid if set to NvSciSyncMajorVersion
    [in]minorVerbuild minor version. Valid value: valid if set to <= NvSciSyncMinorVersion
    [out]isCompatiblepointer to the bool holding the result.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • None


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No
    • failed to check dependent library versions.

    ◆ NvSciSyncCpuWaitContextAlloc()

    NvSciError NvSciSyncCpuWaitContextAlloc ( NvSciSyncModule  module,
    NvSciSyncCpuWaitContext newContext 
    )

    Allocates a new NvSciSyncCpuWaitContext.

    Parameters
    [in]moduleNvSciSyncModule instance with which to associate the new NvSciSyncCpuWaitContext.
    [out]newContextThe new NvSciSyncCpuWaitContext.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid NvSciSyncModule is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncCpuWaitContextFree()

    void NvSciSyncCpuWaitContextFree ( NvSciSyncCpuWaitContext  context)

    Releases the NvSciSyncCpuWaitContext.

    Parameters
    [in]contextNvSciSyncCpuWaitContext to be freed.
    Returns
    void
    • Panics if:
      • Init Mode API is called in Runtime Mode.
      • NvSciSyncModule associated with context is not valid.
    Precondition
    • Valid NvSciSyncCpuWaitContext is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions:
        • Provided there is no active operation involving the input NvSciSyncCpuWaitContext context
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncFenceAddTaskStatusSlot()

    NvSciError NvSciSyncFenceAddTaskStatusSlot ( NvSciSyncFence syncFence,
    uint32_t  taskStatusSlot 
    )

    Sets the current task status slot index to the NvSciSyncFence.

    Parameters
    [in,out]syncFenceobject of type NvSciSyncFence
    [in]taskStatusSlotindex of the task status slot to set in NvSciSyncFence. Valid value: [0, number-of-task-status-slots - 1]
    Returns
    NvSciError
    • NvSciError_Success if successful
    • NvSciError_ClearedFence if syncFence is cleared
    • NvSciError_BadParameter if any of the following occurs:
      • syncFence is NULL
      • task status is not supported by NvSciSyncObj associated with syncFence
      • taskStatusSlot is invalid slot index
    • Panics if NvSciSyncObj associated with syncFence is not valid.
    Precondition
    • Valid NvSciSyncFence* is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: No
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncFenceAddTimestampSlot()

    NvSciError NvSciSyncFenceAddTimestampSlot ( NvSciSyncFence syncFence,
    uint32_t  timestampSlot 
    )

    Sets the current timestamp slot index in the NvSciSyncFence.

    Parameters
    [in,out]syncFenceobject of type NvSciSyncFence
    [in]timestampSlotindex of the timestamp slot to set in NvSciSyncFence. Valid value: [0, number-of-timestamp-slots - 1]
    Returns
    NvSciError
    • NvSciError_Success if successful
    • NvSciError_ClearedFence if syncFence is cleared
    • NvSciError_BadParameter if any of the following occurs:
      • syncFence is NULL
      • timestamps are not supported by NvSciSyncObj associated with the syncFence
      • timestampSlot is invalid slot index
    • Panics if NvSciSyncObj associated with syncFence is not valid.
    Precondition
    • Valid NvSciSyncFence* is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: No
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncFenceClear()

    void NvSciSyncFenceClear ( NvSciSyncFence syncFence)

    Frees any resources allocated for the NvSciSyncFence.

    Upon return, the memory pointed to by the NvSciSyncFence is guaranteed to be all zeros and thus the NvSciSyncFence is returned to the cleared state.

    Parameters
    [in,out]syncFenceA pointer to NvSciSyncFence.
    Returns
    void
    • Panics if the NvSciSyncObj associated with syncFence is not valid
    Precondition
    • Valid NvSciSyncFence* is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions:
        • Provided there is no active operation involving the syncFence to be cleared
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncFenceDup()

    NvSciError NvSciSyncFenceDup ( const NvSciSyncFence srcSyncFence,
    NvSciSyncFence dstSyncFence 
    )

    Duplicates the given NvSciSyncFence, such that any wait on duplicated NvSciSyncFence will complete at the same time as a wait on given NvSciSyncFence.

    If the given NvSciSyncFence is in a cleared state, then so also will be the duplicated NvSciSyncFence. The given NvSciSyncFence will be cleared before the duplication. If the given NvSciSyncFence holds any reference on a NvSciSyncObj, then the duplicated NvSciSyncFence will create an additional reference on it.

    Parameters
    [in]srcSyncFenceNvSciSyncFence to duplicate.
    [out]dstSyncFenceduplicated NvSciSyncFence.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Both arguments are pointers to valid NvSciSyncFences.
    • Input pointers point to different NvSciSyncFences.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions:
        • Provided there is no active operation involving the dstSyncFence if it had previously been associated with an NvSciSyncObj
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncFenceExtractFence()

    NvSciError NvSciSyncFenceExtractFence ( const NvSciSyncFence syncFence,
    uint64_t *  id,
    uint64_t *  value 
    )

    Extracts the id and value from the input NvSciSyncFence.

    Parameters
    [in]syncFenceNvSciSyncFence from which the id and value should be retrieved
    [out]idNvSciSyncFence id
    [out]valueNvSciSyncFence value
    Returns
    NvSciError
    • NvSciError_Success if successful
    • NvSciError_BadParameter if syncFence is NULL or invalid or id/value are NULL
    • NvSciError_ClearedFence if syncFence is a valid cleared NvSciSyncFence
    • Panics if the NvSciSyncObj associated with the syncFence is invalid
    Precondition
    • Valid NvSciSyncFence* is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncFenceExtractTimestampSlot()

    NvSciError NvSciSyncFenceExtractTimestampSlot ( NvSciSyncFence syncFence,
    uint32_t *  timeStampSlot 
    )

    Reads the current timestamp slot index from the NvSciSyncFence.

    Parameters
    [in]syncFenceobject of type NvSciSyncFence
    [out]timestampSlotindex of the timestmp slot in NvSciSyncFence.
    Returns
    NvSciError
    • NvSciError_Success if successful
    • NvSciError_ClearedFence if syncFence is cleared
    • NvSciError_BadParameter if any of the following occurs:
      • any argument is NULL
      • timestamps are not supported by NvSciSyncObj associated with
      • syncFence does not support timestamps
    • Panics if NvSciSyncObj associated with syncFence is not valid.
    Precondition
    • Valid NvSciSyncFence* is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: No
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncFenceGetTaskStatus()

    NvSciError NvSciSyncFenceGetTaskStatus ( const NvSciSyncFence syncFence,
    NvSciSyncTaskStatus *  taskStatus 
    )

    Reads the task status associated with the NvSciSyncFence and stores it in the user provided out parameter.

    Parameters
    [in]syncFenceobject of type NvSciSyncFence
    [out]taskStatususer provided struct to store the result
    Returns
    NvSciError
    • NvSciError_Success if successful
    • NvSciError_ClearedFence if syncFence is cleared
    • NvSciError_BadParameter if any of the following occurs:
      • syncFence is NULL or has no non NULL NvSciSyncObj associated
      • taskStatus is NULL
      • syncFence points to an invalid task status slot
    • Panics if NvSciSyncObj associated with syncFence is not valid
    Precondition
    • Valid NvSciSyncFence* is obtained.
    • NvSciSyncFence pointed by syncFence is expired.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncFenceGetTimestamp()

    NvSciError NvSciSyncFenceGetTimestamp ( const NvSciSyncFence syncFence,
    uint64_t *  timestampUS 
    )

    Read the timestamp associated with the NvSciSyncFence.

    This function can be used when the CPU is the waiter.

    Parameters
    [in]syncFenceobject of type NvSciSyncFence
    [out]timestampUStime (in microseconds) when the NvSciSyncFence expired.
    Returns
    NvSciError
    • NvSciError_Success if successful
    • NvSciError_ClearedFence if syncFence is cleared
    • NvSciError_BadParameter if any of the following occurs:
      • any argument is NULL
      • timestamps are not supported by NvSciSyncObj associated with syncFence
      • syncFence does not support timestamps
      • the NvSciSyncAttrList associated with the syncFence has not requested CPU access
    • Panics if NvSciSyncObj associated with syncFence is not valid.
    Precondition
    • Valid NvSciSyncFence* is obtained.
    • NvSciSyncFence pointed by syncFence is expired.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncFenceUpdateFence()

    NvSciError NvSciSyncFenceUpdateFence ( NvSciSyncObj  syncObj,
    uint64_t  id,
    uint64_t  value,
    NvSciSyncFence syncFence 
    )

    Populates the input NvSciSyncFence based on the input id and value.

    This new NvSciSyncFence is associated with the input NvSciSyncObj. The input NvSciSyncFence is cleared before being populated with the new data.

    The task status slot associated with this fence will be 0. It is recommended to not use this interface when using task status buffer.

    Parameters
    [in]syncObjvalid NvSciSyncObj
    [in]idNvSciSyncFence identifier Valid value: [0, UINT32_MAX-1] for NvSciSyncAttrValPrimitiveType_Syncpoint. [0, value returned by NvSciSyncObjGetNumPrimitives()-1] for NvSciSyncAttrValPrimitiveType_SysmemSemaphore and NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b.
    [in]valueNvSciSyncFence value Valid value: [0, UINT32_MAX] for NvSciSyncAttrValPrimitiveType_Syncpoint and NvSciSyncAttrValPrimitiveType_SysmemSemaphore. [0, UINT64_MAX] for NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b.
    [in,out]syncFenceNvSciSyncFence to populate
    Returns
    NvSciError
    • NvSciError_Success if successful.
    • NvSciError_BadParameter if syncObj or syncFence is NULL.
    • NvSciError_Overflow if id is invalid.
    • NvSciError_Overflow if value is invalid.
    • NvSciError_InvalidState if no more references can be taken on the syncObj
    • Panics if syncObj or NvSciSyncObj initially associated with syncFence is invalid
    Precondition
    • Valid NvSciSyncObj is obtained.
    • Valid NvSciSyncFence* is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions:
        • Provided there is no active operation involving the syncFence to be updated
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncFenceWait()

    NvSciError NvSciSyncFenceWait ( const NvSciSyncFence syncFence,
    NvSciSyncCpuWaitContext  context,
    int64_t  timeoutUs 
    )

    Performs a synchronous wait on the NvSciSyncFence object until the NvSciSyncFence has been signaled or the timeout expires.

    Any NvSciSyncCpuWaitContext may be used for waiting on any NvSciSyncFence provided they were created in the same NvSciSyncModule context. One NvSciSyncCpuWaitContext can be used to wait on only one NvSciSyncFence at a time but it can be used to wait on a different NvSciSyncFence at a different time.

    Waiting on a cleared and expired NvSciSyncFence is always not blocking.

    Parameters
    [in]syncFenceThe NvSciSyncFence to wait on.
    [in]contextNvSciSyncCpuWaitContext holding resources needed to perform waiting.
    [in]timeoutUsTimeout to wait for in micro seconds, -1 for infinite wait. Valid value: [-1, NvSciSyncFenceMaxTimeout]
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if any of the following occurs:
      • syncFence is cleared
      • syncFence is expired
      • syncFence has been signaled within the given timeout
    • NvSciError_BadParameter if any of the following occurs:
      • syncFence is NULL
      • context is NULL
      • syncFence and context are associated with different NvSciSyncModule
      • timeoutUs is invalid
      • if caller doesn't have CPU wait permissions in NvSciSyncObj associated with syncFence
      • the module reference associated with context is NULL
    • NvSciError_ResourceError if wait operation did not complete successfully.
    • NvSciError_Timeout if wait did not complete in the given timeout.
    • NvSciError_Overflow if the NvSciSyncFence's id or value are not in range supported by the primitive this NvSciSyncFence corresponds to.
    • Panics if any NvSciSyncObj associated with syncFence or context is not valid
    Precondition
    • Valid NvSciSyncFence* is obtained.
    • Valid NvSciSyncCpuWaitContext is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncFenceWaitWithMode()

    NvSciError NvSciSyncFenceWaitWithMode ( const NvSciSyncFence syncFence,
    NvSciSyncCpuWaitContext  context,
    int64_t  timeoutUs,
    NvSciSyncWaitMode  waitMode 
    )

    Performs a synchronous wait on the NvSciSyncFence object until the NvSciSyncFence has been signaled or the timeout expires.

    Any NvSciSyncCpuWaitContext may be used for waiting on any NvSciSyncFence provided they were created in the same NvSciSyncModule context. One NvSciSyncCpuWaitContext can be used to wait on only one NvSciSyncFence at a time but it can be used to wait on a different NvSciSyncFence at a different time.

    Waiting on a cleared and expired NvSciSyncFence is always not blocking.

    The user can choose details of the waiting procedure for better performance. Syncpoints only support NvSciSyncWaitMode_Blocking which is also the default. Semaphores support:

    • NvSciSyncWaitMode_BusyWithYield - The default, suitable when expected waiting time is long, the thread goes to sleep when waiting.
    • NvSciSyncWaitMode_BusyNoYield - Suitable when expected waiting time is short. The thread spins and does not go to sleep.
    Parameters
    [in]syncFenceThe NvSciSyncFence to wait on.
    [in]contextNvSciSyncCpuWaitContext holding resources needed to perform waiting.
    [in]timeoutUsTimeout to wait for in micro seconds, -1 for infinite wait. Valid value: [-1, NvSciSyncFenceMaxTimeout]
    [in]waitModeChooses the method of waiting. Valid value: One of NvSciSyncWaitMode values
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if any of the following occurs:
      • syncFence is cleared
      • syncFence is expired
      • syncFence has been signaled within the given timeout
    • NvSciError_BadParameter if any of the following occurs:
      • syncFence is NULL
      • context is NULL
      • syncFence and context are associated with different NvSciSyncModule
      • timeoutUs is invalid
      • if caller doesn't have CPU wait permissions in NvSciSyncObj associated with syncFence
      • the module reference associated with context is NULL
      • waiMode is invalid
    • NvSciError_ResourceError if wait operation did not complete successfully.
    • NvSciError_Timeout if wait did not complete in the given timeout.
    • NvSciError_Overflow if the NvSciSyncFence's id or value are not in range supported by the primitive this NvSciSyncFence corresponds to.
    • NvSciError_UnsupportedConfig if waitMode is not supported by the primitive associated with syncFence's NvSciSyncObj
    • Panics if any NvSciSyncObj associated with syncFence or context is not valid
    Precondition
    • Valid NvSciSyncFence* is obtained.
    • Valid NvSciSyncCpuWaitContext is obtained.


    Usage considerations

    • Allowed context for the API call
    • Interrupt handler: No
    • Signal handler: No
    • Thread-safe: Yes
    • Re-entrant: No
    • Async/Sync: Sync
    • Required privileges: None
    • API group
    • Init: No
    • Runtime: Yes
    • De-Init: No

    ◆ NvSciSyncFillC2cAttrs()

    NvSciError NvSciSyncFillC2cAttrs ( NvSciSyncAttrList  unrecAttrList,
    NvSciSyncAccessPerm  permissions 
    )

    Fills appropriate attributes for C2C copy in the input NvSciSyncAttrList.

    Parameters
    [in]unrecAttrListattribute list to be filled
    [in]permissionsPermissions to be set in the attribute list
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_BadParameter if any of the following occurs:
      • unrecAttrList is NULL,
      • unrecAttrList is not unreconciled and/or not writable,
      • any of NvSciSyncAttrKey_RequiredPerm, and equivalent of NvSciSyncAttrKey_PrimitiveInfo, is already set in unrecAttrList.
    • Panics if unrecAttrList is not valid.
    Precondition
    • Valid unreconciled NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncIpcExportAttrListAndObj()

    NvSciError NvSciSyncIpcExportAttrListAndObj ( NvSciSyncObj  syncObj,
    NvSciSyncAccessPerm  permissions,
    NvSciIpcEndpoint  ipcEndpoint,
    void **  attrListAndObjDesc,
    size_t *  attrListAndObjDescSize 
    )

    Exports an NvSciSyncAttrList and NvSciSyncObj into an NvSciIpc-transferable object binary descriptor pointed to by data.

    The binary descriptor can subsequently be transferred to Waiters to create a matching NvSciSyncObj.

    Note: This function serves as a convenience function that combines calls to NvSciSyncAttrListIpcExportReconciled and NvSciSyncObjIpcExport.

    Parameters
    [in]syncObjNvSciSyncObj to export.
    [in]permissionsFlag indicating the expected NvSciSyncAccessPerm. Valid value: permissions is valid if it is set to NvSciSyncAccessPerm_WaitOnly or NvSciSyncAccessPerm_Auto.
    [in]ipcEndpointThe NvSciIpcEndpoint through which the caller may send the exported NvSciSyncAttrList and NvSciSyncObj descriptor.
    [out]attrListAndObjDescExported form of NvSciSyncAttrList and NvSciSyncObj shareable across an NvSciIpc channel.
    [out]attrListAndObjDescSizeSize of the exported blob.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_InvalidState if the Init Mode API check fails.
    • NvSciError_BadParameter if any of the following occurs:
      • attrListAndObjDesc is NULL
      • attrListAndObjDescSize is NULL
      • syncObj is NULL
      • permissions flag contains signaling rights
      • ipcEndpoint is invalid.
      • ipcEndpoint does not lead to a peer in the topology tree of this NvSciSyncObj
    • NvSciError_InsufficientMemory if memory allocation failed.
    • NvSciError_ResourceError if system lacks resource other than memory or something went wrong with NvSciIpc
    • NvSciError_TryItAgain if current operation needs to be retried by the user. This error is returned only when communication boundary is chip to chip (C2c).
    • Panic if syncObj is not valid
    Precondition
    • Valid NvSciSyncObj obtained.
    • Valid NvSciIpcEndpoint is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncIpcExportFence()

    NvSciError NvSciSyncIpcExportFence ( const NvSciSyncFence syncFence,
    NvSciIpcEndpoint  ipcEndpoint,
    NvSciSyncFenceIpcExportDescriptor desc 
    )

    Exports the input NvSciSyncFence into a binary descriptor shareable across the NvSciIpc channel.

    The resulting descriptor of a non-cleared NvSciSyncFence is associated with NvSciSyncObj associated with the NvSciSyncFence. After transporting the descriptor via an Ipc path, NvSciSync will be able to recognize that the NvSciSyncFence is associated with this NvSciSyncObj if NvSciSyncObj traversed the same Ipc path.

    Parameters
    [in]syncFenceA pointer to NvSciSyncFence object to be exported.
    [in]ipcEndpointThe NvSciIpcEndpoint through which the caller may send the exported fence descriptor.
    [out]descThe exported form of NvSciSyncFence shared across an NvSciIpc channel.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_BadParameter if any of the following occurs:
      • any argument is NULL
      • ipcEndpoint is not a valid NvSciIpcEndpoint
    • Panics if syncFence is associated an invalid NvSciSyncObj
    Precondition
    • Valid NvSciSyncFence* is obtained.
    • Valid NvSciIpcEndpoint is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncIpcImportAttrListAndObj()

    NvSciError NvSciSyncIpcImportAttrListAndObj ( NvSciSyncModule  module,
    NvSciIpcEndpoint  ipcEndpoint,
    const void *  attrListAndObjDesc,
    size_t  attrListAndObjDescSize,
    NvSciSyncAttrList const  attrList[],
    size_t  attrListCount,
    NvSciSyncAccessPerm  minPermissions,
    int64_t  timeoutUs,
    NvSciSyncObj syncObj 
    )

    Creates an NvSciSyncObj based on the supplied binary descriptor returned from a successful call to NvSciSyncIpcExportAttrListAndObj that has not yet been freed via NvSciSyncAttrListAndObjFreeDesc.

    It also validates reconciled NvSciSyncAttrList against input unreconciled NvSciSyncAttrLists to ensure that the reconciled NvSciSyncAttrList satisfies the constraints of all the given unreconciled NvSciSyncAttrLists.

    This function is called from the Waiter after it receives the binary descriptor from the Signaler who has created the binary descriptor. Waiter will create its own NvSciSyncObj and return as output.

    Note: This function serves as a convenience function that combines calls to NvSciSyncAttrListIpcImportReconciled and NvSciSyncObjIpcImport.

    Parameters
    [in]moduleA NvSciSyncModule to associate the imported NvSciSyncAttrList with.
    [in]ipcEndpointThe NvSciIpcEndpoint through which the caller receives the exported NvSciSyncAttrList and NvSciSyncObj descriptor.
    [in]attrListAndObjDescExported form of NvSciSyncAttrList and NvSciSyncObj received through NvSciIpc channel. Valid value: attrListAndObjDesc is valid if it is non-NULL.
    [in]attrListAndObjDescSizeSize of the exported blob. Valid value: attrListAndObjDescSize is valid if it is bigger or equal sizeof(NvSciSyncObjIpcExportDescriptor).
    [in]attrListThe array of unreconciled NvSciSyncAttrLists against which the new NvSciSyncAttrList is to be validated. Valid value: Array of valid NvSciSyncAttrList(s)
    [in]attrListCountNumber of unreconciled NvSciSyncAttrLists in the attrList array. Valid value: [0, SIZE_MAX]
    [in]minPermissionsFlag indicating the expected NvSciSyncAccessPerm. Valid value: NvSciSyncAccessPerm_WaitOnly and NvSciSyncAccessPerm_Auto
    [in]timeoutUsUnused
    [out]syncObjWaiter's NvSciSyncObj.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_InvalidState if the Init Mode API check fails.
    • NvSciError_BadParameter if any of the following occurs:
      • ipcEndpoint is invalid
      • attrListAndObjDesc is invalid
      • attrListAndObjDescSize is invalid
      • minPermissions is invalid
      • syncObj is NULL
      • input unreconciled NvSciSyncAttrLists' constraints are not satisfied by attributes of imported NvSciSyncObj.
      • attrList is NULL but attrListCount is not 0
      • if any of the NvSciSyncAttrList in attrList are not unreconciled
      • an NvSciSyncAttrList appears multiple times in attrList
      • minPermissions is NvSciSyncAccessPerm_Auto but permissions granted in the object part of attrListAndObjDesc are not enough to satisfy expected permissions stored in the attribute list part
    • NvSciError_InsufficientMemory if memory allocation failed.
    • NvSciError_ResourceError if system lacks resource other than memory or something went wrong with NvSciIpc
    • NvSciError_TryItAgain if current operation needs to be retried by the user. This error is returned only when communication boundary is chip to chip (C2c).
    • Panics if any of the following occurs:
      • module is not valid
      • any of the input unreconciled NvSciSyncAttrLists are not valid
    Precondition
    • Valid NvSciSyncModule is obtained.
    • Valid NvSciIpcEndpoint is obtained.
    • Valid unreconciled NvSciSyncAttrList(s) are obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncIpcImportFence()

    NvSciError NvSciSyncIpcImportFence ( NvSciSyncObj  syncObj,
    const NvSciSyncFenceIpcExportDescriptor desc,
    NvSciSyncFence syncFence 
    )

    Fills in the NvSciSyncFence based on the input binary descriptor.

    If the NvSciSyncFence descriptor does not describe a cleared NvSciSyncFence, then NvSciSync will validate if it corresponds to the NvSciSyncObj and it will associate the out NvSciSyncFence with the NvSciSyncObj.

    The NvSciSyncFence will be cleared first, removing any previous reference to a NvSciSyncObj.

    Parameters
    [in]syncObjThe NvSciSyncObj.
    [in]descThe exported form of NvSciSyncFence. Valid value: A binary descriptor produced by NvSciSyncIpcExportFence.
    [out]syncFenceA pointer to NvSciSyncFence object.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_BadParameter if any of the following occurs:
      • any argument is NULL
      • fence descriptor does not describe a cleared NvSciSyncFence but it is associated with an NvSciSyncObj different from syncObj
      • fence descriptor's value exceeds allowed range for syncObj's primitive
    • NvSciError_InvalidState if syncObj cannot take more references.
    • Panics if syncObj is not valid
    Precondition


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions:
        • Provided there is no active operation involving the syncFence if it had previously been associated with an NvSciSyncObj
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncModuleClose()

    void NvSciSyncModuleClose ( NvSciSyncModule  module)

    Closes an instance of the NvSciSyncModule that was obtained through an earlier call to NvSciSyncModuleOpen().

    Once an NvSciSyncModule is closed and all NvSciSyncAttrLists, NvSciSyncObjs, NvSciSyncCpuWaitContexts, NvSciSyncFences bound to that module instance are freed, the NvSciSyncModule instance will be de-initialized in the calling process. Until then the NvSciSyncModule will still be accessible from those objects still referencing it.

    Note
    Every owner of the NvSciSyncModule must call NvSciSyncModuleClose() only after all the functions invoked by the owner with NvSciSyncModule as an input are completed.
    Parameters
    [in]moduleThe NvSciSyncModule instance to close. The calling process must not pass this module to another NvSciSync API call.
    Returns
    void
    • Panics if:
      • Init Mode API is called in Runtime Mode.
      • module is invalid
    Precondition
    • Valid NvSciSyncModule is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions:
        • Provided there is no active operation involving the input NvSciSyncModule module
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncModuleOpen()

    NvSciError NvSciSyncModuleOpen ( NvSciSyncModule newModule)

    Initializes and returns a new NvSciSyncModule with no NvSciSyncAttrLists, NvSciSyncCpuWaitContexts, NvSciSyncObjs or NvSciSyncFences bound to it.

    Note
    A process may call this function multiple times. Each successful invocation will yield a new NvSciSyncModule instance.
    Parameters
    [out]newModuleThe new NvSciSyncModule.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • None


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncObjAlloc()

    NvSciError NvSciSyncObjAlloc ( NvSciSyncAttrList  reconciledList,
    NvSciSyncObj syncObj 
    )

    Allocates and initializes a NvSciSyncObj that meets all the constraints specified in the given reconciled NvSciSyncAttrList.

    The resulting object will hold a buffer of 1024 slots for holding tasks status.

    Note
    This function does not take ownership of the reconciled NvSciSyncAttrList. The caller remains responsible for freeing the reconciled NvSciSyncAttrList. The caller may free the reconciled NvSciSyncAttrList any time after this function is called.
    Parameters
    [in]reconciledListA reconciled NvSciSyncAttrList.
    [out]syncObjThe allocated NvSciSyncObj.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid reconciled NvSciSyncAttrList is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncObjAttachPeer()

    NvSciError NvSciSyncObjAttachPeer ( NvSciSyncObj  syncObj,
    const NvSciSyncAttrList  inputArray[],
    size_t  inputCount 
    )

    Allows remote peer NvSciIpcEndpoint to gain access to already allocated NvSciSyncObj.

    Provided that the allocated NvSciSyncObj meets the requirements provided by the input unreconciled attribute list of remote peer interested in gaining access to input NvSciSyncObj. On success, the NvSciSyncObj is exportable to remote peer NvSciIpcEndpoints whose unreconciled NvSciSyncAttrList was provided as input to this function.

    Parameters
    [in]syncObjThe NvSciSyncObj whose access needs to be granted
    [in]inputArraylist of unreconciled NvSciSyncAttrList imported from remote peers who wants access to the input NvSciSyncObj
    [in]inputCountCount of unreconciled NvSciSyncAttrList provided in input unreconciledLists
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_BadParameter if any of the following occurs:
      • syncObj is NULL
      • inputArray is NULL
      • any of NvSciSyncAttrLists in inputArray are NULL
      • any of NvSciSyncAttrLists in inputArray are not unreconciled
      • not all the NvSciSyncAttrLists in inputArray are bound to the same NvSciSyncModule instance as that of syncObj.
      • inputCount is 0
    • NvSciError_InsufficientMemory if memory allocation failed.
    • Panic if syncObj or NvSciSyncAttrLists inside inputArray are not valid
    Precondition
    • Valid NvSciSyncObj is allocated.
    • Valid unreconciled NvSciSyncAttrLists inside inputArray.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncObjDup()

    NvSciError NvSciSyncObjDup ( NvSciSyncObj  syncObj,
    NvSciSyncObj dupObj 
    )

    Creates a new NvSciSyncObj holding a reference to the original resources to which the input NvSciSyncObj holds reference to.

    The duplicated NvSciSyncObj is not a completely new NvSciSyncObj. Therefore, signaling and generating NvSciSyncFences from one affects the state of the other, because it is the same underlying NvSciSyncObj.

    The resulting NvSciSyncObj must be freed separately by the user.

    Parameters
    [in]syncObjNvSciSyncObj to duplicate.
    [out]dupObjDuplicated NvSciSyncObj.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid NvSciSyncObj is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncObjFree()

    void NvSciSyncObjFree ( NvSciSyncObj  syncObj)

    Destroys a valid NvSciSyncObj and frees any resources that were allocated for it.

    Parameters
    [in]syncObjNvSciSyncObj to be freed.
    Returns
    void
    • Panics if:
      • Init Mode API is called in Runtime Mode.
      • syncObj is not a valid NvSciSyncObj #if 0 or there was an unexpected freeing error from C2C #endif
    Precondition
    • Valid NvSciSyncObj is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions:
        • Provided there is no active operation involving the NvSciSyncAttrList obtained from NvSciSyncObjGetAttrList() to be freed, since the lifetime of that reconciled NvSciSyncAttrList is tied to the associated NvSciSyncObj
        • Provided there is no active operation involving the input NvSciSyncObj syncObj
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncObjGenerateFence()

    NvSciError NvSciSyncObjGenerateFence ( NvSciSyncObj  syncObj,
    NvSciSyncFence syncFence 
    )

    Generates next point on sync timeline of an NvSciSyncObj and fills in the supplied NvSciSyncFence object.

    This function can be used when the CPU is the Signaler.

    Parameters
    [in]syncObjA valid NvSciSyncObj.
    [out]syncFenceNvSciSyncFence to be filled
    Returns
    NvSciError, the completion code of the operation:
    Precondition


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes, with the following conditions
        • Provided there is no active operation involving the syncFence if it had previously been associated with an NvSciSyncObj
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncObjGetAttrList()

    NvSciError NvSciSyncObjGetAttrList ( NvSciSyncObj  syncObj,
    NvSciSyncAttrList syncAttrList 
    )

    Retrieves the reconciled NvSciSyncAttrList associated with an input NvSciSyncObj.

    The retrieved reconciled NvSciSyncAttrList is always read-only and the Attribute Key values in the NvSciSyncAttrList cannot be changed using the set attribute APIs. In addition, the returned NvSciSyncAttrList must not be freed.

    Parameters
    [in]syncObjHandle corresponding to NvSciSyncObj from which the NvSciSyncAttrList has to be retrieved.
    [out]syncAttrListpointer to the retrieved NvSciSyncAttrList.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid NvSciSyncObj is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncObjIpcExport()

    NvSciError NvSciSyncObjIpcExport ( NvSciSyncObj  syncObj,
    NvSciSyncAccessPerm  permissions,
    NvSciIpcEndpoint  ipcEndpoint,
    NvSciSyncObjIpcExportDescriptor desc 
    )

    Exports an NvSciSyncObj into an NvSciIpc-transferable object binary descriptor.

    The binary descriptor can be transferred to a Waiter to create a matching NvSciSyncObj.

    Parameters
    [in]syncObjA NvSciSyncObj to export.
    [in]permissionsFlag indicating the expected NvSciSyncAccessPerm. Valid value: any value of NvSciSyncAccessPerm
    [in]ipcEndpointThe NvSciIpcEndpoint through which the caller intends to transfer the exported NvSciSyncObj descriptor.
    [out]descNvSciSync fills in this caller-supplied descriptor with the exported form of NvSciSyncObj that is to be shared across an NvSciIpc channel.
    Returns
    NvSciError, the completion code of the operation:
    • NvSciError_Success if successful.
    • NvSciError_InvalidState if the Init Mode API check fails.
    • NvSciError_ResourceError if something went wrong with NvSciIpc
    • NvSciError_TryItAgain if current operation needs to be retried by the user. This error is returned only when communication boundary is chip to chip (C2c).
    • NvSciError_BadParameter if any of the following occurs:
      • desc is NULL
      • syncObj is NULL
      • permissions is invalid
      • permissions contains larger permissions than those set on NvSciSyncAttrKey_ActualPerm on the reconciled NvSciSyncAttrList associated with the NvSciSyncObj granted to this peer
      • permissions contains smaller permissions than the expected permissions requested by the receiving peer
      • ipcEndpoint is invalid
      • ipcEndpoint does not lead to a peer in the topology tree of this NvSciSyncObj
    • NvSciError_InsufficientMemory if memory allocation failed.
    • Panics if syncObj is not valid
    Precondition
    • Valid NvSciSyncObj is obtained.
    • Valid NvSciIpcEndpoint is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncObjIpcImport()

    NvSciError NvSciSyncObjIpcImport ( NvSciIpcEndpoint  ipcEndpoint,
    const NvSciSyncObjIpcExportDescriptor desc,
    NvSciSyncAttrList  inputAttrList,
    NvSciSyncAccessPerm  permissions,
    int64_t  timeoutUs,
    NvSciSyncObj syncObj 
    )

    Creates and returns an NvSciSyncObj based on the supplied binary descriptor describing an exported NvSciSyncObj.

    This function is called from the waiter after it receives the binary descriptor from the signaler who has created and exported the binary descriptor.

    Note
    This function does not take ownership of input NvSciSyncAttrList. The caller remains responsible for freeing input NvSciSyncAttrList. The caller may free the input NvSciSyncAttrList any time after this function is called.
    Parameters
    [in]ipcEndpointThe NvSciIpcEndpoint through which the caller received the exported NvSciSyncObj descriptor.
    [in]descThe exported form of NvSciSyncObj received through the NvSciIpc channel. Valid value: desc is valid if it is non-NULL
    [in]inputAttrListThe reconciled NvSciSyncAttrList returned by NvSciSyncAttrListIpcImportReconciled.
    [in]permissionsNvSciSyncAccessPerm indicating the expected access permissions. Valid value: any value of NvSciSyncAccessPerm
    [in]timeoutUsUnused
    [out]syncObjThe Waiter's NvSciSyncObj.
    Returns
    NvSciError, the completion code of the operation:
    Precondition


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ NvSciSyncObjSignal()

    NvSciError NvSciSyncObjSignal ( NvSciSyncObj  syncObj)

    Signals the NvSciSyncObj using the reconciled primitive that was allocated along with the NvSciSyncObj.

    If the signal operation fails, then the timestamp value is undefined. This function is called when the CPU is the Signaler.

    Parameters
    [in]syncObjA valid NvSciSyncObj to signal.
    Returns
    NvSciError, the completion code of the operation:
    Precondition
    • Valid NvSciSyncObj is obtained.


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: No
      • Runtime: Yes
      • De-Init: No

    ◆ NvSciSyncObjValidate()

    NvSciError NvSciSyncObjValidate ( NvSciSyncObj  syncObj)

    Validates the NvSciSyncObj satisfies the constraints of the NvSciSyncAttrList that it is associated with.

    Parameters
    [in]syncObjUnused
    Returns
    NvSciError, the completion code of this operation:
    Note
    This is a no-op.
    Precondition
    • None


    Usage considerations

    • Allowed context for the API call
      • Interrupt handler: No
      • Signal handler: No
      • Thread-safe: Yes
      • Re-entrant: No
      • Async/Sync: Sync
    • Required privileges: None
    • API group
      • Init: Yes
      • Runtime: No
      • De-Init: No

    ◆ PACK_SYNC()

    PACK_SYNC ( typedef struct { uint64_t timestamp;uint32_t statusEngine;uint16_t subframe;uint16_t status;}  )

    A single slot in the task status buffer.

    Variable Documentation

    ◆ NvSciSyncFenceInitializer

    const NvSciSyncFence NvSciSyncFenceInitializer = {{0U}}
    static

    Defines the value used to zero-initialize the NvSciSyncFence object.

    An NvSciSyncFence that is all zeroes is in a cleared state.

    Definition at line 266 of file nvscisync.h.

    ◆ NvSciSyncFenceMaxTimeout

    const int64_t NvSciSyncFenceMaxTimeout = (0x7fffffffffffffff / 1000)
    static

    Maximum supported timeout value.

    NvSciSyncFenceWait() can wait for at most this many microseconds. This value also corresponds to infinite timeout.

    Definition at line 198 of file nvscisync.h.

    ◆ NvSciSyncMajorVersion

    const uint32_t NvSciSyncMajorVersion = 2U
    static

    NvSciSync major version number.

    Definition at line 184 of file nvscisync.h.

    ◆ NvSciSyncMinorVersion

    const uint32_t NvSciSyncMinorVersion = 8U
    static

    NvSciSync minor version number.

    Definition at line 191 of file nvscisync.h.

    人人超碰97caoporen国产