On 05/31/2011 09:44 PM, Angus Salkeld wrote: > On Tue, May 31, 2011 at 11:52:48PM -0300, william felipe_welter wrote: >> Angus, >> >> I make some test program (based on the code coreipcc.c) and i now i sure >> that are problems with the mmap systems call on sparc.. >> >> Source code of my test program: >> >> #include <stdlib.h> >> #include <sys/mman.h> >> #include <stdio.h> >> >> #define PATH_MAX 36 >> >> int main() >> { >> >> int32_t fd; >> void *addr_orig; >> void *addr; >> char path[PATH_MAX]; >> const char *file = "teste123XXXXXX"; >> size_t bytes=10024; >> >> snprintf (path, PATH_MAX, "/dev/shm/%s", file); >> printf("PATH=%s\n",path); >> >> fd = mkstemp (path); >> printf("fd=%d \n",fd); >> >> >> addr_orig = mmap (NULL, bytes, PROT_NONE, >> MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); >> >> >> addr = mmap (addr_orig, bytes, PROT_READ | PROT_WRITE, >> MAP_FIXED | MAP_SHARED, fd, 0); >> >> printf("ADDR_ORIG:%p ADDR:%p\n",addr_orig,addr); >> >> >> if (addr != addr_orig) { >> printf("Erro"); >> } >> } >> >> Results on x86: >> PATH=/dev/shm/teste123XXXXXX >> fd=3 >> ADDR_ORIG:0x7f867d8e6000 ADDR:0x7f867d8e6000 >> >> Results on sparc: >> PATH=/dev/shm/teste123XXXXXX >> fd=3 >> ADDR_ORIG:0xf7f72000 ADDR:0xffffffff > > Note: 0xffffffff == MAP_FAILED > > (from man mmap) > RETURN VALUE > On success, mmap() returns a pointer to the mapped area. On > error, the value MAP_FAILED (that is, (void *) -1) is returned, > and errno is set appropriately. > >> >> >> But im wondering if is really needed to call mmap 2 times ? What are the >> reason to call the mmap 2 times, on the second time using the address of the >> first? >> >> > Well there are 3 calls to mmap() > 1) one to allocate 2 * what you need (in pages) > 2) maps the first half of the mem to a real file > 3) maps the second half of the mem to the same file > > The point is when you write to an address over the end of the > first half of memory it is taken care of the the third mmap which maps > the address back to the top of the file for you. This means you > don't have to worry about ringbuffer wrapping which can be a headache. > > -Angus >
interesting this mmap operation doesn't work on sparc linux. Not sure how I can help here - Next step would be a follow up with the sparc linux mailing list. I'll do that and cc you on the message - see if we get any response. http://vger.kernel.org/vger-lists.html >> >> >> >> >> 2011/5/31 Angus Salkeld <asalk...@redhat.com> >> >>> On Tue, May 31, 2011 at 06:25:56PM -0300, william felipe_welter wrote: >>>> Thanks Steven, >>>> >>>> Now im try to run on the MCP: >>>> - Uninstall the pacemaker 1.0 >>>> - Compile and install 1.1 >>>> >>>> But now i have problems to initialize the pacemakerd: Could not >>> initialize >>>> Cluster Configuration Database API instance error 2 >>>> Debbuging with gdb i see that the error are on the confdb.. most >>> specificaly >>>> the errors start on coreipcc.c at line: >>>> >>>> >>>> 448 if (addr != addr_orig) { >>>> 449 goto error_close_unlink; <- enter here >>>> 450 } >>>> >>>> Some ideia about what can cause this ? >>>> >>> >>> I tried porting a ringbuffer (www.libqb.org) to sparc and had the same >>> failure. >>> There are 3 mmap() calls and on sparc the third one keeps failing. >>> >>> This is a common way of creating a ring buffer, see: >>> http://en.wikipedia.org/wiki/Circular_buffer#Exemplary_POSIX_Implementation >>> >>> I couldn't get it working in the short time I tried. It's probably >>> worth looking at the clib implementation to see why it's failing >>> (I didn't get to that). >>> >>> -Angus >>> >>> >>> _______________________________________________ >>> Pacemaker mailing list: pacema...@oss.clusterlabs.org >>> http://oss.clusterlabs.org/mailman/listinfo/pacemaker >>> >>> Project Home: http://www.clusterlabs.org >>> Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf >>> Bugs: >>> http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker >>> >> >> >> >> -- >> William Felipe Welter >> ------------------------------ >> Consultor em Tecnologias Livres >> william.wel...@4linux.com.br >> www.4linux.com.br > >> _______________________________________________ >> Openais mailing list >> Openais@lists.linux-foundation.org >> https://lists.linux-foundation.org/mailman/listinfo/openais > > > _______________________________________________ > Pacemaker mailing list: pacema...@oss.clusterlabs.org > http://oss.clusterlabs.org/mailman/listinfo/pacemaker > > Project Home: http://www.clusterlabs.org > Getting started: http://www.clusterlabs.org/doc/Cluster_from_Scratch.pdf > Bugs: > http://developerbugs.linux-foundation.org/enter_bug.cgi?product=Pacemaker _______________________________________________ Openais mailing list Openais@lists.linux-foundation.org https://lists.linux-foundation.org/mailman/listinfo/openais