Răsfoiți Sursa

[Kernel] clean code for indentation.

Bernard Xiong 6 ani în urmă
părinte
comite
ef132f3c94

+ 29 - 5
components/drivers/include/ipc/waitqueue.h

@@ -1,3 +1,28 @@
+/*
+ * File      : waitqueue.h
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2006 - 2018, RT-Thread Development Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2018/06/26     Bernard      Fix the wait queue issue when wakeup a soon 
+ *                             to blocked thread.
+ */
+
 #ifndef WAITQUEUE_H__
 #define WAITQUEUE_H__
 
@@ -11,11 +36,11 @@ typedef int (*rt_wqueue_func_t)(struct rt_wqueue_node *wait, void *key);
 
 struct rt_wqueue_node
 {
-	rt_thread_t polling_thread;
-	rt_list_t   list;
+    rt_thread_t polling_thread;
+    rt_list_t   list;
 
-	rt_wqueue_func_t wakeup;
-	rt_uint32_t key;
+    rt_wqueue_func_t wakeup;
+    rt_uint32_t key;
 };
 typedef struct rt_wqueue_node rt_wqueue_node_t;
 
@@ -46,4 +71,3 @@ void rt_wqueue_wakeup(rt_wqueue_t *queue, void *key);
 #define DEFINE_WAIT(name) DEFINE_WAIT_FUNC(name, __wqueue_default_wake)
 
 #endif
-

+ 47 - 22
components/drivers/src/waitqueue.c

@@ -1,3 +1,28 @@
+/*
+ * File      : waitqueue.c
+ * This file is part of RT-Thread RTOS
+ * COPYRIGHT (C) 2006 - 2018, RT-Thread Development Team
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2018/06/26     Bernard      Fix the wait queue issue when wakeup a soon 
+ *                             to blocked thread.
+ */
+
 #include <stdint.h>
 
 #include <rthw.h>
@@ -32,30 +57,30 @@ void rt_wqueue_wakeup(rt_wqueue_t *queue, void *key)
     rt_base_t level;
     register int need_schedule = 0;
 
-	rt_list_t *queue_list;
+    rt_list_t *queue_list;
     struct rt_list_node *node;
     struct rt_wqueue_node *entry;
 
-	queue_list = &(queue->waiting_list);
+    queue_list = &(queue->waiting_list);
 
     level = rt_hw_interrupt_disable();
-	/* set wakeup flag in the queue */
-	queue->flag = RT_WQ_FLAG_WAKEUP;
+    /* set wakeup flag in the queue */
+    queue->flag = RT_WQ_FLAG_WAKEUP;
 
     if (!(rt_list_isempty(queue_list)))
     {
-	    for (node = queue_list->next; node != queue_list; node = node->next)
-	    {
-	        entry = rt_list_entry(node, struct rt_wqueue_node, list);
-	        if (entry->wakeup(entry, key) == 0)
-	        {
-	            rt_thread_resume(entry->polling_thread);
-	            need_schedule = 1;
-
-	            rt_wqueue_remove(entry);
-	            break;
-	        }
-	    }
+        for (node = queue_list->next; node != queue_list; node = node->next)
+        {
+            entry = rt_list_entry(node, struct rt_wqueue_node, list);
+            if (entry->wakeup(entry, key) == 0)
+            {
+                rt_thread_resume(entry->polling_thread);
+                need_schedule = 1;
+
+                rt_wqueue_remove(entry);
+                break;
+            }
+        }
     }
     rt_hw_interrupt_enable(level);
 
@@ -85,11 +110,11 @@ int rt_wqueue_wait(rt_wqueue_t *queue, int condition, int msec)
     rt_list_init(&__wait.list);
 
     level = rt_hw_interrupt_disable();
-	if (queue->flag == RT_WQ_FLAG_WAKEUP)
-	{
-		/* already wakeup */
-		goto __exit_wakeup;
-	}
+    if (queue->flag == RT_WQ_FLAG_WAKEUP)
+    {
+        /* already wakeup */
+        goto __exit_wakeup;
+    }
 
     rt_wqueue_add(queue, &__wait);
     rt_thread_suspend(tid);
@@ -110,7 +135,7 @@ int rt_wqueue_wait(rt_wqueue_t *queue, int condition, int msec)
     level = rt_hw_interrupt_disable();
 
 __exit_wakeup:
-	queue->flag = 0;
+    queue->flag = 0;
     rt_hw_interrupt_enable(level);
 
     rt_wqueue_remove(&__wait);

+ 2 - 2
include/rtdef.h

@@ -868,8 +868,8 @@ struct rt_device_ops
  */
 struct rt_wqueue
 {
-	rt_uint32_t flag;
-	rt_list_t waiting_list;
+    rt_uint32_t flag;
+    rt_list_t waiting_list;
 };
 typedef struct rt_wqueue rt_wqueue_t;
 #endif

+ 1 - 1
src/device.c

@@ -77,7 +77,7 @@ rt_err_t rt_device_register(rt_device_t dev,
 
 #if defined(RT_USING_POSIX)
     dev->fops = RT_NULL;
-	rt_wqueue_init(&(dev->wait_queue));
+    rt_wqueue_init(&(dev->wait_queue));
 #endif
 
     return RT_EOK;