Re: [Aarch64] Fix _lseek prototype
"Richard Earnshaw (lists)" <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
On 08/10/18 09:54, Christophe Lyon wrote: > On Fri, 5 Oct 2018 at 16:08, Eric Blake <[email protected]> wrote: >> >> On 10/5/18 4:21 AM, Christophe Lyon wrote: >>> Here is an updated version using "off_t" instead of "int". >>> OK? >>> >> >>> -int _lseek (int, int, int); >>> +off_t _lseek (int, int, int); >> >> Per POSIX, the primary function is off_t lseek(int, off_t, int). It >> looks weird that your _lseek uses int instead of off_t offset. Is this >> code only ever used on a 32-bit platform, where off_t will never be a >> 64-bit type? And since this is '_lseek' rather than 'lseek,' it might >> be okay to have a different signature than POSIX. Even so, it's still >> better to use off_t consistently, rather than in 1/2 of the places where >> it is typically used. >> > > OK, this new patches what was recently committed to the arm port, and > adjusts several other prototypes in the same file. > Pushed. Thanks, R. > Christophe > >> -- >> Eric Blake, Principal Software Engineer >> Red Hat, Inc. +1-919-301-3266 >> Virtualization: qemu.org | libvirt.org >> >> newlib-prototypes.txt >> >> >> commit d843def543480ec873fea33ba235d309070e6eae >> Author: Christophe Lyon <[email protected]> >> Date: Mon Oct 1 19:10:10 2018 +0000 >> >> [Aarch64] Syscalls: fix prototypes >> >> This patch is similar the arm one committed recently. >> >> 2018-10-08 Christophe Lyon <[email protected]> >> >> * libgloss/aarch64/syscalls.c (_sbrk): Fix prototype. >> (_getpid, _write, _swiwrite, _lseek, _swilseek, _read, _wriread): >> Likewise. >> >> diff --git a/libgloss/aarch64/syscalls.c b/libgloss/aarch64/syscalls.c >> index e6dd4bd..7343cc6 100644 >> --- a/libgloss/aarch64/syscalls.c >> +++ b/libgloss/aarch64/syscalls.c >> @@ -57,19 +57,19 @@ int _link (void); >> int _stat (const char *, struct stat *); >> int _fstat (int, struct stat *); >> int _swistat (int fd, struct stat * st); >> -caddr_t _sbrk (int); >> -int _getpid (int); >> +void * _sbrk (ptrdiff_t); >> +pid_t _getpid (void); >> int _close (int); >> clock_t _clock (void); >> int _swiclose (int); >> int _open (const char *, int, ...); >> int _swiopen (const char *, int); >> -int _write (int, char *, int); >> -int _swiwrite (int, char *, int); >> -int _lseek (int, int, int); >> -int _swilseek (int, int, int); >> -int _read (int, char *, int); >> -int _swiread (int, char *, int); >> +int _write (int, const char *, size_t); >> +int _swiwrite (int, const char *, size_t); >> +off_t _lseek (int, off_t, int); >> +off_t _swilseek (int, off_t, int); >> +int _read (int, void *, size_t); >> +int _swiread (int, void *, size_t); >> void initialise_monitor_handles (void); >> >> static int checkerror (int); >> @@ -349,7 +349,7 @@ checkerror (int result) >> len, is the length in bytes to read. >> Returns the number of bytes *not* written. */ >> int >> -_swiread (int fh, char *ptr, int len) >> +_swiread (int fh, void *ptr, size_t len) >> { >> param_block_t block[3]; >> >> @@ -364,7 +364,7 @@ _swiread (int fh, char *ptr, int len) >> Translates the return of _swiread into >> bytes read. */ >> int >> -_read (int fd, char *ptr, int len) >> +_read (int fd, void *ptr, size_t len) >> { >> int res; >> struct fdent *pfd; >> @@ -389,8 +389,8 @@ _read (int fd, char *ptr, int len) >> } >> >> /* fd, is a user file descriptor. */ >> -int >> -_swilseek (int fd, int ptr, int dir) >> +off_t >> +_swilseek (int fd, off_t ptr, int dir) >> { >> int res; >> struct fdent *pfd; >> @@ -449,7 +449,8 @@ _swilseek (int fd, int ptr, int dir) >> return -1; >> } >> >> -_lseek (int fd, int ptr, int dir) >> +off_t >> +_lseek (int fd, off_t ptr, int dir) >> { >> return _swilseek (fd, ptr, dir); >> } >> @@ -457,7 +458,7 @@ _lseek (int fd, int ptr, int dir) >> /* fh, is a valid internal file handle. >> Returns the number of bytes *not* written. */ >> int >> -_swiwrite (int fh, char *ptr, int len) >> +_swiwrite (int fh, const char *ptr, size_t len) >> { >> param_block_t block[3]; >> >> @@ -470,7 +471,7 @@ _swiwrite (int fh, char *ptr, int len) >> >> /* fd, is a user file descriptor. */ >> int >> -_write (int fd, char *ptr, int len) >> +_write (int fd, const char *ptr, size_t len) >> { >> int res; >> struct fdent *pfd; >> @@ -620,7 +621,7 @@ _close (int fd) >> } >> >> int __attribute__((weak)) >> -_getpid (int n __attribute__ ((unused))) >> +_getpid (void) >> { >> return 1; >> } >> @@ -628,8 +629,8 @@ _getpid (int n __attribute__ ((unused))) >> /* Heap limit returned from SYS_HEAPINFO Angel semihost call. */ >> ulong __heap_limit __attribute__ ((aligned (8))) = 0xcafedead; >> >> -caddr_t >> -_sbrk (int incr) >> +void * >> +_sbrk (ptrdiff_t incr) >> { >> extern char end asm ("end"); /* Defined by the linker. */ >> static char *heap_end;