devtools: stop compiler atomics with no C11 equivalent
Checks
Commit Message
Refrain from using compiler __atomic_{add,and,nand,or,sub,xor}_fetch()
to ease future adoption of C11 standard atomics.
Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
---
devtools/checkpatches.sh | 8 ++++++++
1 file changed, 8 insertions(+)
Comments
adding a few more people to cc for attention
On Mon, Mar 20, 2023 at 09:22:01AM -0700, Tyler Retzlaff wrote:
> Refrain from using compiler __atomic_{add,and,nand,or,sub,xor}_fetch()
> to ease future adoption of C11 standard atomics.
>
> Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> ---
> devtools/checkpatches.sh | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh
> index 1dee094..1ed6d51 100755
> --- a/devtools/checkpatches.sh
> +++ b/devtools/checkpatches.sh
> @@ -119,6 +119,14 @@ check_forbidden_additions() { # <patch>
> -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \
> "$1" || res=1
>
> + # refrain from using compiler __atomic_{add,and,nand,or,sub,xor}_fetch()
> + awk -v FOLDERS="lib drivers app examples" \
> + -v EXPRESSIONS="__atomic_(add|and|nand|or|sub|xor)_fetch\\\(" \
> + -v RET_ON_FAIL=1 \
> + -v MESSAGE='Using __atomic_{add,and,nand,or,sub,xor}_fetch' \
> + -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \
> + "$1" || res=1
> +
> # forbid use of __reserved which is a reserved keyword in Windows system headers
> awk -v FOLDERS="lib drivers app examples" \
> -v EXPRESSIONS='\\<__reserved\\>' \
> --
> 1.8.3.1
> From: Tyler Retzlaff [mailto:roretzla@linux.microsoft.com]
> Sent: Wednesday, 22 March 2023 19.08
>
> adding a few more people to cc for attention
>
> On Mon, Mar 20, 2023 at 09:22:01AM -0700, Tyler Retzlaff wrote:
> > Refrain from using compiler __atomic_{add,and,nand,or,sub,xor}_fetch()
> > to ease future adoption of C11 standard atomics.
> >
> > Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> > ---
> > devtools/checkpatches.sh | 8 ++++++++
> > 1 file changed, 8 insertions(+)
> >
> > diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh
> > index 1dee094..1ed6d51 100755
> > --- a/devtools/checkpatches.sh
> > +++ b/devtools/checkpatches.sh
> > @@ -119,6 +119,14 @@ check_forbidden_additions() { # <patch>
> > -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk
> \
> > "$1" || res=1
> >
> > + # refrain from using compiler
> __atomic_{add,and,nand,or,sub,xor}_fetch()
> > + awk -v FOLDERS="lib drivers app examples" \
> > + -v
> EXPRESSIONS="__atomic_(add|and|nand|or|sub|xor)_fetch\\\(" \
> > + -v RET_ON_FAIL=1 \
> > + -v MESSAGE='Using __atomic_{add,and,nand,or,sub,xor}_fetch'
> \
Suggest that you expand the error message with a solution for the developer: "... use __atomic_fetch_op() instead of __atomic_op_fetch()"
> > + -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk
> \
> > + "$1" || res=1
> > +
> > # forbid use of __reserved which is a reserved keyword in Windows
> system headers
> > awk -v FOLDERS="lib drivers app examples" \
> > -v EXPRESSIONS='\\<__reserved\\>' \
> > --
> > 1.8.3.1
On Wed, Mar 22, 2023 at 07:25:09PM +0100, Morten Brørup wrote:
> > From: Tyler Retzlaff [mailto:roretzla@linux.microsoft.com]
> > Sent: Wednesday, 22 March 2023 19.08
> >
> > adding a few more people to cc for attention
> >
> > On Mon, Mar 20, 2023 at 09:22:01AM -0700, Tyler Retzlaff wrote:
> > > Refrain from using compiler __atomic_{add,and,nand,or,sub,xor}_fetch()
> > > to ease future adoption of C11 standard atomics.
> > >
> > > Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> > > ---
> > > devtools/checkpatches.sh | 8 ++++++++
> > > 1 file changed, 8 insertions(+)
> > >
> > > diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh
> > > index 1dee094..1ed6d51 100755
> > > --- a/devtools/checkpatches.sh
> > > +++ b/devtools/checkpatches.sh
> > > @@ -119,6 +119,14 @@ check_forbidden_additions() { # <patch>
> > > -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk
> > \
> > > "$1" || res=1
> > >
> > > + # refrain from using compiler
> > __atomic_{add,and,nand,or,sub,xor}_fetch()
> > > + awk -v FOLDERS="lib drivers app examples" \
> > > + -v
> > EXPRESSIONS="__atomic_(add|and|nand|or|sub|xor)_fetch\\\(" \
> > > + -v RET_ON_FAIL=1 \
> > > + -v MESSAGE='Using __atomic_{add,and,nand,or,sub,xor}_fetch'
> > \
>
> Suggest that you expand the error message with a solution for the developer: "... use __atomic_fetch_op() instead of __atomic_op_fetch()"
if awk could expand captures i would do that but it can't.
or do you mean literally use 'op' instead of {add,and,nand,or,sub,xor}
in the message?
>
> > > + -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk
> > \
> > > + "$1" || res=1
> > > +
> > > # forbid use of __reserved which is a reserved keyword in Windows
> > system headers
> > > awk -v FOLDERS="lib drivers app examples" \
> > > -v EXPRESSIONS='\\<__reserved\\>' \
> > > --
> > > 1.8.3.1
> From: Tyler Retzlaff [mailto:roretzla@linux.microsoft.com]
> Sent: Wednesday, 22 March 2023 22.00
>
> On Wed, Mar 22, 2023 at 07:25:09PM +0100, Morten Brørup wrote:
> > > From: Tyler Retzlaff [mailto:roretzla@linux.microsoft.com]
> > > Sent: Wednesday, 22 March 2023 19.08
> > >
> > > adding a few more people to cc for attention
> > >
> > > On Mon, Mar 20, 2023 at 09:22:01AM -0700, Tyler Retzlaff wrote:
> > > > Refrain from using compiler
> __atomic_{add,and,nand,or,sub,xor}_fetch()
> > > > to ease future adoption of C11 standard atomics.
> > > >
> > > > Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
> > > > ---
> > > > devtools/checkpatches.sh | 8 ++++++++
> > > > 1 file changed, 8 insertions(+)
> > > >
> > > > diff --git a/devtools/checkpatches.sh b/devtools/checkpatches.sh
> > > > index 1dee094..1ed6d51 100755
> > > > --- a/devtools/checkpatches.sh
> > > > +++ b/devtools/checkpatches.sh
> > > > @@ -119,6 +119,14 @@ check_forbidden_additions() { # <patch>
> > > > -f $(dirname $(readlink -f $0))/check-forbidden-
> tokens.awk
> > > \
> > > > "$1" || res=1
> > > >
> > > > + # refrain from using compiler
> > > __atomic_{add,and,nand,or,sub,xor}_fetch()
> > > > + awk -v FOLDERS="lib drivers app examples" \
> > > > + -v
> > > EXPRESSIONS="__atomic_(add|and|nand|or|sub|xor)_fetch\\\(" \
> > > > + -v RET_ON_FAIL=1 \
> > > > + -v MESSAGE='Using
> __atomic_{add,and,nand,or,sub,xor}_fetch'
> > > \
> >
> > Suggest that you expand the error message with a solution for the
> developer: "... use __atomic_fetch_op() instead of __atomic_op_fetch()"
>
> if awk could expand captures i would do that but it can't.
>
> or do you mean literally use 'op' instead of {add,and,nand,or,sub,xor}
> in the message?
I didn't think about expansion, so literally using "op" in the solution part of the message is exactly what I meant. But please keep the existing part of the message as is.
Alternatively, you can also use "{add,and,nand,or,sub,xor}" instead of "op" in the solution part of the message. Whatever you prefer.
The message could be even more verbose by also adding the reason why __atomic_op_fetch() is prohibited, such as: "... in order to prepare for conversion to C11 stdatomics, where atomic_{add,and,nand,or,sub,xor}_fetch() is unavailable."
>
> >
> > > > + -f $(dirname $(readlink -f $0))/check-forbidden-
> tokens.awk
> > > \
> > > > + "$1" || res=1
> > > > +
> > > > # forbid use of __reserved which is a reserved keyword in
> Windows
> > > system headers
> > > > awk -v FOLDERS="lib drivers app examples" \
> > > > -v EXPRESSIONS='\\<__reserved\\>' \
> > > > --
> > > > 1.8.3.1
@@ -119,6 +119,14 @@ check_forbidden_additions() { # <patch>
-f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \
"$1" || res=1
+ # refrain from using compiler __atomic_{add,and,nand,or,sub,xor}_fetch()
+ awk -v FOLDERS="lib drivers app examples" \
+ -v EXPRESSIONS="__atomic_(add|and|nand|or|sub|xor)_fetch\\\(" \
+ -v RET_ON_FAIL=1 \
+ -v MESSAGE='Using __atomic_{add,and,nand,or,sub,xor}_fetch' \
+ -f $(dirname $(readlink -f $0))/check-forbidden-tokens.awk \
+ "$1" || res=1
+
# forbid use of __reserved which is a reserved keyword in Windows system headers
awk -v FOLDERS="lib drivers app examples" \
-v EXPRESSIONS='\\<__reserved\\>' \