NVIDIA DRIVE OS Linux SDK API Reference

6.0.5 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 
149 #if !defined (__cplusplus)
150 #include <stddef.h>
151 #include <stdbool.h>
152 #include <stdint.h>
153 #endif
154 
155 #include <nvscierror.h>
156 #include <nvsciipc.h>
157 
158 #if defined (__cplusplus)
159 extern "C"
160 {
161 #endif
162 
168 static const uint32_t NvSciSyncMajorVersion = 2U;
169 
175 static const uint32_t NvSciSyncMinorVersion = 3U;
176 
182 static const int64_t NvSciSyncFenceMaxTimeout = (0x7fffffffffffffff / 1000);
183 
195 typedef struct NvSciSyncModuleRec* NvSciSyncModule;
196 
207 typedef struct NvSciSyncCpuWaitContextRec* NvSciSyncCpuWaitContext;
208 
240 typedef struct {
241  uint64_t payload[6];
243 
251 
258 typedef struct {
259  uint64_t payload[7];
261 
268 typedef struct {
270  uint64_t payload[128];
272 
295 typedef struct NvSciSyncObjRec* NvSciSyncObj;
296 
301 typedef const struct NvSciSyncObjRec* NvSciSyncObjConst;
302 
314 typedef struct NvSciSyncAttrListRec* NvSciSyncAttrList;
315 
321 typedef enum {
326  NvSciSyncAccessPerm_WaitOnly = (uint64_t)1U << 0U,
331  NvSciSyncAccessPerm_SignalOnly = (uint64_t)1U << 1U,
343  NvSciSyncAccessPerm_Auto = (uint64_t)1U << 63U,
345 
357 typedef enum {
366 
372 typedef struct {
374  uint64_t timestamp;
376  uint32_t statusEngine ;
378  uint16_t subframe;
382  uint16_t status;
383 } __attribute__((packed)) NvSciSyncTaskStatus;
384 
397 typedef enum {
528 
536 typedef struct {
542  const void* value;
544  size_t len;
546 
580  NvSciSyncModule* newModule);
581 
620  NvSciSyncModule module);
621 
656  NvSciSyncModule module,
657  NvSciSyncCpuWaitContext* newContext);
658 
686  NvSciSyncCpuWaitContext context);
687 
722  NvSciSyncModule module,
723  NvSciSyncAttrList* attrList);
724 
752  NvSciSyncAttrList attrList);
753 
782  NvSciSyncAttrList attrList,
783  bool* isReconciled);
784 
837  NvSciSyncAttrList reconciledAttrList,
838  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
839  size_t inputUnreconciledAttrListCount,
840  bool* isReconciledListValid);
841 
890  NvSciSyncAttrList attrList,
891  const NvSciSyncAttrKeyValuePair* pairArray,
892  size_t pairCount);
893 
936  NvSciSyncAttrList attrList,
937  NvSciSyncAttrKeyValuePair* pairArray,
938  size_t pairCount);
939 
964  NvSciSyncAttrList attrList);
965 
1019  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1020  size_t inputUnreconciledAttrListCount,
1021  NvSciSyncAttrList* newUnreconciledAttrList);
1022 
1063  NvSciSyncAttrList origAttrList,
1064  NvSciSyncAttrList* newAttrList);
1065 
1114  NvSciSyncAttrList attrList,
1115  size_t slotIndex,
1116  NvSciSyncAttrKeyValuePair* pairArray,
1117  size_t pairCount);
1118 
1127 #if (NV_IS_SAFETY == 0)
1128 
1134 #endif
1135 
1145 #if (NV_IS_SAFETY == 0)
1146 
1151 #else
1152 
1155 #endif
1156 
1169 #if (NV_IS_SAFETY == 0)
1170 
1172 #endif
1173 
1203  const NvSciSyncAttrList inputArray[],
1204  size_t inputCount,
1205  NvSciSyncAttrList* newReconciledList,
1206  NvSciSyncAttrList* newConflictList);
1207 
1208 #if (NV_IS_SAFETY == 0)
1209 
1241  NvSciSyncAttrList attrList,
1242  void** buf,
1243  size_t* len);
1244 #endif
1245 
1290 #if (NV_IS_SAFETY == 0)
1291 
1294 #endif
1295 
1318  const NvSciSyncAttrList unreconciledAttrListArray[],
1319  size_t unreconciledAttrListCount,
1320  NvSciIpcEndpoint ipcEndpoint,
1321  void** descBuf,
1322  size_t* descLen);
1323 
1369  const NvSciSyncAttrList reconciledAttrList,
1370  NvSciIpcEndpoint ipcEndpoint,
1371  void** descBuf,
1372  size_t* descLen);
1373 
1423  NvSciSyncModule module,
1424  NvSciIpcEndpoint ipcEndpoint,
1425  const void* descBuf,
1426  size_t descLen,
1427  NvSciSyncAttrList* importedUnreconciledAttrList);
1428 
1506  NvSciSyncModule module,
1507  NvSciIpcEndpoint ipcEndpoint,
1508  const void* descBuf,
1509  size_t descLen,
1510  const NvSciSyncAttrList inputUnreconciledAttrListArray[],
1511  size_t inputUnreconciledAttrListCount,
1512  NvSciSyncAttrList* importedReconciledAttrList);
1513 
1541  void* descBuf);
1542 
1571 void NvSciSyncFenceClear(
1572  NvSciSyncFence* syncFence);
1573 
1614  const NvSciSyncFence* srcSyncFence,
1615  NvSciSyncFence* dstSyncFence);
1616 
1648  const NvSciSyncFence* syncFence,
1649  uint64_t* id,
1650  uint64_t* value);
1651 
1704  NvSciSyncObj syncObj,
1705  uint64_t id,
1706  uint64_t value,
1707  NvSciSyncFence* syncFence);
1708 
1742  NvSciSyncFence* syncFence,
1743  uint32_t timestampSlot);
1744 
1778  NvSciSyncFence* syncFence,
1779  uint32_t taskStatusSlot);
1780 
1814  NvSciSyncFence* syncFence,
1815  uint32_t* timeStampSlot);
1816 
1859  NvSciSyncAttrList reconciledList,
1860  NvSciSyncObj* syncObj);
1861 
1902  NvSciSyncObj syncObj,
1903  NvSciSyncObj* dupObj);
1904 
1939  NvSciSyncObj syncObj,
1940  NvSciSyncAttrList* syncAttrList);
1941 
1978 void NvSciSyncObjFree(
1979  NvSciSyncObj syncObj);
1980 
2017 #if (NV_L4T == 1)
2018 
2022 #endif
2023 
2044  NvSciSyncObj syncObj,
2045  NvSciSyncAccessPerm permissions,
2046  NvSciIpcEndpoint ipcEndpoint,
2048 
2118  NvSciIpcEndpoint ipcEndpoint,
2119  const NvSciSyncObjIpcExportDescriptor* desc,
2120  NvSciSyncAttrList inputAttrList,
2121  NvSciSyncAccessPerm permissions,
2122  int64_t timeoutUs,
2123  NvSciSyncObj* syncObj);
2124 
2166  const NvSciSyncFence* syncFence,
2167  NvSciIpcEndpoint ipcEndpoint,
2169 
2215  NvSciSyncObj syncObj,
2217  NvSciSyncFence* syncFence);
2218 
2234 #if (NV_IS_SAFETY == 0)
2235 
2238 #endif
2239 
2264  NvSciSyncObj syncObj,
2265  NvSciSyncFence* syncFence);
2266 
2271 #if (NV_IS_SAFETY == 0)
2272 
2275 #endif
2276 
2307  NvSciSyncObj syncObj);
2308 
2367  const NvSciSyncFence* syncFence,
2368  NvSciSyncCpuWaitContext context,
2369  int64_t timeoutUs);
2370 
2410  const NvSciSyncFence* syncFence,
2411  uint64_t* timestampUS);
2412 
2446  const NvSciSyncFence* syncFence,
2447  NvSciSyncTaskStatus* taskStatus);
2448 
2449 /*
2450  * NvSciSync Utility functions
2451  */
2452 
2492  NvSciSyncAttrList attrList,
2493  NvSciSyncAttrKey key,
2494  const void** value,
2495  size_t* len);
2496 
2514 #if (NV_IS_SAFETY == 0)
2515 
2521 #else
2522 
2525 #endif
2526 
2539 #if (NV_IS_SAFETY == 0)
2540 
2542 #endif
2543 
2571  const NvSciSyncAttrList inputArray[],
2572  size_t inputCount,
2573  NvSciSyncObj* syncObj,
2574  NvSciSyncAttrList* newConflictList);
2575 
2632  NvSciSyncObj syncObj,
2633  NvSciSyncAccessPerm permissions,
2634  NvSciIpcEndpoint ipcEndpoint,
2635  void** attrListAndObjDesc,
2636  size_t* attrListAndObjDescSize);
2637 
2667  void* attrListAndObjDescBuf);
2668 
2750  NvSciSyncModule module,
2751  NvSciIpcEndpoint ipcEndpoint,
2752  const void* attrListAndObjDesc,
2753  size_t attrListAndObjDescSize,
2754  NvSciSyncAttrList const attrList[],
2755  size_t attrListCount,
2756  NvSciSyncAccessPerm minPermissions,
2757  int64_t timeoutUs,
2758  NvSciSyncObj* syncObj);
2759 
2794 #if (NV_IS_SAFETY == 0)
2795 
2798 #endif
2800  uint32_t majorVer,
2801  uint32_t minorVer,
2802  bool* isCompatible);
2803 
2804 #if defined(__cplusplus)
2805 }
2806 #endif // __cplusplus
2807 
2808 #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:496
NvSciError
NvSciError
Return/error codes for all NvSci functions.
Definition: nvscierror.h:45
NvSciSyncTaskStatus::subframe
uint16_t subframe
unused
Definition: nvscisync.h:378
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:420
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:361
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...
NvSciSyncAccessPerm_SignalOnly
@ NvSciSyncAccessPerm_SignalOnly
This represents the capability to advance an NvSciSyncObj to its next point on its sync timeline.
Definition: nvscisync.h:331
NvSciSyncAttrKeyValuePair::len
size_t len
Length of the value in bytes.
Definition: nvscisync.h:544
NvSciSyncTaskStatusVal
NvSciSyncTaskStatusVal
Status of the signaler's task that signals a particular NvSciSyncFence.
Definition: nvscisync.h:357
NvSciSyncAttrKey_LowerBound
@ NvSciSyncAttrKey_LowerBound
Specifies the lower bound - for NvSciSync internal use only.
Definition: nvscisync.h:399
NvSciSyncTaskStatus_Invalid
@ NvSciSyncTaskStatus_Invalid
The signaler did not report any task status.
Definition: nvscisync.h:364
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:540
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:168
NvSciSyncAttrList
struct NvSciSyncAttrListRec * NvSciSyncAttrList
A container constituting an NvSciSyncAttrList which contains:
Definition: nvscisync.h:314
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:506
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:484
NvSciSyncAttrKeyValuePair::value
const void * value
Memory which contains the value corresponding to the key.
Definition: nvscisync.h:542
NvSciSyncAttrKey_MaxPrimitiveValue
@ NvSciSyncAttrKey_MaxPrimitiveValue
(uint64_t, out) Specifies the maximum value of the reconciled primitive.
Definition: nvscisync.h:524
NvSciSyncFenceMaxTimeout
static const int64_t NvSciSyncFenceMaxTimeout
Maximum supported timeout value.
Definition: nvscisync.h:182
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:301
NvSciSyncModuleClose
void NvSciSyncModuleClose(NvSciSyncModule module)
Closes an instance of the NvSciSyncModule that was obtained through an earlier call to NvSciSyncModul...
NvSciSyncAccessPerm_WaitOnly
@ NvSciSyncAccessPerm_WaitOnly
This represents the capability to wait on an NvSciSyncObj as it progresses through points on its sync...
Definition: nvscisync.h:326
NvSciSyncObjIpcExportDescriptor
Defines the exported form of NvSciSyncObj intended to be shared across an NvSciIpc channel.
Definition: nvscisync.h:268
NvSciSyncTaskStatus::statusEngine
uint32_t statusEngine
unused
Definition: nvscisync.h:376
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:397
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:284
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:536
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:428
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:175
NvSciSyncAccessPerm
NvSciSyncAccessPerm
Describes NvSciSyncObj access permissions.
Definition: nvscisync.h:321
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...
NvSciSyncAccessPerm_Auto
@ NvSciSyncAccessPerm_Auto
Usage of Auto permissions is restricted only for export/import APIs and shouldn't be used as valid va...
Definition: nvscisync.h:343
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:240
NvSciSyncTaskStatus
A single slot in the task status buffer.
Definition: nvscisync.h:372
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:516
NvSciSyncAttrKey_ActualPerm
@ NvSciSyncAttrKey_ActualPerm
(NvSciSyncAccessPerm, out) Actual permission granted after reconciliation.
Definition: nvscisync.h:459
NvSciSyncFenceExtractTimestampSlot
NvSciError NvSciSyncFenceExtractTimestampSlot(NvSciSyncFence *syncFence, uint32_t *timeStampSlot)
Reads the current timestamp slot index from the NvSciSyncFence.
NvSciSyncTaskStatus::status
uint16_t status
A status word filled with NvSciSyncTaskStatusVal values.
Definition: nvscisync.h:382
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:195
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:526
NvSciSyncFenceInitializer
static const NvSciSyncFence NvSciSyncFenceInitializer
Defines the value used to zero-initialize the NvSciSyncFence object.
Definition: nvscisync.h:250
NvSciSyncObj
struct NvSciSyncObjRec * NvSciSyncObj
A Synchronization Object is a container holding the reconciled NvSciSyncAttrList defining constraints...
Definition: nvscisync.h:295
NvSciSyncAttrListCreate
NvSciError NvSciSyncAttrListCreate(NvSciSyncModule module, NvSciSyncAttrList *attrList)
Creates a new, single-slot unreconciled NvSciSyncAttrList associated with the input NvSciSyncModule w...
NvSciSyncTaskStatus::timestamp
uint64_t timestamp
unused
Definition: nvscisync.h:374
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:258
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:359
NvSciSyncAttrListClone
NvSciError NvSciSyncAttrListClone(NvSciSyncAttrList origAttrList, NvSciSyncAttrList *newAttrList)
Clones an NvSciSyncAttrList.
NvSciSyncAccessPerm_WaitSignal
@ NvSciSyncAccessPerm_WaitSignal
This represents the capability to advance an NvSciSyncObj to its next point on its sync timeline and ...
Definition: nvscisync.h:337
NvSciSyncAttrKey_WaiterContextInsensitiveFenceExports
@ NvSciSyncAttrKey_WaiterContextInsensitiveFenceExports
(bool, inout) Importing and then exporting an NvSciSyncFenceIpcExportDescriptor has no side effects a...
Definition: nvscisync.h:478
NvSciSyncCpuWaitContext
struct NvSciSyncCpuWaitContextRec * NvSciSyncCpuWaitContext
Represents the right to perform a CPU wait on an NvSciSyncFence.
Definition: nvscisync.h:207
NvSciSyncFenceDup
NvSciError NvSciSyncFenceDup(const NvSciSyncFence *srcSyncFence, NvSciSyncFence *dstSyncFence)
Duplicates the given NvSciSyncFence, such that any wait on duplicated NvSciSyncFence will complete at...