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
This commit is contained in:
Andrew Mahone 2009-01-13 13:48:26 +00:00
parent c0d9084d6a
commit 2fbf09752d
12 changed files with 23 additions and 59 deletions

View file

@ -308,7 +308,6 @@ static const struct plugin_api rockbox_api = {
mutex_init, mutex_init,
mutex_lock, mutex_lock,
mutex_unlock, mutex_unlock,
align_buffer,
#endif #endif
reset_poweroff_timer, reset_poweroff_timer,

View file

@ -126,12 +126,12 @@ void* plugin_get_buffer(size_t *buffer_size);
#define PLUGIN_MAGIC 0x526F634B /* RocK */ #define PLUGIN_MAGIC 0x526F634B /* RocK */
/* increase this every time the api struct changes */ /* 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 /* update this to latest version if a change to the api struct breaks
backwards compatibility (and please take the opportunity to sort in any backwards compatibility (and please take the opportunity to sort in any
new function which are "waiting" at the end of the function table) */ 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 */ /* plugin return codes */
enum plugin_status { enum plugin_status {
@ -419,7 +419,6 @@ struct plugin_api {
void (*mutex_init)(struct mutex *m); void (*mutex_init)(struct mutex *m);
void (*mutex_lock)(struct mutex *m); void (*mutex_lock)(struct mutex *m);
void (*mutex_unlock)(struct mutex *m); void (*mutex_unlock)(struct mutex *m);
size_t (*align_buffer)(void **start, size_t size, size_t align);
#endif #endif
void (*reset_poweroff_timer)(void); 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 */ #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 /* __PCTOOL__ */
#endif #endif

View file

@ -36,9 +36,6 @@
#define cpu_boost rb->cpu_boost #define cpu_boost rb->cpu_boost
#endif #endif
#define yield rb->yield #define yield rb->yield
#if CONFIG_CODEC == SWCODEC
#define align_buffer rb->align_buffer
#endif
#endif #endif

View file

@ -27,6 +27,7 @@
#include "plugin.h" #include "plugin.h"
#include "mpegplayer.h" #include "mpegplayer.h"
#include <system.h>
/* Main allocator */ /* Main allocator */
static off_t mem_ptr; static off_t mem_ptr;
@ -132,8 +133,8 @@ bool mpeg_alloc_init(unsigned char *buf, size_t mallocsize)
mem_ptr = 0; mem_ptr = 0;
/* Cache-align buffer or 4-byte align */ /* Cache-align buffer or 4-byte align */
mallocbuf = buf; mallocbuf = buf;
bufsize = align_buffer(PUN_PTR(void **, &mallocbuf), bufsize = mallocsize;
mallocsize, CACHEALIGN_UP(4)); ALIGN_BUFFER(mallocbuf, bufsize, CACHEALIGN_UP(4));
/* Separate allocator for video */ /* Separate allocator for video */
mpeg2_mem_ptr = 0; mpeg2_mem_ptr = 0;

View file

@ -22,6 +22,7 @@
****************************************************************************/ ****************************************************************************/
#include "plugin.h" #include "plugin.h"
#include "mpegplayer.h" #include "mpegplayer.h"
#include <system.h>
static struct mutex disk_buf_mtx SHAREDBSS_ATTR; static struct mutex disk_buf_mtx SHAREDBSS_ATTR;
static struct event_queue disk_buf_queue SHAREDBSS_ATTR; static struct event_queue disk_buf_queue SHAREDBSS_ATTR;
@ -859,7 +860,7 @@ bool disk_buf_init(void)
return false; return false;
#ifdef PROC_NEEDS_CACHEALIGN #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); disk_buf.start = UNCACHED_ADDR(disk_buf.start);
#endif #endif
disk_buf.size -= DISK_GUARDBUF_SIZE; disk_buf.size -= DISK_GUARDBUF_SIZE;

View file

@ -283,7 +283,6 @@ CONFIG_KEYPAD == SANSA_M200_PAD
const struct plugin_api* rb; const struct plugin_api* rb;
CACHE_FUNCTION_WRAPPERS(rb); CACHE_FUNCTION_WRAPPERS(rb);
ALIGN_BUFFER_WRAPPER(rb);
/* One thing we can do here for targets with remotes is having a display /* 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 */ * always on the remote instead of always forcing a popup on the main display */

View file

@ -2144,8 +2144,7 @@ enum plugin_status plugin_start(const struct plugin_api *api,
rb->cpu_boost(true); rb->cpu_boost(true);
#endif #endif
plugin_buf = rb->plugin_get_buffer(&plugin_buf_size); plugin_buf = rb->plugin_get_buffer(&plugin_buf_size);
plugin_buf_size = rb->align_buffer(PUN_PTR(void**,&plugin_buf), ALIGN_BUFFER(plugin_buf, plugin_buf_size, 4);
plugin_buf_size, 4);
ret = main(); ret = main();
#ifdef HAVE_ADJUSTABLE_CPU_FREQ #ifdef HAVE_ADJUSTABLE_CPU_FREQ
rb->cpu_boost(false); rb->cpu_boost(false);

View file

@ -31,6 +31,7 @@
* *
****************************************************************************/ ****************************************************************************/
#include <system.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.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) ? uint8_t sc_buf[(needed <= len || needed > MAX_SC_STACK_ALLOC) ?
0 : needed]; 0 : needed];
#endif #endif
#if CONFIG_CODEC == SWCODEC ALIGN_BUFFER(buf, len, sizeof(uint32_t));
len = (unsigned int)align_buffer(PUN_PTR(void**, &buf), len,
sizeof(uint32_t));
#endif
if (needed > len) if (needed > len)
{ {
#if MAX_SC_STACK_ALLOC #if MAX_SC_STACK_ALLOC

View file

@ -39,15 +39,6 @@ bool action_userabort(int timeout)
\return \return
\description \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 const char *appsversion
\return version of the plugin API \return version of the plugin API
\description \description

View file

@ -37,6 +37,4 @@ int make_list_from_caps32(unsigned long src_mask,
unsigned long caps_mask, unsigned long caps_mask,
unsigned long *caps_list); unsigned long *caps_list);
size_t align_buffer(void **start, size_t size, size_t align);
#endif /* GENERAL_H */ #endif /* GENERAL_H */

View file

@ -110,6 +110,17 @@ int get_cpu_boost_counter(void);
#define ALIGN_DOWN(n, a) ((n)/(a)*(a)) #define ALIGN_DOWN(n, a) ((n)/(a)*(a))
#define ALIGN_UP(n, a) ALIGN_DOWN((n)+((a)-1),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 */ /* live endianness conversion */
#ifdef ROCKBOX_LITTLE_ENDIAN #ifdef ROCKBOX_LITTLE_ENDIAN
#define letoh16(x) (x) #define letoh16(x) (x)
@ -275,7 +286,7 @@ static inline uint32_t swap_odd_even32(uint32_t value)
__attribute__((aligned(CACHEALIGN_UP(x)))) __attribute__((aligned(CACHEALIGN_UP(x))))
/* Aligns a buffer pointer and size to proper boundaries */ /* Aligns a buffer pointer and size to proper boundaries */
#define CACHEALIGN_BUFFER(start, size) \ #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 */ #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_UP(x) (x)
#define CACHEALIGN_DOWN(x) (x) #define CACHEALIGN_DOWN(x) (x)
/* Make no adjustments */ /* Make no adjustments */
#define CACHEALIGN_BUFFER(start, size) \ #define CACHEALIGN_BUFFER(start, size)
({ (void)(start); (size); })
#endif /* PROC_NEEDS_CACHEALIGN */ #endif /* PROC_NEEDS_CACHEALIGN */

View file

@ -78,23 +78,3 @@ int make_list_from_caps32(unsigned long src_mask,
return count; return count;
} /* make_list_from_caps32 */ } /* 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;
}