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