]> git.sur5r.net Git - openocd/blobdiff - src/target/target.h
Edgar Grimberg sharpened the str912 target script.
[openocd] / src / target / target.h
index 8d70e77ebc9f3ac1cb2263dd742676804e74bfca..fa83949b3b77652cbcd03e14e52ad1d4a7d44c49 100644 (file)
@@ -127,7 +127,15 @@ typedef struct target_type_s
        int (*soft_reset_halt)(struct target_s *target);
        int (*prepare_reset_halt)(struct target_s *target);
        
-       /* target register access for gdb */
+       /* target register access for gdb.
+        * 
+        * Danger! this function will succeed even if the target is running
+        * and return a register list with dummy values.
+        * 
+        * The reason is that GDB connection will fail without a valid register
+        * list, however it is after GDB is connected that monitor commands can
+        * be run to properly initialize the target
+        */
        int (*get_gdb_reg_list)(struct target_s *target, struct reg_s **reg_list[], int *reg_list_size);
        
        /* target memory access 
@@ -231,9 +239,16 @@ extern int target_register_event_callback(int (*callback)(struct target_s *targe
 extern int target_unregister_event_callback(int (*callback)(struct target_s *target, enum target_event event, void *priv), void *priv);
 extern int target_call_event_callbacks(target_t *target, enum target_event event);
 
+/* The period is very approximate, the callback can happen much more often 
+ * or much more rarely than specified
+ */
 extern int target_register_timer_callback(int (*callback)(void *priv), int time_ms, int periodic, void *priv);
 extern int target_unregister_timer_callback(int (*callback)(void *priv), void *priv);
 extern int target_call_timer_callbacks();
+/* invoke this to ensure that e.g. polling timer callbacks happen before
+ * a syncrhonous command completes.
+ */
+extern int target_call_timer_callbacks_now();
 
 extern target_t* get_current_target(struct command_context_s *cmd_ctx);
 extern int get_num_by_target(target_t *query_target);