From: Jiri Kosina on
On Tue, 29 Jun 2010, Justin P. Mattock wrote:

> Playing around with a printk program I noticed that the #warning
> message is incomplete(when using kernel headers for userspace):
>
> gcc printk.c -o printk
> In file included from printk.c:3:
> include/linux/kernel.h:733:2: warning: #warning Attempt to use kernel headers from user space, see http:
>
> My guess for the web address not being displayed is "//" is treated as a comment.
> So after changing "http://" to "www." I get the web address.(using firefox with this
> address takes me right to the location). The warning looks like this:
>
> In file included from printk.c:3:
> warning: #warning Attempt to use kernel headers from user space, see www.kernelnewbies.org/KernelHeaders
>
> Signed-off-by: Justin P. Mattock <justinmattock(a)gmail.com>
>
> ---
> include/linux/kernel.h | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/kernel.h b/include/linux/kernel.h
> index 8317ec4..768196a 100644
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -730,7 +730,7 @@ extern int do_sysinfo(struct sysinfo *info);
>
> #ifndef __EXPORTED_HEADERS__
> #ifndef __KERNEL__
> -#warning Attempt to use kernel headers from user space, see http://kernelnewbies.org/KernelHeaders
> +#warning Attempt to use kernel headers from user space, see www.kernelnewbies.org/KernelHeaders
> #endif /* __KERNEL__ */
> #endif /* __EXPORTED_HEADERS__ */

Hehe, ugly. How about making it a single string? GCC preprocessor
documentation suggests the same anyway ...

Neither `#error' nor `#warning' macro-expands its argument.
Internal whitespace sequences are each replaced with a single space.
The line must consist of complete tokens. It is wisest to make the
argument of these directives be a single string constant; this avoids
problems with apostrophes and the like.

--
Jiri Kosina
SUSE Labs, Novell Inc.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Justin P. Mattock on
On 06/30/2010 02:48 AM, Jiri Kosina wrote:
> On Tue, 29 Jun 2010, Justin P. Mattock wrote:
>
>> Playing around with a printk program I noticed that the #warning
>> message is incomplete(when using kernel headers for userspace):
>>
>> gcc printk.c -o printk
>> In file included from printk.c:3:
>> include/linux/kernel.h:733:2: warning: #warning Attempt to use kernel headers from user space, see http:
>>
>> My guess for the web address not being displayed is "//" is treated as a comment.
>> So after changing "http://" to "www." I get the web address.(using firefox with this
>> address takes me right to the location). The warning looks like this:
>>
>> In file included from printk.c:3:
>> warning: #warning Attempt to use kernel headers from user space, see www.kernelnewbies.org/KernelHeaders
>>
>> Signed-off-by: Justin P. Mattock<justinmattock(a)gmail.com>
>>
>> ---
>> include/linux/kernel.h | 2 +-
>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>
>> diff --git a/include/linux/kernel.h b/include/linux/kernel.h
>> index 8317ec4..768196a 100644
>> --- a/include/linux/kernel.h
>> +++ b/include/linux/kernel.h
>> @@ -730,7 +730,7 @@ extern int do_sysinfo(struct sysinfo *info);
>>
>> #ifndef __EXPORTED_HEADERS__
>> #ifndef __KERNEL__
>> -#warning Attempt to use kernel headers from user space, see http://kernelnewbies.org/KernelHeaders
>> +#warning Attempt to use kernel headers from user space, see www.kernelnewbies.org/KernelHeaders
>> #endif /* __KERNEL__ */
>> #endif /* __EXPORTED_HEADERS__ */
>
> Hehe, ugly. How about making it a single string? GCC preprocessor
> documentation suggests the same anyway ...
>
> Neither `#error' nor `#warning' macro-expands its argument.
> Internal whitespace sequences are each replaced with a single space.
> The line must consist of complete tokens. It is wisest to make the
> argument of these directives be a single string constant; this avoids
> problems with apostrophes and the like.
>


before the www. idea, I was thinking maybe sending the address to a file
somewhere in documentation
something in this area:

#warning Using kernel headers from user space, please see Documentation/*

but I still need to re-read what the above says, seems a bit technical..

Justin P. Mattock
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Randy Dunlap on
On Wed, 30 Jun 2010 14:20:42 -0700 Justin P. Mattock wrote:

>
> > Hehe, ugly. How about making it a single string? GCC preprocessor
> > documentation suggests the same anyway ...
> >
> > Neither `#error' nor `#warning' macro-expands its argument.
> > Internal whitespace sequences are each replaced with a single space.
> > The line must consist of complete tokens. It is wisest to make the
> > argument of these directives be a single string constant; this avoids
> > problems with apostrophes and the like.

Doesn't that mean just put double quotation marks around the entire message string??



