https://mp.weixin.qq.com/s/UYVSO3XFJmhe5bUD_XbMLg

 
先介绍如何使用AddressAdjuster,然后分析UI参数的生成及使用。
 
 
1. AddressAdjuster的使用
 
a. 创建AddressAdjuster实例
 
注意usage()方法有一个implicit Parameters参数,在方法范围内引入了一个隐式参数对象,在new AddressAdjuster的时候会使用。
 
b. 关联node的上下游节点
 
 
c. 关联chip_id的上游节点
 
 
d. 引用module构建硬件模块
 
 
2. UI生成
 
UI是指Node的DUEB参数中的UI。
 
引用adjuster.module后会执行module定义的代码,其中:
 
会调用node.in方法:
 
bundulesIn和edgesIn都是lazy变量:
 
并且bundlesIn依赖于edgesIn,这里主要关注edgesIn:
 
edgesIn依赖于iPorts和uiParams:
 
这里的iPorts为输入口,即与parent的连接口,iPorts.size = 1。
 
uiParams用到了uoParams:
 
这里oPorts为输出口,即与local和remote相连的连接口。n分别为local和remote节点。
 
所以uiParams中的:
a. iPorts.size = 1;
b. uoParams为local和remote节点向上传播的TLManagerPortParameters参数,uoParams.size = 2;
 
mapParamsU的实现为:
把uoParams传递给uFn()方法,返回一个UI;然后把这个UI复制成n(=1)份。
 
uFn()的实现为:
 
返回的一个UI为:
 
3. UI使用
 
a. edgesIn
 
edgesIn通过调用edgeI方法生成:
其中i为生成的UI。
 
edgeI方法的实现为:
 
其中,pu为UI,即TLManagerPortParameters:
 
b. bundlesIn
 
bundlesIn通过edgesIn和bundleI方法生成:
 
bundleI方法的实现如下:
 
ei.bundle的实现如下:
 
TLEdgeParameters是TLEdgeIn的父类:
所以TLEdgeParameters中的manager参数,即是传入的UI参数。
 
TLBundleParameters()伴生方法的实现如下:
 
可以看到其中并没有使用UI,亦即manager参数中的实际地址集合。
 
c. parentEdge的使用
 
所以不需要关注parent,只需要关注parentEdge的使用,以坚持是否用到其中的地址集合即可:
 
parentEdge的使用如下:
TLArbiter.robin中也没有实际使用到manager的地址集合。
 
所以managerFn的实现中,废了大力气生成的地址集合,目前来看并没有实际用处。
 

Rocket - diplomacy - AddressAdjuster分析的更多相关文章

  1. Rocket - diplomacy - AddressAdjuster

    https://mp.weixin.qq.com/s/X0s5CWN84GEiwpNR7tiRgA 基于AddressAdjuster介绍LazyModule的实现.   参考链接:https://g ...

  2. Rocket - diplomacy - DUEB参数模型分析

    https://mp.weixin.qq.com/s/533bJxcPRgO4W2gf_OEhEw   分析DUEB参数模型中各种参数类型的可能性.     1. 节点类型   根据参数的传播方向,可 ...

  3. Rocket - diplomacy - LazyModule的组织方式

    https://mp.weixin.qq.com/s/vaDUekxkFkOJLmzg5jCngw 简单介绍LazyModule/LazyModuleImp的组织方式. 1. LazyModule L ...

  4. Rocket - diplomacy - misaligned

    https://mp.weixin.qq.com/s/poCJBcx45clXHm6Uuv8M6w 介绍AddressSet.misaligned的实现.之前介绍的比较概括,也有偏差.这里根据实际执行 ...

  5. Rocket - diplomacy - LazyModule的实例化(补)

    https://mp.weixin.qq.com/s/rgCRorjPYyyD6i7moIzbZg   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  6. Rocket - diplomacy - LazyModule的实例化

    https://mp.weixin.qq.com/s/9PsBt4_4qHx4i6C5XtuiUw   介绍LazyModule和Node构造方法的执行过程,即实例化过程.     1. NullIn ...

  7. Rocket - diplomacy - LazyModule

    https://mp.weixin.qq.com/s/FBU8fE4u9-UK6mRGQOlvbQ   介绍LazyModule的实现.     ​​   1. children   LazyModu ...

  8. Rocket - diplomacy - ValName

    https://mp.weixin.qq.com/s/so-2x5KLfYF0IMCCqNThwQ   简单调试ValName实现:   1. 使用     ​​   Desugar之后如下: ​​ ...

  9. Rocket - diplomacy - NodeHandle相关类

    https://mp.weixin.qq.com/s/GWL41P1G1BXm2sTeLmckdA   介绍NodeHandle相关的类.     ​​   1. NoHandle   顶层类(tra ...

