161 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			161 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /*
 | ||
|  |  * This file is only used for doxygen document generation. | ||
|  |  */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @defgroup Kernel RT-Thread Kernel API | ||
|  |  * | ||
|  |  * The Kernel APIs are the core APIs of RT-Thread, which supports the following | ||
|  |  * features: | ||
|  |  * - Multi-thread management | ||
|  |  * - Synchronization mechanisms | ||
|  |  * - Inter-thread communication | ||
|  |  * - Memory management | ||
|  |  * - Asynchronous timer | ||
|  |  */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @addtogroup Kernel | ||
|  |  */ | ||
|  | /*@{*/ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @defgroup Thread Thread Management | ||
|  |  * @brief the thread management | ||
|  |  * | ||
|  |  * RT-Thread operating system supports multitask systems, which are based on thread | ||
|  |  * scheduling. | ||
|  |  * - The scheduling is a full preemptive priority-based scheduling algorithm. | ||
|  |  * - 8/32/256 priority levels are supported, in which 0 is the highest and 7/31/255 the lowest. | ||
|  |  * The 7/31/255th priority is used for idle thread. | ||
|  |  * - Threads running at same priority level are supported. The shared time-slice | ||
|  |  * round-robin scheduling is used for this case. | ||
|  |  * - The time of scheduler to choose the next highest ready thread is determinant. | ||
|  |  * - There are four status in thread management | ||
|  |  *	-# Initialization | ||
|  |  *	-# Running/Ready | ||
|  |  *	-# Blocked | ||
|  |  *	-# Closed | ||
|  |  * - The number of threads in the system is unlimited, only related with RAM. | ||
|  |  */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @defgroup Clock Clock and Timer Management | ||
|  |  *  * @brief clock and system timer management | ||
|  |  * | ||
|  |  * RT-Thread uses clock tick to implement shared time-slice scheduling. | ||
|  |  * | ||
|  |  * The timing sensitivity of thread is implemented by timers. The timer can be set as | ||
|  |  * one-shot or periodic timeout. | ||
|  |  */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @defgroup KernelObject Kernel Object Management | ||
|  |  * @brief kernel object management | ||
|  |  * | ||
|  |  * The Kernel object system can access and manage all of the kernel objects. | ||
|  |  * | ||
|  |  * Kernel objects include most of the facilities in the kernel: | ||
|  |  * - thread | ||
|  |  * - semaphore and mutex | ||
|  |  * - event/fast event, mailbox, messagequeue | ||
|  |  * - memory pool | ||
|  |  * - timer | ||
|  |  * @image html Kernel_Object.png "Figure 2: Kernel Object" | ||
|  |  * @image rtf  Kernel_Object.png "Figure 2: Kernel Object" | ||
|  |  * | ||
|  |  * Kernel objects can be static objects, whose memory is allocated in compiling. | ||
|  |  * It can be dynamic objects as well, whose memory is allocated from system heaps | ||
|  |  * in runtime. | ||
|  |  */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @defgroup IPC Inter-Thread Communication | ||
|  |  * @brief inter-thread communication | ||
|  |  * | ||
|  |  * RT-Thread operating system supports the traditional semaphore and mutex. | ||
|  |  * - Mutex objects use inherited priority to prevent priority reversion. | ||
|  |  * - The semaphore release action is safe for interrupt service routine. | ||
|  |  * | ||
|  |  * Moreover, the blocked queue for thread to obtain semaphore or mutex can be sorted | ||
|  |  * by priority or FIFO. There are two flags to indicate this mechanism. | ||
|  |  * - RT_IPC_FLAG_FIFO | ||
|  |  *   when the resource is available, thread pended on this resource at first would get | ||
|  |  *   the resource. | ||
|  |  * - RT_IPC_FLAG_PRIO | ||
|  |  *   when the resource is available, thread pended on this resource who had the most high | ||
|  |  *   priority would get the resource. | ||
|  |  * | ||
|  |  * RT-Thread operating systems supports event/fast event, mail box and message queue. | ||
|  |  * - The event mechanism is used to awake a thead by setting one or more corresponding | ||
|  |  * bit of a binary number when an event ocurs. | ||
|  |  * - The fast event supports event thread queue. Once a one bit event occurs, the corresponding | ||
|  |  * blocked thread can be found out timing accurately, then will be waked up. | ||
|  |  * - In mailbox, the mail length is fixed to 4 byte, which is more effective than message queue. | ||
|  |  * - The send action for communication facilities is also safe for interrupt service routine. | ||
|  |  */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @defgroup MM Memory Management | ||
|  |  * @brief memory management for memory pool and heap memory | ||
|  |  * | ||
|  |  * RT-Thread operating system supports two types memory management: | ||
|  |  * - Static memory pool management | ||
|  |  * - Dynamic memory heap management. | ||
|  |  * | ||
|  |  * The time to allocate a memory block from the memory pool is determinant. When | ||
|  |  * the memory pool is empty, the allocated thread can be blocked (or immediately return, | ||
|  |  * or waiting for sometime to return, which are determined by a timeout parameter). | ||
|  |  * When other thread releases memory blocks to this memory pool, the blocked thread is | ||
|  |  * wake up. | ||
|  |  * | ||
|  |  * There are two methods in dynamic memory heap management, one is used for small memory, | ||
|  |  * such as less than 1MB.  Another is a SLAB like memory management, which is suitable | ||
|  |  * for large memory system. All of them has no real-time character. | ||
|  |  */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @defgroup Device Device System | ||
|  |  * @brief device I/O subsystem | ||
|  |  * | ||
|  |  * The Device System is designed as simple and minimum layer to help communication between | ||
|  |  * applications and drivers. | ||
|  |  * | ||
|  |  * The Device System provide five interfaces to driver: | ||
|  |  * - open, open a device | ||
|  |  * - close, close a device | ||
|  |  * - read, read some data from a device | ||
|  |  * - write, write some data to a device | ||
|  |  * - control, send some control command to a device | ||
|  |  */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @defgroup Hook Runtime Trace and Record | ||
|  |  * @brief the hook function set in runtime | ||
|  |  * | ||
|  |  * In order to trace and record RT-Thread activity in runtime, a hook mechanism | ||
|  |  * is introduced. | ||
|  |  * | ||
|  |  * The hooks are a series of routines, which are invoked in some special checkpoints. | ||
|  |  * The hook routines include: | ||
|  |  * - object hook, invoked at object created, deleted, taken and put etc. | ||
|  |  * - scheduler hook, invoked at thread switch and idle thread loop. | ||
|  |  * - memory hook, invoked when allocate or free memory block. | ||
|  |  * - timer hook, invoked when timer is timeout. | ||
|  |  */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @defgroup KernelService Other useful kernel service | ||
|  |  * @brief other useful service in the kernel | ||
|  |  */ | ||
|  | 
 | ||
|  | /**
 | ||
|  |  * @defgroup Error Error Code | ||
|  |  * @brief error code | ||
|  |  * | ||
|  |  * The error code is defined to identify which kind of error occurs. When some | ||
|  |  * bad things happen, the current thread's errno will be set. see @ref _rt_errno | ||
|  |  */ | ||
|  | 
 | ||
|  | /*@}*/ |