When pm timer expires, the collected data should be stored in recordlist.

Signed-off-by: Anders Selhammer <anders.selham...@est.tech>
---
 clock.c | 28 +++++++++++++++++++++++++++-
 1 file changed, 27 insertions(+), 1 deletion(-)

diff --git a/clock.c b/clock.c
index 7e92958..6575130 100644
--- a/clock.c
+++ b/clock.c
@@ -127,6 +127,7 @@ struct clock {
        int performance_monitoring;
        int pm_fd;
        struct pm_clock_stats pm_stats_record;
+       struct pm_clock_recordlist pm_recordlist;
 };
 
 struct clock the_clock;
@@ -170,6 +171,30 @@ static void clock_set_pmtime(struct clock *c)
        }
 }
 
+static void clock_handle_pm_err(struct clock *c)
+{
+       clock_clr_tmo(c->pm_fd);
+       pm_free_clock_recordlist(&c->pm_recordlist);
+       c->performance_monitoring = 0;
+}
+
+static void clock_pm_event(struct clock *c)
+{
+       clock_set_pm_tmo(c);
+
+       if (pm_update_clock_stats_recordlist(&c->pm_stats_record,
+                                            &c->pm_recordlist)) {
+               pr_err("update of pm recordlist for clock failed");
+               goto err;
+       }
+
+       clock_set_pmtime(c);
+       return;
+err:
+       clock_handle_pm_err(c);
+       return;
+}
+
 static void remove_subscriber(struct clock_subscriber *s)
 {
        LIST_REMOVE(s, list);
@@ -314,6 +339,7 @@ void clock_destroy(struct clock *c)
        stats_destroy(c->stats.freq);
        stats_destroy(c->stats.delay);
        pm_destroy_clock_stats(&c->pm_stats_record);
+       pm_free_clock_recordlist(&c->pm_recordlist);
        if (c->sanity_check) {
                clockcheck_destroy(c->sanity_check);
        }
@@ -1575,7 +1601,7 @@ int clock_poll(struct clock *c)
 
        /* Check the pm timer. */
        if (cur[0].revents & (POLLIN|POLLPRI)) {
-               ;
+               clock_pm_event(c);
        }
 
        if (c->sde) {
-- 
1.8.3.1


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to