pvfs中src/client/sysin/sys-get-eattr.sm与对应的src/client/sysin/sys-get-eattr.c

.sm文件的装态机描述部分:

machine pvfs2_client_get_eattr_sm
 {
      state setup_msgpair
       {
          run get_eattr_setup_msgpair;
          success => xfer_msgpair;
          default => cleanup;
      }
  
      state xfer_msgpair
      {
          jump pvfs2_msgpairarray_sm;
          default => cleanup;
      }
  
      state cleanup
      {
          run get_eattr_cleanup;
          default => terminate;
      }
 }

其中有三个状态set_msgpair  xfer_msgpair  cleanup

对应生成的.c文件的部分为:

  struct PINT_state_machine_s pvfs2_client_get_eattr_sm = {
          .name = "pvfs2_client_get_eattr_sm",            //对应状态机的名字
          .first_state = &ST_setup_msgpair                //对应状态机的第一个状态
  };
 
  static struct PINT_state_s ST_setup_msgpair = {         //第一个状态
           .state_name = "setup_msgpair" ,                //状态名称
           .parent_machine = &pvfs2_client_get_eattr_sm , //父状态机
           .flag = SM_RUN ,                               //标志对应.sm文件中第一个状态的run动作
           .action.func = get_eattr_setup_msgpair ,       //状态动作函数
           .pjtbl = NULL ,                      
           .trtbl = ST_setup_msgpair_trtbl                //状态转移表
  };
 
  static struct PINT_tran_tbl_s ST_setup_msgpair_trtbl[] = { //状态转移表
          { .return_value = 0 ,                           //success(0),进入下一个状态xfer_msgpair
           .next_state = &ST_xfer_msgpair },
          { .return_value = -1 ,                          //default(-1),进入cleanup
           .next_state = &ST_cleanup }
  };
 
  static struct PINT_state_s ST_xfer_msgpair = {          //与第一个状态类似
           .state_name = "xfer_msgpair" ,
           .parent_machine = &pvfs2_client_get_eattr_sm ,
           .flag = SM_JUMP ,                              //标志对应状态的动作为jump
           .action.nested = &pvfs2_msgpairarray_sm ,      //.nested表明跳到一个其他的状态机文件
           .pjtbl = NULL ,
           .trtbl = ST_xfer_msgpair_trtbl
  };
 
 static struct PINT_tran_tbl_s ST_xfer_msgpair_trtbl[] = {
          { .return_value = -1 ,
           .next_state = &ST_cleanup }
  };
static struct PINT_state_s ST_cleanup = {
           .state_name = "cleanup" ,
           .parent_machine = &pvfs2_client_get_eattr_sm ,
           .flag = SM_RUN ,
           .action.func = get_eattr_cleanup ,
           .pjtbl = NULL ,
           .trtbl = ST_cleanup_trtbl
  };
 
  static struct PINT_tran_tbl_s ST_cleanup_trtbl[] = {  //终止
          { .return_value = -1 ,
           .flag = SM_TERM }
  };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值