OPNET 核心函数学习(二)

来源:互联网 发布:淘宝上卖水果怎么收费 编辑:程序博客网 时间:2024/06/04 19:36
8 进程类核心函数
功能:为进程或者队列模块提供创建和管理多个进程的支持。
OPNET 中每个进程模块至少包含一个进程,这个进程称为根进程(root process)。
op_pro_create():创建子进程 , 返回一个进程句柄(Prohandle),它是作为父进程调用、销毁或查询子进程属 性的依据 。
op_pro_self():得到进程自己的进程句柄;
op_pro_parent():可以得到父进程的句柄;
op_pro_root():得到根进程的句柄。
op_pro_mod_objid():获得进程隶属的进程模块的 Objid 
op_pro_destroy():将进程销毁
注意:仿真核心不会因为销毁某个进程而连带销毁其所有的子进程,而且仿真核心也没有子进程使用内存的记录,因此释放子进程内存的责任必须由子进程自己完成。
op_pro_invoke():调用本模块中的其他进程 (输入参数为被调用的进程的 Prohandle)。
进程间可以直接通过状态变量传递参数。以下是四种内存共享机制:
(1)module 内存: op_pro_modmem_install()可以将其与进程模块进行绑定,所有隶属于该进程模块的进程都能够通过调用 op_pro_modmen_access()使用它。 
(2)parent-to-child 内 存: 支 持 进 程 与 其 父 进 程 之 间 传 递 数 据 。 当 子 进 程 通 过op_pro_create() 被创建时,其父进程可以调用 op_pro_parmem_install()将要传递给该子进程的参数与子进程的 Prohandle 相绑定,而子进程可以通过 op_pro_parmem_access()得到这些参数。注意 parent-to-child 内存只能在进程创建时绑定一次。如果 op_pro_destroy_options()或 op_pro_destroy()将父进程销毁,其 子进程还是“活”的,但是这些子进程变成了“孤儿”,所以它们调用 op_pro_parent()将出错,而父进程 通过 parent-to-child 内存传给它们的参数也变得无效
(3)argument 内存:基于进程的调用。当 op_pro_invoke()调用某个进程时,可以将绑定的 argument 内存 传递给该进程,被调用的进程可以通过op_pro_argmem_access()访问绑定的 argument 内存。
(4)为了访问其他进程的变量,调用 op_pro_svar_get()可以得到指向另一个进程中状
态变量的指针。 
 9 队列类核心函数 
功能:为队列模块提供管理队列资源的支持。注意:进程模块或无线收发机管道程序不能使用。
op_q_empty():判断队列是否为空
op_q_flush() :清空队列
op_q_stat():获取队列的统计量
op_q_insert_time() :获取包进入队列的时间
op_q_wait_time():获取包的等待时间


10 分割与组装类核心函数
分段和组装(Sar, Segmentation and Reassembly)类核心函数支持包的拆分,并且将包段(Segment,为包经过分段后形成的小片段)组装为原始包等操作。 
11 统计类核心函数
功能:针对用户自定义或者仿真自动穿件的统计量数据,将这些数据记录到结果文件中。
op_stat_write():在当前时刻将结果写给某个指定的统计量。
op_stat_write_t():在某个指定时刻将结果写给某个指定的统计量
op_stat_reg():根据进程模块中统计量的名字返回一个统计量句柄(Statistic handle),它作为进程写入本地 或全局统计量的依据。 
op_stat_local_read():得到指定状态线的当前值,这种方法是进程模块(或与其他节点模型内对象)间的一种通 信机制。
12 队列和子队列类核心函数
op_subq_empty():判断一个子队列是否为空,如果返回值为 1 则为空
op_pk_priority_set() :为每个进入子队列的包设置优先级
op_pk_priority_get():可得到某个包优先级 
op_subq_flush() :清空子队列
op_subq_pk_insert():将包插入子队列的某个指定位置 
op_subq_pk_remove() : 从某个位置取出包,并将它从子队列中删除
op_subq_pk_access():得到指向包的指针 
op_subq_pk_swap() :将子队列中两个包互换位置
在不知道包在子队列中的索引号时,也可以使用一些 OPNET 常量来标识,如 OPC_QPOS_HEAD 代表队首, OPC_QPOS_TAIL 代表队尾,或者通过包优先级 OPC_QPOS_PRIO 来映射索引号 。
13 表格类核心函数
功能:专门解决如何读取天线模型和调制模型数据的问题。
14 传输类核心函数
功能:对一个包的收信机管道数据属性(TDA)进行操作。
包的 TDA 充当存储共享信息的载体。
op_td_set_int()、 op_td_set_dbl()和 op_td_set_ptr()分别将整型、双精度型和指针型的变量赋值给 TDA。与之对应, op_td_get_int()、 op_td_get_dbl()和op_td_get_ptr()分别取出整型、双精度型和指针型的 TDA 数据。最后, op_td_is_set()判断某个 TDA 属性是否设置了参数 。
15 拓扑结构类核心函数
功能:决定网络和节点的拓扑结构。
op_topo_object_count():返回某种指定类型静态对象的个数  
op_topo_object():以对象类型和索引号为输入参数,返回Objid。  
16 编程类核心函数
op_prg_list_insert():在指定位置插入元素,并将列表属性更改为非排序的  
op_prg_list_insert_sorted():只针对排序的列表,将新的元素插入到合适的位置并保持列表属性(排序的)不变 。
原创粉丝点击