----- "Mike Frysinger" <[email protected]> wrote: > On Tuesday, October 12, 2010 22:06:29 CAI Qian wrote: > > ----- "Mike Frysinger" wrote: > > > On Tuesday, October 12, 2010 10:07:16 CAI Qian wrote: > > > > + x = mmap("/dev/zero", SIZE+SIZE-4096, PROT_READ|PROT_WRITE, > > > > + MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); > > > > > > uhh, have you even checked this test ? this mmap() makes > absolutely > > > no sense on so many levels. > > > > Can you elaborate? > > so you havent actually looked at the syscalls made by the application > and the > memory maps created nor used mmap() in detail before ? well, let's > start with > the mmap() man page: > > void *mmap(void *addr, size_t length, int prot, int flags, > int fd, off_t offset); > > "addr" doesnt sound like "file name" to me, and the description > agrees: > > If addr is not NULL, then the kernel takes it as a hint about where > to > place the mapping; on Linux, the mapping will be created at a nearby > page > boundary. The address of the new mapping is returned as the result > of > the call. > > so basically you told the kernel to create a mapping in/near your > .rodata > section (since that is the address of the constant string > "/dev/zero"). the > contents of that pointer (which is not of type "char *") have > absolutely no > meaning to the kernel. > > then there are the flags you're using: > > MAP_ANONYMOUS > The mapping is not backed by any file; its contents are > initialized > to zero. The fd and offset arguments are ignored; however, some > implementations require fd to be -1 if MAP_ANONYMOUS (or > MAP_ANON) > is specified, and portable applications should ensure this. > > so not only are you not getting a mapping from /dev/zero, you're just > > allocating a random piece of memory that the kernel has guaranteed > will be > zeroed out for you. so any attempts to verify the contents are zero > *because > the data came from /dev/zero* fail. > > finally, there's the fd which you're passing as "-1": > > The contents of a file mapping (as opposed to an anonymous mapping; > see > MAP_ANONYMOUS below), are initialized using length bytes starting at > offset "offset" in the file (or other object) referred to by the > file > descriptor "fd". > > "-1" is not a valid fd, so there's no way it could possibly be from > /dev/zero. > > so we're back where we started: this test makes no sense as written > and you > apparently havent verified it "works" beyond "is the exit status 0 > when it > finished". I see. MAP_ANONYMOUS is not needed. It certainly want to use int fd. v3 followed. > > > > why are you using _exit() ? > > > > It is used to terminate a child. > > i meant why arent you using exit() ? why do you need _exit() > semantics ? I don't think that too much. I think it can use exit() too. > -mike
------------------------------------------------------------------------------ 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
