public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
From: Adhemerval Zanella <adhemerval.zanella@linaro.org>
To: Florian Weimer <fweimer@redhat.com>, libc-alpha@sourceware.org
Subject: Re: [PATCH 03/35] rt: Replace generic stub of shm_open with the posix version
Date: Thu, 17 Jun 2021 08:08:26 -0300	[thread overview]
Message-ID: <3bcb1e4c-7490-5fef-143a-3a6311c05f35@linaro.org> (raw)
In-Reply-To: <f870250a9c5a4113784b92ea58a1b92d47dd16e7.1622761828.git.fweimer@redhat.com>



On 03/06/2021 20:15, Florian Weimer via Libc-alpha wrote:
> Result of: git mv -f sysdeps/posix/shm_open.c rt
> and manual removal of the _POSIX_MAPPED_FILES preprocessor condition.

LGTM, thanks.

Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>

> ---
>  rt/shm_open.c            | 34 ++++++++++++++++++----
>  sysdeps/posix/shm_open.c | 62 ----------------------------------------
>  2 files changed, 29 insertions(+), 67 deletions(-)
>  delete mode 100644 sysdeps/posix/shm_open.c
> 
> diff --git a/rt/shm_open.c b/rt/shm_open.c
> index e2bd25978a..a89aac4102 100644
> --- a/rt/shm_open.c
> +++ b/rt/shm_open.c
> @@ -1,4 +1,5 @@
> -/* Copyright (C) 2000-2021 Free Software Foundation, Inc.
> +/* shm_open -- open a POSIX shared memory object.  Generic POSIX file version.
> +   Copyright (C) 2001-2021 Free Software Foundation, Inc.
>     This file is part of the GNU C Library.
>  
>     The GNU C Library is free software; you can redistribute it and/or
> @@ -16,13 +17,36 @@
>     <https://www.gnu.org/licenses/>.  */
>  
>  #include <errno.h>
> -#include <sys/mman.h>
> +#include <fcntl.h>
> +#include <pthread.h>
> +#include <shm-directory.h>
> +#include <unistd.h>
>  
>  /* Open shared memory object.  */
>  int
>  shm_open (const char *name, int oflag, mode_t mode)
>  {
> -  __set_errno (ENOSYS);
> -  return -1;
> +  struct shmdir_name dirname;
> +  if (__shm_get_name (&dirname, name, false) != 0)
> +    {
> +      __set_errno (EINVAL);
> +      return -1;
> +    }
> +
> +  oflag |= O_NOFOLLOW | O_CLOEXEC;
> +
> +  /* Disable asynchronous cancellation.  */
> +  int state;
> +  pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
> +
> +  int fd = open (dirname.name, oflag, mode);
> +  if (fd == -1 && __glibc_unlikely (errno == EISDIR))
> +    /* It might be better to fold this error with EINVAL since
> +       directory names are just another example for unsuitable shared
> +       object names and the standard does not mention EISDIR.  */
> +    __set_errno (EINVAL);
> +
> +  pthread_setcancelstate (state, NULL);
> +
> +  return fd;
>  }
> -stub_warning (shm_open)
> diff --git a/sysdeps/posix/shm_open.c b/sysdeps/posix/shm_open.c
> deleted file mode 100644
> index 1817c52f7f..0000000000
> --- a/sysdeps/posix/shm_open.c
> +++ /dev/null
> @@ -1,62 +0,0 @@
> -/* shm_open -- open a POSIX shared memory object.  Generic POSIX file version.
> -   Copyright (C) 2001-2021 Free Software Foundation, Inc.
> -   This file is part of the GNU C Library.
> -
> -   The GNU C Library is free software; you can redistribute it and/or
> -   modify it under the terms of the GNU Lesser General Public
> -   License as published by the Free Software Foundation; either
> -   version 2.1 of the License, or (at your option) any later version.
> -
> -   The GNU C Library is distributed in the hope that it will be useful,
> -   but WITHOUT ANY WARRANTY; without even the implied warranty of
> -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> -   Lesser General Public License for more details.
> -
> -   You should have received a copy of the GNU Lesser General Public
> -   License along with the GNU C Library; if not, see
> -   <https://www.gnu.org/licenses/>.  */
> -
> -#include <unistd.h>
> -
> -#if ! _POSIX_MAPPED_FILES
> -
> -# include <rt/shm_open.c>
> -
> -#else
> -
> -# include <errno.h>
> -# include <fcntl.h>
> -# include <pthread.h>
> -# include <shm-directory.h>
> -
> -
> -/* Open shared memory object.  */
> -int
> -shm_open (const char *name, int oflag, mode_t mode)
> -{
> -  struct shmdir_name dirname;
> -  if (__shm_get_name (&dirname, name, false) != 0)
> -    {
> -      __set_errno (EINVAL);
> -      return -1;
> -    }
> -
> -  oflag |= O_NOFOLLOW | O_CLOEXEC;
> -
> -  /* Disable asynchronous cancellation.  */
> -  int state;
> -  pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, &state);
> -
> -  int fd = open (dirname.name, oflag, mode);
> -  if (fd == -1 && __glibc_unlikely (errno == EISDIR))
> -    /* It might be better to fold this error with EINVAL since
> -       directory names are just another example for unsuitable shared
> -       object names and the standard does not mention EISDIR.  */
> -    __set_errno (EINVAL);
> -
> -  pthread_setcancelstate (state, NULL);
> -
> -  return fd;
> -}
> -
> -#endif  /* _POSIX_MAPPED_FILES */
> 

  reply	other threads:[~2021-06-17 11:08 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-03 23:14 [PATCH 00/35] Linux: Move librt into libc Florian Weimer
2021-06-03 23:14 ` [PATCH 01/35] rt: Lexicographically sort Versions file; librt-routines in Makefile Florian Weimer
2021-06-17 11:05   ` Adhemerval Zanella
2021-06-03 23:14 ` [PATCH 02/35] Fix librt-routines-var issues for !PTHREAD_IN_LIBC Florian Weimer
2021-06-17 11:07   ` Adhemerval Zanella
2021-06-17 12:19     ` Florian Weimer
2021-06-03 23:15 ` [PATCH 03/35] rt: Replace generic stub of shm_open with the posix version Florian Weimer
2021-06-17 11:08   ` Adhemerval Zanella [this message]
2021-06-03 23:15 ` [PATCH 04/35] rt: Replace generic stub of shm_unlink " Florian Weimer
2021-06-17 11:08   ` Adhemerval Zanella
2021-06-03 23:15 ` [PATCH 05/35] rt: Move shm_open into libc Florian Weimer
2021-06-17 11:12   ` Adhemerval Zanella
2021-06-17 12:25   ` Adhemerval Zanella
2021-06-03 23:15 ` [PATCH 06/35] rt: Move shm_unlink " Florian Weimer
2021-06-17 18:00   ` Adhemerval Zanella
2021-06-03 23:15 ` [PATCH 07/35] rt: Move generic implementation from sysdeps/pthread to rt Florian Weimer
2021-06-03 23:15 ` [PATCH 08/35] nptl: Move pthreadP.h into sysdeps directory Florian Weimer
2021-06-03 23:15 ` [PATCH 09/35] nptl: Add internal macro definition of pthread_self Florian Weimer
2021-06-03 23:15 ` [PATCH 10/35] Add hidden prototypes for fsync, fdatasync Florian Weimer
2021-06-03 23:15 ` [PATCH 11/35] Linux: Move aio_init from librt into libc Florian Weimer
2021-06-03 23:15 ` [PATCH 12/35] Linux: Move aio_cancel, aio_cancel64 " Florian Weimer
2021-06-03 23:15 ` [PATCH 13/35] Linux: Move aio_error, aio_error64 " Florian Weimer
2021-06-03 23:15 ` [PATCH 14/35] Linux: Move aio_fsync, aio_fsync64 " Florian Weimer
2021-06-03 23:16 ` [PATCH 15/35] Linux: Move aio_read, aio_read64 " Florian Weimer
2021-06-03 23:16 ` [PATCH 16/35] Linux: Move aio_return, aio_return64 " Florian Weimer
2021-06-03 23:16 ` [PATCH 17/35] Linux: Move aio_suspend, aio_suspend64 from librt to libc Florian Weimer
2021-06-03 23:16 ` [PATCH 18/35] Linux: Move aio_write, aio_write64 into libc Florian Weimer
2021-06-03 23:16 ` [PATCH 19/35] rt: Rework lio_listio implementation Florian Weimer
2021-06-03 23:16 ` [PATCH 20/35] Linux: Move lio_listio, lio_listio64 from librt to libc Florian Weimer
2021-06-03 23:16 ` [PATCH 21/35] Linux: Move mq_close " Florian Weimer
2021-06-03 23:16 ` [PATCH 22/35] Linux: Move mq_setattr " Florian Weimer
2021-06-03 23:16 ` [PATCH 23/35] Linux: Move mq_getattr " Florian Weimer
2021-06-03 23:16 ` [PATCH 24/35] Linux: Move mq_notify " Florian Weimer
2021-06-03 23:16 ` [PATCH 25/35] Linux: Move mq_open, __mq_open_2 " Florian Weimer
2021-06-03 23:17 ` [PATCH 26/35] Linux: Move mq_receive, mq_timedreceive " Florian Weimer
2021-06-03 23:17 ` [PATCH 27/35] Linux: Move mq_send, mq_timedsend " Florian Weimer
2021-06-03 23:17 ` [PATCH 28/35] Linux: Move mq_unlink " Florian Weimer
2021-06-03 23:17 ` [PATCH 29/35] Linux: Move timer helper routines " Florian Weimer
2021-06-03 23:17 ` [PATCH 30/35] Linux: Define TIMER_T_WAS_INT_COMPAT in kernel-posix-timers.h Florian Weimer
2021-06-03 23:17 ` [PATCH 31/35] Linux: Move timer_create, timer_delete from librt to libc Florian Weimer
2021-06-03 23:17 ` [PATCH 32/35] Linux: Move timer_getoverrun " Florian Weimer
2021-06-03 23:17 ` [PATCH 33/35] Linux: Move timer_gettime " Florian Weimer
2021-06-03 23:17 ` [PATCH 34/35] Linux: Move timer_settime " Florian Weimer
2021-06-03 23:17 ` [PATCH 35/35] Linux: Cleanups after librt move Florian Weimer
2021-06-15 20:18 ` [PATCH 00/35] Linux: Move librt into libc Florian Weimer

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3bcb1e4c-7490-5fef-143a-3a6311c05f35@linaro.org \
    --to=adhemerval.zanella@linaro.org \
    --cc=fweimer@redhat.com \
    --cc=libc-alpha@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).