1 /*
2 * Copyright 2001, Manuel J. Petit. All rights reserved.
3 * Distributed under the terms of the NewOS License.
4 */
5
6 /*
7 * Copyright 2002-2007, Axel Dörfler, axeld@pinc-software.de. All rights reserved.
8 * Distributed under the terms of the MIT License.
9 */
10
11
12 #include <unistd.h>
13
14 #include <errno.h>
15 #include <pthread.h>
16
17 #include <syscall_utils.h>
18
19 #include <errno_private.h>
20 #include <syscalls.h>
21
22
23 ssize_t
read(int fd,void * buffer,size_t bufferSize)24 read(int fd, void* buffer, size_t bufferSize)
25 {
26 ssize_t status = _kern_read(fd, -1, buffer, bufferSize);
27
28 RETURN_AND_SET_ERRNO_TEST_CANCEL(status);
29 }
30
31
32 ssize_t
read_pos(int fd,off_t pos,void * buffer,size_t bufferSize)33 read_pos(int fd, off_t pos, void* buffer, size_t bufferSize)
34 {
35 if (pos < 0)
36 RETURN_AND_SET_ERRNO_TEST_CANCEL(B_BAD_VALUE);
37
38 RETURN_AND_SET_ERRNO_TEST_CANCEL(_kern_read(fd, pos, buffer, bufferSize));
39 }
40
41
42 ssize_t
pread(int fd,void * buffer,size_t bufferSize,off_t pos)43 pread(int fd, void* buffer, size_t bufferSize, off_t pos)
44 {
45 if (pos < 0)
46 RETURN_AND_SET_ERRNO_TEST_CANCEL(B_BAD_VALUE);
47
48 RETURN_AND_SET_ERRNO_TEST_CANCEL(_kern_read(fd, pos, buffer, bufferSize));
49 }
50