First round of changes to support ring 0 NLMs.
git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@404 0109f412-320b-0410-ab79-c3e0c5ffbbe6
This commit is contained in:
@@ -28,7 +28,7 @@
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
typedef struct
|
||||
{
|
||||
pthread_mutex_t lock;
|
||||
@@ -82,7 +82,7 @@ void FLMAPI f_mutexDestroy(
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
RCODE FLMAPI f_mutexCreate(
|
||||
F_MUTEX * phMutex)
|
||||
{
|
||||
@@ -139,7 +139,7 @@ Exit:
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
void FLMAPI f_mutexDestroy(
|
||||
F_MUTEX * phMutex)
|
||||
{
|
||||
@@ -162,7 +162,7 @@ void FLMAPI f_mutexDestroy(
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
void FLMAPI f_mutexLock(
|
||||
F_MUTEX hMutex)
|
||||
{
|
||||
@@ -173,7 +173,7 @@ void FLMAPI f_mutexLock(
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
void FLMAPI f_mutexUnlock(
|
||||
F_MUTEX hMutex)
|
||||
{
|
||||
@@ -184,7 +184,7 @@ void FLMAPI f_mutexUnlock(
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
void FLMAPI f_assertMutexLocked(
|
||||
F_MUTEX)
|
||||
{
|
||||
@@ -194,7 +194,7 @@ void FLMAPI f_assertMutexLocked(
|
||||
/****************************************************************************
|
||||
Desc: Initializes a semaphore handle on UNIX
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
FINLINE int sema_init(
|
||||
sema_t * pSem)
|
||||
{
|
||||
@@ -222,7 +222,7 @@ Exit:
|
||||
/****************************************************************************
|
||||
Desc: Frees a semaphore handle on UNIX
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
FINLINE void sema_destroy(
|
||||
sema_t * pSem)
|
||||
{
|
||||
@@ -234,7 +234,7 @@ FINLINE void sema_destroy(
|
||||
/****************************************************************************
|
||||
Desc: Waits for a semaphore to be signaled on UNIX
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
FINLINE int sema_wait(
|
||||
sema_t * pSem)
|
||||
{
|
||||
@@ -270,7 +270,7 @@ Exit:
|
||||
Desc: Waits a specified number of milliseconds for a semaphore
|
||||
to be signaled on UNIX
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
FINLINE int sema_timedwait(
|
||||
sema_t * pSem,
|
||||
unsigned int msecs)
|
||||
@@ -322,7 +322,7 @@ Exit:
|
||||
/****************************************************************************
|
||||
Desc: Signals a semaphore on UNIX
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
int sema_signal(
|
||||
sema_t * pSem)
|
||||
{
|
||||
@@ -339,7 +339,7 @@ int sema_signal(
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
RCODE f_semCreate(
|
||||
F_SEM * phSem)
|
||||
{
|
||||
@@ -369,7 +369,7 @@ Exit:
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
void f_semDestroy(
|
||||
F_SEM * phSem)
|
||||
{
|
||||
@@ -387,7 +387,7 @@ void f_semDestroy(
|
||||
/****************************************************************************
|
||||
Desc: Get the lock on a semaphore - p operation
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
RCODE f_semWait(
|
||||
F_SEM hSem,
|
||||
FLMUINT uiTimeout)
|
||||
@@ -424,7 +424,7 @@ RCODE f_semWait(
|
||||
/****************************************************************************
|
||||
Desc: Get the lock on a semaphore - p operation
|
||||
****************************************************************************/
|
||||
#if defined( FLM_UNIX) || defined( FLM_NLM)
|
||||
#if defined( FLM_UNIX) || defined( FLM_LIBC_NLM)
|
||||
void FLMAPI f_semSignal(
|
||||
F_SEM hSem)
|
||||
{
|
||||
@@ -432,6 +432,77 @@ void FLMAPI f_semSignal(
|
||||
}
|
||||
#endif
|
||||
|
||||
/*************************************************************************
|
||||
Desc:
|
||||
*************************************************************************/
|
||||
#if defined( FLM_RING_0_NLM)
|
||||
RCODE FLMAPI f_semCreate(
|
||||
F_SEM * phSem)
|
||||
{
|
||||
if( (*phSem = (F_SEM)kSemaphoreAlloc( (BYTE *)"NOVDB", 0)) == F_SEM_NULL)
|
||||
{
|
||||
return( RC_SET( NE_FLM_MEM));
|
||||
}
|
||||
|
||||
return( NE_FLM_OK);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*************************************************************************
|
||||
Desc:
|
||||
*************************************************************************/
|
||||
#if defined( FLM_RING_0_NLM)
|
||||
void FLMAPI f_semDestroy(
|
||||
F_SEM * phSem)
|
||||
{
|
||||
if (*phSem != F_SEM_NULL)
|
||||
{
|
||||
(void)kSemaphoreFree( (SEMAPHORE)(*phSem));
|
||||
*phSem = F_SEM_NULL;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/*************************************************************************
|
||||
Desc:
|
||||
*************************************************************************/
|
||||
#if defined( FLM_RING_0_NLM)
|
||||
RCODE FLMAPI f_semWait(
|
||||
F_SEM hSem,
|
||||
FLMUINT uiTimeout)
|
||||
{
|
||||
RCODE rc = NE_FLM_OK;
|
||||
|
||||
if( uiTimeout == F_SEM_WAITFOREVER)
|
||||
{
|
||||
if( kSemaphoreWait( (SEMAPHORE)hSem) != 0)
|
||||
{
|
||||
rc = RC_SET( NE_FLM_ERROR_WAITING_ON_SEMPAHORE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if( kSemaphoreTimedWait( (SEMAPHORE)hSem, (UINT)uiTimeout) != 0)
|
||||
{
|
||||
rc = RC_SET( NE_FLM_ERROR_WAITING_ON_SEMPAHORE);
|
||||
}
|
||||
}
|
||||
|
||||
return( rc);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*************************************************************************
|
||||
Desc:
|
||||
*************************************************************************/
|
||||
#if defined( FLM_RING_0_NLM)
|
||||
void FLMAPI f_semSignal(
|
||||
F_SEM hSem)
|
||||
{
|
||||
(void)kSemaphoreSignal( (SEMAPHORE)hSem);
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
|
||||
Reference in New Issue
Block a user