git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@4614 35acf78f-673a-0410-8e92-d51de3d6d3f4
parent
4bdf358424
commit
d51331c78a
|
@ -40,11 +40,20 @@ typedef struct {
|
||||||
uint8_t ch_reserved5; /**< @brief Reserved field. */
|
uint8_t ch_reserved5; /**< @brief Reserved field. */
|
||||||
uint16_t ch_version; /**< @brief Encoded ChibiOS/RT version. */
|
uint16_t ch_version; /**< @brief Encoded ChibiOS/RT version. */
|
||||||
uint8_t ch_ptrsize; /**< @brief Size of a pointer. */
|
uint8_t ch_ptrsize; /**< @brief Size of a pointer. */
|
||||||
uint8_t ch_options; /**< @brief Enable options bits mask. */
|
uint8_t ch_timesize; /**< @brief Size of a systime_t. */
|
||||||
uint8_t ch_reserved10; /**< @brief Reserved field. */
|
uint8_t cf_off_prio; /**< @brief Offset of @p p_prio field. */
|
||||||
uint8_t ch_reserved11; /**< @brief Reserved field. */
|
uint8_t cf_off_ctx; /**< @brief Offset of @p p_ctx field. */
|
||||||
ReadyList *ch_rlist; /**< @brief Pointer to the ready list. */
|
uint8_t cf_off_newer; /**< @brief Offset of @p p_newer field. */
|
||||||
VTList *ch_vtlist; /**< @brief Pointer to the timers list. */
|
uint8_t cf_off_older; /**< @brief Offset of @p p_older field. */
|
||||||
|
uint8_t cf_off_name; /**< @brief Offset of @p p_name field. */
|
||||||
|
uint8_t cf_off_stklimit; /**< @brief Offset of @p p_stklimit
|
||||||
|
field. */
|
||||||
|
uint8_t cf_off_state; /**< @brief Offset of @p p_state field. */
|
||||||
|
uint8_t cf_off_flags; /**< @brief Offset of @p p_flags field. */
|
||||||
|
uint8_t cf_off_refs; /**< @brief Offset of @p p_refs field. */
|
||||||
|
uint8_t cf_off_preempt; /**< @brief Offset of @p p_preempt
|
||||||
|
field. */
|
||||||
|
uint8_t cf_off_time; /**< @brief Offset of @p p_time field. */
|
||||||
} chroot_t;
|
} chroot_t;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -233,6 +233,10 @@
|
||||||
#define CH_FAST_IRQ_HANDLER(id) PORT_FAST_IRQ_HANDLER(id)
|
#define CH_FAST_IRQ_HANDLER(id) PORT_FAST_IRQ_HANDLER(id)
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
||||||
|
#if !defined(__DOXYGEN__)
|
||||||
|
extern Thread _mainthread;
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -50,34 +50,11 @@
|
||||||
|
|
||||||
#if CH_USE_REGISTRY || defined(__DOXYGEN__)
|
#if CH_USE_REGISTRY || defined(__DOXYGEN__)
|
||||||
|
|
||||||
/* Converting configuration options in bit masks in order to be encoded in
|
#define THD_OFFSET(field) (uint8_t)((size_t)&_mainthread.field - \
|
||||||
the global variable ch_root.*/
|
(size_t)&_mainthread)
|
||||||
#if CH_DBG_ENABLE_STACK_CHECK
|
|
||||||
#define MSK_DBG_ENABLE_STACK_CHECK 1
|
|
||||||
#else
|
|
||||||
#define MSK_DBG_ENABLE_STACK_CHECK 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if CH_USE_DYNAMIC
|
/*
|
||||||
#define MSK_USE_DYNAMIC 2
|
* OS signature in ROM plus debug-related information.
|
||||||
#else
|
|
||||||
#define MSK_USE_DYNAMIC 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if CH_TIME_QUANTUM > 0
|
|
||||||
#define MSK_TIME_QUANTUM 4
|
|
||||||
#else
|
|
||||||
#define MSK_TIME_QUANTUM 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if CH_DBG_THREADS_PROFILING
|
|
||||||
#define MSK_DBG_THREADS_PROFILING 8
|
|
||||||
#else
|
|
||||||
#define MSK_DBG_THREADS_PROFILING 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief OS signature in ROM plus debug-related information.
|
|
||||||
*/
|
*/
|
||||||
ROMCONST chroot_t ch_root = {
|
ROMCONST chroot_t ch_root = {
|
||||||
"CHRT",
|
"CHRT",
|
||||||
|
@ -87,12 +64,30 @@ ROMCONST chroot_t ch_root = {
|
||||||
(CH_KERNEL_MINOR << 6) |
|
(CH_KERNEL_MINOR << 6) |
|
||||||
(CH_KERNEL_PATCH) << 0),
|
(CH_KERNEL_PATCH) << 0),
|
||||||
(uint8_t)sizeof (void *),
|
(uint8_t)sizeof (void *),
|
||||||
(uint8_t)(MSK_DBG_THREADS_PROFILING | MSK_TIME_QUANTUM |
|
(uint8_t)sizeof (systime_t),
|
||||||
MSK_USE_DYNAMIC | MSK_DBG_ENABLE_STACK_CHECK),
|
THD_OFFSET(p_prio),
|
||||||
|
THD_OFFSET(p_ctx),
|
||||||
|
THD_OFFSET(p_newer),
|
||||||
|
THD_OFFSET(p_older),
|
||||||
|
THD_OFFSET(p_name),
|
||||||
|
#if CH_DBG_ENABLE_STACK_CHECK
|
||||||
|
THD_OFFSET(p_stklimit),
|
||||||
|
#else
|
||||||
(uint8_t)0,
|
(uint8_t)0,
|
||||||
|
#endif
|
||||||
|
THD_OFFSET(p_state),
|
||||||
|
THD_OFFSET(p_flags),
|
||||||
|
#if CH_USE_DYNAMIC
|
||||||
|
THD_OFFSET(p_refs),
|
||||||
|
#else
|
||||||
(uint8_t)0,
|
(uint8_t)0,
|
||||||
&rlist,
|
#endif
|
||||||
&vtlist
|
#if CH_TIME_QUANTUM > 0
|
||||||
|
THD_OFFSET(p_preempt),
|
||||||
|
#else
|
||||||
|
(uint8_t)0,
|
||||||
|
#endif
|
||||||
|
THD_OFFSET(p_time)
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -36,9 +36,16 @@
|
||||||
#include "ch.h"
|
#include "ch.h"
|
||||||
|
|
||||||
#if !CH_NO_IDLE_THREAD || defined(__DOXYGEN__)
|
#if !CH_NO_IDLE_THREAD || defined(__DOXYGEN__)
|
||||||
/* Idle thread working area.*/
|
/**
|
||||||
|
* @brief Idle thread working area.
|
||||||
|
*/
|
||||||
WORKING_AREA(_idle_thread_wa, PORT_IDLE_THREAD_STACK_SIZE);
|
WORKING_AREA(_idle_thread_wa, PORT_IDLE_THREAD_STACK_SIZE);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Main thread structure.
|
||||||
|
*/
|
||||||
|
Thread _mainthread;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief This function implements the idle thread infinite loop.
|
* @brief This function implements the idle thread infinite loop.
|
||||||
* @details The function puts the processor in the lowest power mode capable
|
* @details The function puts the processor in the lowest power mode capable
|
||||||
|
@ -73,7 +80,6 @@ void _idle_thread(void *p) {
|
||||||
* @special
|
* @special
|
||||||
*/
|
*/
|
||||||
void chSysInit(void) {
|
void chSysInit(void) {
|
||||||
static Thread mainthread;
|
|
||||||
#if CH_DBG_ENABLE_STACK_CHECK
|
#if CH_DBG_ENABLE_STACK_CHECK
|
||||||
extern stkalign_t __main_thread_stack_base__;
|
extern stkalign_t __main_thread_stack_base__;
|
||||||
#endif
|
#endif
|
||||||
|
@ -92,7 +98,7 @@ void chSysInit(void) {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Now this instructions flow becomes the main thread.*/
|
/* Now this instructions flow becomes the main thread.*/
|
||||||
setcurrp(_thread_init(&mainthread, NORMALPRIO));
|
setcurrp(_thread_init(&_mainthread, NORMALPRIO));
|
||||||
currp->p_state = THD_STATE_CURRENT;
|
currp->p_state = THD_STATE_CURRENT;
|
||||||
#if CH_DBG_ENABLE_STACK_CHECK
|
#if CH_DBG_ENABLE_STACK_CHECK
|
||||||
/* This is a special case because the main thread Thread structure is not
|
/* This is a special case because the main thread Thread structure is not
|
||||||
|
|
Loading…
Reference in New Issue