07b80264c3
If the device fails to stream, the feed thread will block forever waiting for buffers. But while in this state it was not looking for an exit condition from the driver DVB interface. This caused the thread to jam. Implement a new stop flag (which will be set appropriately) to tell the thread to stop. Signed-off-by: Mike Isely <isely@pobox.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
42 lines
912 B
C
42 lines
912 B
C
#ifndef __PVRUSB2_DVB_H__
|
|
#define __PVRUSB2_DVB_H__
|
|
|
|
#include "dvb_frontend.h"
|
|
#include "dvb_demux.h"
|
|
#include "dvb_net.h"
|
|
#include "dmxdev.h"
|
|
#include "pvrusb2-context.h"
|
|
|
|
#define PVR2_DVB_BUFFER_COUNT 32
|
|
#define PVR2_DVB_BUFFER_SIZE PAGE_ALIGN(0x4000)
|
|
|
|
struct pvr2_dvb_adapter {
|
|
struct pvr2_channel channel;
|
|
|
|
struct dvb_adapter dvb_adap;
|
|
struct dmxdev dmxdev;
|
|
struct dvb_demux demux;
|
|
struct dvb_net dvb_net;
|
|
struct dvb_frontend *fe;
|
|
|
|
int feedcount;
|
|
int max_feed_count;
|
|
|
|
struct task_struct *thread;
|
|
struct mutex lock;
|
|
|
|
unsigned int stream_run:1;
|
|
|
|
wait_queue_head_t buffer_wait_data;
|
|
int feed_thread_stop;
|
|
char *buffer_storage[PVR2_DVB_BUFFER_COUNT];
|
|
};
|
|
|
|
struct pvr2_dvb_props {
|
|
int (*frontend_attach) (struct pvr2_dvb_adapter *);
|
|
int (*tuner_attach) (struct pvr2_dvb_adapter *);
|
|
};
|
|
|
|
struct pvr2_dvb_adapter *pvr2_dvb_create(struct pvr2_context *pvr);
|
|
|
|
#endif /* __PVRUSB2_DVB_H__ */
|