Fixed NetWare build.
git-svn-id: https://svn.code.sf.net/p/flaim/code/trunk@485 0109f412-320b-0410-ab79-c3e0c5ffbbe6
This commit is contained in:
231
ftk/src/ftk.h
231
ftk/src/ftk.h
@@ -346,7 +346,7 @@
|
||||
#endif
|
||||
#elif defined( FLM_NLM)
|
||||
#define FLMAPI __stdcall
|
||||
#define FLMEXP FLMEXTC
|
||||
#define FLMEXP
|
||||
#define FINLINE inline
|
||||
#elif defined( FLM_UNIX)
|
||||
#define FLMAPI
|
||||
@@ -3958,8 +3958,8 @@
|
||||
public:
|
||||
|
||||
F_DynaBuf(
|
||||
FLMBYTE * pucBuffer,
|
||||
FLMUINT uiBufferSize)
|
||||
FLMBYTE * pucBuffer = NULL,
|
||||
FLMUINT uiBufferSize = 0)
|
||||
{
|
||||
m_pucBuffer = pucBuffer;
|
||||
m_uiBufferSize = uiBufferSize;
|
||||
@@ -4006,32 +4006,6 @@
|
||||
return( rc);
|
||||
}
|
||||
|
||||
FINLINE RCODE FLMAPI appendData(
|
||||
const void * pvData,
|
||||
FLMUINT uiSize)
|
||||
{
|
||||
RCODE rc = NE_FLM_OK;
|
||||
void * pvTmp = NULL;
|
||||
|
||||
if( RC_BAD( rc = allocSpace( uiSize, &pvTmp)))
|
||||
{
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
if( uiSize == 1)
|
||||
{
|
||||
*((FLMBYTE *)pvTmp) = *((FLMBYTE *)pvData);
|
||||
}
|
||||
else
|
||||
{
|
||||
f_memcpy( pvTmp, pvData, uiSize);
|
||||
}
|
||||
|
||||
Exit:
|
||||
|
||||
return( rc);
|
||||
}
|
||||
|
||||
FINLINE RCODE FLMAPI appendByte(
|
||||
FLMBYTE ucChar)
|
||||
{
|
||||
@@ -4068,6 +4042,51 @@
|
||||
return( rc);
|
||||
}
|
||||
|
||||
FINLINE RCODE FLMAPI appendData(
|
||||
const void * pvData,
|
||||
FLMUINT uiSize)
|
||||
{
|
||||
RCODE rc = NE_FLM_OK;
|
||||
void * pvTmp = NULL;
|
||||
|
||||
if( RC_BAD( rc = allocSpace( uiSize, &pvTmp)))
|
||||
{
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
if( uiSize == 1)
|
||||
{
|
||||
*((FLMBYTE *)pvTmp) = *((FLMBYTE *)pvData);
|
||||
}
|
||||
else
|
||||
{
|
||||
f_memcpy( pvTmp, pvData, uiSize);
|
||||
}
|
||||
|
||||
Exit:
|
||||
|
||||
return( rc);
|
||||
}
|
||||
|
||||
FINLINE RCODE FLMAPI appendString(
|
||||
const char * pszString)
|
||||
{
|
||||
RCODE rc = NE_FLM_OK;
|
||||
void * pvTmp = NULL;
|
||||
FLMUINT uiSize = f_strlen( pszString);
|
||||
|
||||
if( RC_BAD( rc = allocSpace( uiSize, &pvTmp)))
|
||||
{
|
||||
goto Exit;
|
||||
}
|
||||
|
||||
f_memcpy( pvTmp, pszString, uiSize);
|
||||
|
||||
Exit:
|
||||
|
||||
return( rc);
|
||||
}
|
||||
|
||||
FINLINE FLMBYTE * FLMAPI getBufferPtr( void)
|
||||
{
|
||||
return( m_pucBuffer);
|
||||
@@ -4315,8 +4334,7 @@
|
||||
****************************************************************************/
|
||||
typedef enum
|
||||
{
|
||||
FLM_LOCK_NONE, ///< No lock.\ NOTE: This is not a valid option for FlmDbLock(), but it may be returned by
|
||||
///< FlmDbGetLockType().
|
||||
FLM_LOCK_NONE, ///< No lock.
|
||||
FLM_LOCK_EXCLUSIVE, ///< Exclusive lock.
|
||||
FLM_LOCK_SHARED ///< Shared lock.
|
||||
} eLockType;
|
||||
@@ -4342,6 +4360,68 @@
|
||||
|
||||
#define FLM_NO_TIMEOUT 0xFF
|
||||
|
||||
/**************************************************************************
|
||||
/// Structure used in gathering statistics to hold an operation count and an elapsed time.
|
||||
**************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
FLMUINT64 ui64Count; ///< Number of times operation was performed
|
||||
FLMUINT64 ui64ElapMilli; ///< Total elapsed time (milliseconds) for the operations.
|
||||
} F_COUNT_TIME_STAT;
|
||||
|
||||
|
||||
/**************************************************************************
|
||||
/// Structure for returning lock statistics.
|
||||
**************************************************************************/
|
||||
typedef struct
|
||||
{
|
||||
F_COUNT_TIME_STAT NoLocks; ///< Statistics on times when nobody was holding a lock on the database.
|
||||
F_COUNT_TIME_STAT WaitingForLock; ///< Statistics on times threads were waiting to obtain a database lock.
|
||||
F_COUNT_TIME_STAT HeldLock; ///< Statistics on times when a thread was holding a lock on the database.
|
||||
} F_LOCK_STATS;
|
||||
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
flminterface IF_LockObject : public F_Object
|
||||
{
|
||||
virtual RCODE FLMAPI lock(
|
||||
F_SEM hWaitSem,
|
||||
FLMBOOL bExclLock,
|
||||
FLMUINT uiMaxWaitSecs,
|
||||
FLMINT iPriority,
|
||||
F_LOCK_STATS * pLockStats = NULL) = 0;
|
||||
|
||||
virtual RCODE FLMAPI unlock(
|
||||
F_LOCK_STATS * pLockStats = NULL) = 0;
|
||||
|
||||
virtual FLMUINT FLMAPI getLockCount( void) = 0;
|
||||
|
||||
virtual FLMUINT FLMAPI getWaiterCount( void) = 0;
|
||||
|
||||
virtual RCODE FLMAPI getLockInfo(
|
||||
FLMINT iPriority,
|
||||
eLockType * peCurrLockType,
|
||||
FLMUINT * puiThreadId,
|
||||
FLMUINT * puiNumExclQueued,
|
||||
FLMUINT * puiNumSharedQueued,
|
||||
FLMUINT * puiPriorityCount) = 0;
|
||||
|
||||
virtual RCODE FLMAPI getLockInfo(
|
||||
IF_LockInfoClient * pLockInfo) = 0;
|
||||
|
||||
virtual FLMBOOL FLMAPI haveHigherPriorityWaiter(
|
||||
FLMINT iPriority) = 0;
|
||||
|
||||
virtual void FLMAPI timeoutLockWaiter(
|
||||
FLMUINT uiThreadId) = 0;
|
||||
|
||||
virtual void FLMAPI timeoutAllWaiters( void) = 0;
|
||||
};
|
||||
|
||||
RCODE FLMAPI FlmAllocLockObject(
|
||||
IF_LockObject ** ppLockObject);
|
||||
|
||||
/****************************************************************************
|
||||
Desc: Misc.
|
||||
****************************************************************************/
|
||||
@@ -5724,82 +5804,23 @@
|
||||
FLMBOOL m_bEndOfStream;
|
||||
};
|
||||
|
||||
/***************************************************************************
|
||||
Desc: Hash tables
|
||||
***************************************************************************/
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void * pFirstInBucket; // Pointer to first item in the bucket.
|
||||
// The type of structure being pointed to
|
||||
// depends on the usage of the hash bucket.
|
||||
FLMUINT uiHashValue; // Hash value for this bucket.
|
||||
} FBUCKET;
|
||||
|
||||
RCODE FLMAPI f_allocHashTable(
|
||||
FLMUINT uiHashTblSize,
|
||||
FBUCKET ** ppHashTblRV);
|
||||
/***************************************************************************
|
||||
Desc: Hash tables
|
||||
***************************************************************************/
|
||||
|
||||
FLMUINT FLMAPI f_strHashBucket(
|
||||
char * pszStr,
|
||||
FBUCKET * pHashTbl,
|
||||
FLMUINT uiNumBuckets);
|
||||
typedef struct
|
||||
{
|
||||
void * pFirstInBucket;
|
||||
FLMUINT uiHashValue;
|
||||
} FBUCKET;
|
||||
|
||||
/// Structure used in gathering statistics to hold an operation count and an elapsed time.
|
||||
typedef struct
|
||||
{
|
||||
FLMUINT64 ui64Count; ///< Number of times operation was performed
|
||||
FLMUINT64 ui64ElapMilli; ///< Total elapsed time (milliseconds) for the operations.
|
||||
} F_COUNT_TIME_STAT;
|
||||
|
||||
/// Structure for returning lock statistics.
|
||||
typedef struct
|
||||
{
|
||||
F_COUNT_TIME_STAT NoLocks; ///< Statistics on times when nobody was holding a lock on the database.
|
||||
F_COUNT_TIME_STAT WaitingForLock; ///< Statistics on times threads were waiting to obtain a database lock.
|
||||
F_COUNT_TIME_STAT HeldLock; ///< Statistics on times when a thread was holding a lock on the database.
|
||||
} F_LOCK_STATS;
|
||||
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
flminterface IF_LockObject : public F_Object
|
||||
{
|
||||
virtual RCODE FLMAPI lock(
|
||||
F_SEM hWaitSem,
|
||||
FLMBOOL bExclLock,
|
||||
FLMUINT uiMaxWaitSecs,
|
||||
FLMINT iPriority,
|
||||
F_LOCK_STATS * pLockStats = NULL) = 0;
|
||||
|
||||
virtual RCODE FLMAPI unlock(
|
||||
F_LOCK_STATS * pLockStats = NULL) = 0;
|
||||
RCODE FLMAPI f_allocHashTable(
|
||||
FLMUINT uiHashTblSize,
|
||||
FBUCKET ** ppHashTblRV);
|
||||
|
||||
virtual FLMUINT FLMAPI getLockCount( void) = 0;
|
||||
|
||||
virtual FLMUINT FLMAPI getWaiterCount( void) = 0;
|
||||
|
||||
virtual RCODE FLMAPI getLockInfo(
|
||||
FLMINT iPriority,
|
||||
eLockType * peCurrLockType,
|
||||
FLMUINT * puiThreadId,
|
||||
FLMUINT * puiNumExclQueued,
|
||||
FLMUINT * puiNumSharedQueued,
|
||||
FLMUINT * puiPriorityCount) = 0;
|
||||
|
||||
virtual RCODE FLMAPI getLockInfo(
|
||||
IF_LockInfoClient * pLockInfo) = 0;
|
||||
|
||||
virtual FLMBOOL FLMAPI haveHigherPriorityWaiter(
|
||||
FLMINT iPriority) = 0;
|
||||
|
||||
virtual void FLMAPI timeoutLockWaiter(
|
||||
FLMUINT uiThreadId) = 0;
|
||||
|
||||
virtual void FLMAPI timeoutAllWaiters( void) = 0;
|
||||
};
|
||||
|
||||
RCODE FLMAPI FlmAllocLockObject(
|
||||
IF_LockObject ** ppLockObject);
|
||||
FLMUINT FLMAPI f_strHashBucket(
|
||||
char * pszStr,
|
||||
FBUCKET * pHashTbl,
|
||||
FLMUINT uiNumBuckets);
|
||||
|
||||
#endif // FTK_H
|
||||
|
||||
@@ -4808,15 +4808,6 @@ SYMDEB.386 in the NetWare source. We have three options:
|
||||
an internal string buffer, then print the buffer.
|
||||
****************************************************************************/
|
||||
|
||||
#ifdef FLM_NLM
|
||||
extern "C"
|
||||
{
|
||||
void GetClosestSymbol(
|
||||
BYTE * szBuffer,
|
||||
LONG udAddress);
|
||||
}
|
||||
#endif
|
||||
|
||||
/****************************************************************************
|
||||
Desc:
|
||||
****************************************************************************/
|
||||
@@ -4891,8 +4882,8 @@ RCODE F_ObjRefTracker::setup(
|
||||
f_strcat( pszTmpBuf, ".OTL");
|
||||
|
||||
#ifdef FLM_NLM
|
||||
f_strcpy( m_pLogPath, "SYS:SYSTEM");
|
||||
f_pathAppend( m_pLogPath, pszTmpBuf);
|
||||
f_strcpy( m_pLogPath, "SYS:\\SYSTEM\\");
|
||||
f_strcat( m_pLogPath, pszTmpBuf);
|
||||
#else
|
||||
f_strcpy( m_pLogPath, pszTmpBuf);
|
||||
#endif
|
||||
@@ -5205,7 +5196,7 @@ void F_ObjRefTracker::formatAddress(
|
||||
return;
|
||||
}
|
||||
|
||||
#if defined( FLM_NLM)
|
||||
#if defined( FLM_RING_ZERO_NLM)
|
||||
|
||||
if( uiSize == 0)
|
||||
{
|
||||
@@ -5213,7 +5204,6 @@ void F_ObjRefTracker::formatAddress(
|
||||
}
|
||||
|
||||
GetClosestSymbol( (BYTE *)pucBuffer, (LONG)pAddress);
|
||||
|
||||
return;
|
||||
|
||||
#elif defined( FLM_WIN)
|
||||
@@ -5243,27 +5233,27 @@ void F_ObjRefTracker::formatAddress(
|
||||
f_free( &pihs);
|
||||
|
||||
#else
|
||||
#ifdef HAVE_DLADDR
|
||||
Dl_info dlip;
|
||||
if (dladdr(pAddress, &dlip) != 0 && dlip.dli_sname)
|
||||
{
|
||||
const char *filename;
|
||||
if (dlip.dli_saddr != pAddress)
|
||||
#ifdef HAVE_DLADDR
|
||||
Dl_info dlip;
|
||||
if (dladdr(pAddress, &dlip) != 0 && dlip.dli_sname)
|
||||
{
|
||||
filename = strrchr(dlip.dli_fname, '/');
|
||||
if (!filename)
|
||||
filename = dlip.dli_fname;
|
||||
const char *filename;
|
||||
if (dlip.dli_saddr != pAddress)
|
||||
{
|
||||
filename = strrchr(dlip.dli_fname, '/');
|
||||
if (!filename)
|
||||
filename = dlip.dli_fname;
|
||||
else
|
||||
filename++; // skip over slash
|
||||
f_sprintf( pucBuffer, "0x%08x (%s)", (unsigned)((FLMUINT)pAddress),
|
||||
filename);
|
||||
}
|
||||
else
|
||||
filename++; // skip over slash
|
||||
f_sprintf( pucBuffer, "0x%08x (%s)", (unsigned)((FLMUINT)pAddress),
|
||||
filename);
|
||||
f_sprintf( pucBuffer, "%s", dlip.dli_sname);
|
||||
return;
|
||||
}
|
||||
else
|
||||
f_sprintf( pucBuffer, "%s", dlip.dli_sname);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
f_sprintf( pucBuffer, "0x%08x", (unsigned)((FLMUINT)pAddress));
|
||||
#endif
|
||||
f_sprintf( pucBuffer, "0x%08x", (unsigned)((FLMUINT)pAddress));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user