- IED server: fixed - possible deadlock when IedServer_lockDataModel is used from multiple threads (LIB61850-352)

v1.6_develop_rgoose_sntp
Michael Zillgith 3 years ago
parent c035573684
commit d5f2172f93

@ -908,10 +908,10 @@ IedServer_stopThreadless(IedServer self)
void void
IedServer_lockDataModel(IedServer self) IedServer_lockDataModel(IedServer self)
{ {
Semaphore_wait(self->mmsMapping->isModelLockedMutex);
MmsServer_lockModel(self->mmsServer); MmsServer_lockModel(self->mmsServer);
Semaphore_wait(self->mmsMapping->isModelLockedMutex);
self->mmsMapping->isModelLocked = true; self->mmsMapping->isModelLocked = true;
Semaphore_post(self->mmsMapping->isModelLockedMutex); Semaphore_post(self->mmsMapping->isModelLockedMutex);
@ -930,10 +930,10 @@ IedServer_unlockDataModel(IedServer self)
Semaphore_wait(self->mmsMapping->isModelLockedMutex); Semaphore_wait(self->mmsMapping->isModelLockedMutex);
self->mmsMapping->isModelLocked = false;
MmsServer_unlockModel(self->mmsServer); MmsServer_unlockModel(self->mmsServer);
self->mmsMapping->isModelLocked = false;
Semaphore_post(self->mmsMapping->isModelLockedMutex); Semaphore_post(self->mmsMapping->isModelLockedMutex);
} }

Loading…
Cancel
Save