Move the measurements and updates of clocks from do_loop() to separate
function.

Signed-off-by: Miroslav Lichvar <mlich...@redhat.com>
---
 phc2sys.c | 100 +++++++++++++++++++++++++++++-------------------------
 1 file changed, 54 insertions(+), 46 deletions(-)

diff --git a/phc2sys.c b/phc2sys.c
index d0f5adb..c1a1c6c 100644
--- a/phc2sys.c
+++ b/phc2sys.c
@@ -703,14 +703,63 @@ static int update_needed(struct clock *c)
        return 0;
 }
 
-static int do_loop(struct domain *domain)
+static int update_domain_clocks(struct domain *domain)
 {
-       struct timespec interval;
+       int64_t offset, delay;
        struct clock *clock;
        uint64_t ts;
-       int64_t offset, delay;
        int err;
 
+       LIST_FOREACH(clock, &domain->dst_clocks, dst_list) {
+               if (!update_needed(clock))
+                       continue;
+
+               /* don't try to synchronize the clock to itself */
+               if (clock->clkid == domain->src_clock->clkid ||
+                   (clock->phc_index >= 0 &&
+                    clock->phc_index == domain->src_clock->phc_index) ||
+                   !strcmp(clock->device, domain->src_clock->device))
+                       continue;
+
+               if (clock->clkid == CLOCK_REALTIME &&
+                   domain->src_clock->sysoff_method >= 0) {
+                       /* use sysoff */
+                       err = 
sysoff_measure(CLOCKID_TO_FD(domain->src_clock->clkid),
+                                            domain->src_clock->sysoff_method,
+                                            domain->phc_readings,
+                                            &offset, &ts, &delay);
+               } else if (domain->src_clock->clkid == CLOCK_REALTIME &&
+                          clock->sysoff_method >= 0) {
+                       /* use reversed sysoff */
+                       err = sysoff_measure(CLOCKID_TO_FD(clock->clkid),
+                                            clock->sysoff_method,
+                                            domain->phc_readings,
+                                            &offset, &ts, &delay);
+                       if (!err) {
+                               offset = -offset;
+                               ts += offset;
+                       }
+               } else {
+                       /* use phc */
+                       err = clockadj_compare(domain->src_clock->clkid,
+                                              clock->clkid,
+                                              domain->phc_readings,
+                                              &offset, &ts, &delay);
+               }
+               if (err == -EBUSY)
+                       continue;
+               if (err)
+                       return -1;
+               update_clock(domain, clock, offset, ts, delay);
+       }
+
+       return 0;
+}
+
+static int do_loop(struct domain *domain)
+{
+       struct timespec interval;
+
        interval.tv_sec = domain->phc_interval;
        interval.tv_nsec = (domain->phc_interval - interval.tv_sec) * 1e9;
 
@@ -731,49 +780,8 @@ static int do_loop(struct domain *domain)
                }
                if (!domain->src_clock)
                        continue;
-
-               LIST_FOREACH(clock, &domain->dst_clocks, dst_list) {
-                       if (!update_needed(clock))
-                               continue;
-
-                       /* don't try to synchronize the clock to itself */
-                       if (clock->clkid == domain->src_clock->clkid ||
-                           (clock->phc_index >= 0 &&
-                            clock->phc_index == domain->src_clock->phc_index) 
||
-                           !strcmp(clock->device, domain->src_clock->device))
-                               continue;
-
-                       if (clock->clkid == CLOCK_REALTIME &&
-                           domain->src_clock->sysoff_method >= 0) {
-                               /* use sysoff */
-                               err = 
sysoff_measure(CLOCKID_TO_FD(domain->src_clock->clkid),
-                                                    
domain->src_clock->sysoff_method,
-                                                    domain->phc_readings,
-                                                    &offset, &ts, &delay);
-                       } else if (domain->src_clock->clkid == CLOCK_REALTIME &&
-                                  clock->sysoff_method >= 0) {
-                               /* use reversed sysoff */
-                               err = 
sysoff_measure(CLOCKID_TO_FD(clock->clkid),
-                                                    clock->sysoff_method,
-                                                    domain->phc_readings,
-                                                    &offset, &ts, &delay);
-                               if (!err) {
-                                       offset = -offset;
-                                       ts += offset;
-                               }
-                       } else {
-                               /* use phc */
-                               err = clockadj_compare(domain->src_clock->clkid,
-                                                      clock->clkid,
-                                                      domain->phc_readings,
-                                                      &offset, &ts, &delay);
-                       }
-                       if (err == -EBUSY)
-                               continue;
-                       if (err)
-                               return -1;
-                       update_clock(domain, clock, offset, ts, delay);
-               }
+               if (update_domain_clocks(domain))
+                       return -1;
        }
        return 0;
 }
-- 
2.40.1



_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to