kernel: preemptive and cooperative scheduler refactoring.
[bertos.git] / bertos / drv / lcd_text.c
index 9bff9bb55f2fd476258140c2413868cbe8aa0420..5cdb00581656169fa33a1535394981a8dbd7b9d9 100644 (file)
 /** Maximum number of layers. */
 #define LCD_LAYERS 6
 
-#if CONFIG_KERNEL
+#if CONFIG_KERN
+       #include <kern/sem.h>
        /** Semaphore to arbitrate access to the display. */
        static struct Semaphore lcd_semaphore;
        #define LOCK_LCD        sem_obtain(&lcd_semaphore)
        #define UNLOCK_LCD      sem_release(&lcd_semaphore)
-#else /* !CONFIG_KERNEL */
+#else /* !CONFIG_KERN */
        #define LOCK_LCD        do {} while (0)
        #define UNLOCK_LCD      do {} while (0)
-#endif /* !CONFIG_KERNEL */
+#endif /* !CONFIG_KERN */
 
 DECLARE_LIST_TYPE(Layer);
 
@@ -91,7 +92,7 @@ void lcd_setAddr(Layer *layer, lcdpos_t addr)
        layer->addr = addr;
 }
 
-#if CONFIG_KERNEL
+#if CONFIG_KERN
 
 void lcd_lock(void)
 {
@@ -104,7 +105,7 @@ void lcd_unlock(void)
        UNLOCK_LCD;
 }
 
-#endif /* CONFIG_KERNEL */
+#endif /* CONFIG_KERN */
 
 
 /**
@@ -437,6 +438,10 @@ static void lcd_setDefLayer(Layer *layer)
 #include <cfg/debug.h>
 void lcd_init(void)
 {
+       #if CONFIG_KERN
+       sem_init(&lcd_semaphore);
+       #endif
+
        int i;
 
        LIST_INIT(&lcd_Layers);