Rev 4921 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4349 | Serge | 1 | /* Reentrant versions of write system call. */ |
2 | |||
3 | #include |
||
4 | #include |
||
5 | #include <_syslist.h> |
||
6 | |||
7 | /* Some targets provides their own versions of this functions. Those |
||
8 | targets should define REENTRANT_SYSCALLS_PROVIDED in TARGET_CFLAGS. */ |
||
9 | |||
10 | #ifdef _REENT_ONLY |
||
11 | #ifndef REENTRANT_SYSCALLS_PROVIDED |
||
12 | #define REENTRANT_SYSCALLS_PROVIDED |
||
13 | #endif |
||
14 | #endif |
||
15 | |||
16 | #ifndef REENTRANT_SYSCALLS_PROVIDED |
||
17 | |||
18 | /* We use the errno variable used by the system dependent layer. */ |
||
4921 | Serge | 19 | #undef errno |
20 | extern int errno; |
||
4349 | Serge | 21 | |
22 | /* |
||
23 | FUNCTION |
||
24 | <<_write_r>>---Reentrant version of write |
||
6099 | serge | 25 | |
4349 | Serge | 26 | INDEX |
27 | _write_r |
||
28 | |||
29 | ANSI_SYNOPSIS |
||
30 | #include |
||
31 | _ssize_t _write_r(struct _reent *<[ptr]>, |
||
32 | int <[fd]>, const void *<[buf]>, size_t <[cnt]>); |
||
33 | |||
34 | TRAD_SYNOPSIS |
||
35 | #include |
||
36 | _ssize_t _write_r(<[ptr]>, <[fd]>, <[buf]>, <[cnt]>) |
||
37 | struct _reent *<[ptr]>; |
||
38 | int <[fd]>; |
||
39 | char *<[buf]>; |
||
40 | size_t <[cnt]>; |
||
41 | |||
42 | DESCRIPTION |
||
43 | This is a reentrant version of < |
||
44 | takes a pointer to the global data block, which holds |
||
45 | < |
||
46 | */ |
||
47 | |||
48 | _ssize_t |
||
4921 | Serge | 49 | _DEFUN (_write_r, (ptr, fd, buf, cnt), |
4349 | Serge | 50 | struct _reent *ptr _AND |
51 | int fd _AND |
||
4921 | Serge | 52 | _CONST _PTR buf _AND |
4349 | Serge | 53 | size_t cnt) |
54 | { |
||
4921 | Serge | 55 | _ssize_t ret; |
4349 | Serge | 56 | |
4921 | Serge | 57 | errno = 0; |
58 | if ((ret = (_ssize_t)_write (fd, buf, cnt)) == -1 && errno != 0) |
||
59 | ptr->_errno = errno; |
||
60 | return ret; |
||
4349 | Serge | 61 | } |
62 | |||
63 | #endif /* ! defined (REENTRANT_SYSCALLS_PROVIDED) */ |