[PATCH v5 11/14] tools/nolibc: clean up mmap() support

Zhangjin Wu falcon at tinylab.org
Sun Jul 2 23:51:52 PDT 2023


> On Wed, Jun 28, 2023 at 09:41:13PM +0800, Zhangjin Wu wrote:
> >  static __attribute__((unused))
> >  void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset)
> >  {
> > -	void *ret = sys_mmap(addr, length, prot, flags, fd, offset);
> > -
> > -	if ((unsigned long)ret >= -4095UL) {
> > -		SET_ERRNO(-(long)ret);
> > -		ret = MAP_FAILED;
> > -	}
> > -	return ret;
> > +	return (void *)__sysret((unsigned long)sys_mmap(addr, length, prot, flags, fd, offset));
> >  }
> 
> One point regarding this one. By doing so, we're hard-coding the fact
> that we consider that MAP_FAILED is always -1. I'm not necessarily
> against it, but this implication can be confusing for those searching
> where it's being set. I would suggest putting a comment before the
> mmap() function saying:
> 
>  /* Note that on Linux MAP_FAILED is -1 so we can use the generic __sysret()
>   * which returns -1 upon error and still satisfy user land that checks for
>   * MAP_FAILED.
>   */
> 
> Since it's an assumed choice that theoretically could affect portability,
> it should be reflected in the commit message as well (and we all know it
> does not have any impact).
>

Yeah, we do need such a comment and commit message note, thanks.

Best regards,
Zhangjin

> Thanks!
> Willy



More information about the linux-riscv mailing list