70 строки
1.6 KiB
C
70 строки
1.6 KiB
C
/*
|
|
* Copyright (C) 2000 - 2004 Jeff Dike (jdike@karaya.com)
|
|
* Licensed under the GPL
|
|
*/
|
|
|
|
#ifndef _UM_UNISTD_H_
|
|
#define _UM_UNISTD_H_
|
|
|
|
#include <linux/syscalls.h>
|
|
#include "linux/resource.h"
|
|
#include "asm/uaccess.h"
|
|
|
|
extern int um_execve(const char *file, char *const argv[], char *const env[]);
|
|
|
|
#ifdef __KERNEL__
|
|
/* We get __ARCH_WANT_OLD_STAT and __ARCH_WANT_STAT64 from the base arch */
|
|
#define __ARCH_WANT_IPC_PARSE_VERSION
|
|
#define __ARCH_WANT_OLD_READDIR
|
|
#define __ARCH_WANT_SYS_ALARM
|
|
#define __ARCH_WANT_SYS_GETHOSTNAME
|
|
#define __ARCH_WANT_SYS_PAUSE
|
|
#define __ARCH_WANT_SYS_SGETMASK
|
|
#define __ARCH_WANT_SYS_SIGNAL
|
|
#define __ARCH_WANT_SYS_TIME
|
|
#define __ARCH_WANT_SYS_UTIME
|
|
#define __ARCH_WANT_SYS_WAITPID
|
|
#define __ARCH_WANT_SYS_SOCKETCALL
|
|
#define __ARCH_WANT_SYS_FADVISE64
|
|
#define __ARCH_WANT_SYS_GETPGRP
|
|
#define __ARCH_WANT_SYS_LLSEEK
|
|
#define __ARCH_WANT_SYS_NICE
|
|
#define __ARCH_WANT_SYS_OLD_GETRLIMIT
|
|
#define __ARCH_WANT_SYS_OLDUMOUNT
|
|
#define __ARCH_WANT_SYS_SIGPENDING
|
|
#define __ARCH_WANT_SYS_SIGPROCMASK
|
|
#define __ARCH_WANT_SYS_RT_SIGACTION
|
|
#endif
|
|
|
|
#ifdef __KERNEL_SYSCALLS__
|
|
|
|
#include <linux/compiler.h>
|
|
#include <linux/types.h>
|
|
|
|
static inline int execve(const char *filename, char *const argv[],
|
|
char *const envp[])
|
|
{
|
|
mm_segment_t fs;
|
|
int ret;
|
|
|
|
fs = get_fs();
|
|
set_fs(KERNEL_DS);
|
|
ret = um_execve(filename, argv, envp);
|
|
set_fs(fs);
|
|
|
|
if (ret >= 0)
|
|
return ret;
|
|
|
|
errno = -(long)ret;
|
|
return -1;
|
|
}
|
|
|
|
int sys_execve(char *file, char **argv, char **env);
|
|
|
|
#endif /* __KERNEL_SYSCALLS__ */
|
|
|
|
#undef __KERNEL_SYSCALLS__
|
|
#include "asm/arch/unistd.h"
|
|
|
|
#endif /* _UM_UNISTD_H_*/
|