> -----Original Message-----
> From: Garrett Cooper [mailto:[email protected]]
> Sent: Wednesday, October 13, 2010 5:26 AM
> To: Mitani
> Cc: [email protected]
> Subject: Re: [LTP] About "hugeshmat01" and "humeshmget03" testsets
> 
> On Tue, Oct 5, 2010 at 8:26 PM, Mitani <[email protected]> wrote:
> >> -----Original Message-----
> >> From: Garrett Cooper [mailto:[email protected]]
> >> Sent: Sunday, October 03, 2010 10:02 AM
> >> To: Mitani
> >> Cc: [email protected]
> >> Subject: Re: [LTP] About "hugeshmat01" and "humeshmget03" testsets
> >>
> >> On Tue, Sep 28, 2010 at 9:40 PM, Mitani <[email protected]> wrote:
> >> >> -----Original Message-----
> >> >> From: Garrett Cooper [mailto:[email protected]]
> >> >> Sent: Tuesday, September 07, 2010 4:04 PM
> >> >> To: Mitani
> >> >> Cc: [email protected]
> >> >> Subject: Re: [LTP] About "hugeshmat01" and "humeshmget03"
> testsets
> >> >>
> >> >> On Mon, Sep 6, 2010 at 11:53 PM, Mitani <[email protected]>
> wrote:
> >> >> > Hi,
> >> >> >
> >> >> > I sent patches of "hugeshmat01" and "humeshmget03" testsets
> to
> >> >> mailing-list
> >> >> > in the middle of August, but they aren't updated.
> >> >> > Would you teach me what kind of situation they are?
> >> >> >
> >> >> >  hugeshmat01:
> >> >>
> >>
> >    http://www.mail-archive.com/[email protected]/m
> >> >> sg10448.html
> >> >> >  humeshmget03:
> >> >>
> >>
> >    http://www.mail-archive.com/[email protected]/m
> >> >> sg10467.html
> >> >> >
> >> >> >  (The "humeshmat01" was revised on August 16, but same failure
> >> has
> >> >> >   occurred in my system.)
> >> >> >
> >> >> > I am glad if I can get some information about the patch.
> >> >> > I'm looking forward to reply:-)
> >> >>
> >> >>     Sorry... another item I forgot to follow up on. I'll look
> into
> >> >> this over the next couple of days and provide feedback about this.
> >> >> Thanks,
> >> >> -Garrett
> >> >
> >> > Were my revisions OK?
> >> > I am glad if you consider about these patches when you are free.
> >>
> >> 1. Where's the requirement noted that you added the code for in
> >> hugeshmget03 ?
> >> 2. How do you know the value added to hugeshmat01 isn't page aligned?
> >> Why not get the page size from sysconf and subtract the value from
> >> one, and add _that_ value?
> >>
> >> Thanks,
> >> -Garrett
> >
> >
> >>1. Where's the requirement noted that you added the code for in
> > hugeshmget03 ?
> >
> > It is in follwing URL in August 13:
> >  http://www.mail-archive.com/[email protected]/msg
> 10467.html
> >
> >
> >>2. How do you know the value added to hugeshmat01 isn't page aligned?
> >
> > It is in follwing URL in August 09:
> >  http://www.mail-archive.com/[email protected]/msg
> 10448.html
> >  http://www.mail-archive.com/[email protected]/msg
> 10532.html
> >
> > The reason that hugeshmat01 isn't page aligned is from the shmat()'s
> > error code 22 (EINVAL).
> > shmat()'s man page says about this error code:
> > ------------
> >       EINVAL The value of shmid is not a valid shared memory
> identifier,
> > the  shmaddr
> >              is  not  a  null  pointer, and the value of
> (shmaddr
> > -((uintptr_t)shmaddr
> >              %SHMLBA)) is an illegal
> address  for  attaching  shared
> > memory;  or  the
> >              shmaddr  is  not a null pointer, (shmflg &SHM_RND)
> is 0, and
> > the value of
> >              shmaddr is an illegal address for attaching shared
> memory.
> > ------------
> >
> > The failure occurred in following shmat():
> > ---(hugeshmat01.c)---------
> > [...]
> >                for (i=0; i<TST_TOTAL; i++) {
> >
> >                        /*
> >                         * Use TEST macro to make the call
> >                         */
> >                        errno = 0;
> >                        addr = shmat(*(TC[i].shmid), (void
> *)(TC[i].addr),
> >                                   TC[i].flags);
> > [...]
> > ------------
> >
> > This failure occurred in second loop (i=1), and arguments of shmat()
> > are as follows:
> > ------------
> >   shmat(id, 0x10000000eee, SHM_RND)
> > ------------
> >
> > "shmaddr" argument (second argument) of shmat() is not NULL.
> Therefore
> > I thought that page aligned occurred.
> >
> >
> >>Why not get the page size from sysconf and subtract the value from
> one, and
> > add _that_ value?
> >
> > This value is dynamic address, and this is the value which the first
> shmat()
> > returned.
> > This is the value with achievement in the each users system at least.
> > When a fixed address ("0x10000000eee" or "0x60000eee") was
> specified,
> > depending on a case, this address may be the address which other
> processes
> > use.
> > I thought that this method of using dynamic address is better than
> > using fixed value to "shmaddr" argument.
> 
>     If you have links to official documentation from your copy of
> RHEL's kernel / glibc sources I could reference, that would be much
> appreciated.
> Thanks,
> -Garrett



I referred "man" command in my system (RHEL4.8 x86_64).
------------
# man shmat

SHMAT(P)
SHMAT(P)

NAME
SHMAT(P)
SHMAT(P)

NAME
       shmat - XSI shared memory attach operation

SYNOPSIS
       #include <sys/shm.h>

       void *shmat(int shmid, const void *shmaddr, int shmflg);

DESCRIPTION
       The  shmat()  function  operates  on XSI shared memory (see the Base
Definitions
       volume of IEEE Std 1003.1-2001, Section 3.340,  Shared  Memory
Object).  It  is
       unspecified  whether  this function interoperates with the realtime
interprocess
       communication facilities defined in Realtime .

       The shmat() function attaches the shared  memory  segment  associated
with  the
       shared  memory identifier specified by shmid to the address space of
the calling
       process. The segment is attached at the address specified by one of
the  follow-
       ing criteria:

#        * If  shmaddr is a null pointer, the segment is attached at the
first available
#          address as selected by the system.

>        * If shmaddr is not a null pointer and (shmflg &SHM_RND) is
non-zero, the  seg-
>          ment  is  attached  at  the  address  given  by (shmaddr
-((uintptr_t)shmaddr
>          %SHMLBA)).  The character '%' is the C-language remainder
operator.

        * If shmaddr is not a null pointer and (shmflg &SHM_RND) is 0, the
segment  is
          attached at the address given by shmaddr.

        * The  segment  is attached for reading if (shmflg &SHM_RDONLY) is
non-zero and
          the calling process has read permission; otherwise, if it is 0 and
the  call-
          ing  process has read and write permission, the segment is
attached for read-
          ing and writing.
<...>
ERRORS
       The shmat() function shall fail if:

       EACCES Operation  permission is denied to the calling process; see
XSI Interpro-
              cess Communication .

%       EINVAL The value of shmid is not a valid shared memory identifier,
the  shmaddr
%              is  not  a  null  pointer, and the value of (shmaddr
-((uintptr_t)shmaddr
%              %SHMLBA)) is an illegal address  for  attaching  shared
memory;  or  the
%              shmaddr  is  not a null pointer, (shmflg &SHM_RND) is 0, and
the value of
%              shmaddr is an illegal address for attaching shared memory.

       EMFILE The number of shared memory segments  attached  to  the
calling  process
              would exceed the system-imposed limit.

       ENOMEM The  available  data  space is not large enough to accommodate
the shared
              memory segment.

       The following sections are informative.
<...>
------------

hugeshmat01's first test has similar with above situation marked by "#".
hugeshmat01's second test has similar with above situation marked by ">".

hugeshmat01's second test calls "shmat(id, 0x10000000eee, SHM_RND)".
But it failed with EINVAL. This is the above situation marked by "%".
Therefore I think "0x10000000eee" is not suitable fot this test.

Other documents look like above manual page.
http://linux.die.net/man/2/shmat
http://linux.about.com/library/cmd/blcmdl2_shmat.htm



Regards--

-Tomonori Mitani



------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1,  ECMAScript5, and DOM L2 & L3.
Spend less time writing and  rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to