⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 icthread.h

📁 ICCP Toolkit 是在 Tru64下开发Tase.2通信协议的开发包
💻 H
字号:
/************************************************************************//* SISCO SOFTWARE MODULE HEADER *****************************************//************************************************************************//*   (c) Copyright Systems Integration Specialists Company, Inc.,	*//*       1996 - 2002, All Rights Reserved.		        	*//*									*//*		    PROPRIETARY AND CONFIDENTIAL			*//*									*//* MODULE NAME : icthread.h						*//* PRODUCT(S)  : ICCP functions to control multiple threads		*//*									*//*									*//*									*//* MODIFICATION LOG :							*//*  Date     Who   Rev			Comments			*//* --------  ---  ------   -------------------------------------------	*//* 02/07/02  EJV     6     _AIX: Added threads support.			*//* 10/27/00  nav     5     Change bThreadsEnabled to ST_BOOLEAN		*//* 02/10/00  nav     4     Allow for thread support/no support in same	*//*			    _WIN32 .lib					*//* 03/04/99  nav     3     Allow for WIN32 multi threads		*//* 05/19/98  nav     2     incorporate BNM changes			*//* 01/17/97  nav     1     debug options using DEBUG_THREADS		*//* 12/06/96  nav           created					*//************************************************************************/#ifndef ICTHREADS_INCLUDED#define ICTREADS_INCLUDED#ifndef SD_SUCCESS#define SD_SUCCESS 0#define SD_FAILURE 1#endif/* global variable for cancelling a timer				*/extern icTimerId  gIcTimerID;#ifdef SISCO_THREADS#ifndef _ICSDKT_H#include "icsdkt.h" #endifint icSiscoCreateSem(void);int icSiscoLockSem(void);int icSiscoUnlockSem(void);int icSiscoUnlockReturn(int status);int icSiscoDestroySem(void);/* compile with DEBUG_THREADS defined to help track who called lock routines */#ifdef DEBUG_THREADSint icSiscoTestCreateSem(char* fileName, int lineNum);int icSiscoTestLockSem(char* fileName, int lineNum);int icSiscoTestUnlockSem(char* fileName, int lineNum);int icSiscoTestUnlockReturn(int status, char* fileName, int lineNum);int icSiscoTestDestroySem(char* fileName, int lineNum);#define IC_CREATE_SEM		icSiscoTestCreateSem(__FILE__, __LINE__)#define IC_LOCK_SEM		icSiscoTestLockSem(__FILE__, __LINE__)#define IC_UNLOCK_SEM		icSiscoTestUnlockSem(__FILE__, __LINE__)#define IC_UNLOCK_RETURN(a)	icSiscoTestUnlockReturn(a, __FILE__, __LINE__)#define IC_DESTROY_SEM		icSiscoTestDestroySem(__FILE__, __LINE__)#else#define IC_CREATE_SEM		icSiscoCreateSem()#define IC_LOCK_SEM		icSiscoLockSem()	#define IC_UNLOCK_SEM		icSiscoUnlockSem()#define IC_UNLOCK_RETURN(a)	icSiscoUnlockReturn(a)#define IC_DESTROY_SEM		icSiscoDestroySem()#endif			/* end DEBUG_THREADS	*/#else#define IC_CREATE_SEM		SD_SUCCESS#define IC_LOCK_SEM		SD_SUCCESS#define IC_UNLOCK_SEM		SD_SUCCESS#define IC_UNLOCK_RETURN(a)	a#define IC_DESTROY_SEM		SD_SUCCESS#endif			/* end SISCO_THREADS		*/#if defined (SISCO_THREADS) && (defined (__alpha) || defined(_AIX))#define _POSIX_C_SOURCE	199506L#if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 199506L)/*****************//* POSIX 1003.1c *//*****************/#define IC_PTHREAD_MUTEX_INIT(mutex_ptr, mutex_attr_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutex_init (mutex_ptr, mutex_attr_ptr);	\  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__, 	     		\         "IC_PTHREAD_MUTEX_INIT error %d.", rtnval);\    } \  }#define IC_PTHREAD_MUTEX_LOCK(mutex_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutex_lock (mutex_ptr); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,		\          "IC_PTHREAD_MUTEX_LOCK error %d.", rtnval);   \    } \  }#define IC_PTHREAD_MUTEX_UNLOCK(mutex_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutex_unlock (mutex_ptr); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\          "IC_PTHREAD_MUTEX_UNLOCK error %d.", rtnval);	\    } \  }#define IC_PTHREAD_MUTEX_DESTROY(mutex_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutex_destroy (mutex_ptr); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	 \          "IC_PTHREAD_MUTEX_DESTROY error %d.", rtnval);	\    } \  }#define IC_PTHREAD_MUTEXATTR_INIT(mutexattr_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutexattr_init (mutexattr_ptr); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\          "IC_PTHREAD_MUTEXATTR_INIT error %d.", rtnval);	\    } \  }#define IC_PTHREAD_MUTEXATTR_DESTROY(mutexattr_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutexattr_destroy (mutexattr_ptr); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\          "IC_PTHREAD_MUTEXATTR_DESTROY error %d.", rtnval);	\    } \  }#define IC_PTHREAD_MUTEXATTR_SETTYPE_NP(mutexattr_ptr, type, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutexattr_settype_np (mutexattr_ptr, type); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\         "IC_PTHREAD_MUTEXATTR_SETTYPE_NP error %d.", rtnval);	\    } \  }#else/*****************//* POSIX 1003.4a *//*****************/#define IC_PTHREAD_MUTEX_INIT(mutex_ptr, mutex_attr_ptr, rtnval) \  {   \  rtnval = 0; \  if (mutex_attr_ptr == NULL) \    { \    rtnval = pthread_mutex_init (mutex_ptr, pthread_mutexattr_default); \    } \  else \    { \    rtnval = pthread_mutex_init(mutex_ptr, *((pthread_mutexattr_t *)mutex_attr_ptr)); \    } \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\          "IC_PTHREAD_MUTEX_INIT error %d.", errno);	\    } \  }#define IC_PTHREAD_MUTEX_LOCK(mutex_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutex_lock (mutex_ptr); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\          "IC_PTHREAD_MUTEX_LOCK error %d.", errno);	\    } \  }#define IC_PTHREAD_MUTEX_UNLOCK(mutex_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutex_unlock (mutex_ptr); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\          "IC_PTHREAD_MUTEX_UNLOCK error %d.", errno); 	\    } \  }#define IC_PTHREAD_MUTEX_DESTROY(mutex_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutex_destroy (mutex_ptr); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\          "IC_PTHREAD_MUTEX_DESTROY error %d", errno);	\    } \  }#define IC_PTHREAD_MUTEXATTR_INIT(mutexattr_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutexattr_create (mutexattr_ptr); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\          "IC_PTHREAD_MUTEXATTR_INIT error %d.", rtnval);	\    } \  }#define IC_PTHREAD_MUTEXATTR_DESTROY(mutexattr_ptr, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutexattr_delete (mutexattr_ptr); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\         "IC_PTHREAD_MUTEXATTR_DESTROY error %d.", rtnval);	\    } \  }#define IC_PTHREAD_MUTEXATTR_SETTYPE_NP(mutexattr_ptr, type, rtnval) \  {   \  rtnval = 0; \  rtnval = pthread_mutexattr_setkind_np (mutexattr_ptr, type); \  if (rtnval != 0) \    { \    slog (sLogCtrl, 0, thisFileName, __LINE__,	\          "IC_PTHREAD_MUTEXATTR_SETTYPE_NP error %d", rtnval);	\    } \  }#endif          /* #if defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 199506L) */#endif		/* SISCO_THREADS	*/#if defined (SISCO_THREADS) && defined (_WIN32)extern ST_BOOLEAN  bThreadsEnabled;#endif#endif		/* #ifndef ICTHREADS_INCLUDED	*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -