Start syslogd hangs in LinuxPPC-2.4.25

onetarget at onetarget at
Mon Jan 1 15:25:34 EST 2007

Dear all    I am now using ELDK-2005-1 from denx, the powerpc cpu is MPC8270 (TQM8260 in platform selection), the libc is, the kernel from ELDK is 2.4.25.    I also use syslogd from our previous product.    Now I met a problem when start syslogd from bash, on other platforms, such as ARM/X86/Mips, the syslogd can fork a child process, and then the parent syslogd will be killed by child syslogd quickly, so leaving the child syslogd running in background.    But, on my PowerPC target, the parent syslogd will hang for 30Sec, and then exit with alarm clock timeout(30Sec). I used strace to check what happened in syslogd, and I found that it will use select sytem call and read /proc/kmsg.    To compare, on other targets, there is read(6,.....,nnnn)=-1 [EAGAIN](6 is the file id of /proc/kmsg), then child syslogd will kill parent syslogd. But on PowerPC target, it is read(6,......,nnnn)=?[ERESTARTSYS], so I think the libc will call system call read many many times.    Then, I check the child syslogd with /proc/thepid/status, I found the sigpnd is 000000000, that is there is no signal pending on child syslogd.    But, in /kernel/prink.c, I added prink("aaaaaaaaaa\n") after wait_event_interruptible() when it returns error, and with dmesg, I did get aaaaaaaaaa output.    So, to summarize, on other hardware platforms, why there is EAGAIN, while on PPC target, it is ERESTARTSYS instead.    I hope I have described my question clearly. Thank you for your help and best regards,    1-Jan-2007

惠普商用台式机dc5750,高性能,低功耗!( )

注册新浪2G免费邮箱( )
-------------- next part --------------
An HTML attachment was scrubbed...

More information about the Linuxppc-embedded mailing list