aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/src/atomic.dox16
-rw-r--r--os/kernel/include/chschd.h15
-rw-r--r--os/kernel/include/chsys.h2
-rw-r--r--os/kernel/src/chschd.c18
-rw-r--r--os/ports/GCC/ARM7/chcoreasm.s8
-rw-r--r--os/ports/GCC/PPC/SPC56x/ivor.s2
-rw-r--r--readme.txt6
-rw-r--r--test/testbmk.c10
8 files changed, 45 insertions, 32 deletions
diff --git a/docs/src/atomic.dox b/docs/src/atomic.dox
index 0e9974ff1..d3bc43ba5 100644
--- a/docs/src/atomic.dox
+++ b/docs/src/atomic.dox
@@ -20,38 +20,38 @@
/**
* @page article_atomic Invoking multiple primitives as a single atomic operation
* It is often necessary to invoke multiple operations involving a
- * reschedulation as a single atomic operation.<br>
+ * reschedule as a single atomic operation.<br>
* ChibiOS/RT already implements APIs that perform complex operations, as
* example the API @p chSemSignalWait() performs two operations atomically.<br>
* If more complex operations are required in your application then it is
* possible to build macro-operations, see the following example:
* @code
chSysLock();
-
+
chSemSignalI(&sem1);
chSemSignalI(&sem2);
chMtxUnlockS();
chSchRescheduleS();
-
+
chSysUnlock();
* @endcode
* The above example performs a signal operation on two semaphores, unlocks the
- * last aquired mutex and finally performs a reschedulation. All the operations
+ * last acquired mutex and finally performs a reschedule. All the operations
* are performed atomically.<br>
- * An hypotetical @p chSemSignalSignalWait() operation could be implemented as
+ * An hypothetical @p chSemSignalSignalWait() operation could be implemented as
* follow:
* @code
chSysLock();
-
+
chSemSignalI(&sem1);
chSemSignalI(&sem2);
chSemWaitS(&Sem3); /* May reschedule or not. */
chSchRescheduleS(); /* This one reschedules if necessary. */
-
+
chSysUnlock();
* @endcode
* In general multiple @ref I-Class and (non rescheduling) @ref S-Class APIs
* can be included and the block is terminated by a rescheduling @ref S-Class
* API. An extra @p chSchRescheduleS() can be present at the very end of the
- * block, it only reschedules if a reschedulation is still required.
+ * block, it only reschedules if a reschedule is still required.
*/
diff --git a/os/kernel/include/chschd.h b/os/kernel/include/chschd.h
index b8406722b..d1b69cad5 100644
--- a/os/kernel/include/chschd.h
+++ b/os/kernel/include/chschd.h
@@ -105,14 +105,27 @@ register Thread *currp asm(CH_CURRP_REGISTER_CACHE);
extern "C" {
#endif
void scheduler_init(void);
+#if !defined(PORT_OPTIMIZED_READYI)
Thread *chSchReadyI(Thread *tp);
+#endif
+#if !defined(PORT_OPTIMIZED_GOSLEEPS)
void chSchGoSleepS(tstate_t newstate);
+#endif
+#if !defined(PORT_OPTIMIZED_GOSLEEPTIMEOUTS)
msg_t chSchGoSleepTimeoutS(tstate_t newstate, systime_t time);
+#endif
+#if !defined(PORT_OPTIMIZED_WAKEUPS)
void chSchWakeupS(Thread *tp, msg_t msg);
+#endif
+#if !defined(PORT_OPTIMIZED_DORESCHEDULEI)
void chSchDoRescheduleI(void);
+#endif
+#if !defined(PORT_OPTIMIZED_RESCHEDULES)
void chSchRescheduleS(void);
+#endif
+#if !defined(PORT_OPTIMIZED_ISRESCHREQUIREDEXI)
bool_t chSchIsRescRequiredExI(void);
- void chSchDoYieldS(void);
+#endif
#ifdef __cplusplus
}
#endif
diff --git a/os/kernel/include/chsys.h b/os/kernel/include/chsys.h
index 0a2fa67ad..5c773136f 100644
--- a/os/kernel/include/chsys.h
+++ b/os/kernel/include/chsys.h
@@ -148,7 +148,7 @@
/**
* @brief IRQ handler exit code.
* @note Usually IRQ handlers function are also declared naked.
- * @note This macro usually performs the final reschedulation by using
+ * @note This macro usually performs the final reschedule by using
* @p chSchRescRequiredI() and @p chSchDoRescheduleI().
*/
#define CH_IRQ_EPILOGUE() PORT_IRQ_EPILOGUE()
diff --git a/os/kernel/src/chschd.c b/os/kernel/src/chschd.c
index 9bf34d43a..ac69c6661 100644
--- a/os/kernel/src/chschd.c
+++ b/os/kernel/src/chschd.c
@@ -105,23 +105,21 @@ void chSchGoSleepS(tstate_t newstate) {
}
#endif /* !defined(PORT_OPTIMIZED_GOSLEEPS) */
+#if !defined(PORT_OPTIMIZED_GOSLEEPTIMEOUTS) || defined(__DOXYGEN__)
/*
* Timeout wakeup callback.
*/
static void wakeup(void *p) {
Thread *tp = (Thread *)p;
-#if CH_USE_SEMAPHORES || CH_USE_MUTEXES || CH_USE_CONDVARS
+#if CH_USE_SEMAPHORES || (CH_USE_CONDVARS && CH_USE_CONDVARS_TIMEOUT)
switch (tp->p_state) {
#if CH_USE_SEMAPHORES
case THD_STATE_WTSEM:
chSemFastSignalI((Semaphore *)tp->p_u.wtobjp);
/* Falls into, intentional. */
#endif
-#if CH_USE_MUTEXES
- case THD_STATE_WTMTX:
-#endif
-#if CH_USE_CONDVARS
+#if CH_USE_CONDVARS && CH_USE_CONDVARS_TIMEOUT
case THD_STATE_WTCOND:
#endif
/* States requiring dequeuing.*/
@@ -166,6 +164,7 @@ msg_t chSchGoSleepTimeoutS(tstate_t newstate, systime_t time) {
chSchGoSleepS(newstate);
return currp->p_u.rdymsg;
}
+#endif /* !defined(PORT_OPTIMIZED_GOSLEEPTIMEOUTS) */
/**
* @brief Wakes up a thread.
@@ -191,8 +190,7 @@ void chSchWakeupS(Thread *ntp, msg_t msg) {
if (ntp->p_prio <= currp->p_prio)
chSchReadyI(ntp);
else {
- Thread *otp = currp;
- chSchReadyI(otp);
+ Thread *otp = chSchReadyI(currp);
#if CH_TIME_QUANTUM > 0
rlist.r_preempt = CH_TIME_QUANTUM;
#endif
@@ -225,7 +223,7 @@ void chSchDoRescheduleI(void) {
#endif /* !defined(PORT_OPTIMIZED_DORESCHEDULEI) */
/**
- * @brief Performs a reschedulation if a higher priority thread is runnable.
+ * @brief Performs a reschedule if a higher priority thread is runnable.
* @details If a thread with a higher priority than the current thread is in
* the ready list then make the higher priority thread running.
*/
@@ -238,14 +236,14 @@ void chSchRescheduleS(void) {
#endif /* !defined(PORT_OPTIMIZED_RESCHEDULES) */
/**
- * @brief Evaluates if a reschedulation is required.
+ * @brief Evaluates if a reschedule is required.
* @details The decision is taken by comparing the relative priorities and
* depending on the state of the round robin timeout counter.
* @note This function is meant to be used in the timer interrupt handler
* where @p chVTDoTickI() is invoked.
*
* @retval TRUE if there is a thread that should go in running state.
- * @retval FALSE if a reschedulation is not required.
+ * @retval FALSE if a reschedule is not required.
*/
#if !defined(PORT_OPTIMIZED_ISRESCHREQUIREDEXI) || defined(__DOXYGEN__)
bool_t chSchIsRescRequiredExI(void) {
diff --git a/os/ports/GCC/ARM7/chcoreasm.s b/os/ports/GCC/ARM7/chcoreasm.s
index 8726d0c28..098faf180 100644
--- a/os/ports/GCC/ARM7/chcoreasm.s
+++ b/os/ports/GCC/ARM7/chcoreasm.s
@@ -23,9 +23,10 @@
* @addtogroup ARM7_CORE
* @{
*/
-/** @cond never */
-#include <chconf.h>
+#include "chconf.h"
+
+#if !defined(__DOXYGEN__)
.set MODE_USR, 0x10
.set MODE_FIQ, 0x11
@@ -230,5 +231,6 @@ jmpr4:
bx r4
#endif /* !THUMB_NO_INTERWORKING */
-/** @endcond */
+#endif /* !defined(__DOXYGEN__) */
+
/** @} */
diff --git a/os/ports/GCC/PPC/SPC56x/ivor.s b/os/ports/GCC/PPC/SPC56x/ivor.s
index 0f4c85cf3..534e4b0d5 100644
--- a/os/ports/GCC/PPC/SPC56x/ivor.s
+++ b/os/ports/GCC/PPC/SPC56x/ivor.s
@@ -136,7 +136,7 @@ IVOR4:
ori %r3, %r3, INTC_EOIR@l
stw %r3, 0(%r3) /* Writing any value should do. */
- /* Verifies if a reschedulation is required.*/
+ /* Verifies if a reschedule is required.*/
bl chSchIsRescRequiredExI
cmpli cr0, %r3, 0
beq cr0, .ctxrestore
diff --git a/readme.txt b/readme.txt
index 5026e1ac5..915f7c498 100644
--- a/readme.txt
+++ b/readme.txt
@@ -91,7 +91,7 @@
*** 1.5.3 ***
- FIX: Removed C99-style variables declarations (bug 2964418)(backported
in 1.4.2).
-- FIX: Fixed missing reschedulation in chEvtSignal() (bug 2961208)(backported
+- FIX: Fixed missing reschedule in chEvtSignal() (bug 2961208)(backported
in 1.4.2).
- NEW: Added STM8 port and demo, the demo targets the Raisonance REva board
with STM8S208RB piggyback.
@@ -835,14 +835,14 @@
faster if the feature is not required. Threads at the same priority level
are still supported when the feature is disabled but the scheduling among
them becomes cooperative.
-- OPT: Improved reschedulation time by reordering the sequence of operations,
+- OPT: Improved reschedule time by reordering the sequence of operations,
now during enqueuing the ready list contains one less element. This change
also slightly improves the interrupt latency.
- OPT: Optimization to the chSemReset(), reversed the order of dequeuing.
- FIX: Fixed a bug in the chThdSetPriority() API.
- FIX: Modified the structure names into nvic.h in order to not make them
collide with external libraries.
-- Added a benchmark to the test suit that measures the mass reschedulation
+- Added a benchmark to the test suit that measures the mass reschedule
performance.
- Added a test_terminate_threads() function to the test framework.
- Made the Cortex-M3 port preemption code more readable.
diff --git a/test/testbmk.c b/test/testbmk.c
index e07b7018b..46c30081e 100644
--- a/test/testbmk.c
+++ b/test/testbmk.c
@@ -356,7 +356,7 @@ const struct testcase testbmk6 = {
};
/**
- * @page test_benchmarks_007 Mass reschedulation performance
+ * @page test_benchmarks_007 Mass reschedule performance
*
* <h2>Description</h2>
* Five threads are created and atomically reschedulated by resetting the
@@ -376,7 +376,7 @@ static msg_t thread3(void *p) {
static char *bmk7_gettest(void) {
- return "Benchmark, mass reschedulation, 5 threads";
+ return "Benchmark, mass reschedule, 5 threads";
}
static void bmk7_setup(void) {
@@ -409,7 +409,7 @@ static void bmk7_execute(void) {
test_print("--- Score : ");
test_printn(n);
- test_print(" reschedulations/S, ");
+ test_print(" reschedules/S, ");
test_printn(n * 6);
test_println(" ctxswc/S");
}
@@ -422,7 +422,7 @@ const struct testcase testbmk7 = {
};
/**
- * @page test_benchmarks_008 I/O Round-Robin voluntary reschedulation.
+ * @page test_benchmarks_008 I/O Round-Robin voluntary reschedule.
*
* <h2>Description</h2>
* Five threads are created at equal priority, each thread just increases a
@@ -469,7 +469,7 @@ static void bmk8_execute(void) {
test_print("--- Score : ");
test_printn(n);
- test_print(" reschedulations/S, ");
+ test_print(" reschedules/S, ");
test_printn(n);
test_println(" ctxswc/S");
}