Re: svn commit: r362781 - head/sys/compat/linuxkpi/common/include/linux

2020-06-30 Thread Hans Petter Selasky

On 2020-06-29 22:32, Ian Lepore wrote:

On Mon, 2020-06-29 at 14:26 -0600, Warner Losh wrote:

On Mon, Jun 29, 2020, 2:15 PM Ravi Pokala 
wrote:


-Original Message-
From:  on behalf of Hans Petter
Selasky

Date: 2020-06-29, Monday at 06:08
To: , , <
svn-src-h...@freebsd.org>
Subject: svn commit: r362781 -
head/sys/compat/linuxkpi/common/include/linux

 Author: hselasky
 Date: Mon Jun 29 13:08:40 2020
 New Revision: 362781
 URL: https://svnweb.freebsd.org/changeset/base/362781

 Log:
   Implement is_signed(), type_max() and type_min() function
macros in
the
   LinuxKPI.

   MFC after:1 week
   Sponsored by: Mellanox Technologies

 Modified:
   head/sys/compat/linuxkpi/common/include/linux/kernel.h

 Modified:
head/sys/compat/linuxkpi/common/include/linux/kernel.h

===
===
 --- head/sys/compat/linuxkpi/common/include/linux/kernel.h  Mon
Jun 29
12:59:09 2020(r362780)
 +++ head/sys/compat/linuxkpi/common/include/linux/kernel.h  Mon
Jun 29
13:08:40 2020(r362781)
 @@ -564,4 +564,20 @@ linux_ratelimited(linux_ratelimit_t *rl)
  #define__is_constexpr(x) \
 __builtin_constant_p(x)

Hi Hans,

 +#defineis_signed(x) (((x)-1 / (x)2) == (x)0)

It took me several reads to understand this, until I figured out
that 'x'
is not a variable, it's the name of a *type*.

If 'x' is a variable, then '(x)-1' is subtraction, but '(x)2' and
'(x)0'
are nonsensical.

If 'x' is a *type*, then '(x)-1' is typecasting '-1', and similarly
for
'(x)2' and '(x)0'.

So, perhaps a comment, or a better name for 'x'?



I had similar thoughts. Maybe 't' instead?



Or maybe since there's no one-character restriction on macro variable
names, something actually descriptive like 'datatype'.

-- Ian


Warner

Thanks,


Ravi (rpokala@)



Thanks for the feedback. I'll have a look at using a more descriptive 
name there for the macro argument.


--HPS

___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


Re: svn commit: r362781 - head/sys/compat/linuxkpi/common/include/linux

2020-06-29 Thread Ian Lepore
On Mon, 2020-06-29 at 14:26 -0600, Warner Losh wrote:
> On Mon, Jun 29, 2020, 2:15 PM Ravi Pokala 
> wrote:
> 
> > -Original Message-
> > From:  on behalf of Hans Petter
> > Selasky
> > 
> > Date: 2020-06-29, Monday at 06:08
> > To: , , <
> > svn-src-h...@freebsd.org>
> > Subject: svn commit: r362781 -
> > head/sys/compat/linuxkpi/common/include/linux
> > 
> > Author: hselasky
> > Date: Mon Jun 29 13:08:40 2020
> > New Revision: 362781
> > URL: https://svnweb.freebsd.org/changeset/base/362781
> > 
> > Log:
> >   Implement is_signed(), type_max() and type_min() function
> > macros in
> > the
> >   LinuxKPI.
> > 
> >   MFC after:1 week
> >   Sponsored by: Mellanox Technologies
> > 
> > Modified:
> >   head/sys/compat/linuxkpi/common/include/linux/kernel.h
> > 
> > Modified:
> > head/sys/compat/linuxkpi/common/include/linux/kernel.h
> > 
> > ===
> > ===
> > --- head/sys/compat/linuxkpi/common/include/linux/kernel.h  Mon
> > Jun 29
> > 12:59:09 2020(r362780)
> > +++ head/sys/compat/linuxkpi/common/include/linux/kernel.h  Mon
> > Jun 29
> > 13:08:40 2020(r362781)
> > @@ -564,4 +564,20 @@ linux_ratelimited(linux_ratelimit_t *rl)
> >  #define__is_constexpr(x) \
> > __builtin_constant_p(x)
> > 
> > Hi Hans,
> > 
> > +#defineis_signed(x) (((x)-1 / (x)2) == (x)0)
> > 
> > It took me several reads to understand this, until I figured out
> > that 'x'
> > is not a variable, it's the name of a *type*.
> > 
> > If 'x' is a variable, then '(x)-1' is subtraction, but '(x)2' and
> > '(x)0'
> > are nonsensical.
> > 
> > If 'x' is a *type*, then '(x)-1' is typecasting '-1', and similarly
> > for
> > '(x)2' and '(x)0'.
> > 
> > So, perhaps a comment, or a better name for 'x'?
> > 
> 
> I had similar thoughts. Maybe 't' instead?
> 

