From b27329f45b8e51d9ee2149e2ea102d13ce15f886 Mon Sep 17 00:00:00 2001 From: gdisirio Date: Sat, 26 Jul 2008 17:39:01 +0000 Subject: git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@366 35acf78f-673a-0410-8e92-d51de3d6d3f4 --- demos/ARM7-AT91SAM7X-GCC/chconf.h | 4 - demos/ARM7-AT91SAM7X-WEB-GCC/chconf.h | 4 - demos/ARM7-LPC214x-G++/chconf.h | 4 - demos/ARM7-LPC214x-GCC-minimal/chconf.h | 4 - demos/ARM7-LPC214x-GCC/chconf.h | 4 - demos/ARMCM3-STM32F103-GCC/chconf.h | 4 - demos/AVR-AT90CANx-GCC/chconf.h | 4 - demos/AVR-ATmega128-GCC/chconf.h | 4 - demos/MSP430-MSP430x1611-GCC/chconf.h | 4 - demos/Win32-MinGW/chconf.h | 4 - ports/ARMCM3/nvic.h | 12 +-- readme.txt | 2 + src/chcond.c | 132 -------------------------------- src/include/ch.h | 1 - src/include/condvars.h | 53 ------------- src/include/threads.h | 14 ++-- src/kernel.mk | 2 +- src/templates/chconf.h | 4 - 18 files changed, 15 insertions(+), 245 deletions(-) delete mode 100644 src/chcond.c delete mode 100644 src/include/condvars.h diff --git a/demos/ARM7-AT91SAM7X-GCC/chconf.h b/demos/ARM7-AT91SAM7X-GCC/chconf.h index 5555184c4..8db71b445 100644 --- a/demos/ARM7-AT91SAM7X-GCC/chconf.h +++ b/demos/ARM7-AT91SAM7X-GCC/chconf.h @@ -75,10 +75,6 @@ * APIs are included in the kernel.*/ #define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. diff --git a/demos/ARM7-AT91SAM7X-WEB-GCC/chconf.h b/demos/ARM7-AT91SAM7X-WEB-GCC/chconf.h index 5555184c4..8db71b445 100644 --- a/demos/ARM7-AT91SAM7X-WEB-GCC/chconf.h +++ b/demos/ARM7-AT91SAM7X-WEB-GCC/chconf.h @@ -75,10 +75,6 @@ * APIs are included in the kernel.*/ #define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. diff --git a/demos/ARM7-LPC214x-G++/chconf.h b/demos/ARM7-LPC214x-G++/chconf.h index 5555184c4..8db71b445 100644 --- a/demos/ARM7-LPC214x-G++/chconf.h +++ b/demos/ARM7-LPC214x-G++/chconf.h @@ -75,10 +75,6 @@ * APIs are included in the kernel.*/ #define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. diff --git a/demos/ARM7-LPC214x-GCC-minimal/chconf.h b/demos/ARM7-LPC214x-GCC-minimal/chconf.h index 83a8865af..9f903df06 100644 --- a/demos/ARM7-LPC214x-GCC-minimal/chconf.h +++ b/demos/ARM7-LPC214x-GCC-minimal/chconf.h @@ -75,10 +75,6 @@ * APIs are included in the kernel.*/ //#define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -//#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. diff --git a/demos/ARM7-LPC214x-GCC/chconf.h b/demos/ARM7-LPC214x-GCC/chconf.h index 5555184c4..8db71b445 100644 --- a/demos/ARM7-LPC214x-GCC/chconf.h +++ b/demos/ARM7-LPC214x-GCC/chconf.h @@ -75,10 +75,6 @@ * APIs are included in the kernel.*/ #define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. diff --git a/demos/ARMCM3-STM32F103-GCC/chconf.h b/demos/ARMCM3-STM32F103-GCC/chconf.h index 5555184c4..8db71b445 100644 --- a/demos/ARMCM3-STM32F103-GCC/chconf.h +++ b/demos/ARMCM3-STM32F103-GCC/chconf.h @@ -75,10 +75,6 @@ * APIs are included in the kernel.*/ #define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. diff --git a/demos/AVR-AT90CANx-GCC/chconf.h b/demos/AVR-AT90CANx-GCC/chconf.h index a6b0f4a95..fca0159a2 100644 --- a/demos/AVR-AT90CANx-GCC/chconf.h +++ b/demos/AVR-AT90CANx-GCC/chconf.h @@ -75,10 +75,6 @@ * APIs are included in the kernel.*/ #define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. diff --git a/demos/AVR-ATmega128-GCC/chconf.h b/demos/AVR-ATmega128-GCC/chconf.h index a6b0f4a95..fca0159a2 100644 --- a/demos/AVR-ATmega128-GCC/chconf.h +++ b/demos/AVR-ATmega128-GCC/chconf.h @@ -75,10 +75,6 @@ * APIs are included in the kernel.*/ #define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. diff --git a/demos/MSP430-MSP430x1611-GCC/chconf.h b/demos/MSP430-MSP430x1611-GCC/chconf.h index b4bc56505..7e29d314e 100644 --- a/demos/MSP430-MSP430x1611-GCC/chconf.h +++ b/demos/MSP430-MSP430x1611-GCC/chconf.h @@ -76,10 +76,6 @@ * APIs are included in the kernel.*/ #define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. diff --git a/demos/Win32-MinGW/chconf.h b/demos/Win32-MinGW/chconf.h index e18ab2d0b..b17295c65 100644 --- a/demos/Win32-MinGW/chconf.h +++ b/demos/Win32-MinGW/chconf.h @@ -80,10 +80,6 @@ * APIs are included in the kernel.*/ #define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. diff --git a/ports/ARMCM3/nvic.h b/ports/ARMCM3/nvic.h index 96a70ea85..13a04fe78 100644 --- a/ports/ARMCM3/nvic.h +++ b/ports/ARMCM3/nvic.h @@ -31,9 +31,9 @@ typedef struct { IOREG32 RVR; IOREG32 CVR; IOREG32 CBVR; -} ST; +} CM3_ST; -#define STBase ((ST *)0xE000E010) +#define STBase ((CM3_ST *)0xE000E010) #define ST_CSR (STBase->CSR) #define ST_RVR (STBase->RVR) #define ST_CVR (STBase->CVR) @@ -70,9 +70,9 @@ typedef struct { IOREG32 IABR[8]; IOREG32 unused5[56]; IOREG32 IPR[60]; -} NVIC; +} CM3_NVIC; -#define NVICBase ((NVIC *)0xE000E100) +#define NVICBase ((CM3_NVIC *)0xE000E100) #define NVIC_ISER(n) (NVICBase->ISER[n]) #define NVIC_ICER(n) (NVICBase->ICER[n]) #define NVIC_ISPR(n) (NVICBase->ISPR[n]) @@ -95,9 +95,9 @@ typedef struct { IOREG32 MMFAR; IOREG32 BFAR; IOREG32 AFSR; -} SCB; +} CM3_SCB; -#define SCBBase ((SCB *)0xE000ED00) +#define SCBBase ((CM3_SCB *)0xE000ED00) #define SCB_CPUID (SCBBase->CPUID) #define SCB_ICSR (SCBBase->ICSR) #define SCB_VTOR (SCBBase->VTOR) diff --git a/readme.txt b/readme.txt index 8bfffdd67..ab1ae03d5 100644 --- a/readme.txt +++ b/readme.txt @@ -82,6 +82,8 @@ Win32-MinGW - ChibiOS/RT simulator and demo into a WIN32 process, still supported when the feature is disabled but the scheduling among them becomes cooperative. - 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. - Made the Cortex-M3 port preemption code more readable. *** 0.6.8 *** diff --git a/src/chcond.c b/src/chcond.c deleted file mode 100644 index 668333b10..000000000 --- a/src/chcond.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. - - This file is part of ChibiOS/RT and Copyright (C) 2008 Leon Woestenberg. - - ChibiOS/RT is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/RT is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @addtogroup CondVars - * @{ - */ - -#include - -#ifdef CH_USE_CONDVARS - -/** - * Initializes s \p CondVar structure. - * @param cp pointer to a \p CondVar structure - */ -void chCondInit(CondVar *cp) { - - fifo_init(&cp->c_queue); -} - -/** - * Signals one thread that is waiting on the condition variable. - * - * @param mp pointer to the \p CondVar structure - */ -void chCondSignal(CondVar *cp) { - - chSysLock(); - chCondSignalS(cp); - chSysUnlock(); -} - -/** - * Signals one thread that is waiting on the condition variable. - * - * @param cp pointer to the \p CondVar structure - * @note This function must be called within a \p chSysLock() / \p chSysUnlock() - * block. - */ -void chCondSignalS(CondVar *cp) { - - if (notempty(&cp->c_queue)) - /* wake up the first thread, if any */ - chSchWakeupS(fifo_remove(&cp->c_queue), RDY_OK); -} - -/** - * Signal all threads that are waiting on the condition variable. - * - * @param mp pointer to the \p CondVar structure - */ -void chCondBroadcast(CondVar *cp) { - - chSysLock(); - - chCondBroadcastS(cp); - chSchRescheduleS(); - - chSysUnlock(); -} - -/** - * Signal all threads that are waiting on the condition variable. - * - * @param cp pointer to the \p CondVar structure - * @note This function must be called within a \p chSysLock() / \p chSysUnlock() - */ -void chCondBroadcastS(CondVar *cp) { - - /* empties the condition variable queue and inserts all the Threads into the - * ready list in FIFO order. The wakeup message is set to \p RDY_RESET in - * order to make a chCondBroadcast() detectable from a chCondSignal(). */ - while (cp->c_queue.p_next != (void *)&cp->c_queue) - chSchReadyI(fifo_remove(&cp->c_queue))->p_rdymsg = RDY_RESET; -} - -/** - * Wait on the condition variable protected by the given mutex. - * - * Release the mutex, wait on the condition variable, and lock the mutex. This - * is done atomically. - * - * @param cp pointer to the \p CondVar structure - * @note This function must be called within a \p chSysLock() / \p chSysUnlock() - */ -msg_t chCondWait(CondVar *cp, Mutex *mp) { - msg_t msg; - - chSysLock(); - - msg = chCondWaitS(cp, mp); - - chSysUnlock(); - return msg; -} - -msg_t chCondWaitS(CondVar *cp, Mutex *mp) { - - /* lock the mutex that protects access to the condition variable */ - chMtxLockS(mp); - /* wait on the condition variable */ - prio_insert(currp, &cp->c_queue); - /* Thread remembers the condition variable it waits on */ - currp->p_wtcondp = cp; - /* sleep until signaled */ - chSchGoSleepS(PRWTCOND); - /* lock the mutex that protects access to the condition variable */ - chMtxLockS(mp); - currp->p_wtcondp = NULL; - return currp->p_rdymsg; -} - -#endif /* CH_USE_CONDVARS */ - -/** @} */ diff --git a/src/include/ch.h b/src/include/ch.h index 4cf9c157f..cafcf2f75 100644 --- a/src/include/ch.h +++ b/src/include/ch.h @@ -35,7 +35,6 @@ #include "scheduler.h" #include "semaphores.h" #include "mutexes.h" -#include "condvars.h" #include "events.h" #include "messages.h" #include "threads.h" diff --git a/src/include/condvars.h b/src/include/condvars.h deleted file mode 100644 index 30e40fc10..000000000 --- a/src/include/condvars.h +++ /dev/null @@ -1,53 +0,0 @@ -/* - ChibiOS/RT - Copyright (C) 2006-2007 Giovanni Di Sirio. - - This file is part of ChibiOS/RT and Copyright (C) 2008 Leon Woestenberg. - - ChibiOS/RT is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - ChibiOS/RT is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -*/ - -/** - * @addtogroup CondVars - * @{ - */ - -#ifndef _CONDVARS_H_ -#define _CONDVARS_H_ - -#ifdef CH_USE_CONDVARS - -typedef struct CondVar { - /** Queue of the threads sleeping on this CondVar. */ - ThreadsQueue c_queue; -} CondVar; - -#ifdef __cplusplus -extern "C" { -#endif - void chCondInit(CondVar *cp); - void chCondSignal(CondVar *cp); - void chCondSignalS(CondVar *cp); - void chCondBroadcast(CondVar *cp); - void chCondBroadcastS(CondVar *cp); - msg_t chCondWait(CondVar *cp, Mutex *mp); - msg_t chCondWaitS(CondVar *cp, Mutex *mp); -#ifdef __cplusplus -} -#endif - -#endif /* CH_USE_CONDVARS */ - -#endif /* _CONDVARS_H_ */ - -/** @} */ diff --git a/src/include/threads.h b/src/include/threads.h index 76e8d480e..1572417d6 100644 --- a/src/include/threads.h +++ b/src/include/threads.h @@ -122,20 +122,18 @@ struct Thread { #define PRWTSEM 3 /** Thread state: Waiting on a mutex. */ #define PRWTMTX 4 -/** Thread state: Waiting on a condition variable. */ -#define PRWTCOND 5 /** Thread state: Waiting in \p chThdSleep() or \p chThdSleepUntil(). */ -#define PRSLEEP 6 +#define PRSLEEP 5 /** Thread state: Waiting in \p chThdWait(). */ -#define PRWAIT 7 +#define PRWAIT 6 /** Thread state: Waiting in \p chEvtWait(). */ -#define PRWTEVENT 8 +#define PRWTEVENT 7 /** Thread state: Waiting in \p chMsgSend(). */ -#define PRSNDMSG 9 +#define PRSNDMSG 8 /** Thread state: Waiting in \p chMsgWait(). */ -#define PRWTMSG 10 +#define PRWTMSG 9 /** Thread state: After termination.*/ -#define PREXIT 11 +#define PREXIT 10 #ifdef CH_USE_TERMINATE /** Thread option: Termination requested flag.*/ diff --git a/src/kernel.mk b/src/kernel.mk index d613e866f..54a9cffdd 100644 --- a/src/kernel.mk +++ b/src/kernel.mk @@ -6,4 +6,4 @@ KERNSRC = ../../src/chinit.c ../../src/chdebug.c \ ../../src/chsem.c ../../src/chmtx.c \ ../../src/chevents.c ../../src/chmsg.c \ ../../src/chsleep.c ../../src/chqueues.c \ - ../../src/chcond.c ../../src/chserial.c + ../../src/chserial.c diff --git a/src/templates/chconf.h b/src/templates/chconf.h index 823bb7ccd..d059f3097 100644 --- a/src/templates/chconf.h +++ b/src/templates/chconf.h @@ -76,10 +76,6 @@ * APIs are included in the kernel.*/ #define CH_USE_SEMSW -/** Configuration option: if specified then the Conditional Variables APIs are - * included in the kernel.*/ -#define CH_USE_CONDVARS - /** Configuration option: if specified then the Semaphores with timeout APIs * are included in the kernel. * @note requires \p CH_USE_SEMAPHORES. -- cgit v1.2.3