sched/wdog: Remove flags field from wdog_s to save memory

since WDOG_ISACTIVE can check func field instead

Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I21d7f9cfe6195c8ccb6cc5925ff66f3c89822f9d
This commit is contained in:
Xiang Xiao
2021-06-21 18:23:09 +08:00
committed by xiaoxiang
parent 7b93d0c99f
commit 87709b3a7c
3 changed files with 7 additions and 16 deletions
+1 -10
View File
@@ -34,15 +34,7 @@
* Pre-processor Definitions
****************************************************************************/
/* Watchdog Definitions *****************************************************/
/* Flag bits for the flags field of struct wdog_s */
#define WDOGF_ACTIVE (1 << 0) /* Bit 0: 1=Watchdog is actively timing */
#define WDOG_SETACTIVE(w) do { (w)->flags |= WDOGF_ACTIVE; } while (0)
#define WDOG_CLRACTIVE(w) do { (w)->flags &= ~WDOGF_ACTIVE; } while (0)
#define WDOG_ISACTIVE(w) (((w)->flags & WDOGF_ACTIVE) != 0)
#define WDOG_ISACTIVE(w) ((w)->func != NULL)
/****************************************************************************
* Public Type Declarations
@@ -78,7 +70,6 @@ struct wdog_s
FAR void *picbase; /* PIC base address */
#endif
int lag; /* Timer associated with the delay */
uint8_t flags; /* See WDOGF_* definitions above */
wdparm_t arg; /* Callback argument */
};
+1 -2
View File
@@ -126,8 +126,7 @@ int wd_cancel(FAR struct wdog_s *wdog)
/* Mark the watchdog inactive */
wdog->next = NULL;
WDOG_CLRACTIVE(wdog);
wdog->func = NULL;
/* Return success */
+5 -4
View File
@@ -92,6 +92,7 @@
static inline void wd_expiration(void)
{
FAR struct wdog_s *wdog;
wdentry_t func;
/* Check if the watchdog at the head of the list is ready to run */
@@ -119,12 +120,13 @@ static inline void wd_expiration(void)
/* Indicate that the watchdog is no longer active. */
WDOG_CLRACTIVE(wdog);
func = wdog->func;
wdog->func = NULL;
/* Execute the watchdog function */
up_setpicbase(wdog->picbase);
CALL_FUNC(wdog->func, wdog->arg);
CALL_FUNC(func, wdog->arg);
}
}
}
@@ -180,7 +182,7 @@ int wd_start(FAR struct wdog_s *wdog, int32_t delay,
/* Verify the wdog and setup parameters */
if (wdog == NULL || delay < 0)
if (wdog == NULL || wdentry == NULL || delay < 0)
{
return -EINVAL;
}
@@ -317,7 +319,6 @@ int wd_start(FAR struct wdog_s *wdog, int32_t delay,
/* Put the lag into the watchdog structure and mark it as active. */
wdog->lag = delay;
WDOG_SETACTIVE(wdog);
#ifdef CONFIG_SCHED_TICKLESS
/* Resume the interval timer that will generate the next interval event.