found the bug, now I think I've got it right
This commit is contained in:
		
							parent
							
								
									9588d1e94b
								
							
						
					
					
						commit
						de84145e55
					
				@ -28,7 +28,7 @@ void MqDestroy(PMSG_QUEUE queue)
 | 
			
		||||
  free(queue);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void post_internal(MSG_QUEUE volatile *queue, PMSG msg)
 | 
			
		||||
static void post_internal(PMSG_QUEUE queue, PMSG msg)
 | 
			
		||||
{
 | 
			
		||||
  PMSG nexttail;
 | 
			
		||||
  
 | 
			
		||||
@ -46,7 +46,7 @@ static void post_internal(MSG_QUEUE volatile *queue, PMSG msg)
 | 
			
		||||
  pthread_mutex_unlock(&(queue->mutex));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MqPost(MSG_QUEUE volatile *queue, uintptr_t target, unsigned message, const uintptr_t *attrs, int nattrs)
 | 
			
		||||
void MqPost(PMSG_QUEUE queue, uintptr_t target, unsigned message, const uintptr_t *attrs, int nattrs)
 | 
			
		||||
{
 | 
			
		||||
  MSG tmpmsg;
 | 
			
		||||
 | 
			
		||||
@ -61,7 +61,7 @@ void MqPost(MSG_QUEUE volatile *queue, uintptr_t target, unsigned message, const
 | 
			
		||||
  post_internal(queue, &tmpmsg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void MqPost1(MSG_QUEUE volatile *queue, uintptr_t target, unsigned message, uintptr_t attr1)
 | 
			
		||||
void MqPost1(PMSG_QUEUE queue, uintptr_t target, unsigned message, uintptr_t attr1)
 | 
			
		||||
{
 | 
			
		||||
  MSG tmpmsg;
 | 
			
		||||
  
 | 
			
		||||
@ -73,7 +73,7 @@ void MqPost1(MSG_QUEUE volatile *queue, uintptr_t target, unsigned message, uint
 | 
			
		||||
  post_internal(queue, &tmpmsg);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int MqPeek(MSG_QUEUE volatile *queue, PMSG msg, unsigned flags)
 | 
			
		||||
int MqPeek(PMSG_QUEUE queue, PMSG msg, unsigned flags)
 | 
			
		||||
{
 | 
			
		||||
  int rc = 0;
 | 
			
		||||
  PMSG nexthead;
 | 
			
		||||
@ -87,6 +87,7 @@ int MqPeek(MSG_QUEUE volatile *queue, PMSG msg, unsigned flags)
 | 
			
		||||
    memcpy(msg, queue->head, sizeof(MSG));
 | 
			
		||||
    if (flags & PEEK_REMOVE)
 | 
			
		||||
      queue->head = nexthead;
 | 
			
		||||
    rc = 1;
 | 
			
		||||
  }
 | 
			
		||||
  pthread_mutex_unlock(&(queue->mutex));
 | 
			
		||||
  return rc;
 | 
			
		||||
 | 
			
		||||
@ -20,9 +20,8 @@ typedef struct tagMSG_QUEUE {
 | 
			
		||||
 | 
			
		||||
extern PMSG_QUEUE MqAlloc(int nentries);
 | 
			
		||||
extern void MqDestroy(PMSG_QUEUE queue);
 | 
			
		||||
extern void MqPost(MSG_QUEUE volatile *queue, uintptr_t target, unsigned message, const uintptr_t *attrs,
 | 
			
		||||
		   int nattrs);
 | 
			
		||||
extern void MqPost1(MSG_QUEUE volatile *queue, uintptr_t target, unsigned message, uintptr_t attr1);
 | 
			
		||||
extern int MqPeek(MSG_QUEUE volatile *queue, PMSG msg, unsigned flags);
 | 
			
		||||
extern void MqPost(PMSG_QUEUE queue, uintptr_t target, unsigned message, const uintptr_t *attrs, int nattrs);
 | 
			
		||||
extern void MqPost1(PMSG_QUEUE queue, uintptr_t target, unsigned message, uintptr_t attr1);
 | 
			
		||||
extern int MqPeek(PMSG_QUEUE queue, PMSG msg, unsigned flags);
 | 
			
		||||
 | 
			
		||||
#endif /* __MSG_QUEUE_H_INCLUDED */
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
#include "msg_queue.h"
 | 
			
		||||
#include "gpio.h"
 | 
			
		||||
 | 
			
		||||
MSG_QUEUE volatile *Sys_Queue = NULL;
 | 
			
		||||
PMSG_QUEUE Sys_Queue = NULL;
 | 
			
		||||
 | 
			
		||||
static pthread_t ithread;
 | 
			
		||||
static volatile sig_atomic_t running = 1;
 | 
			
		||||
 | 
			
		||||
@ -3,7 +3,7 @@
 | 
			
		||||
 | 
			
		||||
#include "msg_queue.h"
 | 
			
		||||
 | 
			
		||||
extern MSG_QUEUE volatile *Sys_Queue;
 | 
			
		||||
extern PMSG_QUEUE Sys_Queue;
 | 
			
		||||
 | 
			
		||||
extern int SysEnableInput(void);
 | 
			
		||||
extern void SysDisableInput(void);
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user