NVIDIA DRIVE OS Linux SDK API Reference

6.0.9 Release
nvscisync.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019-2023, 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 
727  NvSciSyncModule* newModule);
728 
769  NvSciSyncModule module);
770 
806  NvSciSyncModule module,
807  NvSciSyncCpuWaitContext* newContext);
808 
838  NvSciSyncCpuWaitContext context);
839 
875  NvSciSyncModule module,
876  NvSciSyncAttrList* attrList);
877 
907  NvSciSyncAttrList attrList);
908 
938  NvSciSyncAttrList attrList,
939  bool* isReconciled);
940 
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 
1097  NvSciSyncAttrList attrList,
1098  NvSciSyncAttrKeyValuePair* pairArray,
1099  size_t pairCount);
1100 
1125  NvSciSyncAttrList attrList);
1126 
1183  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1184  size_t inputUnreconciledAttrListCount,
1185  NvSciSyncAttrList* newUnreconciledAttrList);
1186 
1228  NvSciSyncAttrList origAttrList,
1229  NvSciSyncAttrList* newAttrList);
1230 
1279  NvSciSyncAttrList attrList,
1280  size_t slotIndex,
1281  NvSciSyncAttrKeyValuePair* pairArray,
1282  size_t pairCount);
1283 
1292 #if (NV_IS_SAFETY == 0)
1293 
1299 #endif
1300 
1310 #if (NV_IS_SAFETY == 0)
1311 
1316 #else
1317 
1320 #endif
1321 
1336 #if (NV_IS_SAFETY == 0)
1337 
1339 #endif
1340 
1370  const NvSciSyncAttrList inputArray[],
1371  size_t inputCount,
1372  NvSciSyncAttrList* newReconciledList,
1373  NvSciSyncAttrList* newConflictList);
1374 
1375 #if (NV_IS_SAFETY == 0)
1376 
1416 NvSciError NvSciSyncAttrListDebugDump(
1418  NvSciSyncAttrList attrList,
1419  void** buf,
1420  size_t* len);
1422 #endif
1423 
1471 #if (NV_IS_SAFETY == 0)
1472 
1475 #endif
1476 
1501  const NvSciSyncAttrList unreconciledAttrListArray[],
1502  size_t unreconciledAttrListCount,
1503  NvSciIpcEndpoint ipcEndpoint,
1504  void** descBuf,
1505  size_t* descLen);
1506 
1555  const NvSciSyncAttrList reconciledAttrList,
1556  NvSciIpcEndpoint ipcEndpoint,
1557  void** descBuf,
1558  size_t* descLen);
1559 
1610  NvSciSyncModule module,
1611  NvSciIpcEndpoint ipcEndpoint,
1612  const void* descBuf,
1613  size_t descLen,
1614  NvSciSyncAttrList* importedUnreconciledAttrList);
1615 
1696  NvSciSyncModule module,
1697  NvSciIpcEndpoint ipcEndpoint,
1698  const void* descBuf,
1699  size_t descLen,
1700  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1701  size_t inputUnreconciledAttrListCount,
1702  NvSciSyncAttrList* importedReconciledAttrList);
1703 
1732  void* descBuf);
1733 
1762 void NvSciSyncFenceClear(
1763  NvSciSyncFence* syncFence);
1764 
1805  const NvSciSyncFence* srcSyncFence,
1806  NvSciSyncFence* dstSyncFence);
1807 
1839  const NvSciSyncFence* syncFence,
1840  uint64_t* id,
1841  uint64_t* value);
1842 
1895  NvSciSyncObj syncObj,
1896  uint64_t id,
1897  uint64_t value,
1898  NvSciSyncFence* syncFence);
1899 
1933  NvSciSyncFence* syncFence,
1934  uint32_t timestampSlot);
1935 
1969  NvSciSyncFence* syncFence,
1970  uint32_t taskStatusSlot);
1971 
2004  NvSciSyncFence* syncFence,
2005  uint32_t* timeStampSlot);
2006 
2050  NvSciSyncAttrList reconciledList,
2051  NvSciSyncObj* syncObj);
2052 
2094  NvSciSyncObj syncObj,
2095  NvSciSyncObj* dupObj);
2096 
2131  NvSciSyncObj syncObj,
2132  NvSciSyncAttrList* syncAttrList);
2133 
2172 void NvSciSyncObjFree(
2173  NvSciSyncObj syncObj);
2174 
2212 #if (NV_L4T == 1)
2213 
2217 #endif
2218 
2239  NvSciSyncObj syncObj,
2240  NvSciSyncAccessPerm permissions,
2241  NvSciIpcEndpoint ipcEndpoint,
2243 
2314  NvSciIpcEndpoint ipcEndpoint,
2315  const NvSciSyncObjIpcExportDescriptor* desc,
2316  NvSciSyncAttrList inputAttrList,
2317  NvSciSyncAccessPerm permissions,
2318  int64_t timeoutUs,
2319  NvSciSyncObj* syncObj);
2320 
2362  const NvSciSyncFence* syncFence,
2363  NvSciIpcEndpoint ipcEndpoint,
2365 
2411  NvSciSyncObj syncObj,
2413  NvSciSyncFence* syncFence);
2414 
2419 #if (NV_IS_SAFETY == 0)
2420 
2428 #else
2429 
2444 #endif
2445 
2463  NvSciSyncObj syncObj);
2464 
2480 #if (NV_IS_SAFETY == 0)
2481 
2484 #endif
2485 
2510  NvSciSyncObj syncObj,
2511  NvSciSyncFence* syncFence);
2512 
2517 #if (NV_IS_SAFETY == 0)
2518 
2521 #endif
2522 
2553  NvSciSyncObj syncObj);
2554 
2613  const NvSciSyncFence* syncFence,
2614  NvSciSyncCpuWaitContext context,
2615  int64_t timeoutUs);
2616 
2655  const NvSciSyncFence* syncFence,
2656  uint64_t* timestampUS);
2657 
2692  const NvSciSyncFence* syncFence,
2693  NvSciSyncTaskStatus* taskStatus);
2694 
2695 /*
2696  * NvSciSync Utility functions
2697  */
2698 
2739  NvSciSyncAttrList attrList,
2740  NvSciSyncAttrKey key,
2741  const void** value,
2742  size_t* len);
2743 
2761 #if (NV_IS_SAFETY == 0)
2762 
2768 #else
2769 
2772 #endif
2773 
2788 #if (NV_IS_SAFETY == 0)
2789 
2791 #endif
2792 
2820  const NvSciSyncAttrList inputArray[],
2821  size_t inputCount,
2822  NvSciSyncObj* syncObj,
2823  NvSciSyncAttrList* newConflictList);
2824 
2882  NvSciSyncObj syncObj,
2883  NvSciSyncAccessPerm permissions,
2884  NvSciIpcEndpoint ipcEndpoint,
2885  void** attrListAndObjDesc,
2886  size_t* attrListAndObjDescSize);
2887 
2918  void* attrListAndObjDescBuf);
2919 
3003  NvSciSyncModule module,
3004  NvSciIpcEndpoint ipcEndpoint,
3005  const void* attrListAndObjDesc,
3006  size_t attrListAndObjDescSize,
3007  NvSciSyncAttrList const attrList[],
3008  size_t attrListCount,
3009  NvSciSyncAccessPerm minPermissions,
3010  int64_t timeoutUs,
3011  NvSciSyncObj* syncObj);
3012 
3048 #if (NV_IS_SAFETY == 0)
3049 
3052 #endif
3054  uint32_t majorVer,
3055  uint32_t minorVer,
3056  bool* isCompatible);
3057 
3104  NvSciSyncObj syncObj,
3105  const NvSciSyncAttrList inputArray[],
3106  size_t inputCount);
3107 
3142  NvSciSyncAttrList unrecAttrList,
3143  NvSciSyncAccessPerm permissions);
3144 
3151 #if (NV_IS_SAFETY == 0)
3152 
3163 #else
3164 
3185 #endif
3186 
3204  NvSciSyncAttrList reconciledAttrList,
3205  const NvSciSyncAttrKeyValuePair* pairArray,
3206  size_t pairCount,
3207  NvSciSyncAccessPerm permissions);
3208 
3280  const NvSciSyncFence* syncFence,
3281  NvSciSyncCpuWaitContext context,
3282  int64_t timeoutUs,
3283  NvSciSyncWaitMode waitMode);
3284 
3285 #if defined(__cplusplus)
3286 }
3287 #endif // __cplusplus
3288 
3289 #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:322
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.
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...