Re: [Linuxptp-devel] [PATCH v4 06/11] Prepare clock based storage of up to four time zones.
PTP IEEE 1588 stack for Linux
Brought to you by:
rcochran
|
From: Geva, E. <ere...@si...> - 2023-02-01 19:13:00
|
On Sat, 2023-01-28 at 14:43 -0800, Richard Cochran wrote:
> Signed-off-by: Richard Cochran <ric...@gm...>
> ---
> clock.c | 19 ++++++++++++++++---
> tz.h | 26 ++++++++++++++++++++++++++
> 2 files changed, 42 insertions(+), 3 deletions(-)
> create mode 100644 tz.h
>
> diff --git a/clock.c b/clock.c
> index 134c7c3..767599b 100644
> --- a/clock.c
> +++ b/clock.c
> @@ -42,6 +42,7 @@
> #include "rtnl.h"
> #include "tlv.h"
> #include "tsproc.h"
> +#include "tz.h"
> #include "uds.h"
> #include "util.h"
>
> @@ -79,6 +80,15 @@ struct clock_subscriber {
> time_t expiration;
> };
>
> +struct time_zone {
> + bool enabled;
> + int32_t current_offset;
> + int32_t jump_seconds;
> + uint16_t next_jump_msb;
> + uint32_t next_jump_lsb;
> + struct static_ptp_text display_name;
> +};
> +
> struct clock {
> enum clock_type type;
> struct config *config;
> @@ -137,6 +147,7 @@ struct clock {
> struct monitor *slave_event_monitor;
> int step_window_counter;
> int step_window;
> + struct time_zone tz[MAX_TIME_ZONES];
> };
>
> struct clock the_clock;
> @@ -894,19 +905,17 @@ int clock_required_modes(struct clock *c)
> struct clock *clock_create(enum clock_type type, struct config
> *config,
> const char *phc_device)
> {
> + int conf_phc_index, i, max_adj = 0, phc_index, required_modes
> = 0, sfl, sw_ts;
> enum servo_type servo = config_get_int(config, NULL,
> "clock_servo");
> char ts_label[IF_NAMESIZE], phc[32], *tmp;
> enum timestamp_type timestamping;
> - int phc_index, conf_phc_index, required_modes = 0;
> struct clock *c = &the_clock;
> - int max_adj = 0, sw_ts;
> const char *uds_ifname;
> double fadj = 0.0;
> struct port *p;
> unsigned char oui[OUI_LEN];
> struct interface *iface;
> struct timespec ts;
> - int sfl;
>
> clock_gettime(CLOCK_REALTIME, &ts);
> srandom(ts.tv_sec ^ ts.tv_nsec);
> @@ -1201,6 +1210,10 @@ struct clock *clock_create(enum clock_type
> type, struct config *config,
> c->dad.pds.observedParentClockPhaseChangeRate =
> 0x7fffffff;
> c->dad.ptl = c->ptl;
>
> + for (i = 0; i < MAX_TIME_ZONES; i++) {
> + c->tz[i].display_name.max_symbols =
> MAX_TZ_DISPLAY_NAME;
> + }
> +
> clock_sync_interval(c, 0);
>
> LIST_INIT(&c->subscribers);
> diff --git a/tz.h b/tz.h
> new file mode 100644
> index 0000000..986f976
> --- /dev/null
> +++ b/tz.h
> @@ -0,0 +1,26 @@
> +/**
> + * @file tz.h
> + * @brief Implements time zone constants.
> + * @note Copyright (C) 2021 Richard Cochran <
> ric...@gm...>
> + *
> + * This program is free software; you can redistribute it and/or
> modify
> + * it under the terms of the GNU General Public License as published
> by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> along
> + * with this program; if not, write to the Free Software Foundation,
> Inc.,
> + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
> + */
Perhaps we can use SPDX, like the Linux kernel do?
https://www.kernel.org/doc/html/latest/process/license-rules.html
https://spdx.dev/
> +#ifndef HAVE_TZ_H
> +#define HAVE_TZ_H
> +
> +#define MAX_TZ_DISPLAY_NAME 10
> +#define MAX_TIME_ZONES 4
> +
> +#endif
Erez
|