1 | // SPDX-License-Identifier: GPL-2.0 |
2 | #include <linux/errno.h> |
3 | #include <linux/sched.h> |
4 | #include <linux/sched/task_stack.h> |
5 | #include <linux/mm.h> |
6 | #include <linux/smp.h> |
7 | #include <linux/sem.h> |
8 | #include <linux/msg.h> |
9 | #include <linux/shm.h> |
10 | #include <linux/stat.h> |
11 | #include <linux/syscalls.h> |
12 | #include <linux/mman.h> |
13 | #include <linux/file.h> |
14 | #include <linux/module.h> |
15 | #include <linux/fs.h> |
16 | #include <linux/ipc.h> |
17 | #include <asm/cacheflush.h> |
18 | #include <linux/uaccess.h> |
19 | #include <asm/unistd.h> |
20 | #include <asm/syscalls.h> |
21 | |
22 | /* |
23 | * sys_pipe() is the normal C calling standard for creating |
24 | * a pipe. It's not the way Unix traditionally does this, though. |
25 | */ |
26 | asmlinkage int sys_sh_pipe(void) |
27 | { |
28 | int fd[2]; |
29 | int error; |
30 | |
31 | error = do_pipe_flags(fd, 0); |
32 | if (!error) { |
33 | current_pt_regs()->regs[1] = fd[1]; |
34 | return fd[0]; |
35 | } |
36 | return error; |
37 | } |
38 | |
39 | asmlinkage ssize_t sys_pread_wrapper(unsigned int fd, char __user *buf, |
40 | size_t count, long dummy, loff_t pos) |
41 | { |
42 | return ksys_pread64(fd, buf, count, pos); |
43 | } |
44 | |
45 | asmlinkage ssize_t sys_pwrite_wrapper(unsigned int fd, const char __user *buf, |
46 | size_t count, long dummy, loff_t pos) |
47 | { |
48 | return ksys_pwrite64(fd, buf, count, pos); |
49 | } |
50 | |
51 | asmlinkage int sys_fadvise64_64_wrapper(int fd, u32 offset0, u32 offset1, |
52 | u32 len0, u32 len1, int advice) |
53 | { |
54 | #ifdef __LITTLE_ENDIAN__ |
55 | return ksys_fadvise64_64(fd, offset: (u64)offset1 << 32 | offset0, |
56 | len: (u64)len1 << 32 | len0, advice); |
57 | #else |
58 | return ksys_fadvise64_64(fd, (u64)offset0 << 32 | offset1, |
59 | (u64)len0 << 32 | len1, advice); |
60 | #endif |
61 | } |
62 | |