Or maybe since there's no one-character restriction on macro variable
names, something actually descriptive like 'datatype'.  

-- Ian

> Warner
> 
> Thanks,
> > 
> > Ravi (rpokala@)
> > 
> > +#definetype_max(x) (
> >  \
> > +  (sizeof(x) >= 8) ? (is_signed(x) ? INT64_MAX : UINT64_MAX)
> > : \
> > +  (sizeof(x) >= 4) ? (is_signed(x) ? INT32_MAX : UINT32_MAX)
> > : \
> > +  (sizeof(x) >= 2) ? (is_signed(x) ? INT16_MAX : UINT16_MAX)
> > : \
> > +(is_signed(x) ? INT8_MAX : UINT8_MAX)  \
> > +)
> > +
> > +#definetype_min(x)
> > (   \
> > +  (sizeof(x) >= 8) ? (is_signed(x) ? INT64_MIN : 0) :  \
> > +  (sizeof(x) >= 4) ? (is_signed(x) ? INT32_MIN : 0) :  \
> > +  (sizeof(x) >= 2) ? (is_signed(x) ? INT16_MIN : 0) :  \
> > +(is_signed(x) ? INT8_MIN : 0)  \
> > +)
> > +
> >  #endif /* _LINUX_KERNEL_H_ */
> > 
> > 
> > 

___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


Re: svn commit: r362781 - head/sys/compat/linuxkpi/common/include/linux

2020-06-29 Thread Ravi Pokala
From:  on behalf of Warner Losh 

Date: 2020-06-29, Monday at 13:26
To: Ravi Pokala 
Cc: Hans Petter Selasky , src-committers 
, , 

Subject: Re: svn commit: r362781 - head/sys/compat/linuxkpi/common/include/linux

 

On Mon, Jun 29, 2020, 2:15 PM Ravi Pokala  wrote:

-Original Message-
From:  on behalf of Hans Petter Selasky 

Date: 2020-06-29, Monday at 06:08
To: , , 

Subject: svn commit: r362781 - head/sys/compat/linuxkpi/common/include/linux

Author: hselasky
Date: Mon Jun 29 13:08:40 2020
New Revision: 362781
URL: https://svnweb.freebsd.org/changeset/base/362781

Log:
  Implement is_signed(), type_max() and type_min() function macros in the
  LinuxKPI.

  MFC after:1 week
  Sponsored by: Mellanox Technologies

Modified:
  head/sys/compat/linuxkpi/common/include/linux/kernel.h

Modified: head/sys/compat/linuxkpi/common/include/linux/kernel.h

==
--- head/sys/compat/linuxkpi/common/include/linux/kernel.h  Mon Jun 29 
12:59:09 2020(r362780)
+++ head/sys/compat/linuxkpi/common/include/linux/kernel.h  Mon Jun 29 
13:08:40 2020(r362781)
@@ -564,4 +564,20 @@ linux_ratelimited(linux_ratelimit_t *rl)
 #define__is_constexpr(x) \
