NVIDIA DriveOS Linux NSR SDK API Reference

7.0.3.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 {
642 
663 
671 typedef struct {
677  const void* value;
679  size_t len;
681 
685 typedef enum {
695 
729  NvSciSyncModule* newModule);
730 
771  NvSciSyncModule module);
772 
808  NvSciSyncModule module,
809  NvSciSyncCpuWaitContext* newContext);
810 
840  NvSciSyncCpuWaitContext context);
841 
877  NvSciSyncModule module,
878  NvSciSyncAttrList* attrList);
879 
909  NvSciSyncAttrList attrList);
910 
940  NvSciSyncAttrList attrList,
941  bool* isReconciled);
942 
1003  NvSciSyncAttrList reconciledAttrList,
1004  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1005  size_t inputUnreconciledAttrListCount,
1006  bool* isReconciledListValid);
1007 
1057  NvSciSyncAttrList attrList,
1058  const NvSciSyncAttrKeyValuePair* pairArray,
1059  size_t pairCount);
1060 
1106  NvSciSyncAttrList attrList,
1107  NvSciSyncAttrKeyValuePair* pairArray,
1108  size_t pairCount);
1109 
1134  NvSciSyncAttrList attrList);
1135 
1195  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1196  size_t inputUnreconciledAttrListCount,
1197  NvSciSyncAttrList* newUnreconciledAttrList);
1198 
1241  NvSciSyncAttrList origAttrList,
1242  NvSciSyncAttrList* newAttrList);
1243 
1294  NvSciSyncAttrList attrList,
1295  size_t slotIndex,
1296  NvSciSyncAttrKeyValuePair* pairArray,
1297  size_t pairCount);
1298 
1304 #if (NV_IS_SAFETY == 0)
1305 
1311 #endif
1312 
1321 #if (NV_IS_SAFETY == 0)
1322 
1327 #else
1328 
1331 #endif
1332 
1347 #if (NV_IS_SAFETY == 0)
1348 
1350 #endif
1351 
1386  const NvSciSyncAttrList inputArray[],
1387  size_t inputCount,
1388  NvSciSyncAttrList* newReconciledList,
1389  NvSciSyncAttrList* newConflictList);
1390 
1391 #if (NV_IS_SAFETY == 0)
1392 
1432 NvSciError NvSciSyncAttrListDebugDump(
1434  NvSciSyncAttrList attrList,
1435  void** buf,
1436  size_t* len);
1438 #endif
1439 
1481 #if (NV_IS_SAFETY == 0)
1482 
1485 #endif
1486 
1516  const NvSciSyncAttrList unreconciledAttrListArray[],
1517  size_t unreconciledAttrListCount,
1518  NvSciIpcEndpoint ipcEndpoint,
1519  void** descBuf,
1520  size_t* descLen);
1521 
1569  const NvSciSyncAttrList reconciledAttrList,
1570  NvSciIpcEndpoint ipcEndpoint,
1571  void** descBuf,
1572  size_t* descLen);
1573 
1626  NvSciSyncModule module,
1627  NvSciIpcEndpoint ipcEndpoint,
1628  const void* descBuf,
1629  size_t descLen,
1630  NvSciSyncAttrList* importedUnreconciledAttrList);
1631 
1713  NvSciSyncModule module,
1714  NvSciIpcEndpoint ipcEndpoint,
1715  const void* descBuf,
1716  size_t descLen,
1717  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1718  size_t inputUnreconciledAttrListCount,
1719  NvSciSyncAttrList* importedReconciledAttrList);
1720 
1749  void* descBuf);
1750 
1779 void NvSciSyncFenceClear(
1780  NvSciSyncFence* syncFence);
1781 
1825  const NvSciSyncFence* srcSyncFence,
1826  NvSciSyncFence* dstSyncFence);
1827 
1859  const NvSciSyncFence* syncFence,
1860  uint64_t* id,
1861  uint64_t* value);
1862 
1916  NvSciSyncObj syncObj,
1917  uint64_t id,
1918  uint64_t value,
1919  NvSciSyncFence* syncFence);
1920 
1954  NvSciSyncFence* syncFence,
1955  uint32_t timestampSlot);
1956 
1990  NvSciSyncFence* syncFence,
1991  uint32_t taskStatusSlot);
1992 
2025  NvSciSyncFence* syncFence,
2026  uint32_t* timeStampSlot);
2027 
2071  NvSciSyncAttrList reconciledList,
2072  NvSciSyncObj* syncObj);
2073 
2114  NvSciSyncObj syncObj,
2115  NvSciSyncObj* dupObj);
2116 
2151  NvSciSyncObj syncObj,
2152  NvSciSyncAttrList* syncAttrList);
2153 
2192 void NvSciSyncObjFree(
2193  NvSciSyncObj syncObj);
2194 
2232 #if (NV_L4T == 1)
2233 
2237 #endif
2238 
2260  NvSciSyncObj syncObj,
2261  NvSciSyncAccessPerm permissions,
2262  NvSciIpcEndpoint ipcEndpoint,
2264 
2338  NvSciIpcEndpoint ipcEndpoint,
2339  const NvSciSyncObjIpcExportDescriptor* desc,
2340  NvSciSyncAttrList inputAttrList,
2341  NvSciSyncAccessPerm permissions,
2342  int64_t timeoutUs,
2343  NvSciSyncObj* syncObj);
2344 
2387  const NvSciSyncFence* syncFence,
2388  NvSciIpcEndpoint ipcEndpoint,
2390 
2435  NvSciSyncObj syncObj,
2437  NvSciSyncFence* syncFence);
2438 
2443 #if (NV_IS_SAFETY == 0)
2444 
2452 #else
2453 
2469 #endif
2470 
2490  NvSciSyncObj syncObj);
2491 
2507 #if (NV_IS_SAFETY == 0)
2508 
2511 #endif
2512 
2538  NvSciSyncObj syncObj,
2539  NvSciSyncFence* syncFence);
2540 
2577  NvSciSyncObj syncObj);
2578 
2639  const NvSciSyncFence* syncFence,
2640  NvSciSyncCpuWaitContext context,
2641  int64_t timeoutUs);
2642 
2686  const NvSciSyncFence* syncFence,
2687  uint64_t* timestampUS);
2688 
2724  const NvSciSyncFence* syncFence,
2725  NvSciSyncTaskStatus* taskStatus);
2726 
2727 /*
2728  * NvSciSync Utility functions
2729  */
2730 
2773  NvSciSyncAttrList attrList,
2774  NvSciSyncAttrKey key,
2775  const void** value,
2776  size_t* len);
2777 
2797 #if (NV_IS_SAFETY == 0)
2798 
2804 #else
2805 
2808 #endif
2809 
2824 #if (NV_IS_SAFETY == 0)
2825 
2827 #endif
2828 
2856  const NvSciSyncAttrList inputArray[],
2857  size_t inputCount,
2858  NvSciSyncObj* syncObj,
2859  NvSciSyncAttrList* newConflictList);
2860 
2919  NvSciSyncObj syncObj,
2920  NvSciSyncAccessPerm permissions,
2921  NvSciIpcEndpoint ipcEndpoint,
2922  void** attrListAndObjDesc,
2923  size_t* attrListAndObjDescSize);
2924 
2955  void* attrListAndObjDescBuf);
2956 
3042  NvSciSyncModule module,
3043  NvSciIpcEndpoint ipcEndpoint,
3044  const void* attrListAndObjDesc,
3045  size_t attrListAndObjDescSize,
3046  NvSciSyncAttrList const attrList[],
3047  size_t attrListCount,
3048  NvSciSyncAccessPerm minPermissions,
3049  int64_t timeoutUs,
3050  NvSciSyncObj* syncObj);
3051 
3089  uint32_t majorVer,
3090  uint32_t minorVer,
3091  bool* isCompatible);
3092 
3141  NvSciSyncObj syncObj,
3142  const NvSciSyncAttrList inputArray[],
3143  size_t inputCount);
3144 
3179  NvSciSyncAttrList unrecAttrList,
3180  NvSciSyncAccessPerm permissions);
3181 
3196 #if (NV_IS_SAFETY == 0)
3197 
3208 #else
3209 
3232 #endif
3233 
3253  NvSciSyncAttrList reconciledAttrList,
3254  const NvSciSyncAttrKeyValuePair* pairArray,
3255  size_t pairCount,
3256  NvSciSyncAccessPerm permissions);
3257 
3331  const NvSciSyncFence* syncFence,
3332  NvSciSyncCpuWaitContext context,
3333  int64_t timeoutUs,
3334  NvSciSyncWaitMode waitMode);
3335 
3336 #if defined(__cplusplus)
3337 }
3338 #endif // __cplusplus
3339 
3340 #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:590
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
NvSciSyncObj
struct NvSciSyncObjRec * NvSciSyncObj
Definition: wfdext.h:86
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:687
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:508
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:679
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:691
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:675
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:659
timestamp
const WFDPipeline const WFDSource const WFDTransition const WFDRect *const const WFDuint64 timestamp
Definition: wfdext.h:61
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:600
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:578
NvSciSyncAttrKeyValuePair::value
const void * value
Memory which contains the value corresponding to the key.
Definition: nvscisync.h:677
NvSciSyncAttrKey_MaxPrimitiveValue
@ NvSciSyncAttrKey_MaxPrimitiveValue
(uint64_t, out) Specifies the maximum value of the reconciled primitive.
Definition: nvscisync.h:618
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:647
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:641
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:689
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:653
NvSciIpcEndpoint
uint64_t NvSciIpcEndpoint
Handle to the NvSciIpc endpoint.
Definition: nvsciipc.h:304
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:671
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:516
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:693
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:610
NvSciSyncAttrKey_ActualPerm
@ NvSciSyncAttrKey_ActualPerm
(NvSciSyncAccessPerm, out) Actual permission granted after reconciliation.
Definition: nvscisync.h:547
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...
NvSciSyncAttrList
struct NvSciSyncAttrListRec * NvSciSyncAttrList
Definition: wfdext.h:88
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:661
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:566
NvSciSyncWaitMode
NvSciSyncWaitMode
Modes of CPU waiting.
Definition: nvscisync.h:685
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...