随机推荐

  1. Linux暂时提升非root用户的权限

    sudo 用于提升非root用户的某些命令执行权限 1,使用root用户,复制vim /etc/sudoers 文件的第91行修改为,想提升的用户名称 root ALL=(ALL) ALL admin ...

  2. Coursera课程笔记----计算导论与C语言基础----Week 11

    C程序中的字符串(Week 11) 字符数组 所有的字符串,都是以\0结尾的 只能在数组定义并初始化的时候:char c[6] = "China"; 不能用赋值语句将一个字符串常量 ...

  3. 某科学的PID算法学习笔记

    最近,在某社团的要求下,自学了PID算法.学完后,深切地感受到PID算法之强大.PID算法应用广泛,比如加热器.平衡车.无人机等等,是自动控制理论中比较容易理解但十分重要的算法. 下面是博主学习过程中 ...

  4. FOC 算法基础之欧拉公式

    文章目录 欧拉公式 几何意义 复数平面 动态过程 加法 FOC电压矢量的推导 总结 参考 FOC中电压矢量合成的推导,对于欧拉公式的几何意义做了一个全面的回顾. 欧拉公式 欧拉是一个天才,欧拉公式甚至 ...

  5. 微信小程序云开发|Error: ResourceNotFound.FunctionName, FunctionName 指定的资源不存在。 (41cd9de8-ff9b-4b1e-a65e-81ae9

    今天在上传云函数部署的时候老发现上传login 失败   ... 经过查阅资料有两种方法可行: 云函数上传后不要轻易删除!!! 1.重启客户端 2.最好的解决方法在云平台开发创建一个新的云函数覆盖就o ...

  6. Akko海洋之星

    今天(2020.5.14)入手Akko海洋之星84茶轴,开心呀~~ 考虑方面: 价格>键线分离>接线接口>轴体>键帽>材质 价格: 200~500之间入门级cherry轴 ...

  7. scrapy五大核心组件

    scrapy五大核心组件 引擎(Scrapy)用来处理整个系统的数据流处理, 触发事务(框架核心) 调度器(Scheduler)用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. ...

  8. CSS类与选择器【转】http://www.cnblogs.com/duanhuajian/archive/2012/12/17/2821524.html

    1.在 HTML 中,一个 class 值中可能包含一个词列表,各个词之间用空格分隔.例如,如果希望将一个特定的元素同时标记为重要(important)和警告(warning),就可以写作(这两个词的 ...

  9. 安装的SQL Server2008 R2版的连接不到本地数据,提示未找到或无法访问服务器。----复制自百度知道

    安装的SQL Server2008 R2版的连接不到本地数据,提示未找到或无法访问服务器.使用Windows身份验证 2012-09-17 00:23hj168926 | 分类:数据库DB | 浏览3 ...

  10. 09-Python之路---函数进阶

    Python之路---函数进阶️ 程序员三大美德: 懒惰 因为一直致力于减少工作的总工作量. 缺乏耐性 因为一旦让你去做本该计算机完成的事,你将会怒不可遏. 傲慢 因为被荣誉感冲晕头的你会把程序写得让 ...