Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/um/kernel/syscall.c
10817 views
1
/*
2
* Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
3
* Licensed under the GPL
4
*/
5
6
#include "linux/file.h"
7
#include "linux/fs.h"
8
#include "linux/mm.h"
9
#include "linux/sched.h"
10
#include "linux/utsname.h"
11
#include "linux/syscalls.h"
12
#include "asm/current.h"
13
#include "asm/mman.h"
14
#include "asm/uaccess.h"
15
#include "asm/unistd.h"
16
#include "internal.h"
17
18
long sys_fork(void)
19
{
20
long ret;
21
22
current->thread.forking = 1;
23
ret = do_fork(SIGCHLD, UPT_SP(&current->thread.regs.regs),
24
&current->thread.regs, 0, NULL, NULL);
25
current->thread.forking = 0;
26
return ret;
27
}
28
29
long sys_vfork(void)
30
{
31
long ret;
32
33
current->thread.forking = 1;
34
ret = do_fork(CLONE_VFORK | CLONE_VM | SIGCHLD,
35
UPT_SP(&current->thread.regs.regs),
36
&current->thread.regs, 0, NULL, NULL);
37
current->thread.forking = 0;
38
return ret;
39
}
40
41
long old_mmap(unsigned long addr, unsigned long len,
42
unsigned long prot, unsigned long flags,
43
unsigned long fd, unsigned long offset)
44
{
45
long err = -EINVAL;
46
if (offset & ~PAGE_MASK)
47
goto out;
48
49
err = sys_mmap_pgoff(addr, len, prot, flags, fd, offset >> PAGE_SHIFT);
50
out:
51
return err;
52
}
53
54
int kernel_execve(const char *filename,
55
const char *const argv[],
56
const char *const envp[])
57
{
58
mm_segment_t fs;
59
int ret;
60
61
fs = get_fs();
62
set_fs(KERNEL_DS);
63
ret = um_execve(filename, (const char __user *const __user *)argv,
64
(const char __user *const __user *) envp);
65
set_fs(fs);
66
67
return ret;
68
}
69
70