aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2009-01-22 15:37:29 +0000
committergdisirio <gdisirio@35acf78f-673a-0410-8e92-d51de3d6d3f4>2009-01-22 15:37:29 +0000
commitbae98eb8d8e752aa084a2438aa99d5f72e3f1247 (patch)
treef0e74570eced59079300f2371ac02bfdf5c30120
parentb094fe9dc11e9aa1f017cb65766a16ecd42432d2 (diff)
downloadChibiOS-bae98eb8d8e752aa084a2438aa99d5f72e3f1247.tar.gz
ChibiOS-bae98eb8d8e752aa084a2438aa99d5f72e3f1247.tar.bz2
ChibiOS-bae98eb8d8e752aa084a2438aa99d5f72e3f1247.zip
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@666 35acf78f-673a-0410-8e92-d51de3d6d3f4
-rw-r--r--docs/src/jitter.dox15
-rw-r--r--ports/ARM7/chcore.h28
-rw-r--r--ports/ARM7/chcoreasm.s30
-rw-r--r--readme.txt30
-rw-r--r--src/include/condvars.h2
-rw-r--r--src/include/events.h4
-rw-r--r--src/include/lists.h13
-rw-r--r--src/include/mutexes.h2
-rw-r--r--src/include/queues.h5
-rw-r--r--src/include/scheduler.h3
-rw-r--r--src/include/semaphores.h2
-rw-r--r--src/include/serial.h4
-rw-r--r--src/include/threads.h3
-rw-r--r--src/include/vt.h4
-rw-r--r--src/lib/ch.hpp16
-rw-r--r--src/lib/evtimer.h2
-rw-r--r--src/templates/chcore.h17
17 files changed, 102 insertions, 78 deletions
diff --git a/docs/src/jitter.dox b/docs/src/jitter.dox
index 733e30ef6..4bbedd7b7 100644
--- a/docs/src/jitter.dox
+++ b/docs/src/jitter.dox
@@ -3,21 +3,21 @@
* @{
* Response time jitter is one of the most sneaky source of problems when
* designing a real time system. When using a RTOS like ChibiOS/RT one must
- * be aware of what Jitter is and how it can affect the performance of the
+ * be aware of what the jitter is and how it can affect the performance of the
* system.<br>
* A good place to start is this
* <a href="http://en.wikipedia.org/wiki/Jitter">Wikipedia article</a>.
*
* <h2>Jitter Sources</h2>
- * Under ChibiOS/RT (or any other similar RTOS) there are several jitter
- * possible sources:
+ * Under ChibiOS/RT (or any other similar RTOS) there are several possible
+ * jitter sources:
* -# Hardware interrupts latency.
* -# Interrupts service time and priority.
* -# Kernel lock zones.
* -# Higher priority threads activity.
*
* <h2>Jitter mitigation countermeasures</h2>
- * For each of the previously described jitter source there are possible
+ * For each of the previously described jitter sources there are possible
* mitigation actions.
*
* <h3>Hardware interrupts latency</h3>
@@ -49,13 +49,14 @@
* As example, in the ARM port, FIQ sources are not affected by the
* kernel-generated jitter. The Cortex-M3 port is even better thanks to its
* hardware-assisted interrupt architecture allowing handlers preemption,
- * late switch, tail chaining etc. See the notes about the various @ref Ports.
+ * late arriving, tail chaining etc. See the notes about the various
+ * @ref Ports.
*
* <h3>Kernel lock zones</h3>
* The OS kernel protects some critical internal data structure by disabling
* (fully in simple architecture, to some extent in more advanced
* microcontrollers) the interrupt sources. Because of this the kernel itself
- * is a jitter source, a good OS design minimizes the jitter generated by the
+ * is a jitter cause, a good OS design minimizes the jitter generated by the
* kernel by both using adequate data structure, algorithms and good coding
* practices.<br>
* A good OS design is not the whole story, some OS primitives may generate
@@ -72,6 +73,6 @@
* by carefully assigning priorities to the various threads and carefully
* designing mutual exclusion zones.<br>
* The use of the proper synchronization mechanism (semaphores, mutexes, events,
- * messages and so on) also helps to improve the system performance.
+ * messages and so on) also helps to improve the overall system performance.
*/
/** @} */
diff --git a/ports/ARM7/chcore.h b/ports/ARM7/chcore.h
index 1e99f7e16..41efb7f7e 100644
--- a/ports/ARM7/chcore.h
+++ b/ports/ARM7/chcore.h
@@ -197,7 +197,10 @@ struct context {
* Disables the IRQ sources and keeps the FIQ sources enabled.
*/
#ifdef THUMB
-#define port_lock() _port_lock_thumb()
+//#define port_lock() _port_lock_thumb()
+#define port_lock() { \
+ asm volatile ("bl _port_lock_thumb" : : : "r3", "lr"); \
+}
#else /* THUMB */
#define port_lock() asm volatile ("msr CPSR_c, #0x9F")
#endif /* !THUMB */
@@ -206,7 +209,10 @@ struct context {
* Enables both the IRQ and FIQ sources.
*/
#ifdef THUMB
-#define port_unlock() _port_unlock_thumb()
+//#define port_unlock() _port_unlock_thumb()
+#define port_unlock() { \
+ asm volatile ("bl _port_unlock_thumb" : : : "r3", "lr"); \
+}
#else /* THUMB */
#define port_unlock() asm volatile ("msr CPSR_c, #0x1F")
#endif /* !THUMB */
@@ -227,7 +233,10 @@ struct context {
* LPC214x datasheet.
*/
#ifdef THUMB
-#define port_disable() _port_disable_thumb()
+//#define port_disable() _port_disable_thumb()
+#define port_disable() { \
+ asm volatile ("bl _port_disable_thumb" : : : "r3", "lr"); \
+}
#else /* THUMB */
#define port_disable() { \
asm volatile ("mrs r3, CPSR \n\t" \
@@ -242,7 +251,9 @@ struct context {
* Disables the IRQ sources and enables the FIQ sources.
*/
#ifdef THUMB
-#define port_suspend() _port_suspend_thumb()
+#define port_suspend() { \
+ asm volatile ("bl _port_suspend_thumb" : : : "r3", "lr"); \
+}
#else /* THUMB */
#define port_suspend() asm volatile ("msr CPSR_c, #0x9F")
#endif /* !THUMB */
@@ -251,7 +262,9 @@ struct context {
* Enables both the IRQ and FIQ sources.
*/
#ifdef THUMB
-#define port_enable() _port_enable_thumb()
+#define port_enable() { \
+ asm volatile ("bl _port_enable_thumb" : : : "r3", "lr"); \
+}
#else /* THUMB */
#define port_enable() asm volatile ("msr CPSR_c, #0x1F")
#endif /* !THUMB */
@@ -273,11 +286,6 @@ extern "C" {
void port_puts(char *msg);
void port_halt(void);
#ifdef THUMB
- void _port_lock_thumb(void);
- void _port_unlock_thumb(void);
- void _port_disable_thumb(void);
- void _port_suspend_thumb(void);
- void _port_enable_thumb(void);
void _port_switch_thumb(Thread *otp, Thread *ntp);
#else /* THUMB */
void _port_switch_arm(Thread *otp, Thread *ntp);
diff --git a/ports/ARM7/chcoreasm.s b/ports/ARM7/chcoreasm.s
index adbe1c622..e8fd2881d 100644
--- a/ports/ARM7/chcoreasm.s
+++ b/ports/ARM7/chcoreasm.s
@@ -44,27 +44,28 @@
.balign 16
.code 16
.thumb_func
-.global _port_disable_all_thumb
-_port_disable_all_thumb:
- mov r0, pc
- bx r0
+.global _port_disable_thumb
+_port_disable_thumb:
+ mov r3, pc
+ bx r3
.code 32
- mrs r0, CPSR
- orr r0, #I_BIT
- msr CPSR_c, r0
- orr r0, #F_BIT
- msr CPSR_c, r0
+ mrs r3, CPSR
+ orr r3, #I_BIT
+ msr CPSR_c, r3
+ orr r3, #F_BIT
+ msr CPSR_c, r3
bx lr
.balign 16
.code 16
.thumb_func
.global _port_suspend_thumb
-_port_disable_thumb:
+_port_suspend_thumb:
+.thumb_func
.global _port_lock_thumb
_port_lock_thumb:
- mov r0, pc
- bx r0
+ mov r3, pc
+ bx r3
.code 32
msr CPSR_c, #MODE_SYS | I_BIT
bx lr
@@ -74,10 +75,11 @@ _port_lock_thumb:
.thumb_func
.global _port_enable_thumb
_port_enable_thumb:
+.thumb_func
.global _port_unlock_thumb
_port_unlock_thumb:
- mov r0, pc
- bx r0
+ mov r3, pc
+ bx r3
.code 32
msr CPSR_c, #MODE_SYS
bx lr
diff --git a/readme.txt b/readme.txt
index 4e95317ea..9ecda52a0 100644
--- a/readme.txt
+++ b/readme.txt
@@ -77,6 +77,10 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
- NEW: Added a configuration option to enable nested system locks/unlocks.
- NEW: Improved the interrupt handlers related code. Now interrupts are
handled in a very similar way in every architecture.
+- OPT: Improved ARM7 thumb port code, thanks to some GCC tricks involving
+ registers usage now the kernel is much smaller, much faster and most OS APIs
+ use less RAM in stack frames (note, this is an ARM7 thumb mode specific
+ optimization).
- CHANGE: Renamed the macros chSysIRQEnter() and chSysIRQExit() in
CH_IRQ_PROLOGUE() and CH_IRQ_EPILOGUE() in order to make very clear that
those are not functions but inlined code. Also introduced a new macro
@@ -86,7 +90,7 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
- Introduced the concept of system states, see the documentation.
- Huge improvements to the ports documentation.
- Articles and notes previously in the wiki now merged in the general
- documentation, the wiki entries are obsolete and will be removed.
+ documentation and updated, the wiki entries are obsolete and will be removed.
- New application notes and articles added.
*** 1.0.0rc2 ***
@@ -355,7 +359,7 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
- OPT: Removed an unrequired initialization and made other small optimizations
to the chThdCreate().
- OPT: Improvements to the test framework, now a virtual timer is used instead
- of software loops into the bechmarks in order to have more stable results.
+ of software loops into the benchmarks in order to have more stable results.
- New benchmark added to the test suite.
- Added the C++ wrapper entries to the documentation.
- Fixed the documentation entry for the chThdCreate() API.
@@ -432,7 +436,7 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
- Fixes in various headers to make some macros compatible with both C and C++.
- Fixed a regression in the LPC214x minimal demo that broke interrupt
handling.
-- Some fixes to the doxigen documentation.
+- Some fixes to the doxygen documentation.
- More work done on the ARM-CM3 port but it is still not complete.
*** 0.6.1 ***
@@ -450,7 +454,7 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
- Started work on ARM Cortex-M3 architecture. The target chip is the STM32F103
on a Olimex STM32-P103 board.
- Added a threads state diagram to the documentation.
-- Various fixes to the doxigen documentation.
+- Various fixes to the doxygen documentation.
*** 0.6.0 ***
- Code refactory, all the old sized-integer definitions like LONG32, UWORD16
@@ -487,9 +491,9 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
the new demo were added.
*** 0.5.4 ***
-- Port for Atmel AT91SAM7X256 introduced, the port should be useable also on
+- Port for Atmel AT91SAM7X256 introduced, the port should be usable also on
SAM7S and SAM7XC but no tests were performed. Other SAM7 processors should
- also be useable with limited changes.
+ also be usable with limited changes.
The demo currently just performs basic operations, will be enhanced in next
ChibiOS/RT releases, see the demo readme.txt file.
- Small fix to the thumb mode IRQ code on the LPC214x port, removed some extra
@@ -522,12 +526,12 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
the P_MSGBYPRIO option when creating a message server thread.
This change allows the implementation of a priority ceiling protocol into
message servers threads. Threads serving messages by priority and threads
- serving messages in FIFO orded can exist at the same time in the system.
+ serving messages in FIFO order can exist at the same time in the system.
This feature can be enabled or disabled by toggling the option
CH_USE_MESSAGES_PRIORITY into the chconf.h file (disabled by default, old
behavior).
Note: This option brings a small overhead when sending a message regardless
- if in FIFO or priority order, if you dont need priority ordering for your
+ if in FIFO or priority order, if you don't need priority ordering for your
messages it is better to keep the feature disabled in chconf.h.
- Added to the ARM demos load scripts the capability to load code in RAM
instead flash, the function must be marked as:
@@ -535,7 +539,7 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
The option -mlong-calls should be specified in the makefile too or the
function declared with the "long-call" attribute.
- Fixed the MSVC demo project files.
-- Fixed some syntax incompatibilites between GCC and MSVC into chmtx.c.
+- Fixed some syntax incompatibilities between GCC and MSVC into chmtx.c.
*** 0.5.0 ***
- NEW: Mutexes, the new mechanism provides a complete implementation of the
@@ -664,7 +668,7 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
- Added a spreadsheet in the documentation that describes the advantages
and disadvantages of the various optimization options (both GCC options and
ChibiOS/RT options), very interesting read IMO.
-- The GCC option +falign-functions=16 is now default in the Makefile, it is
+- The GCC option -falign-functions=16 is now default in the Makefile, it is
required because of the MAM unit into the LPC chips, without this option
the code performance is less predictable and can change of some % points
depending on how the code is aligned in the flash memory, unpredictability
@@ -710,7 +714,7 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
- Added experimental MMC/SD block driver to the LPC2148 demo in order to
support file systems. The driver features also events generation on card
insert/remove, hot plugging supported.
-- Added missing chThdSuspend() declararion in threads.h.
+- Added missing chThdSuspend() declaration in threads.h.
*** 0.3.5 ***
- Space optimization in events code.
@@ -748,7 +752,7 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
is done in order to ensure that the initializations performed into the
main() procedure are finished before any thread starts.
- Added chThdSetPriority() new API.
-- Added a generic events generator timer modulee to the library code.
+- Added a generic events generator timer module to the library code.
- Modified the ARM7-LPC214x-GCC demo to show the use of the event timer.
- Added the "#ifdef __cplusplus" stuff to the header files.
- Removed an obsolete definition in ./src/templates/chtypes.h.
@@ -792,7 +796,7 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
- Thread Local Storage implemented as a single API: chThdLS().
The API simply returns a pointer into the thread working area, see the
documentation on the web site.
-- Moved some documentation and images from the web site into the Doxigen
+- Moved some documentation and images from the web site into the Doxygen
generated HTMLs.
*** 0.2.1 ***
diff --git a/src/include/condvars.h b/src/include/condvars.h
index be23bf6d1..ef9a37791 100644
--- a/src/include/condvars.h
+++ b/src/include/condvars.h
@@ -32,7 +32,7 @@
#if defined(CH_USE_CONDVARS) && defined(CH_USE_MUTEXES)
/**
- * CondVar structure.
+ * @brief CondVar structure.
*/
typedef struct CondVar {
ThreadsQueue c_queue;
diff --git a/src/include/events.h b/src/include/events.h
index 1f2e2a15a..4ae3d3540 100644
--- a/src/include/events.h
+++ b/src/include/events.h
@@ -33,7 +33,7 @@
typedef struct EventListener EventListener;
/**
- * Event Listener structure.
+ * @brief Event Listener structure.
*/
struct EventListener {
/** Next Event Listener registered on the Event Source.*/
@@ -45,7 +45,7 @@ struct EventListener {
};
/**
- * Event Source structure.
+ * @brief Event Source structure.
*/
typedef struct EventSource {
/** First Event Listener registered on the Event Source.*/
diff --git a/src/include/lists.h b/src/include/lists.h
index 10b5d7823..339c6741c 100644
--- a/src/include/lists.h
+++ b/src/include/lists.h
@@ -32,7 +32,7 @@ typedef struct Thread Thread;
#define notempty(p) ((p)->p_next != (Thread *)(p))
/**
- * Generic threads queue header and element.
+ * @brief Generic threads queue header and element.
* @extends ThreadsList
*/
typedef struct {
@@ -43,17 +43,22 @@ typedef struct {
} ThreadsQueue;
/**
- * Generic threads single link list, it works like a stack.
+ * @brief Generic threads single link list.
+ * @details This list behaves like a stack.
*/
typedef struct {
/** Last pushed @p Thread on the stack list, or @p ThreadList when empty. */
Thread *p_next;
} ThreadsList;
-/*
- * Threads Lists functions and macros.
+/**
+ * Queue initialization.
*/
#define queue_init(tqp) ((tqp)->p_next = (tqp)->p_prev = (Thread *)(tqp));
+
+/**
+ * List initialization.
+ */
#define list_init(tlp) ((tlp)->p_next = (Thread *)(tlp))
#ifndef CH_OPTIMIZE_SPEED
diff --git a/src/include/mutexes.h b/src/include/mutexes.h
index 247b5ad7c..2040d64eb 100644
--- a/src/include/mutexes.h
+++ b/src/include/mutexes.h
@@ -28,7 +28,7 @@
#ifdef CH_USE_MUTEXES
/**
- * Mutex structure.
+ * @brief Mutex structure.
*/
typedef struct Mutex {
/** Queue of the threads sleeping on this Mutex.*/
diff --git a/src/include/queues.h b/src/include/queues.h
index 90456f4d1..a11a5a73f 100644
--- a/src/include/queues.h
+++ b/src/include/queues.h
@@ -41,7 +41,8 @@ typedef void (*qnotify_t)(void);
#ifdef CH_USE_QUEUES
/**
- * I/O queue structure, it is used by both Input and Output Queues,
+ * @brief I/O queue structure.
+ * @details This structure is used by both Input and Output Queues,
* the difference is on how the semaphore is initialized.
*/
typedef struct {
@@ -116,7 +117,7 @@ extern "C" {
#ifdef CH_USE_QUEUES_HALFDUPLEX
/**
- * Half duplex queue structure.
+ * @brief Half duplex queue structure.
*/
typedef struct {
/** Pointer to the queue buffer. */
diff --git a/src/include/scheduler.h b/src/include/scheduler.h
index 7d2f95beb..0549f217c 100644
--- a/src/include/scheduler.h
+++ b/src/include/scheduler.h
@@ -53,7 +53,8 @@
#define firstprio(rlp) ((rlp)->p_next->p_prio)
/**
- * Ready list header.
+ * @brief Ready list header.
+ *
* @extends ThreadsQueue
*/
typedef struct {
diff --git a/src/include/semaphores.h b/src/include/semaphores.h
index ba75d8ba7..0f1a493d4 100644
--- a/src/include/semaphores.h
+++ b/src/include/semaphores.h
@@ -28,7 +28,7 @@
#ifdef CH_USE_SEMAPHORES
/**
- * Semaphore structure.
+ * @brief Semaphore structure.
*/
typedef struct Semaphore {
/** Queue of the threads sleeping on this Semaphore.*/
diff --git a/src/include/serial.h b/src/include/serial.h
index 0dfd02c56..ffe030e4b 100644
--- a/src/include/serial.h
+++ b/src/include/serial.h
@@ -46,7 +46,7 @@ typedef uint16_t dflags_t;
#ifdef CH_USE_SERIAL_FULLDUPLEX
/**
- * Full Duplex Serial Driver main structure.
+ * @brief Full Duplex Serial Driver main structure.
*/
typedef struct {
@@ -111,7 +111,7 @@ extern "C" {
#ifdef CH_USE_SERIAL_HALFDUPLEX
/**
- * Full Duplex Serial Driver main structure.
+ * @brief Full Duplex Serial Driver main structure.
*/
typedef struct {
diff --git a/src/include/threads.h b/src/include/threads.h
index 5ca7dd0ce..5877f49da 100644
--- a/src/include/threads.h
+++ b/src/include/threads.h
@@ -26,7 +26,8 @@
#define _THREADS_H_
/**
- * Structure representing a thread.
+ * @brief Structure representing a thread.
+ *
* @extends ThreadsQueue
* @note Not all the listed fields are always needed, by switching off some
* not needed ChibiOS/RT subsystems it is possible to save RAM space by
diff --git a/src/include/vt.h b/src/include/vt.h
index 04af725c9..89ad275e4 100644
--- a/src/include/vt.h
+++ b/src/include/vt.h
@@ -48,7 +48,7 @@ typedef void (*vtfunc_t)(void *);
typedef struct VirtualTimer VirtualTimer;
/**
- * Virtual Timer descriptor structure.
+ * @brief Virtual Timer descriptor structure.
* @extends DeltaList
*/
struct VirtualTimer {
@@ -66,7 +66,7 @@ struct VirtualTimer {
};
/**
- * Delta List header.
+ * @brief Virtual timers list header.
* @note The delta list is implemented as a double link bidirectional list in
* order to make the unlink time constant, the reset of a virtual timer
* is often used in the code.
diff --git a/src/lib/ch.hpp b/src/lib/ch.hpp
index 4a052ed39..377eed6d6 100644
--- a/src/lib/ch.hpp
+++ b/src/lib/ch.hpp
@@ -281,12 +281,12 @@ namespace chibios_rt {
#ifdef CH_USE_SEMAPHORES
/**
- * @brief Class encapsulating a @p Semaphore.
+ * @brief Class encapsulating a semaphore.
*/
class Semaphore {
public:
/**
- * @brief Embedded @p Semaphore structure.
+ * @brief Embedded @p ::Semaphore structure.
*/
struct ::Semaphore sem;
@@ -349,12 +349,12 @@ namespace chibios_rt {
#ifdef CH_USE_MUTEXES
/**
- * @brief Class encapsulating a @p Mutex.
+ * @brief Class encapsulating a mutex.
*/
class Mutex {
public:
/**
- * @brief Embedded @p Mutex structure.
+ * @brief Embedded @p ::Mutex structure.
*/
struct ::Mutex mutex;
@@ -398,12 +398,12 @@ namespace chibios_rt {
#ifdef CH_USE_CONDVARS
/**
- * @brief Class encapsulating a @p CondVar.
+ * @brief Class encapsulating a conditional variable.
*/
class CondVar {
public:
/**
- * @brief Embedded @p CondVar structure.
+ * @brief Embedded @p ::CondVar structure.
*/
struct ::CondVar condvar;
@@ -453,12 +453,12 @@ namespace chibios_rt {
#ifdef CH_USE_EVENTS
/**
- * @brief Class encapsulating an @p EventSource.
+ * @brief Class encapsulating an event source.
*/
class Event {
public:
/**
- * @brief Embedded @p EventSource structure.
+ * @brief Embedded @p ::EventSource structure.
*/
struct ::EventSource event;
diff --git a/src/lib/evtimer.h b/src/lib/evtimer.h
index 5a148e4db..cb3e4c44c 100644
--- a/src/lib/evtimer.h
+++ b/src/lib/evtimer.h
@@ -26,7 +26,7 @@
#define _EVTIMER_H_
/**
- * Event timer structure.
+ * @brief Event timer structure.
*/
typedef struct {
VirtualTimer et_vt;
diff --git a/src/templates/chcore.h b/src/templates/chcore.h
index 97f3f05e7..8c7ed97ef 100644
--- a/src/templates/chcore.h
+++ b/src/templates/chcore.h
@@ -38,24 +38,25 @@
typedef uint8_t stkalign_t;
/**
- * Interrupt saved context.
- * This structure represents the stack frame saved during a preemption-capable
- * interrupt handler.
+ * @brief Interrupt saved context.
+ * @details This structure represents the stack frame saved during a
+ * preemption-capable interrupt handler.
*/
struct extctx {
};
/**
- * System saved context.
- * This structure represents the inner stack frame during a context switching.
+ * @brief System saved context.
+ * @details This structure represents the inner stack frame during a context
+ * switching.
*/
struct intctx {
};
/**
- * Platform dependent part of the @p Thread structure.
- * This structure usually contains just the saved stack pointer defined as a
- * pointer to a @p intctx structure.
+ * @brief Platform dependent part of the @p Thread structure.
+ * @details This structure usually contains just the saved stack pointer
+ * defined as a pointer to a @p intctx structure.
*/
struct context {
struct intctx *sp;