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

📄 wintest.c

📁 map协议源代码
💻 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 + -