target: Use proper data types for timer callback 20/4920/3
authorMarc Schink <openocd-dev@marcschink.de>
Fri, 15 Feb 2019 13:31:19 +0000 (14:31 +0100)
committerTomas Vanek <vanekt@fbl.cz>
Fri, 1 Mar 2019 08:31:50 +0000 (08:31 +0000)
Change-Id: I5ca6da767f9e96180c43b179b2c682b1b7c98563
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/4920
Tested-by: jenkins
Reviewed-by: Tomas Vanek <vanekt@fbl.cz>
src/target/target.c
src/target/target.h

index 693eb519eb13aa1ec4c7f24ad16ad906c4084eaa..a3230d2486fbccac84221cd2f6383669b9625400 100644 (file)
@@ -1460,7 +1460,8 @@ int target_register_trace_callback(int (*callback)(struct target *target,
        return ERROR_OK;
 }
 
        return ERROR_OK;
 }
 
-int target_register_timer_callback(int (*callback)(void *priv), int time_ms, int periodic, void *priv)
+int target_register_timer_callback(int (*callback)(void *priv),
+               unsigned int time_ms, enum target_timer_type type, void *priv)
 {
        struct target_timer_callback **callbacks_p = &target_timer_callbacks;
 
 {
        struct target_timer_callback **callbacks_p = &target_timer_callbacks;
 
@@ -1475,7 +1476,7 @@ int target_register_timer_callback(int (*callback)(void *priv), int time_ms, int
 
        (*callbacks_p) = malloc(sizeof(struct target_timer_callback));
        (*callbacks_p)->callback = callback;
 
        (*callbacks_p) = malloc(sizeof(struct target_timer_callback));
        (*callbacks_p)->callback = callback;
-       (*callbacks_p)->periodic = periodic;
+       (*callbacks_p)->type = type;
        (*callbacks_p)->time_ms = time_ms;
        (*callbacks_p)->removed = false;
 
        (*callbacks_p)->time_ms = time_ms;
        (*callbacks_p)->removed = false;
 
@@ -1625,7 +1626,7 @@ static int target_call_timer_callback(struct target_timer_callback *cb,
 {
        cb->callback(cb->priv);
 
 {
        cb->callback(cb->priv);
 
-       if (cb->periodic)
+       if (cb->type == TARGET_TIMER_TYPE_PERIODIC)
                return target_timer_callback_periodic_restart(cb, now);
 
        return target_unregister_timer_callback(cb->callback, cb->priv);
                return target_timer_callback_periodic_restart(cb, now);
 
        return target_unregister_timer_callback(cb->callback, cb->priv);
@@ -1659,7 +1660,7 @@ static int target_call_timer_callbacks_check_time(int checktime)
                }
 
                bool call_it = (*callback)->callback &&
                }
 
                bool call_it = (*callback)->callback &&
-                       ((!checktime && (*callback)->periodic) ||
+                       ((!checktime && (*callback)->type == TARGET_TIMER_TYPE_PERIODIC) ||
                         timeval_compare(&now, &(*callback)->when) >= 0);
 
                if (call_it)
                         timeval_compare(&now, &(*callback)->when) >= 0);
 
                if (call_it)
index 983f450ac0a69b80d4c6b6b4d64c255278d7fd6d..36b131aa9f401e135edecaea30c516b8fbb13450 100644 (file)
@@ -314,10 +314,15 @@ struct target_trace_callback {
        int (*callback)(struct target *target, size_t len, uint8_t *data, void *priv);
 };
 
        int (*callback)(struct target *target, size_t len, uint8_t *data, void *priv);
 };
 
+enum target_timer_type {
+       TARGET_TIMER_TYPE_ONESHOT,
+       TARGET_TIMER_TYPE_PERIODIC
+};
+
 struct target_timer_callback {
        int (*callback)(void *priv);
 struct target_timer_callback {
        int (*callback)(void *priv);
-       int time_ms;
-       int periodic;
+       unsigned int time_ms;
+       enum target_timer_type type;
        bool removed;
        struct timeval when;
        void *priv;
        bool removed;
        struct timeval when;
        void *priv;
@@ -385,7 +390,7 @@ int target_call_trace_callbacks(struct target *target, size_t len, uint8_t *data
  * or much more rarely than specified
  */
 int target_register_timer_callback(int (*callback)(void *priv),
  * or much more rarely than specified
  */
 int target_register_timer_callback(int (*callback)(void *priv),
-               int time_ms, int periodic, void *priv);
+               unsigned int time_ms, enum target_timer_type type, void *priv);
 int target_unregister_timer_callback(int (*callback)(void *priv), void *priv);
 int target_call_timer_callbacks(void);
 /**
 int target_unregister_timer_callback(int (*callback)(void *priv), void *priv);
 int target_call_timer_callbacks(void);
 /**

Linking to existing account procedure

If you already have an account and want to add another login method you MUST first sign in with your existing account and then change URL to read https://review.openocd.org/login/?link to get to this page again but this time it'll work for linking. Thank you.

SSH host keys fingerprints

1024 SHA256:YKx8b7u5ZWdcbp7/4AeXNaqElP49m6QrwfXaqQGJAOk gerrit-code-review@openocd.zylin.com (DSA)
384 SHA256:jHIbSQa4REvwCFG4cq5LBlBLxmxSqelQPem/EXIrxjk gerrit-code-review@openocd.org (ECDSA)
521 SHA256:UAOPYkU9Fjtcao0Ul/Rrlnj/OsQvt+pgdYSZ4jOYdgs gerrit-code-review@openocd.org (ECDSA)
256 SHA256:A13M5QlnozFOvTllybRZH6vm7iSt0XLxbA48yfc2yfY gerrit-code-review@openocd.org (ECDSA)
256 SHA256:spYMBqEYoAOtK7yZBrcwE8ZpYt6b68Cfh9yEVetvbXg gerrit-code-review@openocd.org (ED25519)
+--[ED25519 256]--+
|=..              |
|+o..   .         |
|*.o   . .        |
|+B . . .         |
|Bo. = o S        |
|Oo.+ + =         |
|oB=.* = . o      |
| =+=.+   + E     |
|. .=o   . o      |
+----[SHA256]-----+
2048 SHA256:0Onrb7/PHjpo6iVZ7xQX2riKN83FJ3KGU0TvI0TaFG4 gerrit-code-review@openocd.zylin.com (RSA)