Andreas Share wrote:
Hi,
attached patch should make the rcu code NPTL compatible. Without the patch using an RCU will fail (vdr hang during startup) on an NPTL enabled system.
I have only move over L. Nussels lirc NPTL fix to the rcu code.
Greetings
Andreas
Have you actually tested this? I wonder if simply removing all lock calls would work, because there _is_ a thread and a foreground function that both want to transfer data...
Klaus
--- rcu.c.org 2005-10-21 23:29:58.000000000 +0200 +++ rcu.c 2005-10-21 23:29:36.000000000 +0200 @@ -53,7 +53,11 @@
cRcuRemote::~cRcuRemote() {
- int fh = f;
- f = -1; Cancel();
- if (fh >= 0)
close(fh);
}
bool cRcuRemote::Ready(void) @@ -100,7 +104,6 @@
while (Running() && f >= 0) {
LOCK_THREAD; if (ReceiveByte(REPEATLIMIT) == 'X') { for (int i = 0; i < 6; i++) {
@@ -192,7 +195,6 @@
bool cRcuRemote::SendByte(unsigned char c) {
LOCK_THREAD;
for (int retry = 5; retry--;) { if (SendByteHandshake(c))
@@ -225,7 +227,6 @@
bool cRcuRemote::Number(int n, bool Hex) {
LOCK_THREAD;
if (!Hex) { char buf[8];
@@ -248,7 +249,6 @@
bool cRcuRemote::String(char *s) {
LOCK_THREAD;
const char *chars = mode == modeH ? "0123456789ABCDEF" :
"0123456789-EHLP "; int n = 0;