#ifndef DEFINES_H #define DEFINES_H #define NELEMS(ar) (sizeof(ar) / sizeof(ar[0])) #define STR(x) #x #define STR2(x) STR(x) /* 连接两个字符串 */ //efine IO_MAX 6000 /* 最大IO串 */ #define IO_LOCAL 7500 #define IO_REMOTE 2000 #define METHOD_MAX 16 /* 最大method串 */ #define URI_MAX 256 /* 最大URI串 */ #define PATH_MAX 256 /* 最大路径串 */ #define CGI_ENV_MAX 500 /* 最大环境变量串 */ #define URL_MAX 128 /* 最大URL串 */ enum { HTTP_GET = 1, HTTP_POST }; /* HTTP method */ #define IO_SPACELEN(io) (sizeof((io)->buf) - (io)->readlen) /* IO串还有空间数 */ #define GETCONF(index) (configs[index].value) /* 获得config里value指针 */ enum { CONF_ROOT = 0, /* config中各项编号 */ CONF_DEFAULTPAGE = 1, CONF_CGIEXT = 2, CONF_LISPORT = 3 }; #define TH_NUM 2 #ifdef _WIN32 typedef HANDLE sem_t; #define thread_create(p,b,f,a) CreateThread(0,0,f,a,0,0) #define sem_create(i) CreateSemaphore(0,i,1,0) #define sem_wait(s,t) WaitForSingleObject(s,t) #define sem_post(s) ReleaseSemaphore(s,1,NULL) #elif _UCOS typedef OS_EVENT* sem_t; #define thread_create(p,b,f,a) OSTaskCreate(f,(void *)a,b,p) #define sem_create(i) OSSemCreate(i) #define sem_wait(s,t,e) OSSemPend(s,t,e) #define sem_post(s) OSSemPost(s) #define TH_PRIO_START 16 #define TaskStkLengh 2000 #endif #endif