From c3dc5598c315f4650bfcd1e595104a2ace7aa87c Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 10 Aug 2013 08:07:43 +0000 Subject: Global variables consolidation. git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/kernel_3_dev@6116 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- os/kernel/src/chregistry.c | 10 +++++----- os/kernel/src/chschd.c | 29 ++++++++++++----------------- os/kernel/src/chsys.c | 5 +++++ os/kernel/src/chvt.c | 34 +++++++++++++++------------------- 4 files changed, 37 insertions(+), 41 deletions(-) (limited to 'os/kernel/src') diff --git a/os/kernel/src/chregistry.c b/os/kernel/src/chregistry.c index b43341edd..b0d241fee 100644 --- a/os/kernel/src/chregistry.c +++ b/os/kernel/src/chregistry.c @@ -42,8 +42,8 @@ * terminating threads can pulse an event source and an event handler * can perform a scansion of the registry in order to recover the * memory. - * @pre In order to use the threads registry the @p CH_CFG_USE_REGISTRY option - * must be enabled in @p chconf.h. + * @pre In order to use the threads registry the @p CH_CFG_USE_REGISTRY + * option must be enabled in @p chconf.h. * @{ */ #include "ch.h" @@ -66,7 +66,7 @@ /* Module local functions. */ /*===========================================================================*/ -#define _offsetof(st, m) \ +#define _offsetof(st, m) \ ((size_t)((char *)&((st *)0)->m - (char *)0)) /*===========================================================================*/ @@ -131,7 +131,7 @@ thread_t *chRegFirstThread(void) { thread_t *tp; chSysLock(); - tp = rlist.r_newer; + tp = ch.rlist.r_newer; #if CH_CFG_USE_DYNAMIC tp->p_refs++; #endif @@ -155,7 +155,7 @@ thread_t *chRegNextThread(thread_t *tp) { chSysLock(); ntp = tp->p_newer; - if (ntp == (thread_t *)&rlist) + if (ntp == (thread_t *)&ch.rlist) ntp = NULL; #if CH_CFG_USE_DYNAMIC else { diff --git a/os/kernel/src/chschd.c b/os/kernel/src/chschd.c index db0097108..53a14dac7 100644 --- a/os/kernel/src/chschd.c +++ b/os/kernel/src/chschd.c @@ -37,11 +37,6 @@ /* Module exported variables. */ /*===========================================================================*/ -/** - * @brief Ready list header. - */ -ready_list_t rlist; - /*===========================================================================*/ /* Module local types. */ /*===========================================================================*/ @@ -65,10 +60,10 @@ ready_list_t rlist; */ void _scheduler_init(void) { - queue_init(&rlist.r_queue); - rlist.r_prio = NOPRIO; + queue_init(&ch.rlist.r_queue); + ch.rlist.r_prio = NOPRIO; #if CH_CFG_USE_REGISTRY - rlist.r_newer = rlist.r_older = (thread_t *)&rlist; + ch.rlist.r_newer = ch.rlist.r_older = (thread_t *)&ch.rlist; #endif } @@ -100,7 +95,7 @@ thread_t *chSchReadyI(thread_t *tp) { "invalid state"); tp->p_state = CH_STATE_READY; - cp = (thread_t *)&rlist.r_queue; + cp = (thread_t *)&ch.rlist.r_queue; do { cp = cp->p_next; } while (cp->p_prio >= tp->p_prio); @@ -131,7 +126,7 @@ void chSchGoSleepS(tstate_t newstate) { time quantum when it will wakeup.*/ otp->p_preempt = CH_CFG_TIME_QUANTUM; #endif - setcurrp(queue_fifo_remove(&rlist.r_queue)); + setcurrp(queue_fifo_remove(&ch.rlist.r_queue)); currp->p_state = CH_STATE_CURRENT; chSysSwitch(currp, otp); } @@ -149,7 +144,7 @@ static void wakeup(void *p) { another thread with higher priority.*/ chSysUnlockFromISR(); return; -#if CH_CFG_USE_SEMAPHORES || CH_CFG_USE_QUEUES || \ +#if CH_CFG_USE_SEMAPHORES || CH_CFG_USE_QUEUES || \ (CH_CFG_USE_CONDVARS && CH_CFG_USE_CONDVARS_TIMEOUT) #if CH_CFG_USE_SEMAPHORES case CH_STATE_WTSEM: @@ -274,7 +269,7 @@ void chSchRescheduleS(void) { * @special */ bool chSchIsPreemptionRequired(void) { - tprio_t p1 = firstprio(&rlist.r_queue); + tprio_t p1 = firstprio(&ch.rlist.r_queue); tprio_t p2 = currp->p_prio; #if CH_CFG_TIME_QUANTUM > 0 /* If the running thread has not reached its time quantum, reschedule only @@ -304,7 +299,7 @@ void chSchDoRescheduleBehind(void) { otp = currp; /* Picks the first thread from the ready queue and makes it current.*/ - setcurrp(queue_fifo_remove(&rlist.r_queue)); + setcurrp(queue_fifo_remove(&ch.rlist.r_queue)); currp->p_state = CH_STATE_CURRENT; #if CH_CFG_TIME_QUANTUM > 0 otp->p_preempt = CH_CFG_TIME_QUANTUM; @@ -327,11 +322,11 @@ void chSchDoRescheduleAhead(void) { otp = currp; /* Picks the first thread from the ready queue and makes it current.*/ - setcurrp(queue_fifo_remove(&rlist.r_queue)); + setcurrp(queue_fifo_remove(&ch.rlist.r_queue)); currp->p_state = CH_STATE_CURRENT; otp->p_state = CH_STATE_READY; - cp = (thread_t *)&rlist.r_queue; + cp = (thread_t *)&ch.rlist.r_queue; do { cp = cp->p_next; } while (cp->p_prio > otp->p_prio); @@ -356,8 +351,8 @@ void chSchDoRescheduleAhead(void) { void chSchDoReschedule(void) { #if CH_CFG_TIME_QUANTUM > 0 - /* If CH_CFG_TIME_QUANTUM is enabled then there are two different scenarios to - handle on preemption: time quantum elapsed or not.*/ + /* If CH_CFG_TIME_QUANTUM is enabled then there are two different scenarios + to handle on preemption: time quantum elapsed or not.*/ if (currp->p_preempt == 0) { /* The thread consumed its time quantum so it is enqueued behind threads with same priority level, however, it acquires a new time quantum.*/ diff --git a/os/kernel/src/chsys.c b/os/kernel/src/chsys.c index 2494706d7..9212cbf5f 100644 --- a/os/kernel/src/chsys.c +++ b/os/kernel/src/chsys.c @@ -48,6 +48,11 @@ /* Module local variables. */ /*===========================================================================*/ +/** + * @brief System data structures. + */ +ch_system_t ch; + #if !CH_CFG_NO_IDLE_THREAD || defined(__DOXYGEN__) /** * @brief Idle thread working area. diff --git a/os/kernel/src/chvt.c b/os/kernel/src/chvt.c index 3e6028f9c..6fa4dd582 100644 --- a/os/kernel/src/chvt.c +++ b/os/kernel/src/chvt.c @@ -37,11 +37,6 @@ /* Module exported variables. */ /*===========================================================================*/ -/** - * @brief Virtual timers delta list header. - */ -virtual_timers_list_t vtlist; - /*===========================================================================*/ /* Module local types. */ /*===========================================================================*/ @@ -66,12 +61,12 @@ virtual_timers_list_t vtlist; */ void _vt_init(void) { - vtlist.vt_next = vtlist.vt_prev = (void *)&vtlist; - vtlist.vt_delta = (systime_t)-1; + ch.vtlist.vt_next = ch.vtlist.vt_prev = (void *)&ch.vtlist; + ch.vtlist.vt_delta = (systime_t)-1; #if CH_CFG_TIMEDELTA == 0 - vtlist.vt_systime = 0; + ch.vtlist.vt_systime = 0; #else /* CH_CFG_TIMEDELTA > 0 */ - vtlist.vt_lasttime = 0; + ch.vtlist.vt_lasttime = 0; #endif /* CH_CFG_TIMEDELTA > 0 */ } @@ -128,7 +123,7 @@ void chVTDoSetI(virtual_timer_t *vtp, systime_t delay, vtp->vt_par = par; vtp->vt_func = vtfunc; - p = vtlist.vt_next; + p = ch.vtlist.vt_next; #if CH_CFG_TIMEDELTA > 0 || defined(__DOXYGEN__) { @@ -139,21 +134,21 @@ void chVTDoSetI(virtual_timer_t *vtp, systime_t delay, if (delay < CH_CFG_TIMEDELTA) delay = CH_CFG_TIMEDELTA; - if (&vtlist == (virtual_timers_list_t *)p) { + if (&ch.vtlist == (virtual_timers_list_t *)p) { /* The delta list is empty, the current time becomes the new delta list base time.*/ - vtlist.vt_lasttime = now; - port_timer_start_alarm(vtlist.vt_lasttime + delay); + ch.vtlist.vt_lasttime = now; + port_timer_start_alarm(ch.vtlist.vt_lasttime + delay); } else { /* Now the delay is calculated as delta from the last tick interrupt time.*/ - delay += now - vtlist.vt_lasttime; + delay += now - ch.vtlist.vt_lasttime; /* If the specified delay is closer in time than the first element in the delta list then it becomes the next alarm event in time.*/ if (delay < p->vt_delta) - port_timer_set_alarm(vtlist.vt_lasttime + delay); + port_timer_set_alarm(ch.vtlist.vt_lasttime + delay); } } #endif /* CH_CFG_TIMEDELTA > 0 */ @@ -172,7 +167,7 @@ void chVTDoSetI(virtual_timer_t *vtp, systime_t delay, /* Special case when the timer is in last position in the list, the value in the header must be restored.*/; p->vt_delta -= delay; - vtlist.vt_delta = (systime_t)-1; + ch.vtlist.vt_delta = (systime_t)-1; } /** @@ -199,17 +194,18 @@ void chVTDoResetI(virtual_timer_t *vtp) { /* The above code changes the value in the header when the removed element is the last of the list, restoring it.*/ - vtlist.vt_delta = (systime_t)-1; + ch.vtlist.vt_delta = (systime_t)-1; #if CH_CFG_TIMEDELTA > 0 || defined(__DOXYGEN__) { - if (&vtlist == (virtual_timers_list_t *)vtlist.vt_next) { + if (&ch.vtlist == (virtual_timers_list_t *)ch.vtlist.vt_next) { /* Just removed the last element in the list, alarm timer stopped.*/ port_timer_stop_alarm(); } else { /* The alarm is set to the next element in the delta list.*/ - port_timer_set_alarm(vtlist.vt_lasttime + vtlist.vt_next->vt_delta); + port_timer_set_alarm(ch.vtlist.vt_lasttime + + ch.vtlist.vt_next->vt_delta); } } #endif /* CH_CFG_TIMEDELTA > 0 */ -- cgit v1.2.3