Message ID | 201106211209.46462.hartleys@visionengravers.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
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
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 --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 *
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> ---