summaryrefslogtreecommitdiff
path: root/firmware/export
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2011-03-02 08:49:38 +0000
committerMichael Sevakis <jethead71@rockbox.org>2011-03-02 08:49:38 +0000
commit12375d1d3aa41f7d277a9af584c7b810b636ec95 (patch)
treefc9ce8029a6910a8dac71b3bf60c71155a01eea4 /firmware/export
parent05e180a1308a095d51d51d0e047fcd44425ea88f (diff)
downloadrockbox-12375d1d3aa41f7d277a9af584c7b810b636ec95.tar.gz
rockbox-12375d1d3aa41f7d277a9af584c7b810b636ec95.zip
Merge functionality of wakeups and semaphores-- fewer APIs and object types. semaphore_wait takes a timeout now so codecs and plugins have to be made incompatible. Don't make semaphores for targets not using them.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29492 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export')
-rw-r--r--firmware/export/config.h4
-rw-r--r--firmware/export/kernel.h20
-rw-r--r--firmware/export/thread.h4
3 files changed, 6 insertions, 22 deletions
diff --git a/firmware/export/config.h b/firmware/export/config.h
index d00958a71d..341985f9e7 100644
--- a/firmware/export/config.h
+++ b/firmware/export/config.h
@@ -741,8 +741,6 @@ Lyre prototype 1 */
741#endif /* PLATFORM_NATIVE */ 741#endif /* PLATFORM_NATIVE */
742 742
743 743
744#define HAVE_SEMAPHORE_OBJECTS
745
746#ifdef HAVE_USBSTACK 744#ifdef HAVE_USBSTACK
747#if CONFIG_USBOTG == USBOTG_ARC 745#if CONFIG_USBOTG == USBOTG_ARC
748#define USB_STATUS_BY_EVENT 746#define USB_STATUS_BY_EVENT
@@ -769,7 +767,7 @@ Lyre prototype 1 */
769 || (CONFIG_CPU == AS3525) || (CONFIG_CPU == AS3525v2) \ 767 || (CONFIG_CPU == AS3525) || (CONFIG_CPU == AS3525v2) \
770 || defined(CPU_S5L870X) || (CONFIG_CPU == S3C2440) \ 768 || defined(CPU_S5L870X) || (CONFIG_CPU == S3C2440) \
771 || defined(APPLICATION) 769 || defined(APPLICATION)
772#define HAVE_WAKEUP_OBJECTS 770#define HAVE_SEMAPHORE_OBJECTS
773#endif 771#endif
774 772
775/*include support for crossfading - requires significant PCM buffer space*/ 773/*include support for crossfading - requires significant PCM buffer space*/
diff --git a/firmware/export/kernel.h b/firmware/export/kernel.h
index 20743c554b..6aaf11ddb9 100644
--- a/firmware/export/kernel.h
+++ b/firmware/export/kernel.h
@@ -160,22 +160,12 @@ struct mutex
160struct semaphore 160struct semaphore
161{ 161{
162 struct thread_entry *queue; /* Waiter list */ 162 struct thread_entry *queue; /* Waiter list */
163 int count; /* # of waits remaining before unsignaled */ 163 int volatile count; /* # of waits remaining before unsignaled */
164 int max; /* maximum # of waits to remain signaled */ 164 int max; /* maximum # of waits to remain signaled */
165 IF_COP( struct corelock cl; ) /* multiprocessor sync */ 165 IF_COP( struct corelock cl; ) /* multiprocessor sync */
166}; 166};
167#endif 167#endif
168 168
169#ifdef HAVE_WAKEUP_OBJECTS
170struct wakeup
171{
172 struct thread_entry *queue; /* waiter list */
173 bool volatile signalled; /* signalled status */
174 IF_COP( struct corelock cl; ) /* multiprocessor sync */
175};
176#endif
177
178
179/* global tick variable */ 169/* global tick variable */
180#if defined(CPU_PP) && defined(BOOTLOADER) && \ 170#if defined(CPU_PP) && defined(BOOTLOADER) && \
181 !defined(HAVE_BOOTLOADER_USB_MODE) 171 !defined(HAVE_BOOTLOADER_USB_MODE)
@@ -280,14 +270,8 @@ static inline bool mutex_test(const struct mutex *m)
280 270
281#ifdef HAVE_SEMAPHORE_OBJECTS 271#ifdef HAVE_SEMAPHORE_OBJECTS
282extern void semaphore_init(struct semaphore *s, int max, int start); 272extern void semaphore_init(struct semaphore *s, int max, int start);
283extern void semaphore_wait(struct semaphore *s); 273extern int semaphore_wait(struct semaphore *s, int timeout);
284extern void semaphore_release(struct semaphore *s); 274extern void semaphore_release(struct semaphore *s);
285#endif /* HAVE_SEMAPHORE_OBJECTS */ 275#endif /* HAVE_SEMAPHORE_OBJECTS */
286 276
287#ifdef HAVE_WAKEUP_OBJECTS
288extern void wakeup_init(struct wakeup *w);
289extern int wakeup_wait(struct wakeup *w, int timeout);
290extern int wakeup_signal(struct wakeup *w);
291#endif /* HAVE_WAKEUP_OBJECTS */
292
293#endif /* _KERNEL_H_ */ 277#endif /* _KERNEL_H_ */
diff --git a/firmware/export/thread.h b/firmware/export/thread.h
index 179979a98a..0db849ab0a 100644
--- a/firmware/export/thread.h
+++ b/firmware/export/thread.h
@@ -284,7 +284,9 @@ struct thread_entry
284 and priority disinheritance */ 284 and priority disinheritance */
285 /* Only enabled when using queue_send for now */ 285 /* Only enabled when using queue_send for now */
286#endif 286#endif
287#if defined(HAVE_EXTENDED_MESSAGING_AND_NAME) || NUM_CORES > 1 287#if defined(HAVE_SEMAPHORE_OBJECTS) || \
288 defined(HAVE_EXTENDED_MESSAGING_AND_NAME) || \
289 NUM_CORES > 1
288 volatile intptr_t retval; /* Return value from a blocked operation/ 290 volatile intptr_t retval; /* Return value from a blocked operation/
289 misc. use */ 291 misc. use */
290#endif 292#endif