阅读:1161回复:0
请教: solaris下串口驱动开发
请高人指点:
我在solaris需要修改asy.c(串口驱动文件),在读串口的时候需要等待中断程序的完成。 因此在xxread中需要阻塞等待,我查找了一下sun的技术文档,它给出了如下的例子 static int xxread(dev_t dev, struct uio *uiop, cred_t *credp) { struct xxstate *xsp; ... mutex_enter(&xsp->mu); while (xsp->busy) cv_wait(&xsp->cv, &xsp->mu); xsp->busy = 1; mutex_exit(&xsp->mu); perform the data access } static u_int xxintr(caddr_t arg); { struct xxstate *xsp = (struct xxstate *)arg; mutex_enter(&xsp->mu); xsp->busy = 0; cv_broadcast(&xsp->cv); mutex_exit(&xsp->mu); } 但是我在同时调用cv_wait和cv_broadcast的时候出现死机。请高人指点我如何使用cv_wait和cv_broadcast这两个函数以及相关的kmutex_t和kcondvar_t的初始化问题。 谢谢!!! |
|