在CMS中,运用程序和命令是同等对待的,它们都是用户空间可执行的。但是在除了CMS系统中,运用程序和命令是不同对待的。往CMS中增加一个应用程序或者命令的步骤:
1:要把它正确归类,就是根据它的属性正确地放入userspace目录下的三个目录中的一个。同时在相应的目录下的makefile中增加这个程序或者命令的编译命令。如果这个程序或者命令本身就有一个makefile,那么就要把这个makefile包含进去。
2:定义一个新的实体ID(命令不用)。同时如果这个程序将访问MDM,那么要给这个程序赋予CMS ENTITY ID 在1-15之间。同时定义NDA-ACCESS-XXX标志。然后在NDA-ACCESS-SUBSCRIBER中增加NDA-ACCESS-XXX标志位。
3:定义一个CMSENTITYINFO结构,这个结构定义在userspace/public/include/cms_eid.h文件中,结构如下:
typedef struct {
CMSEntityId eid; /**< The entity id for this entry */
UINT16 accessBit; /** This entity's bit position in accessBitMask */
char *name; /**< Short name for this entity */
char *path; /**< Full path to the executable */
char *runArgs; /**< Args to pass to this executable on startup */
UINT8 flags; /**< Additional info about this entity, see EIF_xxx */
UINT8 backlog; /**< Backlog arg for the server socket */
UINT16 port; /**< If server, port number for the server socket */
UBOOL8 isFeatureCompiledIn; /**< Is this feature selected via make menuconfig */
UINT32 maxMemUsage; /**< Maximum memory usage, in KB, 0 if unknown */
UINT32 normalMemUsage; /**< Typical memory usage, in KB, 0 if unknown */
UINT32 minMemUsage; /**< Minimum memory usage, in KB, 0 if unknown */
} CMSEntityInfo;
4:程序实现的模式
一般要调用cmsMsg_init和cmsMdm_init函数,这个函数是初始化消息机制和内存共享的,然后运行这个程序的主函数,同时在主函数退出的时候要进行销毁处理。