NVIDIA DRIVE OS Linux SDK API Reference

6.0.10.0 Release
nvscisync.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019-2024, NVIDIA CORPORATION. All rights reserved.
3  *
4  * NVIDIA Corporation and its licensors retain all intellectual property
5  * and proprietary rights in and to this software, related documentation
6  * and any modifications thereto. Any use, reproduction, disclosure or
7  * distribution of this software and related documentation without an express
8  * license agreement from NVIDIA Corporation is strictly prohibited.
9  */
18 #ifndef INCLUDED_NVSCISYNC_H
19 #define INCLUDED_NVSCISYNC_H
20 
158 #if !defined (__cplusplus)
159 #include <stddef.h>
160 #include <stdbool.h>
161 #include <stdint.h>
162 #endif
163 
164 #include "nvscierror.h"
165 #include "nvsciipc.h"
166 #include "nvscibuf.h"
167 
168 #if defined (__cplusplus)
169 extern "C"
170 {
171 #endif
172 
173 #if defined __GNUC__
174  #define PACK_SYNC( __Declaration__, ... ) __Declaration__,##__VA_ARGS__ __attribute__((packed))
175 #else
176  #define PACK_SYNC( __Declaration__, ... ) __pragma(pack(push, 1)) __Declaration__,##__VA_ARGS__ __pragma(pack(pop))
177 #endif
178 
184 static const uint32_t NvSciSyncMajorVersion = 2U;
185 
191 static const uint32_t NvSciSyncMinorVersion = 8U;
192 
198 static const int64_t NvSciSyncFenceMaxTimeout = (0x7fffffffffffffff / 1000);
199 
211 typedef struct NvSciSyncModuleRec* NvSciSyncModule;
212 
223 typedef struct NvSciSyncCpuWaitContextRec* NvSciSyncCpuWaitContext;
224 
256 typedef struct NvSciSyncFence {
257  uint64_t payload[6];
259 
267 
274 typedef struct {
275  uint64_t payload[7];
277 
284 typedef struct {
286  uint64_t payload[128];
288 
311 typedef struct NvSciSyncObjRec* NvSciSyncObj;
312 
317 typedef const struct NvSciSyncObjRec* NvSciSyncObjConst;
318 
330 typedef struct NvSciSyncAttrListRec* NvSciSyncAttrList;
331 
337 typedef uint64_t NvSciSyncAccessPerm;
338 
343 #if defined(__cplusplus)
344  #define NvSciSyncAccessPerm_WaitOnly (static_cast<uint64_t>(1U) << 0U)
345 #else
346  #define NvSciSyncAccessPerm_WaitOnly ((uint64_t)1U << 0U)
347 #endif
348 
353 #if defined(__cplusplus)
354  #define NvSciSyncAccessPerm_SignalOnly (static_cast<uint64_t>(1U) << 1U)
355 #else
356  #define NvSciSyncAccessPerm_SignalOnly ((uint64_t)1U << 1U)
357 #endif
358 
364 #define NvSciSyncAccessPerm_WaitSignal (NvSciSyncAccessPerm_WaitOnly | NvSciSyncAccessPerm_SignalOnly)
365 
370 #if defined(__cplusplus)
371  #define NvSciSyncAccessPerm_Auto (static_cast<uint64_t>(1U) << 63U)
372 #else
373  #define NvSciSyncAccessPerm_Auto ((uint64_t)1U << 63U)
374 #endif
375 
387 typedef enum {
396 
402 PACK_SYNC(typedef struct {
404  uint64_t timestamp;
406  uint32_t statusEngine;
408  uint16_t subframe;
412  uint16_t status;
413 }) NvSciSyncTaskStatus;
414 
454 };
455 
462 
475 typedef enum {
639 
660 
668 typedef struct {
674  const void* value;
676  size_t len;
678 
682 typedef enum {
692 
726  NvSciSyncModule* newModule);
727 
768  NvSciSyncModule module);
769 
805  NvSciSyncModule module,
806  NvSciSyncCpuWaitContext* newContext);
807 
837  NvSciSyncCpuWaitContext context);
838 
874  NvSciSyncModule module,
875  NvSciSyncAttrList* attrList);
876 
906  NvSciSyncAttrList attrList);
907 
937  NvSciSyncAttrList attrList,
938  bool* isReconciled);
939 
996  NvSciSyncAttrList reconciledAttrList,
997  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
998  size_t inputUnreconciledAttrListCount,
999  bool* isReconciledListValid);
1000 
1050  NvSciSyncAttrList attrList,
1051  const NvSciSyncAttrKeyValuePair* pairArray,
1052  size_t pairCount);
1053 
1099  NvSciSyncAttrList attrList,
1100  NvSciSyncAttrKeyValuePair* pairArray,
1101  size_t pairCount);
1102 
1127  NvSciSyncAttrList attrList);
1128 
1188  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1189  size_t inputUnreconciledAttrListCount,
1190  NvSciSyncAttrList* newUnreconciledAttrList);
1191 
1234  NvSciSyncAttrList origAttrList,
1235  NvSciSyncAttrList* newAttrList);
1236 
1287  NvSciSyncAttrList attrList,
1288  size_t slotIndex,
1289  NvSciSyncAttrKeyValuePair* pairArray,
1290  size_t pairCount);
1291 
1297 #if (NV_IS_SAFETY == 0)
1298 
1304 #endif
1305 
1314 #if (NV_IS_SAFETY == 0)
1315 
1320 #else
1321 
1324 #endif
1325 
1340 #if (NV_IS_SAFETY == 0)
1341 
1343 #endif
1344 
1379  const NvSciSyncAttrList inputArray[],
1380  size_t inputCount,
1381  NvSciSyncAttrList* newReconciledList,
1382  NvSciSyncAttrList* newConflictList);
1383 
1384 #if (NV_IS_SAFETY == 0)
1385 
1425 NvSciError NvSciSyncAttrListDebugDump(
1427  NvSciSyncAttrList attrList,
1428  void** buf,
1429  size_t* len);
1431 #endif
1432 
1474 #if (NV_IS_SAFETY == 0)
1475 
1478 #endif
1479 
1507  const NvSciSyncAttrList unreconciledAttrListArray[],
1508  size_t unreconciledAttrListCount,
1509  NvSciIpcEndpoint ipcEndpoint,
1510  void** descBuf,
1511  size_t* descLen);
1512 
1558  const NvSciSyncAttrList reconciledAttrList,
1559  NvSciIpcEndpoint ipcEndpoint,
1560  void** descBuf,
1561  size_t* descLen);
1562 
1613  NvSciSyncModule module,
1614  NvSciIpcEndpoint ipcEndpoint,
1615  const void* descBuf,
1616  size_t descLen,
1617  NvSciSyncAttrList* importedUnreconciledAttrList);
1618 
1698  NvSciSyncModule module,
1699  NvSciIpcEndpoint ipcEndpoint,
1700  const void* descBuf,
1701  size_t descLen,
1702  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1703  size_t inputUnreconciledAttrListCount,
1704  NvSciSyncAttrList* importedReconciledAttrList);
1705 
1734  void* descBuf);
1735 
1764 void NvSciSyncFenceClear(
1765  NvSciSyncFence* syncFence);
1766 
1810  const NvSciSyncFence* srcSyncFence,
1811  NvSciSyncFence* dstSyncFence);
1812 
1844  const NvSciSyncFence* syncFence,
1845  uint64_t* id,
1846  uint64_t* value);
1847 
1901  NvSciSyncObj syncObj,
1902  uint64_t id,
1903  uint64_t value,
1904  NvSciSyncFence* syncFence);
1905 
1939  NvSciSyncFence* syncFence,
1940  uint32_t timestampSlot);
1941 
1975  NvSciSyncFence* syncFence,
1976  uint32_t taskStatusSlot);
1977 
2010  NvSciSyncFence* syncFence,
2011  uint32_t* timeStampSlot);
2012 
2056  NvSciSyncAttrList reconciledList,
2057  NvSciSyncObj* syncObj);
2058 
2099  NvSciSyncObj syncObj,
2100  NvSciSyncObj* dupObj);
2101 
2136  NvSciSyncObj syncObj,
2137  NvSciSyncAttrList* syncAttrList);
2138 
2177 void NvSciSyncObjFree(
2178  NvSciSyncObj syncObj);
2179 
2217 #if (NV_L4T == 1)
2218 
2222 #endif
2223 
2243  NvSciSyncObj syncObj,
2244  NvSciSyncAccessPerm permissions,
2245  NvSciIpcEndpoint ipcEndpoint,
2247 
2319  NvSciIpcEndpoint ipcEndpoint,
2320  const NvSciSyncObjIpcExportDescriptor* desc,
2321  NvSciSyncAttrList inputAttrList,
2322  NvSciSyncAccessPerm permissions,
2323  int64_t timeoutUs,
2324  NvSciSyncObj* syncObj);
2325 
2366  const NvSciSyncFence* syncFence,
2367  NvSciIpcEndpoint ipcEndpoint,
2369 
2414  NvSciSyncObj syncObj,
2416  NvSciSyncFence* syncFence);
2417 
2422 #if (NV_IS_SAFETY == 0)
2423 
2431 #else
2432 
2448 #endif
2449 
2469  NvSciSyncObj syncObj);
2470 
2486 #if (NV_IS_SAFETY == 0)
2487 
2490 #endif
2491 
2517  NvSciSyncObj syncObj,
2518  NvSciSyncFence* syncFence);
2519 
2556  NvSciSyncObj syncObj);
2557 
2618  const NvSciSyncFence* syncFence,
2619  NvSciSyncCpuWaitContext context,
2620  int64_t timeoutUs);
2621 
2663  const NvSciSyncFence* syncFence,
2664  uint64_t* timestampUS);
2665 
2701  const NvSciSyncFence* syncFence,
2702  NvSciSyncTaskStatus* taskStatus);
2703 
2704 /*
2705  * NvSciSync Utility functions
2706  */
2707 
2750  NvSciSyncAttrList attrList,
2751  NvSciSyncAttrKey key,
2752  const void** value,
2753  size_t* len);
2754 
2774 #if (NV_IS_SAFETY == 0)
2775 
2781 #else
2782 
2785 #endif
2786 
2801 #if (NV_IS_SAFETY == 0)
2802 
2804 #endif
2805 
2833  const NvSciSyncAttrList inputArray[],
2834  size_t inputCount,
2835  NvSciSyncObj* syncObj,
2836  NvSciSyncAttrList* newConflictList);
2837 
2894  NvSciSyncObj syncObj,
2895  NvSciSyncAccessPerm permissions,
2896  NvSciIpcEndpoint ipcEndpoint,
2897  void** attrListAndObjDesc,
2898  size_t* attrListAndObjDescSize);
2899 
2930  void* attrListAndObjDescBuf);
2931 
3015  NvSciSyncModule module,
3016  NvSciIpcEndpoint ipcEndpoint,
3017  const void* attrListAndObjDesc,
3018  size_t attrListAndObjDescSize,
3019  NvSciSyncAttrList const attrList[],
3020  size_t attrListCount,
3021  NvSciSyncAccessPerm minPermissions,
3022  int64_t timeoutUs,
3023  NvSciSyncObj* syncObj);
3024 
3062  uint32_t majorVer,
3063  uint32_t minorVer,
3064  bool* isCompatible);
3065 
3114  NvSciSyncObj syncObj,
3115  const NvSciSyncAttrList inputArray[],
3116  size_t inputCount);
3117 
3152  NvSciSyncAttrList unrecAttrList,
3153  NvSciSyncAccessPerm permissions);
3154 
3161 #if (NV_IS_SAFETY == 0)
3162 
3173 #else
3174 
3197 #endif
3198 
3218  NvSciSyncAttrList reconciledAttrList,
3219  const NvSciSyncAttrKeyValuePair* pairArray,
3220  size_t pairCount,
3221  NvSciSyncAccessPerm permissions);
3222 
3296  const NvSciSyncFence* syncFence,
3297  NvSciSyncCpuWaitContext context,
3298  int64_t timeoutUs,
3299  NvSciSyncWaitMode waitMode);
3300 
3301 #if defined(__cplusplus)
3302 }
3303 #endif // __cplusplus
3304 
3305 #endif // INCLUDED_NVSCISYNC_H
NvSciSyncFenceClear
void NvSciSyncFenceClear(NvSciSyncFence *syncFence)
Frees any resources allocated for the NvSciSyncFence.
NvSciSyncAttrValPrimitiveType_VidmemSemaphorePayload64b
@ NvSciSyncAttrValPrimitiveType_VidmemSemaphorePayload64b
16 bytes semaphore backed by video memory.
Definition: nvscisync.h:451
NvSciSyncAttrKey_RequireDeterministicFences
@ NvSciSyncAttrKey_RequireDeterministicFences
(bool, inout) Specifies if deterministic primitives are required.
Definition: nvscisync.h:587
NvSciSyncAccessPerm
uint64_t NvSciSyncAccessPerm
Describes NvSciSyncObj access permissions.
Definition: nvscisync.h:337
NvSciSyncObjValidate
NvSciError NvSciSyncObjValidate(NvSciSyncObj syncObj)
Validates the NvSciSyncObj satisfies the constraints of the NvSciSyncAttrList that it is associated w...
NvSciError
NvSciError
Return/error codes for all NvSci functions.
Definition: nvscierror.h:45
NvSciSyncAttrListAndObjFreeDesc
void NvSciSyncAttrListAndObjFreeDesc(void *attrListAndObjDescBuf)
Frees an NvSciSyncIpcExportAttrListAndObj descriptor returned by a successful call to NvSciSyncIpcExp...
NvSciSyncWaitMode_Default
@ NvSciSyncWaitMode_Default
same behavior as with NvSciSyncFenceWait()
Definition: nvscisync.h:684
NvSciSyncIpcImportFence
NvSciError NvSciSyncIpcImportFence(NvSciSyncObj syncObj, const NvSciSyncFenceIpcExportDescriptor *desc, NvSciSyncFence *syncFence)
Fills in the NvSciSyncFence based on the input binary descriptor.
NvSciSyncAttrKey_NeedCpuAccess
@ NvSciSyncAttrKey_NeedCpuAccess
(bool, inout) Specifies if CPU access is required.
Definition: nvscisync.h:505
NvSciSyncObjIpcExport
NvSciError NvSciSyncObjIpcExport(NvSciSyncObj syncObj, NvSciSyncAccessPerm permissions, NvSciIpcEndpoint ipcEndpoint, NvSciSyncObjIpcExportDescriptor *desc)
Exports an NvSciSyncObj into an NvSciIpc-transferable object binary descriptor.
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 Nv...
NvSciSyncAttrListFreeDesc
void NvSciSyncAttrListFreeDesc(void *descBuf)
Frees an exported NvSciSyncAttrList descriptor previously returned by any NvSciSyncAttrList exporting...
NvSciSyncAttrValPrimitiveType_SysmemSemaphore
@ NvSciSyncAttrValPrimitiveType_SysmemSemaphore
16 bytes semaphore backed by system memory.
Definition: nvscisync.h:433
NvSciSyncTaskStatus_Failure
@ NvSciSyncTaskStatus_Failure
The task has failed.
Definition: nvscisync.h:391
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 Nv...
NvSciSyncAttrValPrimitiveType_Syncpoint
@ NvSciSyncAttrValPrimitiveType_Syncpoint
Syncpoint.
Definition: nvscisync.h:427
NvSciSyncAttrKeyValuePair::len
size_t len
Length of the value in bytes.
Definition: nvscisync.h:676
NvSciSyncTaskStatusVal
NvSciSyncTaskStatusVal
Status of the signaler's task that signals a particular NvSciSyncFence.
Definition: nvscisync.h:387
NvSciSyncFence::payload
uint64_t payload[6]
Definition: nvscisync.h:257
NvSciSyncAttrKey_LowerBound
@ NvSciSyncAttrKey_LowerBound
Specifies the lower bound - for NvSciSync internal use only.
Definition: nvscisync.h:477
NvSciSyncTaskStatus_Invalid
@ NvSciSyncTaskStatus_Invalid
The signaler did not report any task status.
Definition: nvscisync.h:394
NvSciSyncWaitMode_BusyNoYield
@ NvSciSyncWaitMode_BusyNoYield
Polling with spin, no yielding.
Definition: nvscisync.h:688
NvSciSyncCpuWaitContextFree
void NvSciSyncCpuWaitContextFree(NvSciSyncCpuWaitContext context)
Releases the NvSciSyncCpuWaitContext.
NvSciSyncAttrListSetAttrs
NvSciError NvSciSyncAttrListSetAttrs(NvSciSyncAttrList attrList, const NvSciSyncAttrKeyValuePair *pairArray, size_t pairCount)
Sets the values for NvSciSyncAttrKey(s) in slot 0 of the input NvSciSyncAttrList.
NvSciSyncFenceAddTaskStatusSlot
NvSciError NvSciSyncFenceAddTaskStatusSlot(NvSciSyncFence *syncFence, uint32_t taskStatusSlot)
Sets the current task status slot index to the NvSciSyncFence.
NvSciSyncAttrKeyValuePair::attrKey
NvSciSyncAttrKey attrKey
NvSciSyncAttrKey for which value needs to be set/retrieved.
Definition: nvscisync.h:672
NvSciSyncIpcExportFence
NvSciError NvSciSyncIpcExportFence(const NvSciSyncFence *syncFence, NvSciIpcEndpoint ipcEndpoint, NvSciSyncFenceIpcExportDescriptor *desc)
Exports the input NvSciSyncFence into a binary descriptor shareable across the NvSciIpc channel.
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 o...
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...
NvSciSyncMajorVersion
static const uint32_t NvSciSyncMajorVersion
NvSciSync major version number.
Definition: nvscisync.h:184
NvSciSyncAttrKey_PeerHwEngineArray
@ NvSciSyncAttrKey_PeerHwEngineArray
(NvSciBufPeerHwEngine[], inout) An attribute indicating engine information of late peer which are goi...
Definition: nvscisync.h:656
NvSciSyncAttrList
struct NvSciSyncAttrListRec * NvSciSyncAttrList
A container constituting an NvSciSyncAttrList which contains:
Definition: nvscisync.h:330
NvSciSyncAttrValPrimitiveType
enum NvSciSyncAttrValPrimitiveTypeRec NvSciSyncAttrValPrimitiveType
Alias for enum NvSciSyncAttrValPrimitiveTypeRec.
Definition: nvscisync.h:461
NvSciSyncCpuWaitContextAlloc
NvSciError NvSciSyncCpuWaitContextAlloc(NvSciSyncModule module, NvSciSyncCpuWaitContext *newContext)
Allocates a new NvSciSyncCpuWaitContext.
NvSciSyncAttrKey_NumTimestampSlots
@ NvSciSyncAttrKey_NumTimestampSlots
(uint32_t, out) Specifies the total number of slots in the timestamps buffer.
Definition: nvscisync.h:597
NvSciSyncObjFree
void NvSciSyncObjFree(NvSciSyncObj syncObj)
Destroys a valid NvSciSyncObj and frees any resources that were allocated for it.
NvSciSyncAttrKey_WaiterRequireTimestamps
@ NvSciSyncAttrKey_WaiterRequireTimestamps
(bool, inout) Specifies if timestamps are required.
Definition: nvscisync.h:575
NvSciSyncAttrKeyValuePair::value
const void * value
Memory which contains the value corresponding to the key.
Definition: nvscisync.h:674
NvSciSyncAttrKey_MaxPrimitiveValue
@ NvSciSyncAttrKey_MaxPrimitiveValue
(uint64_t, out) Specifies the maximum value of the reconciled primitive.
Definition: nvscisync.h:615
NvSciSyncFenceMaxTimeout
static const int64_t NvSciSyncFenceMaxTimeout
Maximum supported timeout value.
Definition: nvscisync.h:198
NvSciSyncObjGenerateFence
NvSciError NvSciSyncObjGenerateFence(NvSciSyncObj syncObj, NvSciSyncFence *syncFence)
Generates next point on sync timeline of an NvSciSyncObj and fills in the supplied NvSciSyncFence obj...
NvSciSyncAttrListGetAttrs
NvSciError NvSciSyncAttrListGetAttrs(NvSciSyncAttrList attrList, NvSciSyncAttrKeyValuePair *pairArray, size_t pairCount)
Gets the value of NvSciSyncAttrKey from slot 0 of the input NvSciSyncAttrList.
NvSciSyncAttrKey_PeerLocationInfo
@ NvSciSyncAttrKey_PeerLocationInfo
(NvSciBufPeerLocationInfo[], inout) An attribute indicating location information of late peer which a...
Definition: nvscisync.h:644
NvSciSyncAttrListIsReconciled
NvSciError NvSciSyncAttrListIsReconciled(NvSciSyncAttrList attrList, bool *isReconciled)
Checks whether the NvSciSyncAttrList is reconciled.
NvSciSyncFillC2cAttrs
NvSciError NvSciSyncFillC2cAttrs(NvSciSyncAttrList unrecAttrList, NvSciSyncAccessPerm permissions)
Fills appropriate attributes for C2C copy in the input NvSciSyncAttrList.
NvSciSyncAttrKey_PrimitiveInfo
@ NvSciSyncAttrKey_PrimitiveInfo
(NvSciSyncAttrValPrimitiveType[], inout) supported primitive types.
Definition: nvscisync.h:638
NvSciSyncObjAttachPeer
NvSciError NvSciSyncObjAttachPeer(NvSciSyncObj syncObj, const NvSciSyncAttrList inputArray[], size_t inputCount)
Allows remote peer NvSciIpcEndpoint to gain access to already allocated NvSciSyncObj.
NvSciSyncFenceGetTimestamp
NvSciError NvSciSyncFenceGetTimestamp(const NvSciSyncFence *syncFence, uint64_t *timestampUS)
Read the timestamp associated with the NvSciSyncFence.
NvSciSyncObjConst
const struct NvSciSyncObjRec * NvSciSyncObjConst
A reference, that is not modifiable, to a particular Synchronization Object.
Definition: nvscisync.h:317
NvSciSyncModuleClose
void NvSciSyncModuleClose(NvSciSyncModule module)
Closes an instance of the NvSciSyncModule that was obtained through an earlier call to NvSciSyncModul...
NvSciSyncObjIpcExportDescriptor
Defines the exported form of NvSciSyncObj intended to be shared across an NvSciIpc channel.
Definition: nvscisync.h:284
NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b
@ NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b
16 bytes semaphore backed by system memory.
Definition: nvscisync.h:445
nvsciipc.h
NVIDIA Software Communications Interface (SCI) : NvSci Inter-Process Communication
NvSciSyncAttrValPrimitiveType_VidmemSemaphore
@ NvSciSyncAttrValPrimitiveType_VidmemSemaphore
16 bytes semaphore backed by video memory.
Definition: nvscisync.h:439
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 NvSciSyncAttr...
NvSciSyncAttrKey
NvSciSyncAttrKey
Describes the NvSciSync public attribute keys holding the corresponding values specifying synchroniza...
Definition: nvscisync.h:475
NvSciSyncWaitMode_BusyWithYield
@ NvSciSyncWaitMode_BusyWithYield
Polling with processor yielding.
Definition: nvscisync.h:686
NvSciSyncObjAlloc
NvSciError NvSciSyncObjAlloc(NvSciSyncAttrList reconciledList, NvSciSyncObj *syncObj)
Allocates and initializes a NvSciSyncObj that meets all the constraints specified in the given reconc...
NvSciSyncAttrKey_GpuId
@ NvSciSyncAttrKey_GpuId
(NvSciRmGpuId[], inout) GpuID of the GPU in the system that will access the semaphore buffer.
Definition: nvscisync.h:650
NvSciIpcEndpoint
uint64_t NvSciIpcEndpoint
Handle to the NvSciIpc endpoint.
Definition: nvsciipc.h:302
NvSciSyncObjDup
NvSciError NvSciSyncObjDup(NvSciSyncObj syncObj, NvSciSyncObj *dupObj)
Creates a new NvSciSyncObj holding a reference to the original resources to which the input NvSciSync...
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 agai...
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 NvSciSyncAttrLis...
NvSciSyncAttrKeyValuePair
This structure defines a key/value pair used to get or set the NvSciSyncAttrKey(s) and their correspo...
Definition: nvscisync.h:668
NvSciSyncFenceExtractFence
NvSciError NvSciSyncFenceExtractFence(const NvSciSyncFence *syncFence, uint64_t *id, uint64_t *value)
Extracts the id and value from the input NvSciSyncFence.
NvSciSyncAttrKey_RequiredPerm
@ NvSciSyncAttrKey_RequiredPerm
(NvSciSyncAccessPerm, inout) Specifies the required access permissions.
Definition: nvscisync.h:513
NvSciSyncAttrValPrimitiveTypeRec
NvSciSyncAttrValPrimitiveTypeRec
Types of synchronization primitives.
Definition: nvscisync.h:420
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 proce...
NvSciSyncMinorVersion
static const uint32_t NvSciSyncMinorVersion
NvSciSync minor version number.
Definition: nvscisync.h:191
NvSciSyncObjSignal
NvSciError NvSciSyncObjSignal(NvSciSyncObj syncObj)
Signals the NvSciSyncObj using the reconciled primitive that was allocated along with the NvSciSyncOb...
NvSciSyncFenceAddTimestampSlot
NvSciError NvSciSyncFenceAddTimestampSlot(NvSciSyncFence *syncFence, uint32_t timestampSlot)
Sets the current timestamp slot index in the NvSciSyncFence.
NvSciSyncAttrValPrimitiveType_LowerBound
@ NvSciSyncAttrValPrimitiveType_LowerBound
For NvSciSync internal use only.
Definition: nvscisync.h:422
NvSciSyncAttrListReconcile
NvSciError NvSciSyncAttrListReconcile(const NvSciSyncAttrList inputArray[], size_t inputCount, NvSciSyncAttrList *newReconciledList, NvSciSyncAttrList *newConflictList)
Reconciles the input unreconciled NvSciSyncAttrLists into a new reconciled NvSciSyncAttrList.
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 o...
NvSciSyncModuleOpen
NvSciError NvSciSyncModuleOpen(NvSciSyncModule *newModule)
Initializes and returns a new NvSciSyncModule with no NvSciSyncAttrLists, NvSciSyncCpuWaitContexts,...
NvSciSyncAttrListReconcileAndObjAlloc
NvSciError NvSciSyncAttrListReconcileAndObjAlloc(const NvSciSyncAttrList inputArray[], size_t inputCount, NvSciSyncObj *syncObj, NvSciSyncAttrList *newConflictList)
Reconciles the input unreconciled NvSciSyncAttrList(s) into a new reconciled NvSciSyncAttrList and al...
NvSciSyncFence
struct NvSciSyncFence NvSciSyncFence
Defines the opaque NvSciSyncFence.
NvSciSyncFence
Defines the opaque NvSciSyncFence.
Definition: nvscisync.h:256
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 unrecon...
NvSciSyncObjGetAttrList
NvSciError NvSciSyncObjGetAttrList(NvSciSyncObj syncObj, NvSciSyncAttrList *syncAttrList)
Retrieves the reconciled NvSciSyncAttrList associated with an input NvSciSyncObj.
nvscibuf.h
NVIDIA Software Communications Interface (SCI) : NvSciBuf
NvSciSyncWaitMode_Blocking
@ NvSciSyncWaitMode_Blocking
Blocked wait, released by a trigger, like an interrupt.
Definition: nvscisync.h:690
NvSciSyncFenceGetTaskStatus
NvSciError NvSciSyncFenceGetTaskStatus(const NvSciSyncFence *syncFence, NvSciSyncTaskStatus *taskStatus)
Reads the task status associated with the NvSciSyncFence and stores it in the user provided out param...
NvSciSyncAttrListValidateReconciled
NvSciError NvSciSyncAttrListValidateReconciled(NvSciSyncAttrList reconciledAttrList, const NvSciSyncAttrList inputUnreconciledAttrListArray[], size_t inputUnreconciledAttrListCount, bool *isReconciledListValid)
Validates a reconciled NvSciSyncAttrList against a set of input unreconciled NvSciSyncAttrLists.
NvSciSyncAttrKey_NumTaskStatusSlots
@ NvSciSyncAttrKey_NumTaskStatusSlots
(uint32_t, out) Specifies the total number of slots in the task status buffer.
Definition: nvscisync.h:607
NvSciSyncAttrKey_ActualPerm
@ NvSciSyncAttrKey_ActualPerm
(NvSciSyncAccessPerm, out) Actual permission granted after reconciliation.
Definition: nvscisync.h:544
NvSciSyncFenceExtractTimestampSlot
NvSciError NvSciSyncFenceExtractTimestampSlot(NvSciSyncFence *syncFence, uint32_t *timeStampSlot)
Reads the current timestamp slot index from the NvSciSyncFence.
NvSciSyncAttrValPrimitiveType_UpperBound
@ NvSciSyncAttrValPrimitiveType_UpperBound
For NvSciSync internal use only.
Definition: nvscisync.h:453
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-slo...
NvSciSyncAttrListFree
void NvSciSyncAttrListFree(NvSciSyncAttrList attrList)
Frees the NvSciSyncAttrList and removes its association with the NvSciSyncModule with which it was cr...
NvSciSyncAttrListGetSlotCount
size_t NvSciSyncAttrListGetSlotCount(NvSciSyncAttrList attrList)
Gets the slot count of the given NvSciSyncAttrList.
NvSciSyncModule
struct NvSciSyncModuleRec * NvSciSyncModule
Represents an instance of the NvSciSyncModule.
Definition: nvscisync.h:211
NvSciSyncFenceUpdateFence
NvSciError NvSciSyncFenceUpdateFence(NvSciSyncObj syncObj, uint64_t id, uint64_t value, NvSciSyncFence *syncFence)
Populates the input NvSciSyncFence based on the input id and value.
nvscierror.h
NvSciSyncAttrKey_UpperBound
@ NvSciSyncAttrKey_UpperBound
Specifies the upper bound - for NvSciSync internal use only.
Definition: nvscisync.h:658
NvSciSyncFenceInitializer
static const NvSciSyncFence NvSciSyncFenceInitializer
Defines the value used to zero-initialize the NvSciSyncFence object.
Definition: nvscisync.h:266
NvSciSyncObj
struct NvSciSyncObjRec * NvSciSyncObj
A Synchronization Object is a container holding the reconciled NvSciSyncAttrList defining constraints...
Definition: nvscisync.h:311
NvSciSyncAttrListCreate
NvSciError NvSciSyncAttrListCreate(NvSciSyncModule module, NvSciSyncAttrList *attrList)
Creates a new, single-slot unreconciled NvSciSyncAttrList associated with the input NvSciSyncModule w...
PACK_SYNC
#define PACK_SYNC(__Declaration__,...)
Definition: nvscisync.h:176
NvSciSyncAttrListAppendUnreconciled
NvSciError NvSciSyncAttrListAppendUnreconciled(const NvSciSyncAttrList inputUnreconciledAttrListArray[], size_t inputUnreconciledAttrListCount, NvSciSyncAttrList *newUnreconciledAttrList)
Appends multiple unreconciled NvSciSyncAttrLists together, forming a single new unreconciled NvSciSyn...
NvSciSyncAttrListIpcExportReconciled
NvSciError NvSciSyncAttrListIpcExportReconciled(const NvSciSyncAttrList reconciledAttrList, NvSciIpcEndpoint ipcEndpoint, void **descBuf, size_t *descLen)
Transforms the reconciled NvSciSyncAttrList to an exportable reconciled NvSciSyncAttrList descriptor ...
NvSciSyncFenceIpcExportDescriptor
Defines the exported form of NvSciSyncFence intended to be shared across an NvSciIpc channel.
Definition: nvscisync.h:274
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 ...
NvSciSyncTaskStatus_Success
@ NvSciSyncTaskStatus_Success
The task has completed successfully.
Definition: nvscisync.h:389
NvSciSyncAttrListClone
NvSciError NvSciSyncAttrListClone(NvSciSyncAttrList origAttrList, NvSciSyncAttrList *newAttrList)
Clones an NvSciSyncAttrList.
NvSciSyncAttrKey_WaiterContextInsensitiveFenceExports
@ NvSciSyncAttrKey_WaiterContextInsensitiveFenceExports
(bool, inout) Importing and then exporting an NvSciSyncFenceIpcExportDescriptor has no side effects a...
Definition: nvscisync.h:563
NvSciSyncWaitMode
NvSciSyncWaitMode
Modes of CPU waiting.
Definition: nvscisync.h:682
NvSciSyncCpuWaitContext
struct NvSciSyncCpuWaitContextRec * NvSciSyncCpuWaitContext
Represents the right to perform a CPU wait on an NvSciSyncFence.
Definition: nvscisync.h:223
NvSciSyncFenceDup
NvSciError NvSciSyncFenceDup(const NvSciSyncFence *srcSyncFence, NvSciSyncFence *dstSyncFence)
Duplicates the given NvSciSyncFence, such that any wait on duplicated NvSciSyncFence will complete at...