On 11/10/2020 2:21 PM, Richard Cochran wrote:
> This patch renames the function to have the module prefix and corrects the
> return code semantics.
> 
> Signed-off-by: Richard Cochran <richardcoch...@gmail.com>

This looks good to me.

Reviewed-by: Jacob Keller <jacob.e.kel...@intel.com>

> ---
>  phc2sys.c   |  4 ++--
>  pmc_agent.c | 48 +++++++++++++++++++++++++++++++++++-------------
>  pmc_agent.h |  9 ++++++++-
>  3 files changed, 45 insertions(+), 16 deletions(-)
> 
> diff --git a/phc2sys.c b/phc2sys.c
> index 7b488ba..d758aca 100644
> --- a/phc2sys.c
> +++ b/phc2sys.c
> @@ -864,8 +864,8 @@ static int auto_init_ports(struct phc2sys_private *priv, 
> int add_rt)
>               return -1;
>       }
>  
> -     res = run_pmc_subscribe(priv->node, 1000);
> -     if (res <= 0) {
> +     res = pmc_agent_subscribe(priv->node, 1000);
> +     if (res) {
>               pr_err("failed to subscribe");
>               return -1;
>       }
> diff --git a/pmc_agent.c b/pmc_agent.c
> index d28f3b6..714c5c5 100644
> --- a/pmc_agent.c
> +++ b/pmc_agent.c
> @@ -17,6 +17,7 @@
>   * with this program; if not, write to the Free Software Foundation, Inc.,
>   * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
>   */
> +#include <errno.h>
>  #include <net/if.h>
>  #include <poll.h>
>  #include <stdlib.h>
> @@ -98,6 +99,26 @@ static int get_mgt_err_id(struct ptp_message *msg)
>  #define RUN_PMC_BADMSG       -1
>  #define RUN_PMC_INTR -2
>  
> +static bool is_run_pmc_error(int code)
> +{
> +     return code != RUN_PMC_OKAY;
> +}
> +
> +static int run_pmc_err2errno(int code)
> +{
> +     switch (code) {
> +     case RUN_PMC_TMO:
> +             return -ETIMEDOUT;
> +     case RUN_PMC_BADMSG:
> +             return -EBADMSG;
> +     case RUN_PMC_INTR:
> +             return -EINTR;
> +     case RUN_PMC_OKAY:
> +     default:
> +             return 0;
> +     }
> +}
> +
>  static int run_pmc(struct pmc_agent *node, int timeout, int ds_id,
>                  struct ptp_message **msg)
>  {
> @@ -239,18 +260,6 @@ int run_pmc_get_number_ports(struct pmc_agent *node, int 
> timeout)
>       return res;
>  }
>  
> -int run_pmc_subscribe(struct pmc_agent *node, int timeout)
> -{
> -     struct ptp_message *msg;
> -     int res;
> -
> -     res = run_pmc(node, timeout, TLV_SUBSCRIBE_EVENTS_NP, &msg);
> -     if (res <= 0)
> -             return res;
> -     msg_put(msg);
> -     return 1;
> -}
> -
>  void run_pmc_events(struct pmc_agent *node)
>  {
>       struct ptp_message *msg;
> @@ -329,7 +338,7 @@ int update_pmc_node(struct pmc_agent *node, int subscribe)
>           !(ts > node->pmc_last_update &&
>             ts - node->pmc_last_update < PMC_UPDATE_INTERVAL)) {
>               if (subscribe)
> -                     run_pmc_subscribe(node, 0);
> +                     pmc_agent_subscribe(node, 0);
>               if (run_pmc_get_utc_offset(node, 0) > 0)
>                       node->pmc_last_update = ts;
>       }
> @@ -382,6 +391,19 @@ void pmc_agent_set_sync_offset(struct pmc_agent *agent, 
> int offset)
>       agent->sync_offset = offset;
>  }
>  
> +int pmc_agent_subscribe(struct pmc_agent *node, int timeout)
> +{
> +     struct ptp_message *msg;
> +     int res;
> +
> +     res = run_pmc(node, timeout, TLV_SUBSCRIBE_EVENTS_NP, &msg);
> +     if (is_run_pmc_error(res)) {
> +             return run_pmc_err2errno(res);
> +     }
> +     msg_put(msg);
> +     return 0;
> +}
> +
>  bool pmc_agent_utc_offset_traceable(struct pmc_agent *agent)
>  {
>       return agent->utc_offset_traceable;
> diff --git a/pmc_agent.h b/pmc_agent.h
> index f3a26fe..551c4a5 100644
> --- a/pmc_agent.h
> +++ b/pmc_agent.h
> @@ -34,7 +34,6 @@ typedef int pmc_node_recv_subscribed_t(void *context, 
> struct ptp_message *msg,
>  int init_pmc_node(struct config *cfg, struct pmc_agent *agent, const char 
> *uds,
>                 pmc_node_recv_subscribed_t *recv_subscribed, void *context);
>  int update_pmc_node(struct pmc_agent *agent, int subscribe);
> -int run_pmc_subscribe(struct pmc_agent *agent, int timeout);
>  int run_pmc_clock_identity(struct pmc_agent *agent, int timeout);
>  int run_pmc_wait_sync(struct pmc_agent *agent, int timeout);
>  int run_pmc_get_number_ports(struct pmc_agent *agent, int timeout);
> @@ -78,6 +77,14 @@ int pmc_agent_get_sync_offset(struct pmc_agent *agent);
>   */
>  void pmc_agent_set_sync_offset(struct pmc_agent *agent, int offset);
>  
> +/**
> + * Subscribes to push notifications of changes in port state.
> + * @param agent  Pointer to a PMC instance obtained via @ref 
> pmc_agent_create().
> + * @param timeout  Transmit timeout in milliseconds.
> + * @return         Zero on success, negative error code otherwise.
> + */
> +int pmc_agent_subscribe(struct pmc_agent *agent, int timeout);
> +
>  /**
>   * Tests whether the current UTC offset is traceable.
>   * @param agent  Pointer to a PMC instance obtained via @ref 
> pmc_agent_create().
> 


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

Reply via email to