
This change pulls in an upstream linuxptp fix to initialize the tm_isdst variable. An unitialized tm_isdst variable in ts2phc can result in mktime failing and cause ts2phc to be unable to sync time with a "invalid master time stamp" error. The fault was intermittent based on the random value in the unitialized variable. If it was read as a positive integer, mktime would fail and the symptom would occur. The upstream commit id is: 63fc1ef4fd5e5fc45dd4de3bf27920bb109a4357 Test plan: Pass: Verify package build Pass: Deploy updated ts2phc binary and perform repeated service start/stops. The fault was not reproduced after 20 attempts. Closes-bug: https://bugs.launchpad.net/starlingx/+bug/2055464 Change-Id: I9fb1722c6ab93f6bb9ec6cdc4fbe902a823b3e2e Signed-off-by: Cole Walker <cole.walker@windriver.com>
144 lines
4.7 KiB
Diff
144 lines
4.7 KiB
Diff
From ab9b7dfcc503c21bce09ec4096498bc689c6a9ff Mon Sep 17 00:00:00 2001
|
|
From: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
Date: Mon, 12 Jun 2023 13:59:48 -0300
|
|
Subject: [PATCH 12/57] phc2sys: make PMC functions non-static
|
|
|
|
In preparation of a trivial movement of code to pmc_common.c, remove the
|
|
"static" keyword from the functions that will end up there, since they
|
|
will be still called from phc2sys.c for now.
|
|
|
|
Signed-off-by: Vladimir Oltean <olteanv@gmail.com>
|
|
|
|
[commit 2ccbb14450e1e96168a2604c0e8c96ae5a6a5bf0 upstream]
|
|
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
---
|
|
phc2sys.c | 40 +++++++++++++++++++---------------------
|
|
1 file changed, 19 insertions(+), 21 deletions(-)
|
|
|
|
diff --git a/phc2sys.c b/phc2sys.c
|
|
index 86b9822..d5b8e71 100644
|
|
--- a/phc2sys.c
|
|
+++ b/phc2sys.c
|
|
@@ -137,18 +137,17 @@ struct phc2sys_private {
|
|
|
|
static struct config *phc2sys_config;
|
|
|
|
-static int update_pmc_node(struct pmc_node *node, int subscribe);
|
|
+int update_pmc_node(struct pmc_node *node, int subscribe);
|
|
static int clock_handle_leap(struct phc2sys_private *priv,
|
|
struct clock *clock,
|
|
int64_t offset, uint64_t ts);
|
|
-static int run_pmc_get_utc_offset(struct pmc_node *node,
|
|
- int timeout);
|
|
-static void run_pmc_events(struct pmc_node *node);
|
|
+int run_pmc_get_utc_offset(struct pmc_node *node, int timeout);
|
|
+void run_pmc_events(struct pmc_node *node);
|
|
|
|
static int normalize_state(int state);
|
|
-static int run_pmc_port_properties(struct pmc_node *node,
|
|
- int timeout, unsigned int port,
|
|
- int *state, int *tstamping, char *iface);
|
|
+int run_pmc_port_properties(struct pmc_node *node, int timeout,
|
|
+ unsigned int port, int *state,
|
|
+ int *tstamping, char *iface);
|
|
|
|
static struct servo *servo_add(struct phc2sys_private *priv,
|
|
struct clock *clock)
|
|
@@ -838,13 +837,13 @@ static int is_msg_mgt(struct ptp_message *msg)
|
|
return 0;
|
|
}
|
|
|
|
-static int get_mgt_id(struct ptp_message *msg)
|
|
+int get_mgt_id(struct ptp_message *msg)
|
|
{
|
|
struct management_tlv *mgt = (struct management_tlv *) msg->management.suffix;
|
|
return mgt->id;
|
|
}
|
|
|
|
-static void *get_mgt_data(struct ptp_message *msg)
|
|
+void *get_mgt_data(struct ptp_message *msg)
|
|
{
|
|
struct management_tlv *mgt = (struct management_tlv *) msg->management.suffix;
|
|
return mgt->data;
|
|
@@ -938,9 +937,8 @@ static void send_subscription(struct pmc_node *node)
|
|
pmc_send_set_action(node->pmc, TLV_SUBSCRIBE_EVENTS_NP, &sen, sizeof(sen));
|
|
}
|
|
|
|
-static int init_pmc_node(struct config *cfg, struct pmc_node *node,
|
|
- const char *uds,
|
|
- pmc_node_recv_subscribed_t *recv_subscribed)
|
|
+int init_pmc_node(struct config *cfg, struct pmc_node *node, const char *uds,
|
|
+ pmc_node_recv_subscribed_t *recv_subscribed)
|
|
{
|
|
node->pmc = pmc_create(cfg, TRANS_UDS, uds, 0,
|
|
config_get_int(cfg, NULL, "domainNumber"),
|
|
@@ -1054,7 +1052,7 @@ static int run_pmc_wait_sync(struct pmc_node *node, int timeout)
|
|
}
|
|
}
|
|
|
|
-static int run_pmc_get_utc_offset(struct pmc_node *node, int timeout)
|
|
+int run_pmc_get_utc_offset(struct pmc_node *node, int timeout)
|
|
{
|
|
struct ptp_message *msg;
|
|
int res;
|
|
@@ -1084,7 +1082,7 @@ static int run_pmc_get_utc_offset(struct pmc_node *node, int timeout)
|
|
return 1;
|
|
}
|
|
|
|
-static int run_pmc_get_number_ports(struct pmc_node *node, int timeout)
|
|
+int run_pmc_get_number_ports(struct pmc_node *node, int timeout)
|
|
{
|
|
struct ptp_message *msg;
|
|
int res;
|
|
@@ -1100,7 +1098,7 @@ static int run_pmc_get_number_ports(struct pmc_node *node, int timeout)
|
|
return res;
|
|
}
|
|
|
|
-static int run_pmc_subscribe(struct pmc_node *node, int timeout)
|
|
+int run_pmc_subscribe(struct pmc_node *node, int timeout)
|
|
{
|
|
struct ptp_message *msg;
|
|
int res;
|
|
@@ -1112,16 +1110,16 @@ static int run_pmc_subscribe(struct pmc_node *node, int timeout)
|
|
return 1;
|
|
}
|
|
|
|
-static void run_pmc_events(struct pmc_node *node)
|
|
+void run_pmc_events(struct pmc_node *node)
|
|
{
|
|
struct ptp_message *msg;
|
|
|
|
run_pmc(node, 0, -1, &msg);
|
|
}
|
|
|
|
-static int run_pmc_port_properties(struct pmc_node *node, int timeout,
|
|
- unsigned int port, int *state,
|
|
- int *tstamping, char *iface)
|
|
+int run_pmc_port_properties(struct pmc_node *node, int timeout,
|
|
+ unsigned int port, int *state,
|
|
+ int *tstamping, char *iface)
|
|
{
|
|
struct ptp_message *msg;
|
|
int res, len;
|
|
@@ -1174,7 +1172,7 @@ static int run_pmc_clock_identity(struct pmc_node *node, int timeout)
|
|
return 1;
|
|
}
|
|
|
|
-static void close_pmc_node(struct pmc_node *node)
|
|
+void close_pmc_node(struct pmc_node *node)
|
|
{
|
|
if (!node->pmc)
|
|
return;
|
|
@@ -1262,7 +1260,7 @@ static int auto_init_ports(struct phc2sys_private *priv, int add_rt)
|
|
}
|
|
|
|
/* Returns: -1 in case of error, 0 otherwise */
|
|
-static int update_pmc_node(struct pmc_node *node, int subscribe)
|
|
+int update_pmc_node(struct pmc_node *node, int subscribe)
|
|
{
|
|
struct timespec tp;
|
|
uint64_t ts;
|
|
--
|
|
2.30.2
|
|
|