Browse Source

refine the code in thread.c, delete the unnecessary line

git-svn-id: https://rt-thread.googlecode.com/svn/trunk@1913 bbd45198-f89e-11dd-88c7-29a3b14d5316
dzzxzz@gmail.com 13 years ago
parent
commit
c44d191564
1 changed files with 78 additions and 83 deletions
  1. 78 83
      src/thread.c

+ 78 - 83
src/thread.c

@@ -34,8 +34,43 @@ extern struct rt_thread *rt_current_thread;
 extern rt_uint8_t rt_current_priority;
 extern rt_uint8_t rt_current_priority;
 extern rt_list_t rt_thread_defunct;
 extern rt_list_t rt_thread_defunct;
 
 
-static void rt_thread_exit(void);
-void rt_thread_timeout(void *parameter);
+static void rt_thread_exit(void)
+{
+	struct rt_thread *thread;
+	register rt_base_t level;
+
+	/* get current thread */
+	thread = rt_current_thread;
+
+	/* disable interrupt */
+	level = rt_hw_interrupt_disable();
+
+	/* remove from schedule */
+	rt_schedule_remove_thread(thread);
+	/* change stat */
+	thread->stat = RT_THREAD_CLOSE;
+
+	/* remove it from timer list */
+	rt_list_remove(&(thread->thread_timer.list));
+	rt_object_detach((rt_object_t)&(thread->thread_timer));
+
+	if ((rt_object_is_systemobject((rt_object_t)thread) == RT_EOK) &&
+		thread->cleanup == RT_NULL)
+	{
+		rt_object_detach((rt_object_t)thread);
+	}
+	else
+	{
+		/* insert to defunct thread list */
+		rt_list_insert_after(&rt_thread_defunct, &(thread->tlist));
+	}
+
+	/* enable interrupt */
+	rt_hw_interrupt_enable(level);
+
+	/* switch to next task */
+	rt_schedule();
+}
 
 
 static rt_err_t _rt_thread_init(struct rt_thread *thread,
 static rt_err_t _rt_thread_init(struct rt_thread *thread,
 	const char *name,
 	const char *name,
@@ -127,49 +162,6 @@ rt_err_t rt_thread_init(struct rt_thread *thread,
 		priority, tick);
 		priority, tick);
 }
 }
 
 
-#ifdef RT_USING_HEAP
-/**
- * This function will create a thread object and allocate thread object memory
- * and stack.
- *
- * @param name the name of thread, which shall be unique
- * @param entry the entry function of thread
- * @param parameter the parameter of thread enter function
- * @param stack_size the size of thread stack
- * @param priority the priority of thread
- * @param tick the time slice if there are same priority thread
- *
- * @return the created thread object
- *
- */
-rt_thread_t rt_thread_create(const char *name,
-	void (*entry)(void *parameter), void *parameter,
-	rt_uint32_t stack_size,
-	rt_uint8_t priority,
-	rt_uint32_t tick)
-{
-	struct rt_thread *thread;
-	void *stack_start;
-
-	thread = (struct rt_thread *)rt_object_allocate(RT_Object_Class_Thread, name);
-	if (thread == RT_NULL) return RT_NULL;
-
-	stack_start = (void *)rt_malloc(stack_size);
-	if (stack_start == RT_NULL)
-	{
-		/* allocate stack failure */
-		rt_object_delete((rt_object_t)thread);
-		return RT_NULL; 
-	}
-
-	_rt_thread_init(thread, name, entry, parameter,
-		stack_start, stack_size,
-		priority, tick);
-
-	return thread;
-}
-#endif
-
 /**
 /**
  * This function will return self thread object
  * This function will return self thread object
  *
  *
@@ -222,44 +214,6 @@ rt_err_t rt_thread_startup(rt_thread_t thread)
 	return RT_EOK;
 	return RT_EOK;
 }
 }
 
 
-static void rt_thread_exit(void)
-{
-	struct rt_thread *thread;
-	register rt_base_t level;
-
-	/* get current thread */
-	thread = rt_current_thread;
-
-	/* disable interrupt */
-	level = rt_hw_interrupt_disable();
-
-	/* remove from schedule */
-	rt_schedule_remove_thread(thread);
-	/* change stat */
-	thread->stat = RT_THREAD_CLOSE;
-
-	/* remove it from timer list */
-	rt_list_remove(&(thread->thread_timer.list));
-	rt_object_detach((rt_object_t)&(thread->thread_timer));
-
-	if ((rt_object_is_systemobject((rt_object_t)thread) == RT_EOK) &&
-		thread->cleanup == RT_NULL)
-	{
-		rt_object_detach((rt_object_t)thread);
-	}
-	else
-	{
-		/* insert to defunct thread list */
-		rt_list_insert_after(&rt_thread_defunct, &(thread->tlist));
-	}
-
-	/* enable interrupt */
-	rt_hw_interrupt_enable(level);
-
-	/* switch to next task */
-	rt_schedule();
-}
-
 /**
 /**
  * This function will detach a thread. The thread object will be removed from
  * This function will detach a thread. The thread object will be removed from
  * thread queue and detached/deleted from system object management.
  * thread queue and detached/deleted from system object management.
@@ -304,6 +258,47 @@ rt_err_t rt_thread_detach(rt_thread_t thread)
 }
 }
 
 
 #ifdef RT_USING_HEAP
 #ifdef RT_USING_HEAP
+/**
+ * This function will create a thread object and allocate thread object memory
+ * and stack.
+ *
+ * @param name the name of thread, which shall be unique
+ * @param entry the entry function of thread
+ * @param parameter the parameter of thread enter function
+ * @param stack_size the size of thread stack
+ * @param priority the priority of thread
+ * @param tick the time slice if there are same priority thread
+ *
+ * @return the created thread object
+ *
+ */
+rt_thread_t rt_thread_create(const char *name,
+	void (*entry)(void *parameter), void *parameter,
+	rt_uint32_t stack_size,
+	rt_uint8_t priority,
+	rt_uint32_t tick)
+{
+	struct rt_thread *thread;
+	void *stack_start;
+
+	thread = (struct rt_thread *)rt_object_allocate(RT_Object_Class_Thread, name);
+	if (thread == RT_NULL) return RT_NULL;
+
+	stack_start = (void *)rt_malloc(stack_size);
+	if (stack_start == RT_NULL)
+	{
+		/* allocate stack failure */
+		rt_object_delete((rt_object_t)thread);
+		return RT_NULL; 
+	}
+
+	_rt_thread_init(thread, name, entry, parameter,
+		stack_start, stack_size,
+		priority, tick);
+
+	return thread;
+}
+
 /**
 /**
  * This function will delete a thread. The thread object will be removed from
  * This function will delete a thread. The thread object will be removed from
  * thread queue and detached/deleted from system object management.
  * thread queue and detached/deleted from system object management.