PVFS2 源代码分析之用户系统接口src/client/sysint/client-state-machine状态机生命周期和上下文

保姆级教程:手把手教你用Notepad++修改DNF私服PVF,打造毕业级自定义装备 本文提供了一份详细的Notepad++修改DNF私服PVF文件的保姆级教程,帮助玩家打造毕业级自定义装备。从基础属性修改到复杂特效组合,教程涵盖了力量词条调整、条件触发效果等实用技巧,适合零基础玩家快速上手。通过本指南,玩家可以轻松实现装备属性的个性化定制。 阅读详情

通过分析状态机的执行逻辑 ,状态机状态转移和触发嵌套/子状态机的执行过程已经基本清楚,但是一个状态机从创建、启动,到挂起、终止的完整生命周期还需进一步分析。本文涉及多个文件,但主要接口函数包含在src/client/sysint目录下的client-state-machine.h和client-state-machine.c文件中,这些接口函数会调用src/common/id-generator和src/io/job目录下的相关函数。

说明:如下函数名后的括号注明其所在文件,贴出代码为除去gossip日志和次要无关逻辑之后的核心代码,“// ......”表示此处有省略。另外,背景色 相同的行为是配对的,显式标出以方便理解前后对应的流程。 

  • 创建

我们知道,状态机的标识是状态机控制块smcb,分配smcb意味着状态机的创建,见函数1。

函数1. PINT_smcb_alloc(src/common/misc/state-machine-fns.c)

该函数用于分配状态机控制块。第3行参数op是状态机代表的系统操作;第5行参数方程用于将op映射为对应状态机的地址,并依据找到的状态机定义设定smcb->current_state,为执行动作函数和状态转移做好准备;第6行参数是回调函数,在状态机终止时调用;第7行参数是该应用程序的上下文(context),以区别于同时进行的其他应用程序(应用程序指src/apps下的各个程序),详见最后一节“上下文”。

 

为了更好地说明参数含义,我们以分析过的用户系统接口sys-get-eattr 为例,见函数2。

函数2. PVFS_isys_geteattr_list(src/client/sysint/sys-get-eattr.c)

该函数最终被状态机对外接口函数PVFS_sys_geteattr调用。它调用PINT_smcb_alloc时,状态机结束的回调函数设为client_state_machine_terminate,参见函数10 。

 

第10行参数op赋值为PVFS_SYS_GETEATTR,其定义来自src/client/sysint/client-state-machine.h:

op参数赋值给smcb的成员op,用于表达状态机进行的操作,实际上记录了使用哪个状态机。

