linux/arch/x86/kernel/sys_i386_32.c
<<
>>
Prefs
   1/*
   2 * This file contains various random system calls that
   3 * have a non-standard calling sequence on the Linux/i386
   4 * platform.
   5 */
   6
   7#include <linux/errno.h>
   8#include <linux/sched.h>
   9#include <linux/mm.h>
  10#include <linux/fs.h>
  11#include <linux/smp.h>
  12#include <linux/sem.h>
  13#include <linux/msg.h>
  14#include <linux/shm.h>
  15#include <linux/stat.h>
  16#include <linux/syscalls.h>
  17#include <linux/mman.h>
  18#include <linux/file.h>
  19#include <linux/utsname.h>
  20#include <linux/ipc.h>
  21
  22#include <linux/uaccess.h>
  23#include <linux/unistd.h>
  24
  25#include <asm/syscalls.h>
  26
  27/*
  28 * Do a system call from kernel instead of calling sys_execve so we
  29 * end up with proper pt_regs.
  30 */
  31int kernel_execve(const char *filename,
  32                  const char *const argv[],
  33                  const char *const envp[])
  34{
  35        long __res;
  36        asm volatile ("int $0x80"
  37        : "=a" (__res)
  38        : "0" (__NR_execve), "b" (filename), "c" (argv), "d" (envp) : "memory");
  39        return __res;
  40}
  41