git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@706 35acf78f-673a-0410-8e92-d51de3d6d3f4

This commit is contained in:
gdisirio 2009-02-01 13:24:54 +00:00
parent 155dd60be0
commit 53e4f68189
2 changed files with 37 additions and 46 deletions

View File

@ -86,9 +86,9 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process,
use less RAM in stack frames (note, this is an ARM7 thumb mode specific
optimization).
- CHANGE: Removed the field p_tid from the Thread structure and the related
code, this improved the thread creation scores (~2%) and saves some RAM,
the trace buffer field cse_tid is now populated with a simple hash of the
thread pointer.
code, this improved the thread creation scores (~2%) and saves some RAM.
The trace buffer field cse_tid is now populated with a simple hash of the
thread pointer as thread identifier.
- 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

View File

@ -34,23 +34,19 @@
* shrinking the @p Thread structure.
*/
struct Thread {
/** Next @p Thread in the threads list.*/
Thread *p_next;
Thread *p_next; /**< Next @p Thread in the threads
list/queue.*/
/* End of the fields shared with the ThreadsList structure. */
/** Previous @p Thread in the threads list.*/
Thread *p_prev;
Thread *p_prev; /**< Previous @p Thread in the thread
queue.*/
/* End of the fields shared with the ThreadsQueue structure. */
/** The thread priority.*/
tprio_t p_prio;
tprio_t p_prio; /**< Thread priority.*/
/* End of the fields shared with the ReadyList structure. */
/** Current thread state.*/
tstate_t p_state;
/** Mode flags. */
tmode_t p_flags;
/** Machine dependent processor context.*/
struct context p_ctx;
tstate_t p_state; /**< Current thread state.*/
tmode_t p_flags; /**< Various flags.*/
struct context p_ctx; /**< Processor context.*/
#ifdef CH_USE_NESTED_LOCKS
cnt_t p_locks;
cnt_t p_locks; /**< Number of nested locks.*/
#endif
/*
* The following fields are merged in unions because they are all
@ -58,61 +54,56 @@ struct Thread {
* thread in the system.
*/
union {
/** Thread wakeup code (only valid when exiting the @p PRREADY state).*/
msg_t p_rdymsg;
/** The thread exit code (only while in @p PREXIT state).*/
msg_t p_exitcode;
msg_t p_rdymsg; /**< Thread wakeup code.*/
msg_t p_exitcode; /**< The thread exit code
(@p PREXIT state).*/
#ifdef CH_USE_SEMAPHORES
/** Semaphore where the thread is waiting on (only in @p PRWTSEM state).*/
Semaphore *p_wtsemp;
Semaphore *p_wtsemp; /**< Semaphore where the thread is
waiting on (@p PRWTSEM state).*/
#endif
#ifdef CH_USE_MUTEXES
/** Mutex where the thread is waiting on (only in @p PRWTMTX state).*/
Mutex *p_wtmtxp;
Mutex *p_wtmtxp; /**< Mutex where the thread is waiting
on (@p PRWTMTX state).*/
#endif
#ifdef CH_USE_CONDVARS
/** CondVar where the thread is waiting on (only in @p PRWTCOND state).*/
CondVar *p_wtcondp;
CondVar *p_wtcondp; /**< CondVar where the thread is
waiting on (@p PRWTCOND state).*/
#endif
#ifdef CH_USE_MESSAGES
/** Destination thread for message send (only in @p PRSNDMSG state).*/
Thread *p_wtthdp;
Thread *p_wtthdp; /**< Destination thread for message
send @p PRSNDMSG state).*/
#endif
#ifdef CH_USE_EVENTS
/** Enabled events mask (only while in @p PRWTOREVT or @p PRWTANDEVT
states). */
eventmask_t p_ewmask;
eventmask_t p_ewmask; /**< Enabled events mask (@p PRWTOREVT
or @p PRWTANDEVT states).*/
#endif
#ifdef CH_USE_TRACE
/** Kernel object where the thread is waiting on. It is only valid when
the thread is some sleeping states.*/
void *p_wtobjp;
void *p_wtobjp; /**< Generic kernel object pointer used
for opaque access.*/
#endif
};
/*
* Start of the optional fields.
*/
#ifdef CH_USE_WAITEXIT
/** The list of the threads waiting for this thread termination. */
Thread *p_waiting;
Thread *p_waiting; /**< Thread waiting for termination.*/
#endif
#ifdef CH_USE_MESSAGES
ThreadsQueue p_msgqueue;
msg_t p_msg;
ThreadsQueue p_msgqueue; /**< Message queue.*/
msg_t p_msg; /**< The message.*/
#endif
#ifdef CH_USE_EVENTS
/** Pending events mask. */
eventmask_t p_epending;
eventmask_t p_epending; /**< Pending events mask.*/
#endif
#ifdef CH_USE_MUTEXES
/** List of mutexes owned by this thread, @p NULL terminated. */
Mutex *p_mtxlist;
/** Thread's own, non-inherited, priority. */
tprio_t p_realprio;
Mutex *p_mtxlist; /**< List of the mutexes owned by this
thread, @p NULL terminated.*/
tprio_t p_realprio; /**< Thread's own, non-inherited,
priority.*/
#endif
#if defined(CH_USE_DYNAMIC) && defined(CH_USE_MEMPOOLS)
/** Memory Pool where the thread workspace is returned. */
void *p_mpool;
void *p_mpool; /**< Memory Pool where the thread
workspace is returned.*/
#endif
/* Extra fields defined in chconf.h */
THREAD_EXT_FIELDS