__builtin_constant_p(x)

Hi Hans,

+#defineis_signed(x) (((x)-1 / (x)2) == (x)0)

It took me several reads to understand this, until I figured out that 'x' is 
not a variable, it's the name of a *type*.

If 'x' is a variable, then '(x)-1' is subtraction, but '(x)2' and '(x)0' are 
nonsensical.

If 'x' is a *type*, then '(x)-1' is typecasting '-1', and similarly for '(x)2' 
and '(x)0'.

So, perhaps a comment, or a better name for 'x'?

 

I had similar thoughts. Maybe 't' instead?

 

Letters are cheap now, Warner; we can afford to spell out "type". :-)

 

-Ravi (rpokala@)

 

Warner

 

Thanks,

Ravi (rpokala@)

+#definetype_max(x) (   
\
+  (sizeof(x) >= 8) ? (is_signed(x) ? INT64_MAX : UINT64_MAX) : \
+  (sizeof(x) >= 4) ? (is_signed(x) ? INT32_MAX : UINT32_MAX) : \
+  (sizeof(x) >= 2) ? (is_signed(x) ? INT16_MAX : UINT16_MAX) : \
+(is_signed(x) ? INT8_MAX : UINT8_MAX)  \
+)
+
+#definetype_min(x) (   \
+  (sizeof(x) >= 8) ? (is_signed(x) ? INT64_MIN : 0) :  \
+  (sizeof(x) >= 4) ? (is_signed(x) ? INT32_MIN : 0) :  \
+  (sizeof(x) >= 2) ? (is_signed(x) ? INT16_MIN : 0) :  \
+(is_signed(x) ? INT8_MIN : 0)  \
+)
+
 #endif /* _LINUX_KERNEL_H_ */


___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


Re: svn commit: r362781 - head/sys/compat/linuxkpi/common/include/linux

2020-06-29 Thread Warner Losh
On Mon, Jun 29, 2020, 2:15 PM Ravi Pokala  wrote:

> -Original Message-
> From:  on behalf of Hans Petter Selasky
> 
> Date: 2020-06-29, Monday at 06:08
> To: , , <
> svn-src-h...@freebsd.org>
> Subject: svn commit: r362781 -
> head/sys/compat/linuxkpi/common/include/linux
>
> Author: hselasky
> Date: Mon Jun 29 13:08:40 2020
> New Revision: 362781
> URL: https://svnweb.freebsd.org/changeset/base/362781
>
> Log:
>   Implement is_signed(), type_max() and type_min() function macros in
> the
>   LinuxKPI.
>
>   MFC after:1 week
>   Sponsored by: Mellanox Technologies
>
> Modified:
>   head/sys/compat/linuxkpi/common/include/linux/kernel.h
>
> Modified: head/sys/compat/linuxkpi/common/include/linux/kernel.h
>
> ==
> --- head/sys/compat/linuxkpi/common/include/linux/kernel.h  Mon Jun 29
> 12:59:09 2020(r362780)
> +++ head/sys/compat/linuxkpi/common/include/linux/kernel.h  Mon Jun 29
> 13:08:40 2020(r362781)
> @@ -564,4 +564,20 @@ linux_ratelimited(linux_ratelimit_t *rl)
>  #define__is_constexpr(x) \
> __builtin_constant_p(x)
>
> Hi Hans,
>
> +#defineis_signed(x) (((x)-1 / (x)2) == (x)0)
>
> It took me several reads to understand this, until I figured out that 'x'
> is not a variable, it's the name of a *type*.
>
> If 'x' is a variable, then '(x)-1' is subtraction, but '(x)2' and '(x)0'
> are nonsensical.
>
> If 'x' is a *type*, then '(x)-1' is typecasting '-1', and similarly for
> '(x)2' and '(x)0'.
>
> So, perhaps a comment, or a better name for 'x'?
>

I had similar thoughts. Maybe 't' instead?

