<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML ><HEAD ><TITLE >Opening And Closing The Capture Device</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK REL="HOME" TITLE="Video4Linux Programming" HREF="book1.html"><LINK REL="UP" TITLE="Video Capture Devices" HREF="c261.html"><LINK REL="PREVIOUS" TITLE="Registering Video Capture Devices" HREF="x271.html"><LINK REL="NEXT" TITLE="Interrupt Handling" HREF="x316.html"></HEAD ><BODY CLASS="SECT1" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE SUMMARY="Header navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Video4Linux Programming</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="x271.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" >Video Capture Devices</TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="x316.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECT1" ><H1 CLASS="SECT1" ><A NAME="OPVID" ></A >Opening And Closing The Capture Device</H1 ><TABLE BORDER="0" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><PRE CLASS="PROGRAMLISTING" > static int users = 0; static int camera_open(stuct video_device *dev, int flags) { if(users) return -EBUSY; if(request_irq(irq, camera_irq, 0, "camera", dev)<0) return -EBUSY; users++; MOD_INC_USE_COUNT; return 0; } static int camera_close(struct video_device *dev) { users--; free_irq(irq, dev); MOD_DEC_USE_COUNT; } </PRE ></TD ></TR ></TABLE ><P > The open and close routines are also quite similar. The only real change is that we now request an interrupt for the camera device interrupt line. If we cannot get the interrupt we report EBUSY to the application and give up. </P ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE SUMMARY="Footer navigation table" WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="x271.html" ACCESSKEY="P" ><<< Previous</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="book1.html" ACCESSKEY="H" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="x316.html" ACCESSKEY="N" >Next >>></A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >Registering Video Capture Devices</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="c261.html" ACCESSKEY="U" >Up</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Interrupt Handling</TD ></TR ></TABLE ></DIV ></BODY ></HTML >