Export/Import NvSciSyncObj

/* signaler */
void* objAndList;
size_t objAndListSize;
NvSciError err; 
err = NvSciSyncIpcExportAttrListAndObj(
    syncObj,                        /* syncObj to be exported 
(the reconciled list is inside it) */
    NvSciSyncAccessPerm_WaitOnly,   /* permissions we want the 
receiver to have. Setting this to NvSciSyncAccessPerm_Auto allows 
NvSciSync to automatically determine necessary permissions */
    ipcEndpoint,                    /* IpcEndpoint via which the 
object is to be exported */
    &objAndList,                    /* descriptor of the object 
and list to be communicated */
    &objAndListSize);               /* size of the descriptor */
/* send via Ipc */
NvSciSyncAttrListAndObjFreeDesc(objAndList);
/* waiter */
void* objAndList;
size_t objAndListSize;
err = NvSciSyncIpcImportAttrListAndObj(
    module,                        /* NvSciSyncModule use to create 
original unreconciled lists in the waiter */
    ipcEndpoint,                   /* ipcEndpoint from which the 
descriptor was received */
    objAndList,                    /* the desciptor of the sync obj and 
associated reconciled attribute list received from the signaler */
    objAndListSize,                /* size of the descriptor */
    &waiterAttrList,               /* the array of original unreconciled 
lists prepared in the waiter */
    1,                             /* size of the array */
    NvSciSyncAccessPerm_WaitOnly,  /* permissions expected by the waiter. 
Setting this to NvSciSyncAccessPerm_Auto allows NvSciSync to automatically 
determine necessary permissions */
    10000U,                        /* Recommended timeout in microseconds. 
Some primitives might require time to transport all needed resources. */
    &syncObj);                     /* sync object generated from the 
descriptor on the waiter's side */
/* use the sync object, perhaps export it to more peers... */
NvSciSyncObjFree(syncObj);