diff options
Diffstat (limited to 'documentation')
| -rw-r--r-- | documentation/coding_style_en.txt | 462 | ||||
| -rw-r--r-- | documentation/doxygen/basicdef.h | 28 | ||||
| -rw-r--r-- | documentation/doxygen/filesystem.h | 88 | ||||
| -rw-r--r-- | documentation/doxygen/finsh.h | 38 | ||||
| -rw-r--r-- | documentation/doxygen/hardware.h | 170 | ||||
| -rw-r--r-- | documentation/doxygen/kernel.h | 298 | ||||
| -rw-r--r-- | documentation/doxygen/mainpage.h | 98 | ||||
| -rw-r--r-- | documentation/doxygen/module.h | 28 | ||||
| -rw-r--r-- | documentation/doxygen/systeminit.h | 158 |
9 files changed, 684 insertions, 684 deletions
diff --git a/documentation/coding_style_en.txt b/documentation/coding_style_en.txt index 926b6b5518..e5dad02404 100644 --- a/documentation/coding_style_en.txt +++ b/documentation/coding_style_en.txt @@ -1,231 +1,231 @@ - RT-Thread Coding Style
-
-This is an developing instruction for RT-Thread developers. As an open source
-software, RT-Thread is done by the cooperation of different people. This
-document is a guide for RT-Thread developers and please obey it if you are.
-RT-Thread users could also get to know some conventions in the code through it
-and thus easier to understand the implementations of RT-Thread.
-
-
-1. Directory Naming
-
-In normal conditions, please name directories in lower-case. Directories should
-have descriptive names. For example, the port of a chip should be composed of
-the name of the chip and the category of the chip. Directories under components/
-should stand for what the component does.
-
-
-2. File Naming
-
-In normal conditions, please name files in lower-case. If the file is
-referencing other places, it can have the original name. To avoid naming
-collision, do not use general names or the names that are frequently used.
-
-
-3. Header Files
-
-To avoid include the same header file for multiple times, you need to define a
-symbol like this:
-
- #ifndef __FILE_H__
- #define __FILE_H__
- /* header file content */
- #endif
-
-The symbol should begin and end with "__" to avoid naming collision. The words
-of the file name should be connected by "_".
-
-
-4. Header File Comments
-
-In every header file, there should be copyright information and Change Log
-record like this:
-
- /*
- * File : rtthread.h
- * This file is part of RT-Thread RTOS
- * COPYRIGHT (C) 2006, RT-Thread Development Team
- *
- * The license and distribution terms for this file may be
- * found in the file LICENSE in this distribution or at
- * http://www.rt-thread.org/license/LICENSE.
- *
- * Change Logs:
- * Date Author Notes
- * 2006-03-18 Bernard the first version
- * 2006-04-26 Bernard add semaphore APIs
- * …
- */
-
-
-5. Structure Defines
-
-Please name structures in lower-case and connect words with "_". For example:
-
- struct rt_list_node
- {
- struct rt_list_node *next;
- struct rt_list_node *prev;
- };
-
-Braces should have their own lines and the members should be defines with
-indent.
-
-The names of type defines such like structure types should be the structure name
-plus "_t". For example:
-
- typedef struct rt_list_node rt_list_t;
-
-
-In order to be easily referenced, the types of objects in kernel is pointer. For
-example:
-
- typedef struct rt_timer* rt_timer_t;
-
-
-6. Micros
-
-In RT-Thread, please use upper-case names for micro definitions. Words are
-connected by "_". Like:
-
- #define RT_TRUE 1
-
-
-7. Function Naming and Declaration
-
-Please name functions in lower-case and separate words with "_". API provided to
-upper application should be declared in header files. If the function don't have
-parameters, it should be declared as void:
-
- rt_thread_t rt_thread_self(void);
-
-
-8. Commenting
-
-Please use English to comment. There shouldn't be too much comments and the
-comments should describe what does the code do. And it should describe how the
-complicated algorithm works. Comments to statements should be placed before them
-or right of them. Anther places are illegal.
-
-
-9. Indent
-
-Please use TAB or 4 spaces to indent. It's preferred to use 4 spaces. If no
-other special meanings, the indent should begin right after "{":
-
- if (condition)
- {
- /* others */
- }
-
-The only one exception is switch. In switch-case statements, "case" should be
-aligned with "switch":
-
- switch (value)
- {
- case value1:
- break;
- }
-
-"case" is aligned with "switch", the following code block should be indented.
-
-
-10. Braces and Spaces
-
-For ease of reading, it is advised that braces should occupy the whole line
-instead of following other statements. Like:
-
- if (condition)
- {
- /* others */
- }
-
-When matching braces have their own lines, the reader would identify the code
-blocks easily.
-
-There should be a space before parentheses when it's not a function call. For
-example:
-
- if (x <= y)
- {
- /* others */
- }
-
- for (index = 0; index < MAX_NUMBER; index ++)
- {
- /* others */
- }
-
-In expressions, there should be a space between most binary and ternary
-operators and the strings. No spaces around(inside) parentheses, like:
-
- if ( x <= y )
- {
- /* other */
- }
-
-This is a bad practice.
-
-
-11. trace, log Informations
-
-In RT-Thread, rt_kprintf is a commonly used logging routine. In RT-Thread
-rt_kprintf is implemented as a polling, non-interrupting string output. It is
-suitable in "instant" situations such as interrupt context. The polling method
-would have influence to the timing sequence of the log output.
-
-It is not recommended to use rt_kprintf frequently. Unless you are aware of that
-it's not a big deal to run slower.
-
-Logging should be off by default and can be turned on by a switch(e.g. a
-variable or a micro). When logging, it should be easy to understand and easy to
-determine where the problem is.
-
-
-12. Functions
-
-Functions in kernel should be K.I.S.S. If the function is too long, you should
-split it into smaller ones and make each of them simplified and easy to
-understand.
-
-
-13. Objects
-
-The kernel of RT-Thread uses object-oriented tech in C. The naming convention
-is: structure names are the object names, object names + verb phrases are the
-method names of objects:
-
- struct rt_timer
- {
- struct rt_object parent;
- /* other fields */
- };
- typedef struct rt_timer* rt_timer_t;
-
-The definition of structure rt_timer stands for the object definition of timer
-object.
-
- rt_timer_t rt_timer_create(const char* name,
- void (*timeout)(void* parameter), void* parameter,
- rt_tick_t time, rt_uint8_t flag);
- rt_err_t rt_timer_delete(rt_timer_t timer);
- rt_err_t rt_timer_start(rt_timer_t timer);
- rt_err_t rt_timer_stop(rt_timer_t timer);
-
-rt_timer + verb phrase stands for the method that could be used on timer object.
-
-When creating a new object, think twice on memory allocations: whether a static
-object could be created or it could only created dynamically on heap.
-
-14. Use astyle to format the code automatically
-parameters: --style=allman
- --indent=spaces=4
- --pad-oper
- --pad-header
- --unpad-paren
- --suffix=none
- --align-pointer=name
- --lineend=linux
- --convert-tabs
- --verbose
-
+ RT-Thread Coding Style + +This is an developing instruction for RT-Thread developers. As an open source +software, RT-Thread is done by the cooperation of different people. This +document is a guide for RT-Thread developers and please obey it if you are. +RT-Thread users could also get to know some conventions in the code through it +and thus easier to understand the implementations of RT-Thread. + + +1. Directory Naming + +In normal conditions, please name directories in lower-case. Directories should +have descriptive names. For example, the port of a chip should be composed of +the name of the chip and the category of the chip. Directories under components/ +should stand for what the component does. + + +2. File Naming + +In normal conditions, please name files in lower-case. If the file is +referencing other places, it can have the original name. To avoid naming +collision, do not use general names or the names that are frequently used. + + +3. Header Files + +To avoid include the same header file for multiple times, you need to define a +symbol like this: + + #ifndef __FILE_H__ + #define __FILE_H__ + /* header file content */ + #endif + +The symbol should begin and end with "__" to avoid naming collision. The words +of the file name should be connected by "_". + + +4. Header File Comments + +In every header file, there should be copyright information and Change Log +record like this: + + /* + * File : rtthread.h + * This file is part of RT-Thread RTOS + * COPYRIGHT (C) 2006, RT-Thread Development Team + * + * The license and distribution terms for this file may be + * found in the file LICENSE in this distribution or at + * http://www.rt-thread.org/license/LICENSE. + * + * Change Logs: + * Date Author Notes + * 2006-03-18 Bernard the first version + * 2006-04-26 Bernard add semaphore APIs + * … + */ + + +5. Structure Defines + +Please name structures in lower-case and connect words with "_". For example: + + struct rt_list_node + { + struct rt_list_node *next; + struct rt_list_node *prev; + }; + +Braces should have their own lines and the members should be defines with +indent. + +The names of type defines such like structure types should be the structure name +plus "_t". For example: + + typedef struct rt_list_node rt_list_t; + + +In order to be easily referenced, the types of objects in kernel is pointer. For +example: + + typedef struct rt_timer* rt_timer_t; + + +6. Micros + +In RT-Thread, please use upper-case names for micro definitions. Words are +connected by "_". Like: + + #define RT_TRUE 1 + + +7. Function Naming and Declaration + +Please name functions in lower-case and separate words with "_". API provided to +upper application should be declared in header files. If the function don't have +parameters, it should be declared as void: + + rt_thread_t rt_thread_self(void); + + +8. Commenting + +Please use English to comment. There shouldn't be too much comments and the +comments should describe what does the code do. And it should describe how the +complicated algorithm works. Comments to statements should be placed before them +or right of them. Anther places are illegal. + + +9. Indent + +Please use TAB or 4 spaces to indent. It's preferred to use 4 spaces. If no +other special meanings, the indent should begin right after "{": + + if (condition) + { + /* others */ + } + +The only one exception is switch. In switch-case statements, "case" should be +aligned with "switch": + + switch (value) + { + case value1: + break; + } + +"case" is aligned with "switch", the following code block should be indented. + + +10. Braces and Spaces + +For ease of reading, it is advised that braces should occupy the whole line +instead of following other statements. Like: + + if (condition) + { + /* others */ + } + +When matching braces have their own lines, the reader would identify the code +blocks easily. + +There should be a space before parentheses when it's not a function call. For +example: + + if (x <= y) + { + /* others */ + } + + for (index = 0; index < MAX_NUMBER; index ++) + { + /* others */ + } + +In expressions, there should be a space between most binary and ternary +operators and the strings. No spaces around(inside) parentheses, like: + + if ( x <= y ) + { + /* other */ + } + +This is a bad practice. + + +11. trace, log Informations + +In RT-Thread, rt_kprintf is a commonly used logging routine. In RT-Thread +rt_kprintf is implemented as a polling, non-interrupting string output. It is +suitable in "instant" situations such as interrupt context. The polling method +would have influence to the timing sequence of the log output. + +It is not recommended to use rt_kprintf frequently. Unless you are aware of that +it's not a big deal to run slower. + +Logging should be off by default and can be turned on by a switch(e.g. a +variable or a micro). When logging, it should be easy to understand and easy to +determine where the problem is. + + +12. Functions + +Functions in kernel should be K.I.S.S. If the function is too long, you should +split it into smaller ones and make each of them simplified and easy to +understand. + + +13. Objects + +The kernel of RT-Thread uses object-oriented tech in C. The naming convention +is: structure names are the object names, object names + verb phrases are the +method names of objects: + + struct rt_timer + { + struct rt_object parent; + /* other fields */ + }; + typedef struct rt_timer* rt_timer_t; + +The definition of structure rt_timer stands for the object definition of timer +object. + + rt_timer_t rt_timer_create(const char* name, + void (*timeout)(void* parameter), void* parameter, + rt_tick_t time, rt_uint8_t flag); + rt_err_t rt_timer_delete(rt_timer_t timer); + rt_err_t rt_timer_start(rt_timer_t timer); + rt_err_t rt_timer_stop(rt_timer_t timer); + +rt_timer + verb phrase stands for the method that could be used on timer object. + +When creating a new object, think twice on memory allocations: whether a static +object could be created or it could only created dynamically on heap. + +14. Use astyle to format the code automatically +parameters: --style=allman + --indent=spaces=4 + --pad-oper + --pad-header + --unpad-paren + --suffix=none + --align-pointer=name + --lineend=linux + --convert-tabs + --verbose + diff --git a/documentation/doxygen/basicdef.h b/documentation/doxygen/basicdef.h index ad766b4ebd..4479840843 100644 --- a/documentation/doxygen/basicdef.h +++ b/documentation/doxygen/basicdef.h @@ -1,14 +1,14 @@ -/*
- * This file is only used for doxygen document generation.
- */
-
-/**
- * @defgroup BasicDef Basic Definitions
- *
- * @brief Basic data type in RT-Thread RTOS.
- *
- * These are the basic definitions which used in RT-Thread RTOS. In general,
- * RT-Thread kernel uses its own definition of the basic data types, such as
- * rt_uint32_t, rt_uint8_t, etc., which does not depend on the compiler or
- * architecture.
- */
+/* + * This file is only used for doxygen document generation. + */ + +/** + * @defgroup BasicDef Basic Definitions + * + * @brief Basic data type in RT-Thread RTOS. + * + * These are the basic definitions which used in RT-Thread RTOS. In general, + * RT-Thread kernel uses its own definition of the basic data types, such as + * rt_uint32_t, rt_uint8_t, etc., which does not depend on the compiler or + * architecture. + */ diff --git a/documentation/doxygen/filesystem.h b/documentation/doxygen/filesystem.h index 2cb4d6066b..f5a1834e25 100644 --- a/documentation/doxygen/filesystem.h +++ b/documentation/doxygen/filesystem.h @@ -1,44 +1,44 @@ -/*
- * This file is only used for doxygen document generation.
- */
-
-/**
- * @defgroup DFS Device Virtual File System
- *
- * @brief DFS is a virtual file system in RT-Thread RTOS.
- *
- * The DFS (Device Virtual File System) is a vfs file system of RT-Thread RTOS,
- * which is focused on embedded device. VFS is an abstraction layer on top of a
- * more concrete file system. The purpose of a VFS is to allow client applications
- * to access different types of concrete file systems in a uniform way.
- *
- * @image html dfs.png "Figure 4: Device Virtual File System Architecture"
- *
- * The DFS specifies an interface between the kernel and a concrete file system.
- * Therefore, it is easy to add support for new file system types to the kernel
- * simply by fulfilling the interface.
- */
-
-/**
- * @addtogroup DFS
- */
-/*@{*/
-
-/**
- * @defgroup Fd File Descriptor
- *
- */
-
-/**
- * @defgroup FsApi File System API
- */
-
-/**
- * @defgroup FileApi File API
- */
-
-/**
- * @defgroup FsPosixApi File POSIX API
- */
-
-/*@}*/
+/* + * This file is only used for doxygen document generation. + */ + +/** + * @defgroup DFS Device Virtual File System + * + * @brief DFS is a virtual file system in RT-Thread RTOS. + * + * The DFS (Device Virtual File System) is a vfs file system of RT-Thread RTOS, + * which is focused on embedded device. VFS is an abstraction layer on top of a + * more concrete file system. The purpose of a VFS is to allow client applications + * to access different types of concrete file systems in a uniform way. + * + * @image html dfs.png "Figure 4: Device Virtual File System Architecture" + * + * The DFS specifies an interface between the kernel and a concrete file system. + * Therefore, it is easy to add support for new file system types to the kernel + * simply by fulfilling the interface. + */ + +/** + * @addtogroup DFS + */ +/*@{*/ + +/** + * @defgroup Fd File Descriptor + * + */ + +/** + * @defgroup FsApi File System API + */ + +/** + * @defgroup FileApi File API + */ + +/** + * @defgroup FsPosixApi File POSIX API + */ + +/*@}*/ diff --git a/documentation/doxygen/finsh.h b/documentation/doxygen/finsh.h index fd13c43379..e443b8c28f 100644 --- a/documentation/doxygen/finsh.h +++ b/documentation/doxygen/finsh.h @@ -1,19 +1,19 @@ -/*
- * This file is only used for doxygen document generation.
- */
-
-/**
- * @defgroup finsh finsh shell
- *
- * @brief finsh shell is a user command shell in RT-Thread RTOS.
- *
- * finsh shell is a user command shell in RT-Thread RTOS, which is a shell can
- * accept C-expression like syntax in command. From finsh shell, user can access
- * system area, such as memory, variables and function by input C-expression in
- * command.
- *
- * @image html finsh.png "Figure 3: finsh shell architecture"
- * There is a shell thread, which named as "tshell", in the finsh shell, it read
- * user command from console device, and then invokes system function or access
- * system variable to output result (by rt_kprintf).
- */
+/* + * This file is only used for doxygen document generation. + */ + +/** + * @defgroup finsh finsh shell + * + * @brief finsh shell is a user command shell in RT-Thread RTOS. + * + * finsh shell is a user command shell in RT-Thread RTOS, which is a shell can + * accept C-expression like syntax in command. From finsh shell, user can access + * system area, such as memory, variables and function by input C-expression in + * command. + * + * @image html finsh.png "Figure 3: finsh shell architecture" + * There is a shell thread, which named as "tshell", in the finsh shell, it read + * user command from console device, and then invokes system function or access + * system variable to output result (by rt_kprintf). + */ diff --git a/documentation/doxygen/hardware.h b/documentation/doxygen/hardware.h index f46aed3e4b..dd50f3abe8 100644 --- a/documentation/doxygen/hardware.h +++ b/documentation/doxygen/hardware.h @@ -1,85 +1,85 @@ -/*
- * This file is only used for doxygen document generation.
- */
-
-/**
- * @defgroup bsp Hardware Related Package
- *
- * @brief Hardware Related Package includes board support package(BSP) and CSP(Chip
- * Support Package).
- *
- * Board Support Package(BSP) is the hardware related wrapper, for example, peripherals
- * in board, the pinmux setting etc. In RT-Thread RTOS, the bsp is placed under bsp
- * directory.
- *
- * Chip Support Package (CSP) is a software set that contains chip specific software.
- * A CSP usually includes operating system porting and peripheral device drivers inside
- * chip. In RT-Thread RTOS, the csp is placed under libcpu directory.
- */
-
-/**
- * @addtogroup bsp
- */
-/*@{*/
-
-/**
- * This function will return current system interrupt status and disable system
- * interrupt.
- *
- * @return the current system interrupt status
- */
-rt_base_t rt_hw_interrupt_disable(void);
-
-/**
- * This function will set the specified interrupt status, which shall saved by
- * rt_hw_intterrupt_disable function. If the saved interrupt status is interrupt
- * opened, this function will open system interrupt status.
- */
-void rt_hw_interrupt_enable(rt_base_t level);
-
-/**
- * This function initializes interrupt.
- */
-void rt_hw_interrupt_init(void);
-
-/**
- * This function masks the specified interrupt.
- *
- * @param vector the interrupt number to be masked.
- *
- * @note not all of platform provide this function.
- */
-void rt_hw_interrupt_mask(int vector);
-
-/**
- * This function umasks the specified interrupt.
- *
- * @param vector the interrupt number to be unmasked.
- *
- * @note not all of platform provide this function.
- */
-void rt_hw_interrupt_umask(int vector);
-
-/**
- * This function will install specified interrupt handler.
- *
- * @param vector the interrupt number to be installed.
- * @param new_handler the new interrupt handler.
- * @param old_handler the old interrupt handler. This parameter can be RT_NULL.
- *
- * @note not all of platform provide this function.
- */
-void rt_hw_interrupt_install(int vector, rt_isr_handler_t new_handler,
- rt_isr_handler_t *old_handler);
-
-/**
- * This function will reset whole platform.
- */
-void rt_hw_cpu_reset(void);
-
-/**
- * This function will halt whole platform.
- */
-void rt_hw_cpu_shutdown(void);
-
-/*@}*/
+/* + * This file is only used for doxygen document generation. + */ + +/** + * @defgroup bsp Hardware Related Package + * + * @brief Hardware Related Package includes board support package(BSP) and CSP(Chip + * Support Package). + * + * Board Support Package(BSP) is the hardware related wrapper, for example, peripherals + * in board, the pinmux setting etc. In RT-Thread RTOS, the bsp is placed under bsp + * directory. + * + * Chip Support Package (CSP) is a software set that contains chip specific software. + * A CSP usually includes operating system porting and peripheral device drivers inside + * chip. In RT-Thread RTOS, the csp is placed under libcpu directory. + */ + +/** + * @addtogroup bsp + */ +/*@{*/ + +/** + * This function will return current system interrupt status and disable system + * interrupt. + * + * @return the current system interrupt status + */ +rt_base_t rt_hw_interrupt_disable(void); + +/** + * This function will set the specified interrupt status, which shall saved by + * rt_hw_intterrupt_disable function. If the saved interrupt status is interrupt + * opened, this function will open system interrupt status. + */ +void rt_hw_interrupt_enable(rt_base_t level); + +/** + * This function initializes interrupt. + */ +void rt_hw_interrupt_init(void); + +/** + * This function masks the specified interrupt. + * + * @param vector the interrupt number to be masked. + * + * @note not all of platform provide this function. + */ +void rt_hw_interrupt_mask(int vector); + +/** + * This function umasks the specified interrupt. + * + * @param vector the interrupt number to be unmasked. + * + * @note not all of platform provide this function. + */ +void rt_hw_interrupt_umask(int vector); + +/** + * This function will install specified interrupt handler. + * + * @param vector the interrupt number to be installed. + * @param new_handler the new interrupt handler. + * @param old_handler the old interrupt handler. This parameter can be RT_NULL. + * + * @note not all of platform provide this function. + */ +void rt_hw_interrupt_install(int vector, rt_isr_handler_t new_handler, + rt_isr_handler_t *old_handler); + +/** + * This function will reset whole platform. + */ +void rt_hw_cpu_reset(void); + +/** + * This function will halt whole platform. + */ +void rt_hw_cpu_shutdown(void); + +/*@}*/ diff --git a/documentation/doxygen/kernel.h b/documentation/doxygen/kernel.h index 6270af6dba..b54144780b 100644 --- a/documentation/doxygen/kernel.h +++ b/documentation/doxygen/kernel.h @@ -1,138 +1,138 @@ -/*
- * 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
- */
-
+/* + * 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
- *
+ +/** + * @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. * @@ -141,20 +141,20 @@ * - 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
- */
-
-/*@}*/
+ * - 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 + */ + +/*@}*/ diff --git a/documentation/doxygen/mainpage.h b/documentation/doxygen/mainpage.h index 6347a34b3c..a9d932da64 100644 --- a/documentation/doxygen/mainpage.h +++ b/documentation/doxygen/mainpage.h @@ -1,49 +1,49 @@ -/*
- * This file is only used for doxygen document generation.
- */
-
-/**
- * @mainpage Introduction
- * @author RT-Thread Development Team
- * @version 1.1.0
- *
- * RT-Thread RTOS is an open source embedded real-time operating system and is
- * designed specifically for small memory footprint platforms. The real-time and
- * embedded characters are the most significant advantages of RT-Thread.
- *
- * - Real-Time Character
- *
- * RT-Thread has a real-time operating system kernel, with fully preempted
- * multi-thread scheduler, inter-thread communication with timing sensitivity
- * and transparent interrupt handling.
- *
- * - Embedded Character
- *
- * RT-Thread is suitable for embedded systems for small footprint characters.
- * The kernel is implemented as a simple C library. The simplest application
- * costs less than 1 Kbytes RAM on the ARM Cortex-M platform.
- *
- * @section kernel_arch RT-Thread Architecture
- *
- * RT-Thread system architecture is like:
- * @image html System_Arch.png "Figure 1: RT-Thread Architecture"
- *
- * @section kernel_service Kernel API
- *
- * The Kernel APIs are the core APIs of RT-Thread, which supports the following
- * features:
- * - Multi-thread management and scheduler
- * - Synchronization mechanisms, semaphore, recursive mutex and event set
- * - Inter-thread communication, mailbox and message queue
- * - Memory management, memory pool and dynamic heap memory management
- * - Asynchronous timer
- *
- * For more details, please refer to @ref Kernel
- *
- * @section system_init System Initialization
- *
- * Once RT-Thread operating system starts up, the facility in system must be initialized
- * firstly.
- *
- * For more details, please refer to @ref SystemInit
- */
+/* + * This file is only used for doxygen document generation. + */ + +/** + * @mainpage Introduction + * @author RT-Thread Development Team + * @version 1.1.0 + * + * RT-Thread RTOS is an open source embedded real-time operating system and is + * designed specifically for small memory footprint platforms. The real-time and + * embedded characters are the most significant advantages of RT-Thread. + * + * - Real-Time Character + * + * RT-Thread has a real-time operating system kernel, with fully preempted + * multi-thread scheduler, inter-thread communication with timing sensitivity + * and transparent interrupt handling. + * + * - Embedded Character + * + * RT-Thread is suitable for embedded systems for small footprint characters. + * The kernel is implemented as a simple C library. The simplest application + * costs less than 1 Kbytes RAM on the ARM Cortex-M platform. + * + * @section kernel_arch RT-Thread Architecture + * + * RT-Thread system architecture is like: + * @image html System_Arch.png "Figure 1: RT-Thread Architecture" + * + * @section kernel_service Kernel API + * + * The Kernel APIs are the core APIs of RT-Thread, which supports the following + * features: + * - Multi-thread management and scheduler + * - Synchronization mechanisms, semaphore, recursive mutex and event set + * - Inter-thread communication, mailbox and message queue + * - Memory management, memory pool and dynamic heap memory management + * - Asynchronous timer + * + * For more details, please refer to @ref Kernel + * + * @section system_init System Initialization + * + * Once RT-Thread operating system starts up, the facility in system must be initialized + * firstly. + * + * For more details, please refer to @ref SystemInit + */ diff --git a/documentation/doxygen/module.h b/documentation/doxygen/module.h index 1b7ff4db90..5fc7816985 100644 --- a/documentation/doxygen/module.h +++ b/documentation/doxygen/module.h @@ -1,14 +1,14 @@ -/*
- * This file is only used for doxygen document generation.
- */
-
-/**
- * @defgroup Module Application Module
- *
- * @brief Application Module is a feature let user to execute application in RT-Thread RTOS.
- *
- * Application Module is implemented as dynamic object loader, but it can handle
- * the dependences relationship between application and dynamic library, moreover,
- * it also can handle the kernel object destroy and memory release issue when application
- * (abnormally) exit.
- */
+/* + * This file is only used for doxygen document generation. + */ + +/** + * @defgroup Module Application Module + * + * @brief Application Module is a feature let user to execute application in RT-Thread RTOS. + * + * Application Module is implemented as dynamic object loader, but it can handle + * the dependences relationship between application and dynamic library, moreover, + * it also can handle the kernel object destroy and memory release issue when application + * (abnormally) exit. + */ diff --git a/documentation/doxygen/systeminit.h b/documentation/doxygen/systeminit.h index 8508958c1d..d62aca59bb 100644 --- a/documentation/doxygen/systeminit.h +++ b/documentation/doxygen/systeminit.h @@ -1,79 +1,79 @@ -/*
- * This file is only used for doxygen document generation.
- */
-
-/**
- * @defgroup SystemInit System Initialization
- *
- * @brief System initialization procedure.
- *
- * When RT-Thread operating system starts up, the basic operating system facility
- * initialization routines must be invoked.
- *
- * The suggested initialization sequence is:
- *
- * - initialize device hardware
- * rt_hw_board_init();
- *
- * User can put the low level hardware initialization in this function, such as
- * DDR memory setting, pinmux setting, console device setting etc.
- *
- * - show version
- * rt_show_version();
- *
- * - initialize system tick
- * rt_system_tick_init();
- *
- * - initialize kernel object [deprecated]
- * rt_system_object_init();
- *
- * - initialize timer system
- * rt_system_timer_init();
- *
- * - initialize system heap memory
- * rt_system_heap_init(__bss_end, __end_of_memory);
- *
- * - initialize module system
- * rt_system_module_init();
- *
- * - initialize scheduler system
- * rt_system_scheduler_init();
- *
- * - initialize application
- * rt_application_init();
- *
- * - initialize system timer thread
- * rt_system_timer_thread_init();
- *
- * - initialize idle thread
- * rt_thread_idle_init();
- *
- * - start scheduler
- * rt_system_scheduler_start();
- */
-
-/**
- * @ingroup SystemInit
- *
- * This function will initialize user application.
- *
- * This function will be invoked when system initialization and system scheduler
- * has not started. User can allocate memory, create thread, semaphore etc. However,
- * user shall not suspend 'current' thread.
- */
-void rt_application_init()
-{
-}
-
-/**
- * @ingroup SystemInit
- *
- * This function will initialize system heap memory.
- *
- * @param begin_addr the beginning address of system heap memory.
- * @param end_addr the end address of system heap memory.
- *
- */
-void rt_system_heap_init(void* begin_addr, void* end_addr)
-{
-}
+/* + * This file is only used for doxygen document generation. + */ + +/** + * @defgroup SystemInit System Initialization + * + * @brief System initialization procedure. + * + * When RT-Thread operating system starts up, the basic operating system facility + * initialization routines must be invoked. + * + * The suggested initialization sequence is: + * + * - initialize device hardware + * rt_hw_board_init(); + * + * User can put the low level hardware initialization in this function, such as + * DDR memory setting, pinmux setting, console device setting etc. + * + * - show version + * rt_show_version(); + * + * - initialize system tick + * rt_system_tick_init(); + * + * - initialize kernel object [deprecated] + * rt_system_object_init(); + * + * - initialize timer system + * rt_system_timer_init(); + * + * - initialize system heap memory + * rt_system_heap_init(__bss_end, __end_of_memory); + * + * - initialize module system + * rt_system_module_init(); + * + * - initialize scheduler system + * rt_system_scheduler_init(); + * + * - initialize application + * rt_application_init(); + * + * - initialize system timer thread + * rt_system_timer_thread_init(); + * + * - initialize idle thread + * rt_thread_idle_init(); + * + * - start scheduler + * rt_system_scheduler_start(); + */ + +/** + * @ingroup SystemInit + * + * This function will initialize user application. + * + * This function will be invoked when system initialization and system scheduler + * has not started. User can allocate memory, create thread, semaphore etc. However, + * user shall not suspend 'current' thread. + */ +void rt_application_init() +{ +} + +/** + * @ingroup SystemInit + * + * This function will initialize system heap memory. + * + * @param begin_addr the beginning address of system heap memory. + * @param end_addr the end address of system heap memory. + * + */ +void rt_system_heap_init(void* begin_addr, void* end_addr) +{ +} |
