target_request: add target_got_message() that can be used to improve DCC performance
authorØyvind Harboe <oyvind.harboe@zylin.com>
Fri, 14 Oct 2011 12:55:17 +0000 (14:55 +0200)
committerØyvind Harboe <oyvindharboe@gmail.com>
Mon, 17 Oct 2011 12:32:38 +0000 (12:32 +0000)
API change to allow implementing a back-off algorithm for
polling hardware.

Change-Id: I6cbe8b4534c8dfeb8442305171ea96b5481c1f17
Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
Reviewed-on: http://openocd.zylin.com/26
Reviewed-by: Øyvind Harboe <oyvindharboe@gmail.com>
Tested-by: Øyvind Harboe <oyvindharboe@gmail.com>
src/target/target_request.c
src/target/target_request.h

index ec3d48e2603f2f2fe4eaa36eeafaeaef726e79fa..3cdca5e189c4a93159d8691cb25b4e057cc6522a 100644 (file)
 #include "trace.h"
 
 
+static bool got_message = false;
+
+bool target_got_message(void)
+{
+       bool t = got_message;
+       got_message = false;
+       return t;
+}
+
 static int charmsg_mode = 0;
 
 static int target_asciimsg(struct target *target, uint32_t length)
@@ -118,6 +127,9 @@ int target_request(struct target *target, uint32_t request)
 {
        target_req_cmd_t target_req_cmd = request & 0xff;
 
+       /* Record that we got a target message for back-off algorithm */
+       got_message = true;
+
        if (charmsg_mode) {
                target_charmsg(target, target_req_cmd);
                return ERROR_OK;
index e50c425e0f59e872dd62adcfd1bbc1e8d5e4dbf9..740645ed788730da8898960f4e80aa818776a768 100644 (file)
@@ -47,5 +47,12 @@ int target_request(struct target *target, uint32_t request);
 int delete_debug_msg_receiver(struct command_context *cmd_ctx,
                struct target *target);
 int target_request_register_commands(struct command_context *cmd_ctx);
+/**
+ * Read and clear the flag as to whether we got a message.
+ *
+ * This is used to implement the back-off algorithm on
+ * sleeping in idle mode.
+ */
+bool target_got_message(void);
 
 #endif /* TARGET_REQUEST_H */