summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew Mahone <andrew.mahone@gmail.com>2009-01-13 13:48:26 +0000
committerAndrew Mahone <andrew.mahone@gmail.com>2009-01-13 13:48:26 +0000
commit2fbf09752d385af861279af195d68f920859202d (patch)
tree98bf09ebc24217d122b61c2a079337b793c35d9b
parentc0d9084d6a5182460da0472a4e88d6d078adb86e (diff)
downloadrockbox-2fbf09752d385af861279af195d68f920859202d.tar.gz
rockbox-2fbf09752d385af861279af195d68f920859202d.tar.bz2
rockbox-2fbf09752d385af861279af195d68f920859202d.zip
remove align_buffer from firmare/general.c, replacing with ALIGN_BUFFER macro, and replace all uses of it (only resize.c in core, and pictureflow and mpegplayer plugins), remove it from plugin_api,
and remove wrapper for it from plugin.h git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19758 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugin.c1
-rw-r--r--apps/plugin.h13
-rw-r--r--apps/plugins/lib/wrappers.h3
-rw-r--r--apps/plugins/mpegplayer/alloc.c5
-rw-r--r--apps/plugins/mpegplayer/disk_buf.c3
-rw-r--r--apps/plugins/mpegplayer/mpegplayer.c1
-rw-r--r--apps/plugins/pictureflow.c3
-rw-r--r--apps/recorder/resize.c6
-rw-r--r--docs/PLUGIN_API.new9
-rw-r--r--firmware/export/general.h2
-rw-r--r--firmware/export/system.h16
-rw-r--r--firmware/general.c20
12 files changed, 23 insertions, 59 deletions
diff --git a/apps/plugin.c b/apps/plugin.c
index 66d614ec58..151cb1d04d 100644
--- a/apps/plugin.c
+++ b/apps/plugin.c
@@ -308,7 +308,6 @@ static const struct plugin_api rockbox_api = {
mutex_init,
mutex_lock,
mutex_unlock,
- align_buffer,
#endif
reset_poweroff_timer,
diff --git a/apps/plugin.h b/apps/plugin.h
index 6b198686f2..7bb1c7fc5f 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -126,12 +126,12 @@ void* plugin_get_buffer(size_t *buffer_size);
#define PLUGIN_MAGIC 0x526F634B /* RocK */
/* increase this every time the api struct changes */
-#define PLUGIN_API_VERSION 135
+#define PLUGIN_API_VERSION 136
/* update this to latest version if a change to the api struct breaks
backwards compatibility (and please take the opportunity to sort in any
new function which are "waiting" at the end of the function table) */
-#define PLUGIN_MIN_API_VERSION 135
+#define PLUGIN_MIN_API_VERSION 136
/* plugin return codes */
enum plugin_status {
@@ -419,7 +419,6 @@ struct plugin_api {
void (*mutex_init)(struct mutex *m);
void (*mutex_lock)(struct mutex *m);
void (*mutex_unlock)(struct mutex *m);
- size_t (*align_buffer)(void **start, size_t size, size_t align);
#endif
void (*reset_poweroff_timer)(void);
@@ -884,13 +883,5 @@ enum plugin_status plugin_start(const struct plugin_api* rockbox, const void* pa
#endif /* CACHE_FUNCTION_WRAPPERS */
-#ifndef ALIGN_BUFFER_WRAPPER
-#define ALIGN_BUFFER_WRAPPER(api) \
- size_t align_buffer(void **start, size_t size, size_t align) \
- { \
- return (api)->align_buffer(start, size, align); \
- }
-#endif /* ALIGN_BUFFER_WRAPPER */
-
#endif /* __PCTOOL__ */
#endif
diff --git a/apps/plugins/lib/wrappers.h b/apps/plugins/lib/wrappers.h
index 2eb4ea025e..385cd5d613 100644
--- a/apps/plugins/lib/wrappers.h
+++ b/apps/plugins/lib/wrappers.h
@@ -36,9 +36,6 @@
#define cpu_boost rb->cpu_boost
#endif
#define yield rb->yield
-#if CONFIG_CODEC == SWCODEC
-#define align_buffer rb->align_buffer
-#endif
#endif
diff --git a/apps/plugins/mpegplayer/alloc.c b/apps/plugins/mpegplayer/alloc.c
index c4f936ee14..6b50b8f24c 100644
--- a/apps/plugins/mpegplayer/alloc.c
+++ b/apps/plugins/mpegplayer/alloc.c
@@ -27,6 +27,7 @@
#include "plugin.h"
#include "mpegplayer.h"
+#include <system.h>
/* Main allocator */
static off_t mem_ptr;
@@ -132,8 +133,8 @@ bool mpeg_alloc_init(unsigned char *buf, size_t mallocsize)
mem_ptr = 0;
/* Cache-align buffer or 4-byte align */
mallocbuf = buf;
- bufsize = align_buffer(PUN_PTR(void **, &mallocbuf),
- mallocsize, CACHEALIGN_UP(4));
+ bufsize = mallocsize;
+ ALIGN_BUFFER(mallocbuf, bufsize, CACHEALIGN_UP(4));
/* Separate allocator for video */
mpeg2_mem_ptr = 0;
diff --git a/apps/plugins/mpegplayer/disk_buf.c b/apps/plugins/mpegplayer/disk_buf.c
index c008139356..defd8ef81d 100644
--- a/apps/plugins/mpegplayer/disk_buf.c
+++ b/apps/plugins/mpegplayer/disk_buf.c
@@ -22,6 +22,7 @@
****************************************************************************/
#include "plugin.h"
#include "mpegplayer.h"
+#include <system.h>
static struct mutex disk_buf_mtx SHAREDBSS_ATTR;
static struct event_queue disk_buf_queue SHAREDBSS_ATTR;
@@ -859,7 +860,7 @@ bool disk_buf_init(void)
return false;
#ifdef PROC_NEEDS_CACHEALIGN
- disk_buf.size = CACHEALIGN_BUFFER(&disk_buf.start, disk_buf.size);
+ CACHEALIGN_BUFFER(disk_buf.start, disk_buf.size);
disk_buf.start = UNCACHED_ADDR(disk_buf.start);
#endif
disk_buf.size -= DISK_GUARDBUF_SIZE;
diff --git a/apps/plugins/mpegplayer/mpegplayer.c b/apps/plugins/mpegplayer/mpegplayer.c
index cb5d4edb76..0b5bb518fe 100644
--- a/apps/plugins/mpegplayer/mpegplayer.c
+++ b/apps/plugins/mpegplayer/mpegplayer.c
@@ -283,7 +283,6 @@ CONFIG_KEYPAD == SANSA_M200_PAD
const struct plugin_api* rb;
CACHE_FUNCTION_WRAPPERS(rb);
-ALIGN_BUFFER_WRAPPER(rb);
/* One thing we can do here for targets with remotes is having a display
* always on the remote instead of always forcing a popup on the main display */
diff --git a/apps/plugins/pictureflow.c b/apps/plugins/pictureflow.c
index 83ab1ddef0..a3552836fa 100644
--- a/apps/plugins/pictureflow.c
+++ b/apps/plugins/pictureflow.c
@@ -2144,8 +2144,7 @@ enum plugin_status plugin_start(const struct plugin_api *api,
rb->cpu_boost(true);
#endif
plugin_buf = rb->plugin_get_buffer(&plugin_buf_size);
- plugin_buf_size = rb->align_buffer(PUN_PTR(void**,&plugin_buf),
- plugin_buf_size, 4);
+ ALIGN_BUFFER(plugin_buf, plugin_buf_size, 4);
ret = main();
#ifdef HAVE_ADJUSTABLE_CPU_FREQ
rb->cpu_boost(false);
diff --git a/apps/recorder/resize.c b/apps/recorder/resize.c
index 99ccc84d55..2e6c3ff266 100644
--- a/apps/recorder/resize.c
+++ b/apps/recorder/resize.c
@@ -31,6 +31,7 @@
*
****************************************************************************/
+#include <system.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -616,10 +617,7 @@ int resize_on_load(struct bitmap *bm, bool dither, struct dim *src,
uint8_t sc_buf[(needed <= len || needed > MAX_SC_STACK_ALLOC) ?
0 : needed];
#endif
-#if CONFIG_CODEC == SWCODEC
- len = (unsigned int)align_buffer(PUN_PTR(void**, &buf), len,
- sizeof(uint32_t));
-#endif
+ ALIGN_BUFFER(buf, len, sizeof(uint32_t));
if (needed > len)
{
#if MAX_SC_STACK_ALLOC
diff --git a/docs/PLUGIN_API.new b/docs/PLUGIN_API.new
index 1f24ac08bc..b4790e3ea6 100644
--- a/docs/PLUGIN_API.new
+++ b/docs/PLUGIN_API.new
@@ -39,15 +39,6 @@ bool action_userabort(int timeout)
\return
\description
-size_t align_buffer(void **start, size_t size, size_t align)
- \group kernel/ system
- \conditions (CONFIG_CODEC == SWCODEC)
- \param start
- \param size
- \param align
- \return
- \description
-
const char *appsversion
\return version of the plugin API
\description
diff --git a/firmware/export/general.h b/firmware/export/general.h
index 7bcd08da00..d1bd14558c 100644
--- a/firmware/export/general.h
+++ b/firmware/export/general.h
@@ -37,6 +37,4 @@ int make_list_from_caps32(unsigned long src_mask,
unsigned long caps_mask,
unsigned long *caps_list);
-size_t align_buffer(void **start, size_t size, size_t align);
-
#endif /* GENERAL_H */
diff --git a/firmware/export/system.h b/firmware/export/system.h
index 8ebd30ac4e..cc2a08db2e 100644
--- a/firmware/export/system.h
+++ b/firmware/export/system.h
@@ -110,6 +110,17 @@ int get_cpu_boost_counter(void);
#define ALIGN_DOWN(n, a) ((n)/(a)*(a))
#define ALIGN_UP(n, a) ALIGN_DOWN((n)+((a)-1),a)
+/* align start and end of buffer to nearest integer multiple of a */
+#define ALIGN_BUFFER(ptr,len,align) \
+{\
+ uintptr_t tmp_ptr1 = (uintptr_t)ptr; \
+ uintptr_t tmp_ptr2 = tmp_ptr1 + len;\
+ tmp_ptr1 = ALIGN_UP(tmp_ptr1,align); \
+ tmp_ptr2 = ALIGN_DOWN(tmp_ptr2,align); \
+ len = tmp_ptr2 - tmp_ptr1; \
+ ptr = (typeof(ptr))tmp_ptr1; \
+}
+
/* live endianness conversion */
#ifdef ROCKBOX_LITTLE_ENDIAN
#define letoh16(x) (x)
@@ -275,7 +286,7 @@ static inline uint32_t swap_odd_even32(uint32_t value)
__attribute__((aligned(CACHEALIGN_UP(x))))
/* Aligns a buffer pointer and size to proper boundaries */
#define CACHEALIGN_BUFFER(start, size) \
- ({ align_buffer(PUN_PTR(void **, (start)), (size), CACHEALIGN_SIZE); })
+ ALIGN_BUFFER((start), (size), CACHEALIGN_SIZE)
#else /* ndef PROC_NEEDS_CACHEALIGN */
@@ -286,8 +297,7 @@ static inline uint32_t swap_odd_even32(uint32_t value)
#define CACHEALIGN_UP(x) (x)
#define CACHEALIGN_DOWN(x) (x)
/* Make no adjustments */
-#define CACHEALIGN_BUFFER(start, size) \
- ({ (void)(start); (size); })
+#define CACHEALIGN_BUFFER(start, size)
#endif /* PROC_NEEDS_CACHEALIGN */
diff --git a/firmware/general.c b/firmware/general.c
index 1c2abe1256..ff6594086e 100644
--- a/firmware/general.c
+++ b/firmware/general.c
@@ -78,23 +78,3 @@ int make_list_from_caps32(unsigned long src_mask,
return count;
} /* make_list_from_caps32 */
-
-/* Align a buffer and size to a size boundary while remaining within
- * the original boundaries */
-size_t align_buffer(void **start, size_t size, size_t align)
-{
- void *newstart = *start;
- void *newend = newstart + size;
-
- /* Align the end down and the start up */
- newend = (void *)ALIGN_DOWN((intptr_t)newend, align);
- newstart = (void *)ALIGN_UP((intptr_t)newstart, align);
-
- /* Hmmm - too small for this */
- if (newend <= newstart)
- return 0;
-
- /* Return adjusted pointer and size */
- *start = newstart;
- return newend - newstart;
-}