Warner

Thanks,
>
> Ravi (rpokala@)
>
> +#definetype_max(x) (
>  \
> +  (sizeof(x) >= 8) ? (is_signed(x) ? INT64_MAX : UINT64_MAX) : \
> +  (sizeof(x) >= 4) ? (is_signed(x) ? INT32_MAX : UINT32_MAX) : \
> +  (sizeof(x) >= 2) ? (is_signed(x) ? INT16_MAX : UINT16_MAX) : \
> +(is_signed(x) ? INT8_MAX : UINT8_MAX)  \
> +)
> +
> +#definetype_min(x) (   \
> +  (sizeof(x) >= 8) ? (is_signed(x) ? INT64_MIN : 0) :  \
> +  (sizeof(x) >= 4) ? (is_signed(x) ? INT32_MIN : 0) :  \
> +  (sizeof(x) >= 2) ? (is_signed(x) ? INT16_MIN : 0) :  \
> +(is_signed(x) ? INT8_MIN : 0)  \
> +)
> +
>  #endif /* _LINUX_KERNEL_H_ */
>
>
>
___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"


Re: svn commit: r362781 - head/sys/compat/linuxkpi/common/include/linux

2020-06-29 Thread Ravi Pokala
-Original Message-
From:  on behalf of Hans Petter Selasky 

Date: 2020-06-29, Monday at 06:08
To: , , 

Subject: svn commit: r362781 - head/sys/compat/linuxkpi/common/include/linux

Author: hselasky
Date: Mon Jun 29 13:08:40 2020
New Revision: 362781
URL: https://svnweb.freebsd.org/changeset/base/362781

Log:
  Implement is_signed(), type_max() and type_min() function macros in the
  LinuxKPI.

  MFC after:1 week
  Sponsored by: Mellanox Technologies

Modified:
  head/sys/compat/linuxkpi/common/include/linux/kernel.h

Modified: head/sys/compat/linuxkpi/common/include/linux/kernel.h

==
--- head/sys/compat/linuxkpi/common/include/linux/kernel.h  Mon Jun 29 
12:59:09 2020(r362780)
+++ head/sys/compat/linuxkpi/common/include/linux/kernel.h  Mon Jun 29 
13:08:40 2020(r362781)
@@ -564,4 +564,20 @@ linux_ratelimited(linux_ratelimit_t *rl)
 #define__is_constexpr(x) \
__builtin_constant_p(x)

Hi Hans,

+#defineis_signed(x) (((x)-1 / (x)2) == (x)0)

It took me several reads to understand this, until I figured out that 'x' is 
not a variable, it's the name of a *type*.

If 'x' is a variable, then '(x)-1' is subtraction, but '(x)2' and '(x)0' are 
nonsensical.

If 'x' is a *type*, then '(x)-1' is typecasting '-1', and similarly for '(x)2' 
and '(x)0'.

So, perhaps a comment, or a better name for 'x'?

Thanks,

Ravi (rpokala@)

+#definetype_max(x) (   
\
+  (sizeof(x) >= 8) ? (is_signed(x) ? INT64_MAX : UINT64_MAX) : \
+  (sizeof(x) >= 4) ? (is_signed(x) ? INT32_MAX : UINT32_MAX) : \
+  (sizeof(x) >= 2) ? (is_signed(x) ? INT16_MAX : UINT16_MAX) : \
+(is_signed(x) ? INT8_MAX : UINT8_MAX)  \
+)
+
+#definetype_min(x) (   \
+  (sizeof(x) >= 8) ? (is_signed(x) ? INT64_MIN : 0) :  \
+  (sizeof(x) >= 4) ? (is_signed(x) ? INT32_MIN : 0) :  \
+  (sizeof(x) >= 2) ? (is_signed(x) ? INT16_MIN : 0) :  \
+(is_signed(x) ? INT8_MIN : 0)  \
+)
+
 #endif /* _LINUX_KERNEL_H_ */


___
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"