Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] DVB driver bug, fixed it (quick hack)



Andrew de Quincey wrote:
Thanks - a few issues though:


convergence.de uses 32 bit buffer......
this returned int, changed to long!
static inline long

"long" by itself is signed. In fact on x86 long == int ==32bit signed integer.
On AMD64 however, long == 64bit signed while int == 32bit signed. What platform are you using?


dvb_dmxdev_buffer_write(dmxdev_buffer_t *buf, uint8_t
*src, size_t len)
{
unsigned int split; // changed was int
unsigned int free; // changed, was int
unsigned int todo; // changed, was int

if(! len)  return 0;

if(! buf->data) return 0;

free = buf->pread - buf->pwrite;

split = 0;
if(free == 0)

You're using an old version of the driver. In CVS, this line is changed to if (free <=0)

I dunno if this solves your problem though... can you try CVS head and report back please?



Yes, Andrew is right. The patch I posted doesnt compile on my x86:

drivers/media/dvb/dvb-core/dmxdev.c:61: error: parse error before '*' token
drivers/media/dvb/dvb-core/dmxdev.c:62: warning: function declaration isn't a prototype
drivers/media/dvb/dvb-core/dmxdev.c: In function `dvb_dmxdev_buffer_write':
drivers/media/dvb/dvb-core/dmxdev.c:67: error: `len' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c:67: error: (Each undeclared identifier is reported only once
drivers/media/dvb/dvb-core/dmxdev.c:67: error: for each function it appears in.)
drivers/media/dvb/dvb-core/dmxdev.c:69: error: `buf' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c:79: warning: long int format, unsigned int arg (arg 3)
drivers/media/dvb/dvb-core/dmxdev.c:86: error: `src' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c: At top level:
drivers/media/dvb/dvb-core/dmxdev.c:383: error: parse error before "dmx_ts_feed"
drivers/media/dvb/dvb-core/dmxdev.c:384: warning: function declaration isn't a prototype
drivers/media/dvb/dvb-core/dmxdev.c: In function `dvb_dmxdev_ts_callback':
drivers/media/dvb/dvb-core/dmxdev.c:385: error: `dmxdev_filter' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c:385: error: `dmxdevfilter' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c:385: error: parse error before ')' token
drivers/media/dvb/dvb-core/dmxdev.c:386: error: `dmxdev_buffer' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c:386: error: `buffer' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c:404: error: `buffer1' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c:404: error: `buffer1_len' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c:406: error: `buffer2' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c:406: error: `buffer2_len' undeclared (first use in this function)
drivers/media/dvb/dvb-core/dmxdev.c:410: warning: int format, long int arg (arg 2)
make[5]: *** [drivers/media/dvb/dvb-core/dmxdev.o] Error 1




Home | Main Index | Thread Index