On Tue, 11 May 2021 13:43:36 +0200 David Hildenbrand <david@xxxxxxxxxx> wrote: > On 10.05.21 17:00, Janosch Frank wrote: > > Lets grab more of the feature bits from SCLP read info so we can use > > them in the cpumodel tests. > > > > Signed-off-by: Janosch Frank <frankja@xxxxxxxxxxxxx> > > Reviewed-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> > > --- > > lib/s390x/sclp.c | 20 ++++++++++++++++++++ > > lib/s390x/sclp.h | 38 +++++++++++++++++++++++++++++++++++--- > > 2 files changed, 55 insertions(+), 3 deletions(-) > > > > diff --git a/lib/s390x/sclp.c b/lib/s390x/sclp.c > > index f11c2035..f25cfdb2 100644 > > --- a/lib/s390x/sclp.c > > +++ b/lib/s390x/sclp.c > > @@ -129,6 +129,13 @@ CPUEntry *sclp_get_cpu_entries(void) > > return (CPUEntry *)(_read_info + read_info->offset_cpu); > > } > > > > +static bool sclp_feat_check(int byte, int mask) > > +{ > > + uint8_t *rib = (uint8_t *)read_info; > > + > > + return !!(rib[byte] & mask); > > +} > > Instead of a mask, I'd just check for bit (offset) numbers within the > byte. > > static bool sclp_feat_check(int byte, int bit) > { > uint8_t *rib = (uint8_t *)read_info; > > return !!(rib[byte] & (0x80 >> bit)); > } using a mask might be useful to check multiple facilities at the same time, but in that case the check should be return (rib[byte] & mask) == mask I have no strong opinions either way