Re: [PATCH] introduce kernel_execve function to replace __KERNEL_SYSCALLS__

Arnd Bergmann
2006-08-20T20:33:57Z

On Sunday 20 August 2006 22:11, Björn Steinbrink wrote:
> Only one in unistd.h, but throughout the kernel there are quite a few
> unless I'm missing something here:
> doener@atjola:~/src/kernel/linux-2.6$ grep \ _syscall * -R | \
> > grep -v define\\\|undef\\\|clobber | wc -l
> 116

there are only a few direct calls that managed to sneak in after we removed
them all some time ago:

| arch/sh64/kernel/process.c: _syscall0(int, getpid)
| arch/sh64/kernel/process.c: _syscall1(int, getpgid, int, pid)
| arch/sh64/kernel/process.c:static __inline__ _syscall2(int,clone,unsigned long,flags,unsigned long,newsp)
| arch/sh64/kernel/process.c:static __inline__ _syscall1(int,exit,int,ret)

These should be replaced with calls to sys_*, or whatever the other
architectures do in order to implement the respective functions.

| arch/um/os-Linux/sys-i386/tls.c:static _syscall1(int, get_thread_area, user_desc_t *, u_info);
| arch/um/os-Linux/process.c:inline _syscall0(pid_t, getpid)
| arch/um/os-Linux/tls.c:static _syscall1(int, get_thread_area, user_desc_t *, u_info);
| arch/um/os-Linux/tls.c:static _syscall1(int, set_thread_area, user_desc_t *, u_info);
| arch/um/sys-i386/unmap.c:static inline _syscall2(int,munmap,void *,start,size_t,len)
| arch/um/sys-i386/unmap.c:static inline _syscall6(void *,mmap2,void *,addr,size_t,len,int,prot,int,flags,int,fd,off_t,offset)
| arch/um/sys-x86_64/unmap.c:static inline _syscall2(int,munmap,void *,start,size_t,len)
| arch/um/sys-x86_64/unmap.c:static inline _syscall6(void *,mmap,void *,addr,size_t,len,int,prot,int,flags,int,fd,off_t,offset)

UML is special, there may be a good reason to use them, if they are not
actually kernel syscalls, but instead calls to the host OS.