📄 wintest.c
字号:
/***************************************************************
/**
/** Xinwei Telecom Technology co., ltd. ShenZhen R&D center
/**
/** Core Network Department platform team
/**
/** filename: wintest.c
/**
/** description:
/**
/** author: xingzhou.xu
/**
/** data: 2006.4.19
/**
/***************************************************************
/** history
/**
/***************************************************************
/** author date modification
/** xingzhou.xu 2006.4.19 create
/**************************************************************/
/* readme */
/*
此文件是一个demo文件,作为平台模拟业务注册,通信之用,同时也可给予
业务用户一些编写参考
参看规则:
1.此文件是平台的demo文件,业务可参看,在此基础上编写代码;
2.除平台指定的接口与框架外,其余业务可自行修改,如名称,存放位置;
使用简介:
1.平台所有的对外头文件在common目录中;
编写代码时只包含xosshell.h即可(xosshell.h已对其它头文件进行了封装);
2.注册接口
平台的注册接口有两个:
a: XOS_ROOT 平台服务函数入口,类似于原有的SYS_ROOT;,必须最先启动;
b: XOS_InfoReg 注册信息函数接口,类似原有的SYS_ALL***Reg,将一些基本的整合在一起了;
3.XOS平台调度的最小单元为一个FID
FID必须包含以下内容:
a: 一个初始化处理函数;
b: 一个消息处理函数;
c: 一个定时器超时处理函数;
FID的组织结构见 t_XOSFIDLIST
除以上3要素外,FID中还包含其它参数,可参见头文件说明
重点说明的是memfreetype参数
在XOS调度时,为了防止内存泄漏,在调度处理函数后,有一个自动释放内存的操作
但有些应用出于自己的需要,不期望XOS自行释放内存
因此在此地加上一个内存释放类型参数
在注册时,由用户指定类型
t_XOSFIDLIST现在申明的为静态变量,且用CONST定义
4.LoginList是一个全局变量,为用户注册时填写,参数可参见头文件说明;
demo说明
此demo文件模拟了一个main函数,调用了XOS_ROOT入口,启动了XOS平台服务;
并在XOS_InfoReg中填写了注册信息;
在此demo文件中,用户构建了4个FID结构 1-1, 1-2, 2-1, 3-1
其中1-1与1-2是注册在同一个TID上(见XOS_InfoReg)
其它说明
1.windows版本只是提供功能测试,压力测试将在solaris/vxworks上实现;
2.windows版本不提供消息优先级功能,此功能将在solaris/vxworks上实现;
*/
#ifdef WIN32
#include "envopt.h" /* environment options */
#include "envdep.h" /* environment dependent */
#include "envind.h" /* environment independent */
#include "gen.h" /* general layer */
#include "ssi.h" /* system services */
#include "lns.h" /* NTSS layer mgmt */
#include "ss_err.h" /* errors */
#include "ss_dep.h" /* implementation-specific */
#include "ss_queue.h" /* queues */
#include "ss_task.h" /* tasking */
#include "ss_msg.h" /* messaging */
#include "ss_mem.h" /* memory management interface */
#include "ss_gen.h" /* general */
#include "xos.h"
#include "xosshell.h"
#include "xosroot.h"
#include "au_init.h"
/*---------------------------*/
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/*------------------------------------------------------------------------
包含头文件
-------------------------------------------------------------------------*/
#include <stdio.h>
EXTERN S8 **msArgv; /* UNTSS argument vector */
EXTERN S16 msArgc; /* UNTSS argument count */
EXTERN S16 msOptInd; /* SGetOpt vars */
t_XOSLOGINLIST *LoginList;
#ifdef SS7_CPS
/*-------------------------------------------------------------------------
模块内部宏定义
-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------
模块内部结构和枚举定义
-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------
模块内部全局变量
-------------------------------------------------------------------------*/
/*-------------------------------------------------------------------------
模块内部函数
-------------------------------------------------------------------------*/
#if 0
t_XOSFIDLIST MAP =
{
{
"FID_MAP",
XNULL,
FID_MAP,
},
{
MAP_Init,
MAP_Close,
},
{
XNULL,
XNULL,
},
eUserMode,
XNULLP
};
#endif
t_XOSFIDLIST AUT =
{
{
"FID_AUT",
XNULL,
FID_AUT,
},
{
AMS_Init,
XNULL,
},
{
XNULL,
XNULL,
},
eUserMode,
XNULLP
};
t_XOSFIDLIST CALL_BACK =
{
{
"FID_CALL_BACK",
XNULL,
FID_CALL_BACK,
},
{
CallBack_Init,
XNULL,
},
{
XNULL,
XNULL,
},
eUserMode,
XNULLP
};
/*-------------------------------------------------------------------------
模块接口函数
-------------------------------------------------------------------------*/
/************************************************************************
函数名:
功能:
输入:
输出:
返回:
说明: 平台提供的注册接口文件,类似于原有BSC平台的SYS_AllFidInfoReg与SYS_AllTaskInfoReg
************************************************************************/
XPUBLIC XS8 XOS_InfoReg(XVOID)
{
/*LoginList 是一个全局变量,由平台定义,提供给业务用户,由用户来分配空间 */
LoginList = (t_XOSLOGINLIST *)XOS_MemMalloc(FID_TRACE/*测试时使用的临时FID*/,(FID_MAX + 1) * sizeof(t_XOSLOGINLIST));
#if 1
LoginList[0].stack = &CALL_BACK;/* FID结构赋值 */
LoginList[0].taskname = "CALL_BACK"; /* 任务名称 */
LoginList[0].TID = FID_CALL_BACK; /* 任务ID,此处与旧版相差较大 新版中没有固定的TID表,详细解释参见上面 */
LoginList[0].prio = (XU16)XNULL; /* 任务优先级 NULL为系统默认或分配,用户也可指定优先级 */
LoginList[0].stacksize = (XU16)XNULL; /* 任务堆栈大小,NULL为系统默认*/
LoginList[0].timenum = 20; /* 此任务上所需要用到的定时器个数*/
LoginList[1].stack = &AUT;
LoginList[1].taskname = "AUT";
LoginList[1].TID = FID_AUT;
LoginList[1].prio = (XU16)XNULL;
LoginList[1].stacksize = (XU16)XNULL;
LoginList[1].timenum = 20;
#endif
LoginList[FID_MAX].stack = XNULLP;
return XSUCC;
}
#endif /* SS7_CPS */
/************************************************************************
函数名:
功能:
输入:
输出:
返回:
说明:
************************************************************************/
#ifndef SS7_CPS
XPUBLIC XS32 main ( int argc, char ** argv)
#else
PUBLIC S32 main ( int argc, char ** argv)
#endif
{
/* 在此调用平台入口函数,启动平台 */
if(XSUCC != XOS_Root())
{
return XERROR;
}
/* 保证主线程不退出,防止在子线程创建完成前,主线程已结束
并提供CLI功能*/
XOS_CliPause();
return XSUCC;
}
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -