poke-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v3] libpoke,poke,testsuite: Make error handling of public API


From: Jose E. Marchesi
Subject: Re: [PATCH v3] libpoke,poke,testsuite: Make error handling of public API consistent
Date: Thu, 12 Nov 2020 09:59:02 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

>> Hi Mohammad.
>> 
>> >  pk_ios_open (pk_compiler pkc,
>> >               const char *handler, uint64_t flags, int set_cur_p)
>> >  {
>> > +  int ret;
>> > +
>> >    /* XXX use pkc */
>> > -  return ios_open (handler, flags, set_cur_p);
>> > +  if ((ret = ios_open (handler, flags, set_cur_p)) >= 0)
>> > +    return ret;
>> > +
>> > +  switch (ret)
>> > +    {
>> > +    case IOS_ERROR: pkc->status = PK_ERROR; break;
>> > +    case IOS_ENOMEM: pkc->status = PK_ENOMEM; break;
>> > +    case IOS_EOF: pkc->status = PK_EEOF; break;
>> > +    case IOS_EINVAL:
>> > +    case IOS_EOPEN:
>> > +      pkc->status = PK_EINVAL;
>> > +      break;
>> > +    default:
>> > +      pkc->status = PK_ERROR;
>> > +    }
>> > +  return PK_IOS_INVAL;
>> >  }
>> 
>> Shouldn't that be:
>> 
>> case IOS_ERROR: PK_RETURN (PK_ERROR); break;
>> case IOS_ENOMEM: PK_RETURN (PK_ENOMEM); break;
>> ...
>> 
>> ?
>>
>
>
> No. The function should return `PK_IOS_INVAL` to indicates that
>   "this is an invalid ios id; for more info check the pk_errno()"

Ok.

>> > +/* Error code of last error.
>> 
>> Of last operation.
>> 
>> > +
>> > +   If PKC is not NULL, return the status of the last API function 
>> > invocation.
>> > +
>> > +   One of the following values:
>> > +     PK_OK, PK_ERROR, PK_ENOMEM, PK_EEOF, PK_EINVAL
>> > +   Otherwise, return PK_ERROR.  */
>> 
>> I would say something like "This function returns the status
>> corresponding to the given PK compiler.  This status is updated by the
>> last call performed in the API, and is one of the PK_* values defined
>> above."
>
>
> Thanks. Writing a good comment is hard :)
>
>
>> 
>> There is no need to enumerate the possible values that are returned.
>> Just refer to the list of defines.
>> 
>> > @@ -268,9 +280,10 @@ uint64_t pk_ios_size (pk_ios ios) LIBPOKE_API;
>> >  uint64_t pk_ios_flags (pk_ios ios) LIBPOKE_API;
>> >  
>> >  /* Open an IO space using a handler and if set_cur is set to 1, make
>> > -   the newly opened IO space the current space.  Return PK_IOS_ERROR
>> > +   the newly opened IO space the current space.  Return PK_IOS_INVAL
>> >     if there is an error opening the space (such as an unrecognized
>> > -   handler), the ID of the new IOS otherwise.
>> > +   handler). Otherwise, the ID of the new IOS.
>> > +   The error code can be retrieved by PK_ERRNO function.
>> 
>> Please refer to pk_errno instead of PK_ERRNO in this and similar
>> contexts.
>
>
> OK.
>
>
>> 
>> >
>> >     FLAGS is a bitmask.  The least significant 32 bits are reserved for
>> >     common flags (the PK_IOS_F_* above).  The most significant 32 bits
>> > @@ -279,8 +292,7 @@ uint64_t pk_ios_flags (pk_ios ios) LIBPOKE_API;
>> >     If no PK_IOS_F_READ or PK_IOS_F_WRITE flags are specified, then the
>> >     IOS will be opened in whatever mode makes more sense.  */
>> >  
>> > -#define PK_IOS_OK     0
>> > -#define PK_IOS_ERROR -1
>> > +#define PK_IOS_INVAL (-1)
>> 
>> Please add a comment documenting that PK_IOS_INVAL represents an invalid
>> IO space identifier.  I would really name it PK_IOS_NOID.
>
> OK. I'll change it to `PK_IOS_NOID`.

Thanks.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]