📄 vscp_os.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 + -