【注意】另一个参数op_id与之形似但无关,它是在状态机挂起时,在哈希表中注册对应smcb时获得的索引,可视作状态机的一个句柄。

    • 启动

    在状态机的执行逻辑 中,我们分析了PINT_state_machine_start函数,而这里主要讨论调用该函数的环节和相关操作。

    由上节函数2的第20~21行可知,启动状态机是通过调用PINT_client_

    PVFS2 源代码分析之公有组件src/common/misc/state-machine状态机执行逻辑 状态机的执行逻辑,存在于src/common/misc文件夹下的state-machine.h和state-machine-fns.c两个文件。state-machine.h定义了状态机执行逻辑所需的数据结构,state-machine-fns.c文件定义了功能函数。 阅读详情

    相关推荐

    PVF(PGI Visual Fortran) 安装以及openacc在linux和window下调用

    vs2012和PVF2015 在windows下的安装,包含调试实例和一年license获得方法

    oALANo的博客 1万+

    Kaspersky Update Utility 3.0

    卡巴斯基离线升级包制作工具,用于离线升级卡巴斯基。支持最新版本的卡巴斯基,包括版本13.0.[0.xx],14.0.0.4651,15.0.[0.xx]。

    PVFS2----documents from Princeton university

    这个文档是从普林斯顿大学的网站上面下载的文档,里面简要的介绍了PVFS2的一些性能,并给出了访问这个并行文件系统的一些方法,比如通过LINUX内核命令的方法、PVFS2专用的接口命令、MPI-IO的方法等。同时,本文给出了PVFS2专用的几个访问文件系统的函数:pvfs2-ls,pvfs2-cp,pvfs2-rm等等。

    PVFS2安装 PVFS2安装说明

    PVFS2安装 说明 PVFS2安装 说明 PVFS2安装 说明

    EEGLAB数据预处理基本流程GUI实操指南

    按钮,会出现如上图所示的长条形对话框,方框里面是所有电极的名称,这时将需要的剔除的电极选择上,如上图,我选择了 VEOG这个电极(该电极表示是垂直眼电),然后点“OK”,在弹出的对话框中自行确定是否需要修改命名。坏导是指在数据采集时,由于各种原因(如,电极本身问题或阻抗不好等)导致数据记录有问题,但是在后期又特别想要该通道的数据,那么就可以利用插值的方法进行——利用该导联周边的几个电极点的均值作为该导的数据。上图的图是通过IClabel的工具箱进行自动判断的,可以帮助自动识别出哪些是Eye的成分。

    fdgdf5535的博客 6394

    从零搭建智能视觉小车:OpenART图像处理+增强现实避坑指南

    本文详细指导如何从零搭建智能视觉小车,重点介绍OpenART图像处理与增强现实技术在AprilTag识别中的应用。涵盖硬件选型、环境配置、算法优化及实战调试全流程,特别分享智能汽车竞赛中的避坑技巧和优化方案,帮助开发者构建稳定高效的视觉系统。

    yhn456789的博客 1055

    别再纠结VS还是VSCode了!新手C#环境搭建保姆级指南(含.NET Core安装验证)

    本文为C#新手提供Visual Studio与VS Code的深度对比及环境搭建指南,涵盖.NET Core安装验证、工具选择决策框架及实战配置技巧。帮助开发者根据项目需求选择合适工具,快速搭建高效开发环境,提升编码效率。

    weixin_30455023的博客 561

    NHANES更新数据后,权重计算方式也更新了

    官网说明在此:如果你比我还懒,我下载了几个说明文件。2021年8月至2023年8月的总样本量与之前的2年周期相似。然而,。特别是,与之前包括过度抽样的周期相比,非西班牙裔白人的样本量较高,而非西班牙裔黑人的样本量较低。此外,60岁及以上人群的样本量较高,而年轻群体的样本量较低。子组的估计值可能具有较低的精确度,因此,检测组间差异的统计能力可能较低。此外,年龄和种族/西班牙裔亚组(尤其是儿童和青少年年龄组)的估计值可能会显示意想不到的模式。

    珏世佳人的博客 2410

    告别Keil4!手把手教你用Keil C51 V9.61编译51单片机代码(附最新激活方法)

    本文详细介绍了Keil C51 V9.61在51单片机开发中的全栈升级指南,包括编译速度提升、调试器性能优化和现代开发支持等核心优势。通过智能安装方案、项目迁移实战和新特性深度应用,帮助开发者告别Keil4,大幅提升开发效率。附有最新激活方法和实用技巧,适用于嵌入式开发工程师。

    weixin_26886855的博客 419

    手搓UDS Bootloader|全网独家复现0x10诊断会话控制、详解会话跳转规则与S3超时机制、助力ECU在线刷写、固件迭代、车规安全升级落地

    在车载UDS诊断(ISO 14229)与Bootloader固件升级架构中,0x10诊断会话控制服务是所有高级诊断、固件刷写功能的前置核心与权限管控入口,属于UDS基础必实现服务。车载ECU通过分级会话模式,隔离常规故障诊断、高级标定、固件重编程等高、低权限操作,从协议层面保障车载电控系统的安全性与稳定性。多数嵌入式开发者开发UDS Bootloader时,仅简单实现会话切换报文应答,未吃透会话强制跳转规则、S3安全超时机制、会话权限绑定、APP在线刷写跳转逻辑。

    getusushu的博客 465

    60、新型共轴直升机建模与事件触发积分强化学习研究

    本文研究了新型共轴直升机的动力学建模与控制方法,基于牛顿-欧拉方程建立了6自由度非线性模型,并设计了四通道闭环控制器实现稳定飞行。同时,提出一种事件触发积分强化学习方法,用于解决非零和博弈中的最优跟踪控制问题,在减少通信开销的同时保证系统性能。通过仿真验证了控制器的轨迹跟踪能力,并证明了算法下跟踪误差与神经网络权重估计误差的一致最终有界性。两种方法协同可提升飞行器的自主性与鲁棒性,未来可拓展至多智能体协作、智能交通等复杂系统应用。

    rl6adventurer的博客 118

    Python爬虫教程:抓取Android或iOS应用中的数据

    随着智能手机的普及,移动应用程序已经成为我们生活中不可或缺的一部分。从社交媒体、在线购物到金融服务和健康管理,几乎所有领域都有相应的手机应用程序(App)服务用户。而这些应用程序通常会存储大量的数据,例如用户行为、产品信息、订单记录等。如果我们能有效地抓取这些数据,可以为数据分析、商业智能、用户行为分析等提供有力支持。本文将重点介绍如何使用Python爬虫技术抓取Android或iOS应用中的数据,尤其是如何从这些应用的后端接口、存储、或网页中提取数据。我们将探讨如何通过反向工程技术访问移动应用中的API接

    2201_76125261的博客 801

    TMS_WebGMaps_1.9.8.0_Full_Source

    TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

    计算机控制技术及应用

    《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

    OV9734 DATASHEET,完整规格书

    OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

    Outlook Express 6 (OE6) for Win7/Win8/Win10

    英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

    上一篇: PVFS2 源代码分析之公有组件src/common/misc/state-machine状态机执行逻辑
    下一篇: PVFS2 源代码分析之输入输出src/io/job/job-time-mgr任务时间管理器
    basicthinker
    博客等级 码龄16年 38粉丝 20原创
    评论 3
    成就一亿技术人!
    拼手气红包6.0元
    还能输入1000个字符
     
     条评论被折叠 查看
    添加红包

    请填写红包祝福语或标题

    个

    红包个数最小为10个

    元

    红包金额最低5元

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

    抵扣说明:

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

    余额充值