git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@1236 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
parent
33114fa3e8
commit
404fe10939
|
@ -68,7 +68,7 @@ typedef struct {
|
||||||
tprio_t r_prio; /**< This field must be initialized to
|
tprio_t r_prio; /**< This field must be initialized to
|
||||||
zero.*/
|
zero.*/
|
||||||
/* End of the fields shared with the Thread structure.*/
|
/* End of the fields shared with the Thread structure.*/
|
||||||
#if CH_USE_ROUNDROBIN
|
#if CH_TIME_QUANTUM > 0
|
||||||
cnt_t r_preempt; /**< Round robin counter.*/
|
cnt_t r_preempt; /**< Round robin counter.*/
|
||||||
#endif
|
#endif
|
||||||
#ifndef CH_CURRP_REGISTER_CACHE
|
#ifndef CH_CURRP_REGISTER_CACHE
|
||||||
|
@ -98,9 +98,7 @@ extern "C" {
|
||||||
void chSchDoRescheduleI(void);
|
void chSchDoRescheduleI(void);
|
||||||
void chSchRescheduleS(void);
|
void chSchRescheduleS(void);
|
||||||
bool_t chSchIsRescRequiredExI(void);
|
bool_t chSchIsRescRequiredExI(void);
|
||||||
#if CH_USE_ROUNDROBIN
|
|
||||||
void chSchDoYieldS(void);
|
void chSchDoYieldS(void);
|
||||||
#endif
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -179,13 +179,11 @@ extern "C" {
|
||||||
void chThdTerminate(Thread *tp);
|
void chThdTerminate(Thread *tp);
|
||||||
void chThdSleep(systime_t time);
|
void chThdSleep(systime_t time);
|
||||||
void chThdSleepUntil(systime_t time);
|
void chThdSleepUntil(systime_t time);
|
||||||
|
void chThdYield(void);
|
||||||
void chThdExit(msg_t msg);
|
void chThdExit(msg_t msg);
|
||||||
#if CH_USE_WAITEXIT
|
#if CH_USE_WAITEXIT
|
||||||
msg_t chThdWait(Thread *tp);
|
msg_t chThdWait(Thread *tp);
|
||||||
#endif
|
#endif
|
||||||
#if CH_USE_ROUNDROBIN
|
|
||||||
void chThdYield(void);
|
|
||||||
#endif
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -39,7 +39,7 @@ void scheduler_init(void) {
|
||||||
|
|
||||||
queue_init(&rlist.r_queue);
|
queue_init(&rlist.r_queue);
|
||||||
rlist.r_prio = NOPRIO;
|
rlist.r_prio = NOPRIO;
|
||||||
#if CH_USE_ROUNDROBIN
|
#if CH_TIME_QUANTUM > 0
|
||||||
rlist.r_preempt = CH_TIME_QUANTUM;
|
rlist.r_preempt = CH_TIME_QUANTUM;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ void chSchGoSleepS(tstate_t newstate) {
|
||||||
|
|
||||||
(otp = currp)->p_state = newstate;
|
(otp = currp)->p_state = newstate;
|
||||||
(currp = fifo_remove(&rlist.r_queue))->p_state = PRCURR;
|
(currp = fifo_remove(&rlist.r_queue))->p_state = PRCURR;
|
||||||
#if CH_USE_ROUNDROBIN
|
#if CH_TIME_QUANTUM > 0
|
||||||
rlist.r_preempt = CH_TIME_QUANTUM;
|
rlist.r_preempt = CH_TIME_QUANTUM;
|
||||||
#endif
|
#endif
|
||||||
chDbgTrace(otp, currp);
|
chDbgTrace(otp, currp);
|
||||||
|
@ -176,7 +176,7 @@ void chSchWakeupS(Thread *ntp, msg_t msg) {
|
||||||
else {
|
else {
|
||||||
Thread *otp = currp;
|
Thread *otp = currp;
|
||||||
chSchReadyI(otp);
|
chSchReadyI(otp);
|
||||||
#if CH_USE_ROUNDROBIN
|
#if CH_TIME_QUANTUM > 0
|
||||||
rlist.r_preempt = CH_TIME_QUANTUM;
|
rlist.r_preempt = CH_TIME_QUANTUM;
|
||||||
#endif
|
#endif
|
||||||
(currp = ntp)->p_state = PRCURR;
|
(currp = ntp)->p_state = PRCURR;
|
||||||
|
@ -197,7 +197,7 @@ void chSchDoRescheduleI(void) {
|
||||||
/* Pick the first thread from the ready queue and makes it current.*/
|
/* Pick the first thread from the ready queue and makes it current.*/
|
||||||
(currp = fifo_remove(&rlist.r_queue))->p_state = PRCURR;
|
(currp = fifo_remove(&rlist.r_queue))->p_state = PRCURR;
|
||||||
chSchReadyI(otp);
|
chSchReadyI(otp);
|
||||||
#if CH_USE_ROUNDROBIN
|
#if CH_TIME_QUANTUM > 0
|
||||||
rlist.r_preempt = CH_TIME_QUANTUM;
|
rlist.r_preempt = CH_TIME_QUANTUM;
|
||||||
#endif
|
#endif
|
||||||
chDbgTrace(otp, currp);
|
chDbgTrace(otp, currp);
|
||||||
|
@ -229,7 +229,7 @@ void chSchRescheduleS(void) {
|
||||||
bool_t chSchIsRescRequiredExI(void) {
|
bool_t chSchIsRescRequiredExI(void) {
|
||||||
tprio_t p1 = firstprio(&rlist.r_queue);
|
tprio_t p1 = firstprio(&rlist.r_queue);
|
||||||
tprio_t p2 = currp->p_prio;
|
tprio_t p2 = currp->p_prio;
|
||||||
#if CH_USE_ROUNDROBIN
|
#if CH_TIME_QUANTUM > 0
|
||||||
/* If the running thread has not reached its time quantum, reschedule only
|
/* If the running thread has not reached its time quantum, reschedule only
|
||||||
* if the first thread on the ready queue has a higher priority.
|
* if the first thread on the ready queue has a higher priority.
|
||||||
* Otherwise, if the running thread has used up its time quantum, reschedule
|
* Otherwise, if the running thread has used up its time quantum, reschedule
|
||||||
|
@ -242,7 +242,11 @@ bool_t chSchIsRescRequiredExI(void) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CH_USE_ROUNDROBIN
|
/**
|
||||||
|
* @brief Yields the time slot.
|
||||||
|
* @details Yields the CPU control to the next thread in the ready list with
|
||||||
|
* equal priority, if any.
|
||||||
|
*/
|
||||||
void chSchDoYieldS(void) {
|
void chSchDoYieldS(void) {
|
||||||
|
|
||||||
if (chSchCanYieldS()) {
|
if (chSchCanYieldS()) {
|
||||||
|
@ -269,6 +273,5 @@ void chSchDoYieldS(void) {
|
||||||
chSysSwitchI(otp, currp);
|
chSysSwitchI(otp, currp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* CH_USE_ROUNDROBIN */
|
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
|
|
@ -98,7 +98,7 @@ void chSysInit(void) {
|
||||||
*/
|
*/
|
||||||
void chSysTimerHandlerI(void) {
|
void chSysTimerHandlerI(void) {
|
||||||
|
|
||||||
#if CH_USE_ROUNDROBIN
|
#if CH_TIME_QUANTUM > 0
|
||||||
/* running thread has not used up quantum yet? */
|
/* running thread has not used up quantum yet? */
|
||||||
if (rlist.r_preempt > 0)
|
if (rlist.r_preempt > 0)
|
||||||
/* decrement remaining quantum */
|
/* decrement remaining quantum */
|
||||||
|
|
|
@ -293,7 +293,6 @@ void chThdSleepUntil(systime_t time) {
|
||||||
chSysUnlock();
|
chSysUnlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CH_USE_ROUNDROBIN
|
|
||||||
/**
|
/**
|
||||||
* @brief Yields the time slot.
|
* @brief Yields the time slot.
|
||||||
* @details Yields the CPU control to the next thread in the ready list with
|
* @details Yields the CPU control to the next thread in the ready list with
|
||||||
|
@ -305,7 +304,6 @@ void chThdYield(void) {
|
||||||
chSchDoYieldS();
|
chSchDoYieldS();
|
||||||
chSysUnlock();
|
chSysUnlock();
|
||||||
}
|
}
|
||||||
#endif /* CH_USE_ROUNDROBIN */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Terminates the current thread by specifying an exit status code.
|
* @brief Terminates the current thread by specifying an exit status code.
|
||||||
|
|
|
@ -158,7 +158,7 @@ void PendSVVector(void) {
|
||||||
(otp = currp)->p_ctx.r13 = sp_thd;
|
(otp = currp)->p_ctx.r13 = sp_thd;
|
||||||
(currp = fifo_remove(&rlist.r_queue))->p_state = PRCURR;
|
(currp = fifo_remove(&rlist.r_queue))->p_state = PRCURR;
|
||||||
chSchReadyI(otp);
|
chSchReadyI(otp);
|
||||||
#if CH_USE_ROUNDROBIN
|
#if CH_TIME_QUANTUM > 0
|
||||||
/* set the round-robin time quantum */
|
/* set the round-robin time quantum */
|
||||||
rlist.r_preempt = CH_TIME_QUANTUM;
|
rlist.r_preempt = CH_TIME_QUANTUM;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
- CHANGE: Because the changes in the allocators some API prototypes changed:
|
- CHANGE: Because the changes in the allocators some API prototypes changed:
|
||||||
chHeapAlloc(), chHeapStatus(), chThdCreateFromHeap().
|
chHeapAlloc(), chHeapStatus(), chThdCreateFromHeap().
|
||||||
- CHANGE: Because the changes in the allocators some configuration options
|
- CHANGE: Because the changes in the allocators some configuration options
|
||||||
changed, see the template chconf.h file.
|
changed and some were removed, see the new template chconf.h file.
|
||||||
- CHANGE: renamed ./demos/ARM7-AT91SAM7X-WEB-GCC in ARM7-AT91SAM7X-UIP-GCC.
|
- CHANGE: renamed ./demos/ARM7-AT91SAM7X-WEB-GCC in ARM7-AT91SAM7X-UIP-GCC.
|
||||||
- FIX: Added the most restrictive GCC warning option to the makefiles (-Wextra)
|
- FIX: Added the most restrictive GCC warning option to the makefiles (-Wextra)
|
||||||
and fixed some warnings in the code, mostly unused function parameters.
|
and fixed some warnings in the code, mostly unused function parameters.
|
||||||
|
|
|
@ -432,7 +432,6 @@ const struct testcase testbmk7 = {
|
||||||
* a second of continuous operations.
|
* a second of continuous operations.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if CH_USE_ROUNDROBIN
|
|
||||||
static msg_t thread8(void *p) {
|
static msg_t thread8(void *p) {
|
||||||
|
|
||||||
do {
|
do {
|
||||||
|
@ -482,7 +481,6 @@ const struct testcase testbmk8 = {
|
||||||
NULL,
|
NULL,
|
||||||
bmk8_execute
|
bmk8_execute
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @page test_benchmarks_009 I/O Queues throughput
|
* @page test_benchmarks_009 I/O Queues throughput
|
||||||
|
@ -760,9 +758,7 @@ const struct testcase * const patternbmk[] = {
|
||||||
&testbmk5,
|
&testbmk5,
|
||||||
&testbmk6,
|
&testbmk6,
|
||||||
&testbmk7,
|
&testbmk7,
|
||||||
#if CH_USE_ROUNDROBIN
|
|
||||||
&testbmk8,
|
&testbmk8,
|
||||||
#endif
|
|
||||||
&testbmk9,
|
&testbmk9,
|
||||||
&testbmk10,
|
&testbmk10,
|
||||||
&testbmk11,
|
&testbmk11,
|
||||||
|
|
Loading…
Reference in New Issue