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

📄 vscp_os.h

📁 使用标准C开发的同时支持CMPP3.0 和 CMPP2.0 的SP短信网关程序
💻 H
字号:
#ifndef VSCP_OS_H
#define VSCP_OS_H

#define LOGOFF							(0)
#define REBOOT							(1)

#ifndef TRUE
	#define TRUE  (1)
#endif

#ifndef	NULL
#define NULL	((void *)0)
#endif

#ifndef  WIN32
#define INFINITE	(0xffffff)
#define WAIT_OBJECT_0					(0)
#define WAIT_TIMEOUT					(1)
#define VSCPOSFAIL						(2)
#endif

#ifndef LINUX
enum
{
  PTHREAD_CREATE_JOINABLE,
#define PTHREAD_CREATE_JOINABLE	PTHREAD_CREATE_JOINABLE
  PTHREAD_CREATE_DETACHED
#define PTHREAD_CREATE_DETACHED	PTHREAD_CREATE_DETACHED
};
#endif

#ifdef iRMX
#pragma align(TimeStr=1)
#endif

#if defined(WIN32)||defined(LINUX)
#pragma pack(push,1)
#endif

typedef struct TimeStr
{
	unsigned short	year;
	unsigned char	mon;
	unsigned char	day;
	unsigned char	hour;
	unsigned char	min;
	unsigned char	sec;
	unsigned short	msec;
} TimeType;
typedef TimeType * TimePTR;

#define TIMETOMMLEN		(sizeof(TimeType))

#if defined(WIN32)||defined(LINUX)
#pragma pack(pop)
#endif

#ifdef WIN32
#include <time.h>
#include <stdio.h>
#include <process.h>
#include <windows.h>
#include <assert.h>

#define	SYS_SEGMENT_SIZE		(65536)

typedef CRITICAL_SECTION  CriticalSection;
typedef HANDLE			  Handle;
typedef HANDLE			  Semaphore;
typedef HANDLE			  Event;
#endif

#ifdef LINUX
#include <sys/types.h>
#include <sys/stat.h>/*2004-06-17 system moni*/
#include <sys/time.h>
#include <sys/times.h>
#include <sys/io.h>
#include <sys/vfs.h>/*2004-06-17 system moni*/
#include <sys/resource.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <pthread.h>
#include <semaphore.h>
#include <dirent.h>
#include <string.h>
#include <errno.h>
#include <assert.h>
#include <signal.h>/*2004-06-17 system moni*/

#define THREAD_PRIORITY_TIME_CRITICAL	16
#define THREAD_PRIORITY_HIGHEST         18
#define THREAD_PRIORITY_BELOW_NORMAL    21
#define THREAD_PRIORITY_ABOVE_NORMAL    19

#define	SYS_SEGMENT_SIZE		(65536)
#define far 
#define near 

typedef  pthread_mutex_t  CriticalSection;
typedef  pthread_t        Handle;
typedef  sem_t			  Semaphore;
typedef  sem_t			  Event;
#endif

extern void CriticalSectionInit(CriticalSection * cs);
extern void CriticalSectionEnter(CriticalSection * cs);
extern void CriticalSectionLeave(CriticalSection * cs);
extern void CriticalSectionDelete(CriticalSection * cs);

extern Semaphore SemaphoreCreate(Semaphore * sem,void * attrib,\
			int initnum,int maxnum,char * name);
extern int SemaphoreRelease(Semaphore * sem,int addnum,void * oldnumptr);

#ifdef LINUX
extern int SemaphorePost(Semaphore * sem);
#endif

extern Event EventCreate(Event * event,void * attrib,unsigned int init,\
						 unsigned int manual, char * name);

#if (defined LINUX || defined WIN32)
extern int EventSet(Event *  event);
#endif

extern int SingleObjectWaitFor(Semaphore * sem,unsigned int  seconds);

/*2004-06-17 system moni*/
#define ThreadBegin(stack, saddr, arg, iflag, taddr, detach, pri) \
	sysThreadBegin(__FILE__, __LINE__, #saddr, \
	stack, saddr, arg, iflag, taddr, detach, pri)

extern Handle sysThreadBegin(const char *origfile, int line, const char *target_name, \
	unsigned int stack_size,void * start_address, void * arglist, \
	unsigned int initflag,void * threadaddr, int detachstate, \
	int priority);

#ifdef WIN32
extern Handle ThreadCreat(unsigned int stack_size, void * start_address,\
			 void * arglist,unsigned int initflag, unsigned int * threadaddr);
#endif

extern int ThreadPrioritySet(Handle  thread, int priority);

#if defined(WIN32) || defined (LINUX)
extern Handle ThreadGetCurrent(void);
#endif

/*2004-06-17 system moni*/
#define ThreadEnd(retval) \
	sysThreadEnd(__FILE__, __LINE__, retval)

extern void sysThreadEnd(const char *origfile, int line, void * retval);

extern void ThreadCancel(Handle handle);
extern void ProcessEnd(int retvalue);
extern int HandleClose(Handle handle);
extern void ThreadSleep(unsigned int milliseconds);

extern int GetSysTimeByMilliSecond(void);
extern unsigned int GetSysTimeBy100ms(void);
extern void GetTimeToMM(TimePTR ctime);
extern int GetCurDir(void* envname,unsigned int varlen);
extern int RebootSystem(int mode);
extern char* sysitoa(int num,char* str,int radix);
#ifdef LINUX
extern char* sysstrupr(char* str);
#endif

extern int tick10msThread(void *para);

#if defined(WIN32) || defined (LINUX)

#endif

/*2004-06-17 system moni*/
#define sysfopen(filename, mode)	__sysfopen(__FILE__, __LINE__, (filename), (mode))

extern FILE *__sysfopen(const char *origfile, int line, const char *targetfile, const char *mode);

#define sysfclose(fp)	__sysfclose(__FILE__, __LINE__, (fp))

extern int __sysfclose(const char *origfile, int line, FILE *fp);

#define IsTimerExpire(expect_time)	((GetSysTimeByMilliSecond() - (expect_time)) >= 0)	

#define TimerAfter(t1, t2)	(((t1) - (t2)) >= 0 ? 1 : 0)

/*2004-06-17 system moni*/
#define	LEN_OF_ARRAY(array)	(sizeof(array) / sizeof((array)[0]))

#define ARRAY_LEN(x)	(sizeof(x)/sizeof((x)[0]))

#endif

⌨️ 快捷键说明

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