Symbian3/PDK/Source/GUID-CFE0A4EB-845C-43B6-A732-AA155AFD99D6.dita
author Dominic Pinkman <dominic.pinkman@nokia.com>
Fri, 13 Aug 2010 16:47:46 +0100
changeset 14 578be2adaf3e
parent 5 f345bda72bc4
permissions -rw-r--r--
Week 32 contribution of PDK documentation content. See release notes for details. Fixes bug Bug 3582

<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies) All rights reserved. -->
<!-- This component and the accompanying materials are made available under the terms of the License 
"Eclipse Public License v1.0" which accompanies this distribution, 
and is available at the URL "http://www.eclipse.org/legal/epl-v10.html". -->
<!-- Initial Contributors:
    Nokia Corporation - initial contribution.
Contributors: 
-->
<!DOCTYPE concept
  PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept id="GUID-CFE0A4EB-845C-43B6-A732-AA155AFD99D6" xml:lang="en"><title>User
Requests and Synchronisation</title><shortdesc>This document introduces user requests and synchronisation methods
used by device drivers.</shortdesc><prolog><metadata><keywords/></metadata></prolog><conbody>
<section id="GUID-B206AAEC-9750-44BB-B2FC-70613D3AEAB9">       <title>Types
of user request</title>       <p>User-side requests to a driver can be of
three types: synchronous, asynchronous, and cancellation of an asynchronous
request. User requests can be handled in two different ways, based on the
logical channel model used by the device driver. A channel implementation
is derived from either: </p> <ul>
<li id="GUID-7FB5FD8B-A33D-5AC2-9913-F741AB04853F"><p> <xref href="GUID-E7550422-5121-3393-A85E-BB797969CD2A.dita"><apiname>DLogicalChannelBase</apiname></xref>:
the driver developer decides how a request is handled. </p> </li>
<li id="GUID-0E2BF6E4-4B7C-5B8D-8A56-0E7607BB53EB"><p> <xref href="GUID-A3CC1D95-4681-3349-A67C-F113A614041D.dita"><apiname>DLogicalChannel</apiname></xref>:
this is derived from <codeph>DLogicalChannelBase</codeph>, and implements
a basic mechanism for handling requests. </p> </li>
</ul> <p>In the <codeph>DLogicalChannel</codeph> derived model, requests from
user threads to the driver are queued as messages and handled sequentially
by a single Kernel side DFC. This is the model described in this section.
More details on the differences between the models can be found in<xref href="GUID-0956CE5E-C02B-5EEE-890A-5E8E84A8D9A1.dita">Logical
Channel</xref> documentation. </p> <p>All requests from the user result in
a call to a single function <xref href="GUID-E7550422-5121-3393-A85E-BB797969CD2A.dita#GUID-E7550422-5121-3393-A85E-BB797969CD2A/GUID-FD4DA73F-45E7-37BE-9380-1D8ED36114F7"><apiname>DLogicalChannelBase::Request()</apiname></xref>.
In this function the driver determines the type of the request, i.e. synchronous,
asynchronous, or cancel, and implements handling of the requests. </p>   
 </section>
<section id="GUID-0C209A93-7FFE-4C63-A362-A6674D941E9C"><title>Synchronisation
methods</title><p>A driver uses the following synchronisation methods.</p><ul>
<li>Deferred Function Calls</li>
<li>Timers</li>
<li>Generated Events</li>
</ul></section>
</conbody></concept>