Commit 71eeda5d authored by Tomas Vanek's avatar Tomas Vanek
Browse files

target: move all working_area functions to one block



The block of code moved without any changes

Change-Id: I70b82dc3315dcc3f34de0537b362bee230007d02
Signed-off-by: default avatarTomas Vanek <vanekt@fbl.cz>
Reviewed-on: http://openocd.zylin.com/4796


Tested-by: jenkins
Reviewed-by: default avatarSpencer Oliver <spen@spen-soft.co.uk>
parent 936dc7cb
......@@ -1919,6 +1919,57 @@ int target_free_working_area(struct target *target, struct working_area *area)
return target_free_working_area_restore(target, area, 1);
}
/* free resources and restore memory, if restoring memory fails,
* free up resources anyway
*/
static void target_free_all_working_areas_restore(struct target *target, int restore)
{
struct working_area *c = target->working_areas;
LOG_DEBUG("freeing all working areas");
/* Loop through all areas, restoring the allocated ones and marking them as free */
while (c) {
if (!c->free) {
if (restore)
target_restore_working_area(target, c);
c->free = true;
*c->user = NULL; /* Same as above */
c->user = NULL;
}
c = c->next;
}
/* Run a merge pass to combine all areas into one */
target_merge_working_areas(target);
print_wa_layout(target);
}
void target_free_all_working_areas(struct target *target)
{
target_free_all_working_areas_restore(target, 1);
}
/* Find the largest number of bytes that can be allocated */
uint32_t target_get_working_area_avail(struct target *target)
{
struct working_area *c = target->working_areas;
uint32_t max_size = 0;
if (c == NULL)
return target->working_area_size;
while (c) {
if (c->free && max_size < c->size)
max_size = c->size;
c = c->next;
}
return max_size;
}
static void target_destroy(struct target *target)
{
if (target->type->deinit_target)
......@@ -1993,57 +2044,6 @@ void target_quit(void)
all_targets = NULL;
}
/* free resources and restore memory, if restoring memory fails,
* free up resources anyway
*/
static void target_free_all_working_areas_restore(struct target *target, int restore)
{
struct working_area *c = target->working_areas;
LOG_DEBUG("freeing all working areas");
/* Loop through all areas, restoring the allocated ones and marking them as free */
while (c) {
if (!c->free) {
if (restore)
target_restore_working_area(target, c);
c->free = true;
*c->user = NULL; /* Same as above */
c->user = NULL;
}
c = c->next;
}
/* Run a merge pass to combine all areas into one */
target_merge_working_areas(target);
print_wa_layout(target);
}
void target_free_all_working_areas(struct target *target)
{
target_free_all_working_areas_restore(target, 1);
}
/* Find the largest number of bytes that can be allocated */
uint32_t target_get_working_area_avail(struct target *target)
{
struct working_area *c = target->working_areas;
uint32_t max_size = 0;
if (c == NULL)
return target->working_area_size;
while (c) {
if (c->free && max_size < c->size)
max_size = c->size;
c = c->next;
}
return max_size;
}
int target_arch_state(struct target *target)
{
int retval;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment