[PATCH] Implement SysV shared memory for GNU/Hurd.
authorMarcus Brinkmann <marcus@gnu.org>
Tue, 5 Jan 2021 05:47:42 +0000 (05:47 +0000)
committerAurelien Jarno <aurel32@debian.org>
Tue, 5 Jan 2021 05:47:42 +0000 (05:47 +0000)
commit9ca8d4c61dd6808a2f8cd72b644f479c0d7e7a0c
tree1a793cf2e0bc4fcd97c5b5d154be60addb59df3f
parent5282964105aa9d6d368ea7a7c5bf1dfad0a89710
[PATCH] Implement SysV shared memory for GNU/Hurd.

2005-07-11  Marcus Brinkmann  <marcus@gnu.org>

        * hurd/Makefile (routines): Add sysvshm.
        (distribute): Add sysvshm.h.
        * hurd/sysvshm.h: New file.
        * hurd/sysvshm.c: New file.
        * sysdeps/mach/hurd/bits/stat.h (S_IMMAP0): New macro.
        (S_ISPARE): Unset the S_IMMAP0 flag.
        * sysdeps/mach/hurd/ftok.c: New file.
        * sysdeps/mach/hurd/shmat.c: New file.
        * sysdeps/mach/hurd/shmctl.c: New file.
        * sysdeps/mach/hurd/shmdt.c: New file.
        * sysdeps/mach/hurd/bits/posix_opt.h: Define _XOPEN_SHM to 1.

TODO:

> +  char filename[sizeof (SHM_DIR) - 1 + SHM_NAMEMAX];
> +  struct stat statbuf;
> +
> +  sprintf (filename, SHM_DIR SHM_NAMEPRI, id);
> +  /* SysV requires read access for IPC_STAT.  */
> +  fd = __open (filename, O_NORW);
> +  if (fd < 0)
> +    {
> +      if (errno == ENOENT)
> +     errno = EINVAL;
> +      return -1;
> +    }

Since this is repeated in more than one function, put it into an
internal subroutine.  Then we have only one place doing the
name-generation logic.



> +    case IPC_RMID:
> +      res = __unlink (filename);
> +      /* FIXME: Check error (mapping ENOENT to EINVAL).  */

Fix it.


Gbp-Pq: Topic hurd-i386
Gbp-Pq: Name tg-sysvshm.diff
hurd/Makefile
hurd/sysvshm.c [new file with mode: 0644]
hurd/sysvshm.h [new file with mode: 0644]
sysdeps/mach/hurd/bits/posix_opt.h
sysdeps/mach/hurd/ftok.c [new file with mode: 0644]
sysdeps/mach/hurd/shmat.c [new file with mode: 0644]
sysdeps/mach/hurd/shmctl.c [new file with mode: 0644]
sysdeps/mach/hurd/shmdt.c [new file with mode: 0644]
sysdeps/mach/hurd/shmget.c [new file with mode: 0644]