]> rtime.felk.cvut.cz Git - pes-rpp/rpp-lwip.git/blobdiff - src/include/arch/sys_arch.h
HALCoGen+LwIP Demo for TMS570 (BE) - only files coppied
[pes-rpp/rpp-lwip.git] / src / include / arch / sys_arch.h
index 8615c20549fa6d9125bd32640537a08d7c9bf5b1..d49f6c2f302ff6bc380c125817129fe00720b40e 100644 (file)
@@ -63,22 +63,22 @@ typedef u8_t sys_prot_t;
 
 /* Typedefs for the various port-specific types. */
 #if !NO_SYS
-typedef xQueueHandle sys_mbox_t;
-typedef xSemaphoreHandle sys_sem_t;
-typedef xTaskHandle sys_thread_t;
+typedef xQueueHandle sys_mbox_t; /* *xQUEUE */
+typedef xSemaphoreHandle sys_sem_t; /* *xQUEUE */
+typedef xTaskHandle sys_thread_t; /* *void */
 #if !LWIP_COMPAT_MUTEX
-typedef xSemaphoreHandle sys_mutex_t;
+typedef xSemaphoreHandle sys_mutex_t; /* *xQUEUE */
 /* For mutexes you can just set option in opt.h/lwipopts.h LWIP_COMPAT_MUTEX,
  * which is using defined semaphores. This is basicaly doing the same thing. */
 #define sys_mutex_valid(mutex)        sys_sem_valid(mutex)
 #define sys_mutex_set_invalid(mutex)  sys_sem_set_invalid(mutex)
+#endif /* LWIP_COMPAT_MUTEX */
 
-#define sys_sem_valid(sem)            (*sem != SYS_SEM_NULL)
+#define sys_sem_valid(sem)            ((*sem != SYS_SEM_NULL) ? 1 : 0)
 #define sys_sem_set_invalid(sem)      (*sem = SYS_SEM_NULL)
 
-#define sys_mbox_valid(mbox)          (*mbox != SYS_MBOX_NULL)
+#define sys_mbox_valid(mbox)          ((*mbox != SYS_MBOX_NULL) ? 1 : 0)
 #define sys_mbox_set_invalid(mbox)    (*mbox = SYS_MBOX_NULL)
-#endif
 
 #define SEMPHR_MAX_CNT             1
 #define MBOX_PTR_TYPE              void *
@@ -87,10 +87,18 @@ typedef xSemaphoreHandle sys_mutex_t;
 
 #endif /* !NO_SYS */
 
-/* TODO: try with SYS_ARCH_PROTECT defined and without it */
-/* DETAILS in sys.h */
-/* #define SYS_ARCH_PROTECT */
-#ifndef SYS_ARCH_PROTECT
+#ifdef SYS_TEST_PROT_SEM
+
+#define SYS_ARCH_DECL_PROTECT(lev) xSemaphoreHandle lev; lev = xSemaphoreCreateCounting(5,0)
+
+#define SYS_ARCH_PROTECT(lev) sys_sem_wait(&lev)
+
+#define SYS_ARCH_UNPROTECT(lev) sys_sem_signal(&lev)
+
+#endif
+
+/* when used SYS_ARCH_PROTECT from sys.h, then it might cause instability of the system */
+#ifdef SYS_ARCH_PROTECT
 
 #if SYS_LIGHTWEIGHT_PROT
 
@@ -99,10 +107,10 @@ typedef xSemaphoreHandle sys_mutex_t;
 #define SYS_ARCH_PROTECT(lev) portENTER_CRITICAL() /* consider putting here taskENTER_CRITICAL() ... freeRTOS */
 
 #define SYS_ARCH_UNPROTECT(lev) portEXIT_CRITICAL() /* consider putting here taskEXIT_CRITICAL() ... freeRTOS */
-sys_prot_t sys_arch_protect(void);
-void sys_arch_unprotect(sys_prot_t pval);
+//sys_prot_t sys_arch_protect(void);
+//void sys_arch_unprotect(sys_prot_t pval);
 
-#else
+#else /* SYS_LIGHTWEIGHT_PROT */
 
 #define SYS_ARCH_DECL_PROTECT(lev)
 #define SYS_ARCH_PROTECT(lev)
@@ -113,6 +121,5 @@ void sys_arch_unprotect(sys_prot_t pval);
 #endif /* SYS_ARCH_PROTECT */
 
 
-
 #endif /* __ARCH_SYS_ARCH_H__ */