[PATCH] linux: posix_fadvise: restore implementation for xtensa

Baruch Siach baruch at tkos.co.il
Thu Jan 2 19:35:58 UTC 2014


Hi Mike,

On Thu, Jan 02, 2014 at 02:10:14PM -0500, Mike Frysinger wrote:
> On Thursday 02 January 2014 05:16:14 Baruch Siach wrote:
> > Commit ee84b8b400 (linux: posix_fadvise: use new SYSCALL_ALIGN_64BIT)
> > removed posix_fadvise implementation for xtensa, since xtensa does not
> > define __NR_fadvise64. Redefine __NR_fadvise64 as __NR_fadvise64_64 to
> > restore posix_fadvise.
> 
> try this instead (i haven't compiled it, so might have errors :P)
> -mike
> 
> diff --git a/libc/sysdeps/linux/common/posix_fadvise.c b/libc/sysdeps/linux/common/posix_fadvise.c
> index e102ce7..c84c387 100644
> --- a/libc/sysdeps/linux/common/posix_fadvise.c
> +++ b/libc/sysdeps/linux/common/posix_fadvise.c
> @@ -10,18 +10,25 @@
>  
>  #include <sys/syscall.h>
>  
> -#if defined(__NR_fadvise64) || defined(__NR_arm_fadvise64_64)
> +#ifdef __NR_arm_fadvise64_64
> +/* We handle the 64bit alignment issue which is why the arm guys renamed their
> + * syscall in the first place.  So rename it back.
> + */
> +# define __NR_fadvise64_64 __NR_arm_fadvise64_64
> +#endif
> +
> +#if defined(__NR_fadvise64) || defined(__NR_fadvise64_64)
>  # include <fcntl.h>
>  # include <endian.h>
>  # include <bits/wordsize.h>
>  
> -# ifdef __NR_arm_fadvise64_64
> +# ifdef __NR_fadvise64_64
>  int posix_fadvise64(int fd, off64_t offset, off64_t len, int advice);
>  # endif
>  
>  int posix_fadvise(int fd, off_t offset, off_t len, int advice)
>  {
> -# ifdef __NR_arm_fadvise64_64
> +# ifdef __NR_fadvise64_64
>  	return posix_fadvise64(fd, offset, len, advice);
>  # else
>  	int ret;
> @@ -41,7 +48,7 @@ int posix_fadvise(int fd, off_t offset, off_t len, int advice)
>  	return 0;
>  #  endif
>  }
> -# if defined __UCLIBC_HAS_LFS__ && ((!defined __NR_fadvise64_64 && !defined __NR_arm_fadvise64_64) || __WORDSIZE == 64)
> +# if defined __UCLIBC_HAS_LFS__ && ((!defined __NR_fadvise64_64 && !defined __NR_fadvise64_64) || __WORDSIZE == 64)

Redundant !defined check here.

Other than that this patch seems to do the job. Thanks.

baruch

>  strong_alias(posix_fadvise,posix_fadvise64)
>  # endif
>  #endif

-- 
     http://baruch.siach.name/blog/                  ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -


More information about the uClibc mailing list