Morita,<br><br>First of all, thanks a lot for your answer. <br><br>Actually, I have tried your suggestion, but without success. Apparently, there is another function that belongs to the newer GLIBC and is not part of the older one. <br>
“Glibc 2.7 doesn't contain timerfd, signalfd, and eventfd”. I’ve substituted the three wrapper functions that call directly the system call. For instance, <br><br>#include <sys/syscall.h><br>#include <unistd.h><br>
#include <fcntl.h><br>#include <stdint.h><br><br>#ifndef __NR_eventfd2<br>#if defined(__x86_64__)<br>#define __NR_eventfd2 290<br>#elif defined(__i386__)<br>#define __NR_eventfd2 328<br>#else<br>#error "Can't define __NR_eventfd2 for your architecture."<br>
#endif<br>#endif<br><br><br>typedef uint64_t eventfd_t;<br><br>#define EFD_SEMAPHORE 1<br>#define EFD_CLOEXEC 02000000<br>#define EFD_NONBLOCK 04000<br><br>int eventfd(unsigned int, int);<br>int eventfd_read(int, eventfd_t *);<br>
int eventfd_write(int, eventfd_t);<br><br>inline int eventfd_read(int fd, eventfd_t *value)<br>{<br> return (sizeof(*value) == read(fd, value, sizeof(*value))) ? 0 : -1;<br>}<br><br>inline int eventfd(unsigned int initval, int flags) <br>
{<br> return syscall(__NR_eventfd2, initval, flags);<br>}<br><br>inline int eventfd_write(int fd, eventfd_t value)<br>{<br> return (sizeof(value) == write(fd, &value, sizeof(value))) ? 0 : -1;<br>}<br><br>The code just works on local machine. It doesn’t work on the older GLIBC machine and for some reason the GLIBC dependency remains. I put this mark <<<<<<<<< GLIBC DEPENDENCY >>>>>>>>> to show the dependecy.<br>
<br>#ldd –v sheep<br><br>root@ubuntu:/opt/apps/corosync/sbin# ldd -v sheep<br> linux-gate.so.1 => (0xb777c000)<br> libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb774d000)<br> libcpg.so.4 => /usr/lib/libcpg.so.4 (0xb7745000)<br>
libcfg.so.4 => /usr/lib/libcfg.so.4 (0xb773d000)<br> libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7593000)<br> /lib/ld-linux.so.2 (0xb777d000)<br> libcoroipcc.so.4 => /usr/lib/libcoroipcc.so.4 (0xb758c000)<br>
<br> Version information:<br> ./sheep:<br> libcfg.so.4 (COROSYNC_CFG_0.82) => /usr/lib/libcfg.so.4<br> libcpg.so.4 (COROSYNC_CPG_1.0) => /usr/lib/libcpg.so.4<br> libpthread.so.0 (GLIBC_2.1) => /lib/i386-linux-gnu/libpthread.so.0<br>
libpthread.so.0 (GLIBC_2.2) => /lib/i386-linux-gnu/libpthread.so.0<br> libpthread.so.0 (GLIBC_2.3.2) => /lib/i386-linux-gnu/libpthread.so.0<br> libpthread.so.0 (GLIBC_2.0) => /lib/i386-linux-gnu/libpthread.so.0<br>
libc.so.6 (GLIBC_2.3) => /lib/i386-linux-gnu/libc.so.6<br><br> <<<<<<<<< GLIBC DEPENDENCY >>>>>>>>> <br> libc.so.6 (GLIBC_2.10) => /lib/i386-linux-gnu/libc.so.6 <br>
<<<<<<<<< GLIBC DEPENDENCY >>>>>>>>><br> <br> libc.so.6 (GLIBC_2.2) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.3.2) => /lib/i386-linux-gnu/libc.so.6<br>
libc.so.6 (GLIBC_2.7) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.1) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.4) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.3.4) => /lib/i386-linux-gnu/libc.so.6<br>
libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6<br> /lib/i386-linux-gnu/libpthread.so.0:<br> ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2<br> ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2<br>
ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2<br> libc.so.6 (GLIBC_2.3.2) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.1) => /lib/i386-linux-gnu/libc.so.6<br>
libc.so.6 (GLIBC_PRIVATE) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.2) => /lib/i386-linux-gnu/libc.so.6<br> /usr/lib/libcpg.so.4:<br>
libc.so.6 (GLIBC_2.3.4) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.4) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6<br>
libcoroipcc.so.4 (COROSYNC_COROIPCC_3.0) => /usr/lib/libcoroipcc.so.4<br> libpthread.so.0 (GLIBC_2.0) => /lib/i386-linux-gnu/libpthread.so.0<br> /usr/lib/libcfg.so.4:<br> libc.so.6 (GLIBC_2.3.4) => /lib/i386-linux-gnu/libc.so.6<br>
libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.4) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6<br> libcoroipcc.so.4 (COROSYNC_COROIPCC_3.0) => /usr/lib/libcoroipcc.so.4<br>
libpthread.so.0 (GLIBC_2.0) => /lib/i386-linux-gnu/libpthread.so.0<br> /lib/i386-linux-gnu/libc.so.6:<br> ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2<br> ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2<br>
ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2<br> /usr/lib/libcoroipcc.so.4:<br> libc.so.6 (GLIBC_2.1.3) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.4) => /lib/i386-linux-gnu/libc.so.6<br>
libc.so.6 (GLIBC_2.0) => /lib/i386-linux-gnu/libc.so.6<br> libc.so.6 (GLIBC_2.3.4) => /lib/i386-linux-gnu/libc.so.6<br> libpthread.so.0 (GLIBC_2.2) => /lib/i386-linux-gnu/libpthread.so.0<br>
libpthread.so.0 (GLIBC_2.1) => /lib/i386-linux-gnu/libpthread.so.0<br> libpthread.so.0 (GLIBC_2.0) => /lib/i386-linux-gnu/libpthread.so.0<br><br><br><div class="gmail_extra"><br><br><div class="gmail_quote">
2012/10/22 Gustavo Callou <span dir="ltr"><<a href="mailto:grac@cin.ufpe.br" target="_blank">grac@cin.ufpe.br</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<p>Outro caminho... p rodar o sheepdog</p>
<div class="gmail_quote">---------- Forwarded message ----------<br>From: "MORITA Kazutaka" <<a href="mailto:morita.kazutaka@lab.ntt.co.jp" target="_blank">morita.kazutaka@lab.ntt.co.jp</a>><br>Date: Oct 21, 2012 10:56 PM<br>
Subject: Re: [sheepdog] GLIBC issue<br>To: "Gustavo Callou" <<a href="mailto:grac@cin.ufpe.br" target="_blank">grac@cin.ufpe.br</a>><br>Cc: <<a href="mailto:sheepdog@lists.wpkg.org" target="_blank">sheepdog@lists.wpkg.org</a>><br>
<br type="attribution">At Fri, 19 Oct 2012 14:44:00 -0300,<div class="im"><br>
<div>Gustavo Callou wrote:<br>
><br>
> Dear Sheepdog Development Team,<br>
><br>
> I’ve been conducting experiments with Sheepdog. I have already tested it<br>
> with Ubuntu 12.04 machines and the Sheepdog worked well. I would like to<br>
> conduct other experiments using a specific environment that uses GLIBC 2.7.<br>
> I know that Sheepdog requires the version 2.9 or later of the GLIBC.<br>
> However, in this particular case, I’m not able to update the version of the<br>
> GLIBC. I was wondering if you could provide me some suggestions to deal<br>
> with such issue. Thanks a lot in advance.<br>
<br>
</div></div>Glibc 2.7 doesn't contain timerfd, signalfd, and eventfd. If your<br>
kernel supports them, I think you can use Sheepdog by defining all<br>
relevant functions and structures, for example, as follows.<br>
<br>
#define __NR_signalfd 282<br>
<br>
int signalfd(int fd, const sigset_t *mask, int flags)<br>
{<br>
return syscall(__NR_signalfd, fd, mask, flags);<br>
}<br>
<br>
<br>
Thanks,<br>
<br>
Kazutaka<br>
</div>
</blockquote></div><br><br clear="all"><br>-- <br>Bruno Silva<br>Engenheiro da Computação.<br>
</div>