Reconciliation#

After gathering all attribute lists, the signaler application must reconcile them. Successful reconciliation results in a new, reconciled attribute list that satisfies all applications’ requirements. If NvSciSync cannot create such a list because attributes contradict, it reports an error. In the example below, assume that waiterAttrList1 and waiterAttrList2 were created in the same process, so the variables are visible.

NvSciSyncAttrList unreconciledList[3] = {NULL};
NvSciSyncAttrList reconciledList = NULL;
NvSciSyncAttrList newConflictList = NULL;
NvSciError err;
unreconciledList[0] = signalerAttrList;
unreconciledList[1] = waiterAttrList1;
unreconciledList[2] = waiterAttrList2;
err = NvSciSyncAttrListReconcile(
        unreconciledList,        /* array of unreconciled lists */
        3,                       /* size of this array */
        &reconciledList,         /* output reconciled list */
        &newConflictList);       /* unused but the user must provided a non-NULL */
if (err != NvSciError_Success) {
    goto fail;
}
/* ... */
NvSciSyncAttrListFree(reconciledList);
NvSciSyncAttrListFree(newConflictList);

NvSciSync recognizes which attribute lists are reconciled and which are not. Some NvSciSync APIs that take NvSciSyncAttrList expect the list to be reconciled.