NVIDIA DRIVE OS Linux SDK API Reference

6.0.6 Release
nvscisync.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019-2022, 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 
160 #if defined (__cplusplus)
161 extern "C"
162 {
163 #endif
164 
165 #if defined __GNUC__
166  #define PACK_SYNC( __Declaration__, ... ) __Declaration__,##__VA_ARGS__ __attribute__((packed))
167 #else
168  #define PACK_SYNC( __Declaration__, ... ) __pragma(pack(push, 1)) __Declaration__,##__VA_ARGS__ __pragma(pack(pop))
169 #endif
170 
176 static const uint32_t NvSciSyncMajorVersion = 2U;
177 
183 static const uint32_t NvSciSyncMinorVersion = 4U;
184 
190 static const int64_t NvSciSyncFenceMaxTimeout = (0x7fffffffffffffff / 1000);
191 
203 typedef struct NvSciSyncModuleRec* NvSciSyncModule;
204 
215 typedef struct NvSciSyncCpuWaitContextRec* NvSciSyncCpuWaitContext;
216 
248 typedef struct {
249  uint64_t payload[6];
251 
259 
266 typedef struct {
267  uint64_t payload[7];
269 
276 typedef struct {
278  uint64_t payload[128];
280 
303 typedef struct NvSciSyncObjRec* NvSciSyncObj;
304 
309 typedef const struct NvSciSyncObjRec* NvSciSyncObjConst;
310 
322 typedef struct NvSciSyncAttrListRec* NvSciSyncAttrList;
323 
329 typedef uint64_t NvSciSyncAccessPerm;
330 
335 #define NvSciSyncAccessPerm_WaitOnly ((uint64_t)1U << 0U)
336 
340 #define NvSciSyncAccessPerm_SignalOnly ((uint64_t)1U << 1U)
341 
346 #define NvSciSyncAccessPerm_WaitSignal (NvSciSyncAccessPerm_WaitOnly | NvSciSyncAccessPerm_SignalOnly)
347 
352 #define NvSciSyncAccessPerm_Auto ((uint64_t)1U << 63U)
353 
365 typedef enum {
374 
380 PACK_SYNC(typedef struct {
382  uint64_t timestamp;
384  uint32_t statusEngine;
386  uint16_t subframe;
390  uint16_t status;
391 }) NvSciSyncTaskStatus;
392 
405 typedef enum {
536 
544 typedef struct {
550  const void* value;
552  size_t len;
554 
588  NvSciSyncModule* newModule);
589 
628  NvSciSyncModule module);
629 
664  NvSciSyncModule module,
665  NvSciSyncCpuWaitContext* newContext);
666 
694  NvSciSyncCpuWaitContext context);
695 
730  NvSciSyncModule module,
731  NvSciSyncAttrList* attrList);
732 
760  NvSciSyncAttrList attrList);
761 
790  NvSciSyncAttrList attrList,
791  bool* isReconciled);
792 
847  NvSciSyncAttrList reconciledAttrList,
848  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
849  size_t inputUnreconciledAttrListCount,
850  bool* isReconciledListValid);
851 
900  NvSciSyncAttrList attrList,
901  const NvSciSyncAttrKeyValuePair* pairArray,
902  size_t pairCount);
903 
946  NvSciSyncAttrList attrList,
947  NvSciSyncAttrKeyValuePair* pairArray,
948  size_t pairCount);
949 
974  NvSciSyncAttrList attrList);
975 
1031  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1032  size_t inputUnreconciledAttrListCount,
1033  NvSciSyncAttrList* newUnreconciledAttrList);
1034 
1075  NvSciSyncAttrList origAttrList,
1076  NvSciSyncAttrList* newAttrList);
1077 
1126  NvSciSyncAttrList attrList,
1127  size_t slotIndex,
1128  NvSciSyncAttrKeyValuePair* pairArray,
1129  size_t pairCount);
1130 
1139 #if (NV_IS_SAFETY == 0)
1140 
1146 #endif
1147 
1157 #if (NV_IS_SAFETY == 0)
1158 
1163 #else
1164 
1167 #endif
1168 
1182 #if (NV_IS_SAFETY == 0)
1183 
1185 #endif
1186 
1216  const NvSciSyncAttrList inputArray[],
1217  size_t inputCount,
1218  NvSciSyncAttrList* newReconciledList,
1219  NvSciSyncAttrList* newConflictList);
1220 
1221 #if (NV_IS_SAFETY == 0)
1222 
1258  NvSciSyncAttrList attrList,
1259  void** buf,
1260  size_t* len);
1261 #endif
1262 
1309 #if (NV_IS_SAFETY == 0)
1310 
1313 #endif
1314 
1337  const NvSciSyncAttrList unreconciledAttrListArray[],
1338  size_t unreconciledAttrListCount,
1339  NvSciIpcEndpoint ipcEndpoint,
1340  void** descBuf,
1341  size_t* descLen);
1342 
1388  const NvSciSyncAttrList reconciledAttrList,
1389  NvSciIpcEndpoint ipcEndpoint,
1390  void** descBuf,
1391  size_t* descLen);
1392 
1442  NvSciSyncModule module,
1443  NvSciIpcEndpoint ipcEndpoint,
1444  const void* descBuf,
1445  size_t descLen,
1446  NvSciSyncAttrList* importedUnreconciledAttrList);
1447 
1527  NvSciSyncModule module,
1528  NvSciIpcEndpoint ipcEndpoint,
1529  const void* descBuf,
1530  size_t descLen,
1531  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1532  size_t inputUnreconciledAttrListCount,
1533  NvSciSyncAttrList* importedReconciledAttrList);
1534 
1562  void* descBuf);
1563 
1592 void NvSciSyncFenceClear(
1593  NvSciSyncFence* syncFence);
1594 
1635  const NvSciSyncFence* srcSyncFence,
1636  NvSciSyncFence* dstSyncFence);
1637 
1669  const NvSciSyncFence* syncFence,
1670  uint64_t* id,
1671  uint64_t* value);
1672 
1725  NvSciSyncObj syncObj,
1726  uint64_t id,
1727  uint64_t value,
1728  NvSciSyncFence* syncFence);
1729 
1763  NvSciSyncFence* syncFence,
1764  uint32_t timestampSlot);
1765 
1799  NvSciSyncFence* syncFence,
1800  uint32_t taskStatusSlot);
1801 
1835  NvSciSyncFence* syncFence,
1836  uint32_t* timeStampSlot);
1837 
1880  NvSciSyncAttrList reconciledList,
1881  NvSciSyncObj* syncObj);
1882 
1923  NvSciSyncObj syncObj,
1924  NvSciSyncObj* dupObj);
1925 
1960  NvSciSyncObj syncObj,
1961  NvSciSyncAttrList* syncAttrList);
1962 
1999 void NvSciSyncObjFree(
2000  NvSciSyncObj syncObj);
2001 
2038 #if (NV_L4T == 1)
2039 
2043 #endif
2044 
2065  NvSciSyncObj syncObj,
2066  NvSciSyncAccessPerm permissions,
2067  NvSciIpcEndpoint ipcEndpoint,
2069 
2139  NvSciIpcEndpoint ipcEndpoint,
2140  const NvSciSyncObjIpcExportDescriptor* desc,
2141  NvSciSyncAttrList inputAttrList,
2142  NvSciSyncAccessPerm permissions,
2143  int64_t timeoutUs,
2144  NvSciSyncObj* syncObj);
2145 
2187  const NvSciSyncFence* syncFence,
2188  NvSciIpcEndpoint ipcEndpoint,
2190 
2236  NvSciSyncObj syncObj,
2238  NvSciSyncFence* syncFence);
2239 
2255 #if (NV_IS_SAFETY == 0)
2256 
2259 #endif
2260 
2285  NvSciSyncObj syncObj,
2286  NvSciSyncFence* syncFence);
2287 
2292 #if (NV_IS_SAFETY == 0)
2293 
2296 #endif
2297 
2328  NvSciSyncObj syncObj);
2329 
2388  const NvSciSyncFence* syncFence,
2389  NvSciSyncCpuWaitContext context,
2390  int64_t timeoutUs);
2391 
2431  const NvSciSyncFence* syncFence,
2432  uint64_t* timestampUS);
2433 
2467  const NvSciSyncFence* syncFence,
2468  NvSciSyncTaskStatus* taskStatus);
2469 
2470 /*
2471  * NvSciSync Utility functions
2472  */
2473 
2513  NvSciSyncAttrList attrList,
2514  NvSciSyncAttrKey key,
2515  const void** value,
2516  size_t* len);
2517 
2535 #if (NV_IS_SAFETY == 0)
2536 
2542 #else
2543 
2546 #endif
2547 
2561 #if (NV_IS_SAFETY == 0)
2562 
2564 #endif
2565 
2593  const NvSciSyncAttrList inputArray[],
2594  size_t inputCount,
2595  NvSciSyncObj* syncObj,
2596  NvSciSyncAttrList* newConflictList);
2597 
2654  NvSciSyncObj syncObj,
2655  NvSciSyncAccessPerm permissions,
2656  NvSciIpcEndpoint ipcEndpoint,
2657  void** attrListAndObjDesc,
2658  size_t* attrListAndObjDescSize);
2659 
2689  void* attrListAndObjDescBuf);
2690 
2773  NvSciSyncModule module,
2774  NvSciIpcEndpoint ipcEndpoint,
2775  const void* attrListAndObjDesc,
2776  size_t attrListAndObjDescSize,
2777  NvSciSyncAttrList const attrList[],
2778  size_t attrListCount,
2779  NvSciSyncAccessPerm minPermissions,
2780  int64_t timeoutUs,
2781  NvSciSyncObj* syncObj);
2782 
2817 #if (NV_IS_SAFETY == 0)
2818 
2821 #endif
2823  uint32_t majorVer,
2824  uint32_t minorVer,
2825  bool* isCompatible);
2826 
2827 #if defined(__cplusplus)
2828 }
2829 #endif // __cplusplus
2830 
2831 #endif // INCLUDED_NVSCISYNC_H
NvSciSyncFenceClear
void NvSciSyncFenceClear(NvSciSyncFence *syncFence)
Frees any resources allocated for the NvSciSyncFence.
NvSciSyncAttrKey_RequireDeterministicFences
@ NvSciSyncAttrKey_RequireDeterministicFences
(bool, inout) Specifies if deterministic primitives are required.
Definition: nvscisync.h:504
NvSciSyncAccessPerm
uint64_t NvSciSyncAccessPerm
Describes NvSciSyncObj access permissions.
Definition: nvscisync.h:329
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...
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:428
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...
NvSciSyncTaskStatus_Failure
@ NvSciSyncTaskStatus_Failure
The task has failed.
Definition: nvscisync.h:369
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...
NvSciSyncAttrKeyValuePair::len
size_t len
Length of the value in bytes.
Definition: nvscisync.h:552
NvSciSyncTaskStatusVal
NvSciSyncTaskStatusVal
Status of the signaler's task that signals a particular NvSciSyncFence.
Definition: nvscisync.h:365
NvSciSyncAttrKey_LowerBound
@ NvSciSyncAttrKey_LowerBound
Specifies the lower bound - for NvSciSync internal use only.
Definition: nvscisync.h:407
NvSciSyncTaskStatus_Invalid
@ NvSciSyncTaskStatus_Invalid
The signaler did not report any task status.
Definition: nvscisync.h:372
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:548
NvSciSyncIpcExportFence
NvSciError NvSciSyncIpcExportFence(const NvSciSyncFence *syncFence, NvSciIpcEndpoint ipcEndpoint, NvSciSyncFenceIpcExportDescriptor *desc)
Exports the input NvSciSyncFence into a binary descriptor shareable across the NvSciIpc channel.
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:176
NvSciSyncAttrList
struct NvSciSyncAttrListRec * NvSciSyncAttrList
A container constituting an NvSciSyncAttrList which contains:
Definition: nvscisync.h:322
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:514
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:492
NvSciSyncAttrKeyValuePair::value
const void * value
Memory which contains the value corresponding to the key.
Definition: nvscisync.h:550
NvSciSyncAttrKey_MaxPrimitiveValue
@ NvSciSyncAttrKey_MaxPrimitiveValue
(uint64_t, out) Specifies the maximum value of the reconciled primitive.
Definition: nvscisync.h:532
NvSciSyncFenceMaxTimeout
static const int64_t NvSciSyncFenceMaxTimeout
Maximum supported timeout value.
Definition: nvscisync.h:190
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.
NvSciSyncAttrListIsReconciled
NvSciError NvSciSyncAttrListIsReconciled(NvSciSyncAttrList attrList, bool *isReconciled)
Checks whether the NvSciSyncAttrList is reconciled.
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:309
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:276
nvsciipc.h
NVIDIA Software Communications Interface (SCI) : NvSci Inter-Process Communication
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:405
NvSciSyncObjAlloc
NvSciError NvSciSyncObjAlloc(NvSciSyncAttrList reconciledList, NvSciSyncObj *syncObj)
Allocates and initializes a NvSciSyncObj that meets all the constraints specified in the given reconc...
NvSciIpcEndpoint
uint64_t NvSciIpcEndpoint
Handle to the NvSciIpc endpoint.
Definition: nvsciipc.h:291
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:544
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:436
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:183
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.
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
Defines the opaque NvSciSyncFence.
Definition: nvscisync.h:248
NvSciSyncObjGetAttrList
NvSciError NvSciSyncObjGetAttrList(NvSciSyncObj syncObj, NvSciSyncAttrList *syncAttrList)
Retrieves the reconciled NvSciSyncAttrList associated with an input NvSciSyncObj.
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:524
NvSciSyncAttrKey_ActualPerm
@ NvSciSyncAttrKey_ActualPerm
(NvSciSyncAccessPerm, out) Actual permission granted after reconciliation.
Definition: nvscisync.h:467
NvSciSyncFenceExtractTimestampSlot
NvSciError NvSciSyncFenceExtractTimestampSlot(NvSciSyncFence *syncFence, uint32_t *timeStampSlot)
Reads the current timestamp slot index from the NvSciSyncFence.
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:203
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:534
NvSciSyncFenceInitializer
static const NvSciSyncFence NvSciSyncFenceInitializer
Defines the value used to zero-initialize the NvSciSyncFence object.
Definition: nvscisync.h:258
NvSciSyncObj
struct NvSciSyncObjRec * NvSciSyncObj
A Synchronization Object is a container holding the reconciled NvSciSyncAttrList defining constraints...
Definition: nvscisync.h:303
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:168
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:266
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:367
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:486
NvSciSyncCpuWaitContext
struct NvSciSyncCpuWaitContextRec * NvSciSyncCpuWaitContext
Represents the right to perform a CPU wait on an NvSciSyncFence.
Definition: nvscisync.h:215
NvSciSyncFenceDup
NvSciError NvSciSyncFenceDup(const NvSciSyncFence *srcSyncFence, NvSciSyncFence *dstSyncFence)
Duplicates the given NvSciSyncFence, such that any wait on duplicated NvSciSyncFence will complete at...