aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--demos/ARM7-AT91SAM7X-GCC/chconf.h4
-rw-r--r--demos/ARM7-AT91SAM7X-WEB-GCC/chconf.h4
-rw-r--r--demos/ARM7-LPC214x-G++/chconf.h4
-rw-r--r--demos/ARM7-LPC214x-GCC-minimal/chconf.h4
-rw-r--r--demos/ARM7-LPC214x-GCC/chconf.h4
-rw-r--r--demos/ARMCM3-STM32F103-GCC/chconf.h4
-rw-r--r--demos/AVR-AT90CANx-GCC/chconf.h4
-rw-r--r--demos/AVR-ATmega128-GCC/chconf.h4
-rw-r--r--demos/MSP430-MSP430x1611-GCC/chconf.h4
-rw-r--r--demos/Win32-MinGW/chconf.h4
-rw-r--r--ports/ARMCM3/nvic.h12
-rw-r--r--readme.txt2
-rw-r--r--src/chcond.c132
-rw-r--r--src/include/ch.h1
-rw-r--r--src/include/condvars.h53
-rw-r--r--src/include/threads.h14
-rw-r--r--src/kernel.mk2
-rw-r--r--src/templates/chconf.h4
18 files changed, 15 insertions, 245 deletions
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 <http://www.gnu.org/licenses/>.
-*/
-
-/**
- * @addtogroup CondVars
- * @{
- */
-
-#include <ch.h>
-
-#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 <http://www.gnu.org/licenses/>.
-*/
-
-/**
- * @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.