NVIDIA DRIVE OS Linux SDK API Reference

6.0.8 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 
151 #if !defined (__cplusplus)
152 #include <stddef.h>
153 #include <stdbool.h>
154 #include <stdint.h>
155 #endif
156 
157 #include "nvscierror.h"
158 #include "nvsciipc.h"
159 #include "nvscibuf.h"
160 
161 #if defined (__cplusplus)
162 extern "C"
163 {
164 #endif
165 
166 #if defined __GNUC__
167  #define PACK_SYNC( __Declaration__, ... ) __Declaration__,##__VA_ARGS__ __attribute__((packed))
168 #else
169  #define PACK_SYNC( __Declaration__, ... ) __pragma(pack(push, 1)) __Declaration__,##__VA_ARGS__ __pragma(pack(pop))
170 #endif
171 
177 static const uint32_t NvSciSyncMajorVersion = 2U;
178 
184 static const uint32_t NvSciSyncMinorVersion = 8U;
185 
191 static const int64_t NvSciSyncFenceMaxTimeout = (0x7fffffffffffffff / 1000);
192 
204 typedef struct NvSciSyncModuleRec* NvSciSyncModule;
205 
216 typedef struct NvSciSyncCpuWaitContextRec* NvSciSyncCpuWaitContext;
217 
249 typedef struct NvSciSyncFence {
250  uint64_t payload[6];
252 
260 
267 typedef struct {
268  uint64_t payload[7];
270 
277 typedef struct {
279  uint64_t payload[128];
281 
304 typedef struct NvSciSyncObjRec* NvSciSyncObj;
305 
310 typedef const struct NvSciSyncObjRec* NvSciSyncObjConst;
311 
323 typedef struct NvSciSyncAttrListRec* NvSciSyncAttrList;
324 
330 typedef uint64_t NvSciSyncAccessPerm;
331 
336 #if defined(__cplusplus)
337  #define NvSciSyncAccessPerm_WaitOnly (static_cast<uint64_t>(1U) << 0U)
338 #else
339  #define NvSciSyncAccessPerm_WaitOnly ((uint64_t)1U << 0U)
340 #endif
341 
346 #if defined(__cplusplus)
347  #define NvSciSyncAccessPerm_SignalOnly (static_cast<uint64_t>(1U) << 1U)
348 #else
349  #define NvSciSyncAccessPerm_SignalOnly ((uint64_t)1U << 1U)
350 #endif
351 
357 #define NvSciSyncAccessPerm_WaitSignal (NvSciSyncAccessPerm_WaitOnly | NvSciSyncAccessPerm_SignalOnly)
358 
363 #if defined(__cplusplus)
364  #define NvSciSyncAccessPerm_Auto (static_cast<uint64_t>(1U) << 63U)
365 #else
366  #define NvSciSyncAccessPerm_Auto ((uint64_t)1U << 63U)
367 #endif
368 
380 typedef enum {
389 
395 PACK_SYNC(typedef struct {
397  uint64_t timestamp;
399  uint32_t statusEngine;
401  uint16_t subframe;
405  uint16_t status;
406 }) NvSciSyncTaskStatus;
407 
447 };
448 
455 
468 typedef enum {
626 
632 #if (NV_IS_SAFETY == 0)
633 
638 #else
639 
642 #endif
653 
661 typedef struct {
667  const void* value;
669  size_t len;
671 
675 typedef enum {
685 
720  NvSciSyncModule* newModule);
721 
762  NvSciSyncModule module);
763 
799  NvSciSyncModule module,
800  NvSciSyncCpuWaitContext* newContext);
801 
831  NvSciSyncCpuWaitContext context);
832 
868  NvSciSyncModule module,
869  NvSciSyncAttrList* attrList);
870 
900  NvSciSyncAttrList attrList);
901 
931  NvSciSyncAttrList attrList,
932  bool* isReconciled);
933 
989  NvSciSyncAttrList reconciledAttrList,
990  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
991  size_t inputUnreconciledAttrListCount,
992  bool* isReconciledListValid);
993 
1043  NvSciSyncAttrList attrList,
1044  const NvSciSyncAttrKeyValuePair* pairArray,
1045  size_t pairCount);
1046 
1090  NvSciSyncAttrList attrList,
1091  NvSciSyncAttrKeyValuePair* pairArray,
1092  size_t pairCount);
1093 
1118  NvSciSyncAttrList attrList);
1119 
1176  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1177  size_t inputUnreconciledAttrListCount,
1178  NvSciSyncAttrList* newUnreconciledAttrList);
1179 
1221  NvSciSyncAttrList origAttrList,
1222  NvSciSyncAttrList* newAttrList);
1223 
1272  NvSciSyncAttrList attrList,
1273  size_t slotIndex,
1274  NvSciSyncAttrKeyValuePair* pairArray,
1275  size_t pairCount);
1276 
1285 #if (NV_IS_SAFETY == 0)
1286 
1292 #endif
1293 
1303 #if (NV_IS_SAFETY == 0)
1304 
1309 #else
1310 
1313 #endif
1314 
1329 #if (NV_IS_SAFETY == 0)
1330 
1332 #endif
1333 
1363  const NvSciSyncAttrList inputArray[],
1364  size_t inputCount,
1365  NvSciSyncAttrList* newReconciledList,
1366  NvSciSyncAttrList* newConflictList);
1367 
1368 #if (NV_IS_SAFETY == 0)
1369 
1406  NvSciSyncAttrList attrList,
1407  void** buf,
1408  size_t* len);
1409 #endif
1410 
1458 #if (NV_IS_SAFETY == 0)
1459 
1462 #endif
1463 
1486  const NvSciSyncAttrList unreconciledAttrListArray[],
1487  size_t unreconciledAttrListCount,
1488  NvSciIpcEndpoint ipcEndpoint,
1489  void** descBuf,
1490  size_t* descLen);
1491 
1538  const NvSciSyncAttrList reconciledAttrList,
1539  NvSciIpcEndpoint ipcEndpoint,
1540  void** descBuf,
1541  size_t* descLen);
1542 
1593  NvSciSyncModule module,
1594  NvSciIpcEndpoint ipcEndpoint,
1595  const void* descBuf,
1596  size_t descLen,
1597  NvSciSyncAttrList* importedUnreconciledAttrList);
1598 
1679  NvSciSyncModule module,
1680  NvSciIpcEndpoint ipcEndpoint,
1681  const void* descBuf,
1682  size_t descLen,
1683  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1684  size_t inputUnreconciledAttrListCount,
1685  NvSciSyncAttrList* importedReconciledAttrList);
1686 
1715  void* descBuf);
1716 
1745 void NvSciSyncFenceClear(
1746  NvSciSyncFence* syncFence);
1747 
1788  const NvSciSyncFence* srcSyncFence,
1789  NvSciSyncFence* dstSyncFence);
1790 
1822  const NvSciSyncFence* syncFence,
1823  uint64_t* id,
1824  uint64_t* value);
1825 
1878  NvSciSyncObj syncObj,
1879  uint64_t id,
1880  uint64_t value,
1881  NvSciSyncFence* syncFence);
1882 
1916  NvSciSyncFence* syncFence,
1917  uint32_t timestampSlot);
1918 
1952  NvSciSyncFence* syncFence,
1953  uint32_t taskStatusSlot);
1954 
1987  NvSciSyncFence* syncFence,
1988  uint32_t* timeStampSlot);
1989 
2033  NvSciSyncAttrList reconciledList,
2034  NvSciSyncObj* syncObj);
2035 
2077  NvSciSyncObj syncObj,
2078  NvSciSyncObj* dupObj);
2079 
2114  NvSciSyncObj syncObj,
2115  NvSciSyncAttrList* syncAttrList);
2116 
2155 void NvSciSyncObjFree(
2156  NvSciSyncObj syncObj);
2157 
2195 #if (NV_L4T == 1)
2196 
2200 #endif
2201 
2222  NvSciSyncObj syncObj,
2223  NvSciSyncAccessPerm permissions,
2224  NvSciIpcEndpoint ipcEndpoint,
2226 
2297  NvSciIpcEndpoint ipcEndpoint,
2298  const NvSciSyncObjIpcExportDescriptor* desc,
2299  NvSciSyncAttrList inputAttrList,
2300  NvSciSyncAccessPerm permissions,
2301  int64_t timeoutUs,
2302  NvSciSyncObj* syncObj);
2303 
2345  const NvSciSyncFence* syncFence,
2346  NvSciIpcEndpoint ipcEndpoint,
2348 
2394  NvSciSyncObj syncObj,
2396  NvSciSyncFence* syncFence);
2397 
2402 #if (NV_IS_SAFETY == 0)
2403 
2411 #else
2412 
2427 #endif
2428 
2446  NvSciSyncObj syncObj);
2447 
2463 #if (NV_IS_SAFETY == 0)
2464 
2467 #endif
2468 
2493  NvSciSyncObj syncObj,
2494  NvSciSyncFence* syncFence);
2495 
2500 #if (NV_IS_SAFETY == 0)
2501 
2504 #endif
2505 
2536  NvSciSyncObj syncObj);
2537 
2596  const NvSciSyncFence* syncFence,
2597  NvSciSyncCpuWaitContext context,
2598  int64_t timeoutUs);
2599 
2638  const NvSciSyncFence* syncFence,
2639  uint64_t* timestampUS);
2640 
2675  const NvSciSyncFence* syncFence,
2676  NvSciSyncTaskStatus* taskStatus);
2677 
2678 /*
2679  * NvSciSync Utility functions
2680  */
2681 
2722  NvSciSyncAttrList attrList,
2723  NvSciSyncAttrKey key,
2724  const void** value,
2725  size_t* len);
2726 
2744 #if (NV_IS_SAFETY == 0)
2745 
2751 #else
2752 
2755 #endif
2756 
2771 #if (NV_IS_SAFETY == 0)
2772 
2774 #endif
2775 
2803  const NvSciSyncAttrList inputArray[],
2804  size_t inputCount,
2805  NvSciSyncObj* syncObj,
2806  NvSciSyncAttrList* newConflictList);
2807 
2865  NvSciSyncObj syncObj,
2866  NvSciSyncAccessPerm permissions,
2867  NvSciIpcEndpoint ipcEndpoint,
2868  void** attrListAndObjDesc,
2869  size_t* attrListAndObjDescSize);
2870 
2901  void* attrListAndObjDescBuf);
2902 
2986  NvSciSyncModule module,
2987  NvSciIpcEndpoint ipcEndpoint,
2988  const void* attrListAndObjDesc,
2989  size_t attrListAndObjDescSize,
2990  NvSciSyncAttrList const attrList[],
2991  size_t attrListCount,
2992  NvSciSyncAccessPerm minPermissions,
2993  int64_t timeoutUs,
2994  NvSciSyncObj* syncObj);
2995 
3031 #if (NV_IS_SAFETY == 0)
3032 
3035 #endif
3037  uint32_t majorVer,
3038  uint32_t minorVer,
3039  bool* isCompatible);
3040 
3087  NvSciSyncObj syncObj,
3088  const NvSciSyncAttrList inputArray[],
3089  size_t inputCount);
3090 
3125  NvSciSyncAttrList unrecAttrList,
3126  NvSciSyncAccessPerm permissions);
3127 
3134 #if (NV_IS_SAFETY == 0)
3135 
3146 #else
3147 
3168 #endif
3169 
3187  NvSciSyncAttrList reconciledAttrList,
3188  const NvSciSyncAttrKeyValuePair* pairArray,
3189  size_t pairCount,
3190  NvSciSyncAccessPerm permissions);
3191 
3263  const NvSciSyncFence* syncFence,
3264  NvSciSyncCpuWaitContext context,
3265  int64_t timeoutUs,
3266  NvSciSyncWaitMode waitMode);
3267 
3268 #if defined(__cplusplus)
3269 }
3270 #endif // __cplusplus
3271 
3272 #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:444
NvSciSyncAttrKey_RequireDeterministicFences
@ NvSciSyncAttrKey_RequireDeterministicFences
(bool, inout) Specifies if deterministic primitives are required.
Definition: nvscisync.h:574
NvSciSyncAccessPerm
uint64_t NvSciSyncAccessPerm
Describes NvSciSyncObj access permissions.
Definition: nvscisync.h:330
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:677
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:498
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:426
NvSciSyncTaskStatus_Failure
@ NvSciSyncTaskStatus_Failure
The task has failed.
Definition: nvscisync.h:384
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:420
NvSciSyncAttrKeyValuePair::len
size_t len
Length of the value in bytes.
Definition: nvscisync.h:669
NvSciSyncTaskStatusVal
NvSciSyncTaskStatusVal
Status of the signaler's task that signals a particular NvSciSyncFence.
Definition: nvscisync.h:380
NvSciSyncFence::payload
uint64_t payload[6]
Definition: nvscisync.h:250
NvSciSyncAttrKey_LowerBound
@ NvSciSyncAttrKey_LowerBound
Specifies the lower bound - for NvSciSync internal use only.
Definition: nvscisync.h:470
NvSciSyncTaskStatus_Invalid
@ NvSciSyncTaskStatus_Invalid
The signaler did not report any task status.
Definition: nvscisync.h:387
NvSciSyncWaitMode_BusyNoYield
@ NvSciSyncWaitMode_BusyNoYield
Polling with spin, no yielding.
Definition: nvscisync.h:681
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:665
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:177
NvSciSyncAttrKey_PeerHwEngineArray
@ NvSciSyncAttrKey_PeerHwEngineArray
(NvSciBufPeerHwEngine[], inout) An attribute indicating engine information of late peer which are goi...
Definition: nvscisync.h:649
NvSciSyncAttrList
struct NvSciSyncAttrListRec * NvSciSyncAttrList
A container constituting an NvSciSyncAttrList which contains:
Definition: nvscisync.h:323
NvSciSyncAttrValPrimitiveType
enum NvSciSyncAttrValPrimitiveTypeRec NvSciSyncAttrValPrimitiveType
Alias for enum NvSciSyncAttrValPrimitiveTypeRec.
Definition: nvscisync.h:454
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:584
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:562
NvSciSyncAttrKeyValuePair::value
const void * value
Memory which contains the value corresponding to the key.
Definition: nvscisync.h:667
NvSciSyncAttrKey_MaxPrimitiveValue
@ NvSciSyncAttrKey_MaxPrimitiveValue
(uint64_t, out) Specifies the maximum value of the reconciled primitive.
Definition: nvscisync.h:602
NvSciSyncFenceMaxTimeout
static const int64_t NvSciSyncFenceMaxTimeout
Maximum supported timeout value.
Definition: nvscisync.h:191
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:631
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:625
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:310
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:277
NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b
@ NvSciSyncAttrValPrimitiveType_SysmemSemaphorePayload64b
16 bytes semaphore backed by system memory.
Definition: nvscisync.h:438
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:432
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:468
NvSciSyncWaitMode_BusyWithYield
@ NvSciSyncWaitMode_BusyWithYield
Polling with processor yielding.
Definition: nvscisync.h:679
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:643
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:661
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:506
NvSciSyncAttrValPrimitiveTypeRec
NvSciSyncAttrValPrimitiveTypeRec
Types of synchronization primitives.
Definition: nvscisync.h:413
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:184
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:415
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.
NvSciSyncAttrListDebugDump
NvSciError NvSciSyncAttrListDebugDump(NvSciSyncAttrList attrList, void **buf, size_t *len)
Dumps the NvSciSyncAttrList into a binary descriptor.
NvSciSyncFence
struct NvSciSyncFence NvSciSyncFence
Defines the opaque NvSciSyncFence.
NvSciSyncFence
Defines the opaque NvSciSyncFence.
Definition: nvscisync.h:249
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:683
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:594
NvSciSyncAttrKey_ActualPerm
@ NvSciSyncAttrKey_ActualPerm
(NvSciSyncAccessPerm, out) Actual permission granted after reconciliation.
Definition: nvscisync.h:537
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:446
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:204
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:651
NvSciSyncFenceInitializer
static const NvSciSyncFence NvSciSyncFenceInitializer
Defines the value used to zero-initialize the NvSciSyncFence object.
Definition: nvscisync.h:259
NvSciSyncObj
struct NvSciSyncObjRec * NvSciSyncObj
A Synchronization Object is a container holding the reconciled NvSciSyncAttrList defining constraints...
Definition: nvscisync.h:304
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:169
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:267
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:382
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:556
NvSciSyncWaitMode
NvSciSyncWaitMode
Modes of CPU waiting.
Definition: nvscisync.h:675
NvSciSyncCpuWaitContext
struct NvSciSyncCpuWaitContextRec * NvSciSyncCpuWaitContext
Represents the right to perform a CPU wait on an NvSciSyncFence.
Definition: nvscisync.h:216
NvSciSyncFenceDup
NvSciError NvSciSyncFenceDup(const NvSciSyncFence *srcSyncFence, NvSciSyncFence *dstSyncFence)
Duplicates the given NvSciSyncFence, such that any wait on duplicated NvSciSyncFence will complete at...