bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 3/4] hurd: Microoptimize mmap ()


From: Samuel Thibault
Subject: Re: [PATCH 3/4] hurd: Microoptimize mmap ()
Date: Mon, 24 Apr 2023 22:46:44 +0200
User-agent: NeoMutt/20170609 (1.8.3)

Hello,

Is it really worth making the code a bit obscure? The mapping RPC will
be way more expensive than branch misprediction...

Samuel

Sergey Bugaev, le lun. 24 avril 2023 00:55:25 +0300, a ecrit:
> Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
> ---
>  sysdeps/mach/hurd/mmap.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/sysdeps/mach/hurd/mmap.c b/sysdeps/mach/hurd/mmap.c
> index 790eb238..d570be24 100644
> --- a/sysdeps/mach/hurd/mmap.c
> +++ b/sysdeps/mach/hurd/mmap.c
> @@ -42,7 +42,8 @@ __mmap (void *addr, size_t len, int prot, int flags, int 
> fd, off_t offset)
>    mapaddr = (vm_address_t) addr;
>  
>    /* ADDR and OFFSET must be page-aligned.  */
> -  if ((mapaddr & (__vm_page_size - 1)) || (offset & (__vm_page_size - 1)))
> +  if (__glibc_unlikely ((mapaddr & (__vm_page_size - 1))
> +      || (offset & (__vm_page_size - 1))))
>      return (void *) (long int) __hurd_fail (EINVAL);
>  
>    vmprot = VM_PROT_NONE;
> @@ -73,7 +74,8 @@ __mmap (void *addr, size_t len, int prot, int flags, int 
> fd, off_t offset)
>       mach_port_t robj, wobj;
>       if (err = HURD_DPORT_USE (fd, __io_map (port, &robj, &wobj)))
>         {
> -         if (err == MIG_BAD_ID || err == EOPNOTSUPP || err == ENOSYS)
> +         if (__glibc_unlikely (err == MIG_BAD_ID || err == EOPNOTSUPP
> +             || err == ENOSYS))
>             err = ENODEV;     /* File descriptor doesn't support mmap.  */
>           return (void *) (long int) __hurd_dfail (fd, err);
>         }
> @@ -173,7 +175,7 @@ __mmap (void *addr, size_t len, int prot, int flags, int 
> fd, off_t offset)
>    if (err == KERN_PROTECTION_FAILURE)
>      err = EACCES;
>  
> -  if (err)
> +  if (__glibc_unlikely (err))
>      return (void *) (long int) __hurd_fail (err);
>  
>    return (void *) mapaddr;
> -- 
> 2.40.0



reply via email to

[Prev in Thread] Current Thread [Next in Thread]