diff mbox

ARM: quiet sparse noise due to __ARCH_WANT_SYS_RT_SIG(ACTION|SUSPEND)

Message ID 201106211209.46462.hartleys@visionengravers.com (mailing list archive)
State New, archived
Headers show

Commit Message

Hartley Sweeten June 21, 2011, 7:09 p.m. UTC
ARM defines __ARCH_WANT_SYS_RT_SIG(ACTION|SUSPEND) which
produces the following sparse warnings in kernel/signal.c:

  warning: symbol 'sys_rt_sigaction' was not declared. Should it be static?
  warning: symbol 'sys_rt_sigsuspend' was not declared. Should it be static?

Since ARM doesn't include <asm-generic/syscalls.h>, due to different
calling conventions for some system calls, prototype the functions
in <asm/unistd.h> to quiet the noise.

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Mikael Pettersson <mikpe@it.uu.se>
Cc: "Eric W. Biederman" <ebiederm@xmission.com>
Cc: Mike Frysinger <vapier@gentoo.org>
Cc: Tony Luck <tony.luck@intel.com>

---

Comments

Mike Frysinger June 21, 2011, 7:31 p.m. UTC | #1
On Tue, Jun 21, 2011 at 15:09, H Hartley Sweeten wrote:
> --- a/arch/arm/include/asm/unistd.h
> +++ b/arch/arm/include/asm/unistd.h
> @@ -467,6 +467,20 @@
> +#ifndef __ASSEMBLY__
> +
> +#include <linux/types.h>
> +#include <linux/linkage.h>
> +#include <linux/compiler.h>
> +#include <linux/signal.h>
> +
> +asmlinkage long sys_rt_sigaction(int sig, const struct sigaction __user *act,
> +                                struct sigaction __user *oact,
> +                                size_t sigsetsize);
> +asmlinkage long sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize);
> +
> +#endif /* !__ASSEMBLY__ */

yikes ... this really the only way to fix the sparse warning ?
-mike
Hartley Sweeten June 21, 2011, 10:32 p.m. UTC | #2
On Tuesday, June 21, 2011 12:31 PM, Mike Frysinger wrote:
> On Tue, Jun 21, 2011 at 15:09, H Hartley Sweeten wrote:
>> --- a/arch/arm/include/asm/unistd.h
>> +++ b/arch/arm/include/asm/unistd.h
>> @@ -467,6 +467,20 @@
>> +#ifndef __ASSEMBLY__
>> +
>> +#include <linux/types.h>
>> +#include <linux/linkage.h>
>> +#include <linux/compiler.h>
>> +#include <linux/signal.h>
>> +
>> +asmlinkage long sys_rt_sigaction(int sig, const struct sigaction __user *act,
>> +                                struct sigaction __user *oact,
>> +                                size_t sigsetsize);
>> +asmlinkage long sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize);
>> +
>> +#endif /* !__ASSEMBLY__ */
>
> yikes ... this really the only way to fix the sparse warning ?

Not sure...

Russell's patch to add an asm/syscalls.h fixes the other system call
sparse warnings in arm/arm/kernel/* but it doesn't fix the ones in
kernel/signal.c.  This patch does but, as Russell said, asm/unistd.h
is exported to it's a bit ugly.

BTW, arch/ia64 does something very similar:


#if !defined(__ASSEMBLY__) && !defined(ASSEMBLER)

#include <linux/types.h>
#include <linux/linkage.h>
#include <linux/compiler.h>

extern long __ia64_syscall (long a0, long a1, long a2, long a3, long a4, long nr);

asmlinkage unsigned long sys_mmap(
				unsigned long addr, unsigned long len,
				int prot, int flags,
				int fd, long off);
asmlinkage unsigned long sys_mmap2(
				unsigned long addr, unsigned long len,
				int prot, int flags,
				int fd, long pgoff);
struct pt_regs;
struct sigaction;
asmlinkage long sys_ia64_pipe(void);
asmlinkage long sys_rt_sigaction(int sig,
				 const struct sigaction __user *act,
				 struct sigaction __user *oact,
				 size_t sigsetsize);

Regards,
Hartley
diff mbox

Patch

diff --git a/arch/arm/include/asm/unistd.h b/arch/arm/include/asm/unistd.h
index 2c04ed5..322c54e 100644
--- a/arch/arm/include/asm/unistd.h
+++ b/arch/arm/include/asm/unistd.h
@@ -467,6 +467,20 @@ 
 #define __ARCH_WANT_SYS_SOCKETCALL
 #endif
 
+#ifndef __ASSEMBLY__
+
+#include <linux/types.h>
+#include <linux/linkage.h>
+#include <linux/compiler.h>
+#include <linux/signal.h>
+
+asmlinkage long sys_rt_sigaction(int sig, const struct sigaction __user *act,
+				 struct sigaction __user *oact,
+				 size_t sigsetsize);
+asmlinkage long sys_rt_sigsuspend(sigset_t __user *unewset, size_t sigsetsize);
+
+#endif /* !__ASSEMBLY__ */
+
 /*
  * "Conditional" syscalls
  *