On 11/10/2020 2:21 PM, Richard Cochran wrote:
> The run_pmc function is used by several of the PMC agent methods, but it
> breaks the pattern of returning zero on success.  However, the user facing
> PMC agent methods will need to conform to the return code convention used
> throughout the stack.
> 
> In order to migrate to proper return codes, this patch replaces the hard
> coded result values with macros so that the interface methods can translate
> them to the required semantics of zero on success.
> 
> Signed-off-by: Richard Cochran <richardcoch...@gmail.com>
> ---
>  pmc_agent.c | 19 +++++++++----------
>  1 file changed, 9 insertions(+), 10 deletions(-)
> 
> diff --git a/pmc_agent.c b/pmc_agent.c
> index 6e9c023..d28f3b6 100644
> --- a/pmc_agent.c
> +++ b/pmc_agent.c
> @@ -93,12 +93,11 @@ static int get_mgt_err_id(struct ptp_message *msg)
>       return mgt->id;
>  }
>  
> -/* Return values:
> - * 1: success
> - * 0: timeout
> - * -1: error reported by the other side
> - * -2: local error, fatal
> - */
> +#define RUN_PMC_OKAY  1
> +#define RUN_PMC_TMO   0
> +#define RUN_PMC_BADMSG       -1
> +#define RUN_PMC_INTR -2
> +

Thoughts on making this an enum instead so that it's even more clear
from the function signatures that this is not an integer return code?
The run_pmc function is static so it would only affect callers in this file.

Either way, this is a marked improvement over leaving the values as raw
numbers.

>  static int run_pmc(struct pmc_agent *node, int timeout, int ds_id,
>                  struct ptp_message **msg)
>  {
> @@ -115,12 +114,12 @@ static int run_pmc(struct pmc_agent *node, int timeout, 
> int ds_id,
>               cnt = poll(pollfd, N_FD, timeout);
>               if (cnt < 0) {
>                       pr_err("poll failed");
> -                     return -2;
> +                     return RUN_PMC_INTR;
>               }
>               if (!cnt) {
>                       /* Request the data set again in the next run. */
>                       node->pmc_ds_requested = 0;
> -                     return 0;
> +                     return RUN_PMC_TMO;
>               }
>  
>               /* Send a new request if there are no pending messages. */
> @@ -154,7 +153,7 @@ static int run_pmc(struct pmc_agent *node, int timeout, 
> int ds_id,
>               res = is_msg_mgt(*msg);
>               if (res < 0 && get_mgt_err_id(*msg) == ds_id) {
>                       node->pmc_ds_requested = 0;
> -                     return -1;
> +                     return RUN_PMC_BADMSG;
>               }
>               if (res <= 0 ||
>                   node->recv_subscribed(node->recv_context, *msg, ds_id) ||
> @@ -164,7 +163,7 @@ static int run_pmc(struct pmc_agent *node, int timeout, 
> int ds_id,
>                       continue;
>               }
>               node->pmc_ds_requested = 0;
> -             return 1;
> +             return RUN_PMC_OKAY;
>       }
>  }
>  
> 


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

Reply via email to