X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fmessages.c;h=b9d7a6fd189352604197ea73747451454c661d5c;hb=3c283c4831c40c14d308a54cefb997832a860bca;hp=c99197800bbfb3f8ae07619e3cb8a5d66bc69b76;hpb=3b864de01887f22d74ec1d564bc99913e5d82be4;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/messages.c b/KernelLand/Kernel/messages.c index c9919780..b9d7a6fd 100644 --- a/KernelLand/Kernel/messages.c +++ b/KernelLand/Kernel/messages.c @@ -88,10 +88,11 @@ int Proc_GetMessage(Uint *Source, Uint BufSize, void *Buffer) void *tmp; tThread *cur = Proc_GetCurThread(); - ENTER("pSource pBuffer", Source, Buffer); + ENTER("pSource xBufSize pBuffer", Source, BufSize, Buffer); // Check if queue has any items if(!cur->Messages) { + LOG("empty queue"); LEAVE('i', 0); return 0; } @@ -137,10 +138,13 @@ int Proc_GetMessage(Uint *Source, Uint BufSize, void *Buffer) // Remove from list tmp = cur->Messages; cur->Messages = cur->Messages->Next; + // - Removed last message? Clear the end-of-list pointer if(cur->Messages == NULL) cur->LastMessage = NULL; + // > Otherwise, re-mark the IPCMSG event flag + else cur->EventState |= THREAD_EVENT_IPCMSG; SHORTREL( &cur->IsLocked ); - + free(tmp); // Free outside of lock LEAVE('i', ret);