From 12375d1d3aa41f7d277a9af584c7b810b636ec95 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Wed, 2 Mar 2011 08:49:38 +0000 Subject: 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 --- firmware/export/config.h | 4 +--- firmware/export/kernel.h | 20 ++------------------ firmware/export/thread.h | 4 +++- 3 files changed, 6 insertions(+), 22 deletions(-) (limited to 'firmware/export') 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 */ #endif /* PLATFORM_NATIVE */ -#define HAVE_SEMAPHORE_OBJECTS - #ifdef HAVE_USBSTACK #if CONFIG_USBOTG == USBOTG_ARC #define USB_STATUS_BY_EVENT @@ -769,7 +767,7 @@ Lyre prototype 1 */ || (CONFIG_CPU == AS3525) || (CONFIG_CPU == AS3525v2) \ || defined(CPU_S5L870X) || (CONFIG_CPU == S3C2440) \ || defined(APPLICATION) -#define HAVE_WAKEUP_OBJECTS +#define HAVE_SEMAPHORE_OBJECTS #endif /*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 struct semaphore { struct thread_entry *queue; /* Waiter list */ - int count; /* # of waits remaining before unsignaled */ + int volatile count; /* # of waits remaining before unsignaled */ int max; /* maximum # of waits to remain signaled */ IF_COP( struct corelock cl; ) /* multiprocessor sync */ }; #endif -#ifdef HAVE_WAKEUP_OBJECTS -struct wakeup -{ - struct thread_entry *queue; /* waiter list */ - bool volatile signalled; /* signalled status */ - IF_COP( struct corelock cl; ) /* multiprocessor sync */ -}; -#endif - - /* global tick variable */ #if defined(CPU_PP) && defined(BOOTLOADER) && \ !defined(HAVE_BOOTLOADER_USB_MODE) @@ -280,14 +270,8 @@ static inline bool mutex_test(const struct mutex *m) #ifdef HAVE_SEMAPHORE_OBJECTS extern void semaphore_init(struct semaphore *s, int max, int start); -extern void semaphore_wait(struct semaphore *s); +extern int semaphore_wait(struct semaphore *s, int timeout); extern void semaphore_release(struct semaphore *s); #endif /* HAVE_SEMAPHORE_OBJECTS */ -#ifdef HAVE_WAKEUP_OBJECTS -extern void wakeup_init(struct wakeup *w); -extern int wakeup_wait(struct wakeup *w, int timeout); -extern int wakeup_signal(struct wakeup *w); -#endif /* HAVE_WAKEUP_OBJECTS */ - #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 and priority disinheritance */ /* Only enabled when using queue_send for now */ #endif -#if defined(HAVE_EXTENDED_MESSAGING_AND_NAME) || NUM_CORES > 1 +#if defined(HAVE_SEMAPHORE_OBJECTS) || \ + defined(HAVE_EXTENDED_MESSAGING_AND_NAME) || \ + NUM_CORES > 1 volatile intptr_t retval; /* Return value from a blocked operation/ misc. use */ #endif -- cgit v1.2.3