Date: Fri, 17 Aug 2001 14:34:02 +0400 (MSD) From: seva@riskinv.ru To: freebsd-multimedia@freebsd.org Subject: dvb driver Message-ID: <200108171034.f7HAY2529423@ns.riskinv.ru> In-Reply-To: <200108130639.f7D6dGZ66537@ns.riskinv.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
Okey.
It is too easy to port qpsk driver from linux to freebsd.
I can turn satellete tuner to channel, switch diseqc to
any LNB and look/listen FTE channel
(from composit video and audio outs).
But I got trouble next in OSD driver.
What is linux's wait_queue and signal_pending in freebsd?
#if LINUX_VERSION_CODE < 0x020300
#define net_device device
#define DECLARE_MUTEX(foo) struct semaphore foo = MUTEX
#define DECLARE_MUTEX_LOCKED(foo) struct semaphore foo = MUTEX_LOCKED
#define WAIT_QUEUE struct wait_queue*
#define init_waitqueue_head(wq) *(wq) = NULL;
#define DECLARE_WAITQUEUE(wait, current) struct wait_queue wait = { current, NULL }
#define set_current_state(state_value) \
do { current->state = state_value; } while (0)
#define list_for_each(pos, head) \
for (pos = (head)->next; pos != (head); pos = pos->next)
#else
#define WAIT_QUEUE wait_queue_head_t
#endif
....
static int
BlitBitmap(struct dvb_struct *dvb, u16 win, u16 x, u16 y, u16 trans)
{
DECLARE_WAITQUEUE(wait, current);
if (dvb->bmp_state==BMP_NONE)
return -1;
if (dvb->bmp_state==BMP_LOADING) {
add_wait_queue(&dvb->bmpq, &wait);
while (1) {
set_current_state(TASK_INTERRUPTIBLE);
if (dvb->bmp_state!=BMP_LOADING
|| signal_pending(current))
break;
schedule();
}
current->state=TASK_RUNNING;
remove_wait_queue(&dvb->bmpq, &wait);
}
if (dvb->bmp_state==BMP_LOADED)
return outcom(dvb, COMTYPE_OSD, BlitBmp, 4, win, x, y, trans);
return -1;
}
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-multimedia" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200108171034.f7HAY2529423>
