This is an automated email from Gerrit.

Peter Stuge (pe...@stuge.se) just uploaded a new patch set to Gerrit, which you 
can find at http://openocd.zylin.com/894

-- gerrit

commit cde657a49768d840c3ecb664cc229fbb75f95421
Author: Peter Stuge <pe...@stuge.se>
Date:   Thu Oct 4 14:35:18 2012 +0200

    rtos: Rewrite rtos_try_next() for readability
    
    The new code is almost functionally equivalent to the old.
    
    The function now returns 0 instead of -1 if target->rtos has not yet
    been allocated. All call sites only test for success, and in practise
    that is also the only thing that matters; if the function successfully
    iterated to the next RTOS or not.
    
    Other than that the only difference is that the code is now readable.
    
    Change-Id: I3342826f653b5e46c99ad1f58eec26ff10795c33
    Signed-off-by: Peter Stuge <pe...@stuge.se>

diff --git a/src/rtos/rtos.c b/src/rtos/rtos.c
index b23625b..80f0938 100644
--- a/src/rtos/rtos.c
+++ b/src/rtos/rtos.c
@@ -446,28 +446,24 @@ int rtos_generic_stack_read(struct target *target,
 
 int rtos_try_next(struct target *target)
 {
-       int x;
+       struct rtos *os = target->rtos;
+       struct rtos_type *type = rtos_types[0];
 
-       if (target->rtos == NULL)
-               return -1;
-
-       for (x = 0; rtos_types[x]; x++) {
-               if (target->rtos->type == rtos_types[x]) {
-                       /* found */
-                       if (rtos_types[x+1] != NULL) {
-                               target->rtos->type = rtos_types[x+1];
-                               if (target->rtos->symbols != NULL)
-                                       free(target->rtos->symbols);
-                               return 1;
-                       } else {
-                               /* No more rtos types */
-                               return 0;
-                       }
+       if (!os)
+               return 0;
 
-               }
-       }
-       return 0;
+       while (type && os->type != type)
+               type++;
 
+       if (!type || !++type)
+               return 0;
+
+       os->type = type;
+       if (os->symbols) {
+               free(os->symbols);
+               os->symbols = NULL;
+       }
+       return 1;
 }
 
 static void hex_to_str(char *dst, char *hex_src)

-- 

------------------------------------------------------------------------------
Don't let slow site performance ruin your business. Deploy New Relic APM
Deploy New Relic app performance management and know exactly
what is happening inside your Ruby, Python, PHP, Java, and .NET app
Try New Relic at no cost today and get our sweet Data Nerd shirt too!
http://p.sf.net/sfu/newrelic-dev2dev
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to