[Pcsclite-cvs-commit] r5058 - in /trunk/PCSC/src: readerfactory.c readerfactory.h winscard.c
rousseau at users.alioth.debian.org
rousseau at users.alioth.debian.org
Fri Jul 2 14:40:04 UTC 2010
Author: rousseau
Date: Fri Jul 2 14:39:55 2010
New Revision: 5058
URL: http://svn.debian.org/wsvn/pcsclite/?sc=1&rev=5058
Log:
RFCheckSharing(), RFLockSharing(), RFUnlockSharing() &
RFUnlockAllSharing(): add the READER_CONTEXT * rContext parameter to
avoid recomputing it internally (gain a few CPU cycles)
Modified:
trunk/PCSC/src/readerfactory.c
trunk/PCSC/src/readerfactory.h
trunk/PCSC/src/winscard.c
Modified: trunk/PCSC/src/readerfactory.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/readerfactory.c?rev=5058&op=diff
==============================================================================
--- trunk/PCSC/src/readerfactory.c (original)
+++ trunk/PCSC/src/readerfactory.c Fri Jul 2 14:39:55 2010
@@ -892,31 +892,20 @@
return SCARD_S_SUCCESS;
}
-LONG RFCheckSharing(SCARDHANDLE hCard)
-{
- LONG rv;
- READER_CONTEXT * rContext = NULL;
-
- rv = RFReaderInfoById(hCard, &rContext);
-
- if (rv != SCARD_S_SUCCESS)
- return rv;
-
+LONG RFCheckSharing(SCARDHANDLE hCard,READER_CONTEXT * rContext)
+{
if (rContext->hLockId == 0 || rContext->hLockId == hCard)
return SCARD_S_SUCCESS;
else
return SCARD_E_SHARING_VIOLATION;
}
-LONG RFLockSharing(SCARDHANDLE hCard)
-{
- READER_CONTEXT * rContext = NULL;
+LONG RFLockSharing(SCARDHANDLE hCard, READER_CONTEXT * rContext)
+{
LONG rv;
- (void)RFReaderInfoById(hCard, &rContext);
-
(void)pthread_mutex_lock(&LockMutex);
- rv = RFCheckSharing(hCard);
+ rv = RFCheckSharing(hCard, rContext);
if (SCARD_S_SUCCESS == rv)
{
rContext->LockCount += 1;
@@ -927,17 +916,12 @@
return rv;
}
-LONG RFUnlockSharing(SCARDHANDLE hCard)
-{
- READER_CONTEXT * rContext = NULL;
+LONG RFUnlockSharing(SCARDHANDLE hCard, READER_CONTEXT * rContext)
+{
LONG rv;
- rv = RFReaderInfoById(hCard, &rContext);
- if (rv != SCARD_S_SUCCESS)
- return rv;
-
(void)pthread_mutex_lock(&LockMutex);
- rv = RFCheckSharing(hCard);
+ rv = RFCheckSharing(hCard, rContext);
if (SCARD_S_SUCCESS == rv)
{
if (rContext->LockCount > 0)
@@ -950,17 +934,12 @@
return rv;
}
-LONG RFUnlockAllSharing(SCARDHANDLE hCard)
-{
- READER_CONTEXT * rContext = NULL;
+LONG RFUnlockAllSharing(SCARDHANDLE hCard, READER_CONTEXT * rContext)
+{
LONG rv;
- rv = RFReaderInfoById(hCard, &rContext);
- if (rv != SCARD_S_SUCCESS)
- return rv;
-
(void)pthread_mutex_lock(&LockMutex);
- rv = RFCheckSharing(hCard);
+ rv = RFCheckSharing(hCard, rContext);
if (SCARD_S_SUCCESS == rv)
{
rContext->LockCount = 0;
Modified: trunk/PCSC/src/readerfactory.h
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/readerfactory.h?rev=5058&op=diff
==============================================================================
--- trunk/PCSC/src/readerfactory.h (original)
+++ trunk/PCSC/src/readerfactory.h Fri Jul 2 14:39:55 2010
@@ -146,10 +146,10 @@
LONG RFReaderInfo(LPSTR, /*@out@*/ struct ReaderContext **);
LONG RFReaderInfoNamePort(int, LPSTR, /*@out@*/ struct ReaderContext **);
LONG RFReaderInfoById(DWORD, /*@out@*/ struct ReaderContext **);
- LONG RFCheckSharing(SCARDHANDLE);
- LONG RFLockSharing(SCARDHANDLE);
- LONG RFUnlockSharing(SCARDHANDLE);
- LONG RFUnlockAllSharing(SCARDHANDLE);
+ LONG RFCheckSharing(SCARDHANDLE, READER_CONTEXT *);
+ LONG RFLockSharing(SCARDHANDLE, READER_CONTEXT *);
+ LONG RFUnlockSharing(SCARDHANDLE, READER_CONTEXT *);
+ LONG RFUnlockAllSharing(SCARDHANDLE, READER_CONTEXT *);
LONG RFLoadReader(READER_CONTEXT *);
LONG RFBindFunctions(READER_CONTEXT *);
LONG RFUnBindFunctions(READER_CONTEXT *);
Modified: trunk/PCSC/src/winscard.c
URL: http://svn.debian.org/wsvn/pcsclite/trunk/PCSC/src/winscard.c?rev=5058&op=diff
==============================================================================
--- trunk/PCSC/src/winscard.c (original)
+++ trunk/PCSC/src/winscard.c Fri Jul 2 14:39:55 2010
@@ -455,7 +455,7 @@
if (rContext->contexts == SCARD_NO_CONTEXT)
{
rContext->contexts = SCARD_EXCLUSIVE_CONTEXT;
- (void)RFLockSharing(*phCard);
+ (void)RFLockSharing(*phCard, rContext);
}
else
{
@@ -559,7 +559,7 @@
/*
* Make sure no one has a lock on this reader
*/
- rv = RFCheckSharing(hCard);
+ rv = RFCheckSharing(hCard, rContext);
if (rv != SCARD_S_SUCCESS)
return rv;
@@ -747,7 +747,7 @@
if (rContext->contexts == SCARD_LAST_CONTEXT)
{
rContext->contexts = SCARD_EXCLUSIVE_CONTEXT;
- (void)RFLockSharing(hCard);
+ (void)RFLockSharing(hCard, rContext);
} else
{
return SCARD_E_SHARING_VIOLATION;
@@ -765,7 +765,7 @@
/*
* We are in exclusive mode but want to share now
*/
- (void)RFUnlockSharing(hCard);
+ (void)RFUnlockSharing(hCard, rContext);
rContext->contexts = SCARD_LAST_CONTEXT;
}
} else if (dwShareMode == SCARD_SHARE_DIRECT)
@@ -780,7 +780,7 @@
/*
* We are in exclusive mode but want to share now
*/
- (void)RFUnlockSharing(hCard);
+ (void)RFUnlockSharing(hCard, rContext);
rContext->contexts = SCARD_LAST_CONTEXT;
}
} else
@@ -841,7 +841,7 @@
/*
* Unlock any blocks on this context
*/
- rv = RFUnlockAllSharing(hCard);
+ rv = RFUnlockAllSharing(hCard, rContext);
if (rv != SCARD_S_SUCCESS)
return rv;
@@ -1014,7 +1014,7 @@
if ((rv = RFCheckReaderEventState(rContext, hCard)) != SCARD_S_SUCCESS)
return rv;
- rv = RFLockSharing(hCard);
+ rv = RFLockSharing(hCard, rContext);
/* if the transaction is not yet ready we sleep a bit so the client
* do not retry immediately */
@@ -1170,7 +1170,7 @@
/*
* Unlock any blocks on this context
*/
- (void)RFUnlockSharing(hCard);
+ (void)RFUnlockSharing(hCard, rContext);
Log2(PCSC_LOG_DEBUG, "Status: 0x%08X", rv);
@@ -1206,7 +1206,7 @@
if ((rv = RFCheckReaderEventState(rContext, hCard)) != SCARD_S_SUCCESS)
return rv;
- rv = RFUnlockSharing(hCard);
+ rv = RFUnlockSharing(hCard, rContext);
Log2(PCSC_LOG_DEBUG, "Status: 0x%08X", rv);
@@ -1226,7 +1226,7 @@
/*
* Make sure no one has a lock on this reader
*/
- if ((rv = RFCheckSharing(hCard)) != SCARD_S_SUCCESS)
+ if ((rv = RFCheckSharing(hCard, rContext)) != SCARD_S_SUCCESS)
return rv;
rv = RFReaderInfoById(hCard, &rContext);
@@ -1365,7 +1365,7 @@
/*
* Make sure no one has a lock on this reader
*/
- if ((rv = RFCheckSharing(hCard)) != SCARD_S_SUCCESS)
+ if ((rv = RFCheckSharing(hCard, rContext)) != SCARD_S_SUCCESS)
return rv;
rv = RFReaderInfoById(hCard, &rContext);
@@ -1414,7 +1414,7 @@
/*
* Make sure no one has a lock on this reader
*/
- if ((rv = RFCheckSharing(hCard)) != SCARD_S_SUCCESS)
+ if ((rv = RFCheckSharing(hCard, rContext)) != SCARD_S_SUCCESS)
return rv;
rv = RFReaderInfoById(hCard, &rContext);
@@ -1488,7 +1488,7 @@
/*
* Make sure no one has a lock on this reader
*/
- if ((rv = RFCheckSharing(hCard)) != SCARD_S_SUCCESS)
+ if ((rv = RFCheckSharing(hCard, rContext)) != SCARD_S_SUCCESS)
return rv;
rv = RFReaderInfoById(hCard, &rContext);
@@ -1553,7 +1553,7 @@
/*
* Make sure no one has a lock on this reader
*/
- if ((rv = RFCheckSharing(hCard)) != SCARD_S_SUCCESS)
+ if ((rv = RFCheckSharing(hCard, rContext)) != SCARD_S_SUCCESS)
return rv;
rv = RFReaderInfoById(hCard, &rContext);
More information about the Pcsclite-cvs-commit
mailing list