target: clean up target memory allocation error messages

target memory allocation can be implemented not to show
bogus error messages.

E.g. when trying a big allocation first and then a
smaller one if that fails.

Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
This commit is contained in:
Øyvind Harboe 2010-05-03 15:49:23 +02:00
parent 32e647acf4
commit 8865209545
2 changed files with 22 additions and 3 deletions

View File

@ -1111,7 +1111,7 @@ int target_call_timer_callbacks_now(void)
return target_call_timer_callbacks_check_time(0);
}
int target_alloc_working_area(struct target *target, uint32_t size, struct working_area **area)
int target_alloc_working_area_try(struct target *target, uint32_t size, struct working_area **area)
{
struct working_area *c = target->working_areas;
struct working_area *new_wa = NULL;
@ -1189,8 +1189,6 @@ int target_alloc_working_area(struct target *target, uint32_t size, struct worki
if (free_size < size)
{
LOG_WARNING("not enough working area available(requested %u, free %u)",
(unsigned)(size), (unsigned)(free_size));
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
}
@ -1231,6 +1229,19 @@ int target_alloc_working_area(struct target *target, uint32_t size, struct worki
return ERROR_OK;
}
int target_alloc_working_area(struct target *target, uint32_t size, struct working_area **area)
{
int retval;
retval = target_alloc_working_area_try(target, size, area);
if (retval == ERROR_TARGET_RESOURCE_NOT_AVAILABLE)
{
LOG_WARNING("not enough working area available(requested %u)", (unsigned)(size));
}
return retval;
}
static int target_free_working_area_restore(struct target *target, struct working_area *area, int restore)
{
if (area->free)

View File

@ -452,6 +452,14 @@ const char *target_state_name( struct target *target );
*/
int target_alloc_working_area(struct target *target,
uint32_t size, struct working_area **area);
/* Same as target_alloc_working_area, except that no error is logged
* when ERROR_TARGET_RESOURCE_NOT_AVAILABLE is returned.
*
* This allows the calling code to *try* to allocate target memory
* and have a fallback to another behavior(slower?).
*/
int target_alloc_working_area_try(struct target *target,
uint32_t size, struct working_area **area);
int target_free_working_area(struct target *target, struct working_area *area);
void target_free_all_working_areas(struct target *target);