poke-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] Simplify the implementation of ios_mask functions.


From: Jose E. Marchesi
Subject: Re: [PATCH] Simplify the implementation of ios_mask functions.
Date: Tue, 24 Dec 2019 11:22:54 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux)

    
    It looks good to me. Thanks! The patch will still need to be reviewer
    by a global reviewer though.
    
OK for master.
Thank you both!
    
    
    On 12/21/19 6:16 PM, John Darrington wrote:
    > ---
    >   ChangeLog |  5 +++++
    >   src/ios.c | 72 
+++++++++------------------------------------------------------
    >   2 files changed, 15 insertions(+), 62 deletions(-)
    >
    > diff --git a/ChangeLog b/ChangeLog
    > index 6640c2b..7fd81a1 100644
    > --- a/ChangeLog
    > +++ b/ChangeLog
    > @@ -5,6 +5,11 @@
    >           * src/pk-cmd.c (pk_cmd_exec_1): fix memory leak of filename
    >           * src/pk-cmd.c (null_cmd): properly initialize struct
    >   +2019-12-15 John Darrington <address@hidden>
    > +
    > + *src/ios.c (ios_mask_last_byte) simplify
    > + *src/ios.c (ios_mask_first_byte) simplify
    > +
    >   2019-12-16  Jose E. Marchesi  <address@hidden>
    >           * src/pkl-asm.pks (atrim): The mka instruction expects the
    > type of
    > diff --git a/src/ios.c b/src/ios.c
    > index a96e349..757ada3 100644
    > --- a/src/ios.c
    > +++ b/src/ios.c
    > @@ -23,6 +23,7 @@
    >   #include <unistd.h>
    >   #include <stdio.h>
    >   #include <assert.h>
    > +#include <limits.h>
    >   #define _(str) gettext (str)
    >   #include <streq.h>
    >   @@ -310,72 +311,19 @@ ios_map (ios_map_fn cb, void *data)
    >       (*cb) (io, data);
    >   }
    >   -inline static void
    > -ios_mask_first_byte(uint64_t *byte, int significant_bits)
    > +/* Set all except the lowest SIGNIFICANT_BITS of VALUE to zero.  */
    > +static inline void
    > +ios_mask_first_byte (uint64_t *value, int significant_bits)
    >   {
    > -  switch (significant_bits)
    > -    {
    > -    case 1:
    > -      *byte &= (char) 0x01;
    > -      return;
    > -    case 2:
    > -      *byte &= (char) 0x03;
    > -      return;
    > -    case 3:
    > -      *byte &= (char) 0x07;
    > -      return;
    > -    case 4:
    > -      *byte &= (char) 0x0f;
    > -      return;
    > -    case 5:
    > -      *byte &= (char) 0x1f;
    > -      return;
    > -    case 6:
    > -      *byte &= (char) 0x3f;
    > -      return;
    > -    case 7:
    > -      *byte &= (char) 0x7f;
    > -      return;
    > -    case 8:
    > -      return;
    > -    default:
    > -      assert (0);
    > -      return;
    > -    }
    > +  *value &= 0xFFU >> (CHAR_BIT - significant_bits);
    >   }
    >   -inline static void
    > -ios_mask_last_byte(uint64_t *byte, int significant_bits)
    > +/* Set all except the highest SIGNIFICANT_BITS of the lowest
    > +   significant byte of VALUE to zero.  */
    > +static inline void
    > +ios_mask_last_byte (uint64_t *value, int significant_bits)
    >   {
    > -  switch (significant_bits)
    > -    {
    > -    case 1:
    > -      *byte &= (char) 0x80;
    > -      return;
    > -    case 2:
    > -      *byte &= (char) 0xc0;
    > -      return;
    > -    case 3:
    > -      *byte &= (char) 0xe0;
    > -      return;
    > -    case 4:
    > -      *byte &= (char) 0xf0;
    > -      return;
    > -    case 5:
    > -      *byte &= (char) 0xf8;
    > -      return;
    > -    case 6:
    > -      *byte &= (char) 0xfc;
    > -      return;
    > -    case 7:
    > -      *byte &= (char) 0xfe;
    > -      return;
    > -    case 8:
    > -      return;
    > -    default:
    > -      assert (0);
    > -      return;
    > -    }
    > +  *value &= 0xFFU << (CHAR_BIT - significant_bits);
    >   }
    >     static inline int



reply via email to

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