> o.k. jiri, here is what I came up with, after re-reading and looking at
> other in the kernel(below).
>
>
>
> From 45f24db45faa06aad01cfc62ff4b475380e5cb11 Mon Sep 17 00:00:00 2001
> From: Justin P. Mattock <justinmattock(a)gmail.com>
> Date: Wed, 30 Jun 2010 14:06:18 -0700
> Subject: [PATCH]kernel.h Fix #warning message according to the GCC
> preprocessor docs.
>
> received this #warning from a simple printk program and noticed the web
> address is not showing up:
> gcc printk.c -o printk
> In file included from printk.c:3:
> include/linux/kernel.h:733:2: warning: #warning Attempt to use kernel
> headers from user space, see http:
>
> after the changes the warning should just say:
> #warning Attempt to use kernel headers from user space!
>
> Signed-off-by: Justin P. Mattock <justinmattock(a)gmail.com>
> ---
> include/linux/kernel.h | 2 +-
> 1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/include/linux/kernel.h b/include/linux/kernel.h
> index 8317ec4..b542961 100644
> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -730,7 +730,7 @@ extern int do_sysinfo(struct sysinfo *info);
>
> #ifndef __EXPORTED_HEADERS__
> #ifndef __KERNEL__
> -#warning Attempt to use kernel headers from user space, see
> http://kernelnewbies.org/KernelHeaders
> +#warning Attempt to use kernel headers from user space!
> #endif /* __KERNEL__ */
> #endif /* __EXPORTED_HEADERS__ */
>
> --
> 1.7.1.rc1.21.gf3bd6
>
>
> now I'm wondering if there should be a lead to the documentation with
> this web address(seems grep is not finding anything that I might be able
> to use).or just leave as is, and let people connect-the-dots!!
>
> let me know..
>
> Justin P. Mattock
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo(a)vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/


---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Justin P. Mattock on

> Hehe, ugly. How about making it a single string? GCC preprocessor
> documentation suggests the same anyway ...
>
> Neither `#error' nor `#warning' macro-expands its argument.
> Internal whitespace sequences are each replaced with a single space.
> The line must consist of complete tokens. It is wisest to make the
> argument of these directives be a single string constant; this avoids
> problems with apostrophes and the like.
>

o.k. jiri, here is what I came up with, after re-reading and looking at
other in the kernel(below).



From 45f24db45faa06aad01cfc62ff4b475380e5cb11 Mon Sep 17 00:00:00 2001
From: Justin P. Mattock <justinmattock(a)gmail.com>
Date: Wed, 30 Jun 2010 14:06:18 -0700
Subject: [PATCH]kernel.h Fix #warning message according to the GCC
preprocessor docs.

received this #warning from a simple printk program and noticed the web
address is not showing up:
gcc printk.c -o printk
In file included from printk.c:3:
include/linux/kernel.h:733:2: warning: #warning Attempt to use kernel
headers from user space, see http:

after the changes the warning should just say:
#warning Attempt to use kernel headers from user space!

Signed-off-by: Justin P. Mattock <justinmattock(a)gmail.com>
---
include/linux/kernel.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/include/linux/kernel.h b/include/linux/kernel.h
index 8317ec4..b542961 100644
--- a/include/linux/kernel.h
+++ b/include/linux/kernel.h
@@ -730,7 +730,7 @@ extern int do_sysinfo(struct sysinfo *info);

#ifndef __EXPORTED_HEADERS__
#ifndef __KERNEL__
-#warning Attempt to use kernel headers from user space, see
http://kernelnewbies.org/KernelHeaders
+#warning Attempt to use kernel headers from user space!
#endif /* __KERNEL__ */
#endif /* __EXPORTED_HEADERS__ */

--
1.7.1.rc1.21.gf3bd6


now I'm wondering if there should be a lead to the documentation with
this web address(seems grep is not finding anything that I might be able
to use).or just leave as is, and let people connect-the-dots!!

let me know..

Justin P. Mattock
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
From: Arnd Bergmann on
On Wednesday 30 June 2010 23:20:42 Justin P. Mattock wrote:
>
> > Hehe, ugly. How about making it a single string? GCC preprocessor
> > documentation suggests the same anyway ...
> >
> > Neither `#error' nor `#warning' macro-expands its argument.
> > Internal whitespace sequences are each replaced with a single space.
> > The line must consist of complete tokens. It is wisest to make the
> > argument of these directives be a single string constant; this avoids
> > problems with apostrophes and the like.
> >

What this is telling you is to put the text into a string constant, which
means you add quotation marks at the beginning and end of the line, like

#warning "see http://example.com/"

> From 45f24db45faa06aad01cfc62ff4b475380e5cb11 Mon Sep 17 00:00:00 2001
> From: Justin P. Mattock <justinmattock(a)gmail.com>
> Date: Wed, 30 Jun 2010 14:06:18 -0700
> Subject: [PATCH]kernel.h Fix #warning message according to the GCC
> preprocessor docs.

BTW, your mail client adds incorrect word wrapping.

> --- a/include/linux/kernel.h
> +++ b/include/linux/kernel.h
> @@ -730,7 +730,7 @@ extern int do_sysinfo(struct sysinfo *info);
>
> #ifndef __EXPORTED_HEADERS__
> #ifndef __KERNEL__
> -#warning Attempt to use kernel headers from user space, see
> http://kernelnewbies.org/KernelHeaders
> +#warning Attempt to use kernel headers from user space!
> #endif /* __KERNEL__ */
> #endif /* __EXPORTED_HEADERS__ */

Here, too.

Also, since you're already touching the warning message, it would be
nice to move it from kernel.h to types.h, which is much more commonly
used. When I introduced the message, I made the mistake to think
that kernel.h was universally used by the majority of all headers,
which turned out to be wrong. linux/types.h (or possibly linux/stddef.h)
seems to be the most commonly used one, so that would be a more
adequate place.

Arnd
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo(a)vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/