This is the mail archive of the
libc-ports@sources.redhat.com
mailing list for the libc-ports project.
Re: SHMLBA on ARM
- From: "Carlos O'Donell" <carlos at systemhalted dot org>
- To: "Khem Raj" <kraj at mvista dot com>
- Cc: libc-ports at sourceware dot org
- Date: Wed, 21 Nov 2007 08:18:27 -0500
- Subject: Re: SHMLBA on ARM
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; bh=s3ySi1BOkOkhKSK718YeXF/+TZOoFAWBO5B9y45rKEQ=; b=DZTLFjEGpykote7Dg7U3iqZZxJMXQGBZhcoPQgyiyrzidrjJvOR+UTWsgXajL/yHh7L0GWsAwIyAXXxrvNnvkROp0oM3EQKU4qt4+ymoDqfuyZ6g3+VCIjpBTRxhEtYDMh7fyTaSrn1Ezxw5Kvwvs3GWcZUNgPbjvHG1PUNMkjY=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:content-transfer-encoding:content-disposition:references:x-google-sender-auth; b=AA/gqxOnmT7eEIysAwQ0tmpnRWFfVA+iqYj5UaihD1b67he1NkneBdSLqqwEdsQnUr+aiH66Os9WLM5/aO72/Ft4ciHf9B4WWqys9Q/zSXxdx+Zr2q6pQ4Abr+7sPNngGhPXXyneAXGrG8lIQC8h+JSqzRG+qLPMSWhOT2TXrPU=
- References: <20071118085318.GA11232@mvista.com> <119aab440711200535p2a4ef028o4a4b49538f120d8e@mail.gmail.com> <47436C0F.3090409@mvista.com>
> The path in the previous patch was incorrect. It is corrected in patch
> attached to this message.
This looks better. Comments inline below.
> I do not see any new fails or passes with this patch. Here are results
> on arm-linux-gnueabi
This is good. Can the LTP test be reduced to something we can put in the
glibc testsuite?
> Changelog.arm
>
> 2007-11-20 Khem Raj <kraj@mvista.com>
>
> * sysdeps/unix/sysv/linux/arm/bits/shm.h: New file.
>
> --- /dev/null 2007-10-15 16:18:04.000000000 -0700
> +++ sysdeps/unix/sysv/linux/arm/bits/shm.h 2007-11-20 10:31:05.000000000 -0800
> @@ -0,0 +1,102 @@
> +/* Copyright (C) 1995,1996,1997,2000,2002,2004 Free Software Foundation, Inc.
Copyright date needs adjustment.
> + 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, write to the Free
> + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
> + 02111-1307 USA. */
> +
> +#ifndef _SYS_SHM_H
> +# error "Never include <bits/shm.h> directly; use <sys/shm.h> instead."
> +#endif
> +
> +#include <bits/types.h>
> +
> +/* Permission flag for shmget. */
> +#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */
> +#define SHM_W 0200 /* or S_IWUGO from <linux/stat.h> */
> +
> +/* Flags for `shmat'. */
> +#define SHM_RDONLY 010000 /* attach read-only else read-write */
> +#define SHM_RND 020000 /* round attach address to SHMLBA */
> +#define SHM_REMAP 040000 /* take-over region on attach */
> +
> +/* Commands for `shmctl'. */
> +#define SHM_LOCK 11 /* lock segment (root only) */
> +#define SHM_UNLOCK 12 /* unlock segment (root only) */
> +
> +__BEGIN_DECLS
> +
> +/* Segment low boundary address multiple. */
> +#define SHMLBA (__getpagesize () << 2)
> +extern int __getpagesize (void) __THROW __attribute__ ((__const__));
> +
> +
> +/* Type to count number of attaches. */
> +typedef unsigned long int shmatt_t;
> +
> +/* Data structure describing a set of semaphores. */
> +struct shmid_ds
> + {
> + struct ipc_perm shm_perm; /* operation permission struct */
> + size_t shm_segsz; /* size of segment in bytes */
> + __time_t shm_atime; /* time of last shmat() */
> + unsigned long int __unused1;
> + __time_t shm_dtime; /* time of last shmdt() */
> + unsigned long int __unused2;
> + __time_t shm_ctime; /* time of last change by shmctl() */
> + unsigned long int __unused3;
> + __pid_t shm_cpid; /* pid of creator */
> + __pid_t shm_lpid; /* pid of last shmop */
> + shmatt_t shm_nattch; /* number of current attaches */
> + unsigned long int __unused4;
> + unsigned long int __unused5;
> + };
> +
> +#ifdef __USE_MISC
> +
> +/* ipcs ctl commands */
> +# define SHM_STAT 13
> +# define SHM_INFO 14
> +
> +/* shm_mode upper byte flags */
> +# define SHM_DEST 01000 /* segment will be destroyed on last detach */
> +# define SHM_LOCKED 02000 /* segment will not be swapped */
> +# define SHM_HUGETLB 04000 /* segment is mapped via hugetlb */
Missing SHM_NORESERVE.
It appears that this file is an older copy of the canonical
"sysdeps/unix/sysv/linux/bits/shm.h", please use this file
when making a copy.
> +
> +struct shminfo
> + {
> + unsigned long int shmmax;
> + unsigned long int shmmin;
> + unsigned long int shmmni;
> + unsigned long int shmseg;
> + unsigned long int shmall;
> + unsigned long int __unused1;
> + unsigned long int __unused2;
> + unsigned long int __unused3;
> + unsigned long int __unused4;
> + };
> +
> +struct shm_info
> + {
> + int used_ids;
> + unsigned long int shm_tot; /* total allocated shm */
> + unsigned long int shm_rss; /* total resident shm */
> + unsigned long int shm_swp; /* total swapped shm */
> + unsigned long int swap_attempts;
> + unsigned long int swap_successes;
> + };
> +
> +#endif /* __USE_MISC */
> +
> +__END_DECLS
Please fixup and resend.
Cheers,
Carlos.