- 博客(29)
- 收藏
- 关注
原创 [linux kernel]semaphore信号量的用法
if (likely(list_empty(&sem->wait_list)))///< 如果链表为空,表示没有人等待信号量,直接++struct list_head wait_list;--->信号量等待链表。///< 信号量增加。else///< 小于等于0。else///< 否则。
2023-08-19 11:51:59
214
原创 pcie的PM和ASPM
2. ASPM中的L0,L0s, L1,L2, L1 substate, L3, Ldn状态的介绍。1. PCI-PM中D0,D1,D2,D3hot, D3cold的介绍。最近工作原因,了解了PCIE协议的PM和ASPM机制。5. 系统suspend/resume的流程。3. PM capability寄存器管理。4. 内核关于PM,ASPM,的用法。有时间准备好文档,再进行填充。
2023-07-06 17:53:35
613
1
原创 sas协议-SSP状态机-SSP_RF/SSP_TAN/SSP_RIM
SSP_RF状态机的主要功能是1. 接收Frame2. 检查接收到的Frame是否有error,接收或者丢弃3. 确定是否要发ACK或者NAK4. 向PL_PM发送接收到帧的确认回执;交互的状态机有:PL_PM SSP_RCM SSP_RIM SSP_TANSSP_TAN (transmit ACK/NAK control) state machine这个状态机主要功能是,在收到了帧收到的消息之后,确定传送ACK或者NAK;...
2021-12-16 15:41:00
355
原创 sas协议-port layer-PL_PM
PL_PM maintain timer timer SSP I SSP T STP I STP T SMP I SMP T Maximum Connect Time Limit timer(may) may shall may shall shall Bus Inactivity Time Limit timer (may) shall shall Arb...
2021-12-16 14:26:14
217
原创 sas协议-phy layer-phy reset sequence
本文讲述一下sas协议中,phy layer关于OOB以及速度协商的部分,主要讲述的是sas-sas 场景;sas-sata场景,sata-sata场景以后再做专题讲述;如下两个图,是本文要重点讲述的图;我画了一个phyA和phyB的链接图;sas是一个全双工通信,每个phy都有一个tx差分对和rx差分对;phy reset的几个阶段如下:step#11. phyA上电以后,开始有节奏的发送OOB信号COMINIT, 每发完一个OOB,等待500ms(..
2021-12-16 09:54:59
3380
原创 sas协议-XL状态机3-PS
XL状态机中与PS有关的两个状态为:XL11:PS_RequestXL12: PS_Quiet与之相关的原语有:PS_REQ/PS_ACK/PS_NAK这两个状态时用来管理phy自己以及attached上的phy的电源消耗;在sas协议里,phy的低电状态有两种:Partial和Slumber以此图为例phy8的attached phy是phy4phy4的attached phy是phy8.PS_Request: 该状态主要是指使at...
2021-12-15 16:44:41
235
原创 sas协议-XL状态机3
本文着重理解XL状态机的状态:Open_Response_Wait参考:6.19.8 XL6:Open_Response_Wait state这个状态来源于Forward_Open. 发送完OPAF之后,进入该状态;该状态主要是等待OPAF的反馈,并根据反馈,采取不同的action.response类型如下:response分类 response XL receiver(message) 说明 Open Accept OPEN_ACCEPT Received
2021-12-15 16:23:15
615
原创 sas协议-XL状态机2
本文讲述HBA是怎么打开一个链路的过程,我画了一个图,如下,后面会根据该图进行XL状态机进行理解;1. 相连的phy之间进行速度协商,IDAF交换之后,收到link ready的信号,均处于Idle的状态;在这个状态下,phy向ECM一直重复发送Idle request.2. 当HBA发送OPAF给phy0后,phy0的状态转换为Idle-->Request_Path3. phy0(XL:Request_Path)在该状态时,向ECM发送request path的请求,ECM查找.
2021-12-15 15:21:13
743
原创 清理C盘
C盘,属性,磁盘清理C:\Windows\SoftwareDistribution\Download 下的文件全部删除C:\Windows\Temp 全部清理执行wicleanup
2020-10-09 11:28:04
87
原创 INIT_WORK的暂时理解
<br />/**<br /> * _scsih_fw_event_add - insert and queue up fw_event<br /> * @ioc: per adapter object<br /> * @fw_event: object describing the event<br /> * Context: This function will acquire ioc->fw_event_lock.<br /> *<br /> * This adds the firmware even
2011-05-22 12:53:00
1127
原创 insmod 模块的时候出现的问题
<br />当我insmod mpt2sas.ko的时候,报出的错误为:<br />unknow symol ....<br />百思不得其解,后来问了pei姐姐,得知问题所在。<br />原来是:<br />在insmod 一个模块的时候,一定要看下模块信息。<br />modinfo xx.ko<br />查看下模块的依赖关系。<br />用lsmod |grep ** 来查看是否所依赖的模块都有安装上去
2011-05-18 10:54:00
653
原创 转:data alignment的作用
<br />研究的起源:研究DMA支援的一个特点就是byte alignment的作用,老大上次特别提出,还是好好研究一番,这个资料挺有意思。<br /><br /><br /><br />Data alignment: Straighten up and fly right Data alignment: Straighten up and fly right<br />Align your data for speed and correctness<br />Memory access granul
2011-01-21 16:35:00
2628
原创 脚本里的一个新发现
<br />今天帮77验证一个问题,关于脚本里的注释。<br />一般在bash脚本里,一句话加上#的话 ,就相当于,这句话无效<br />譬如:<br /> <br />wangtt=wangttaaaaa<br />echo $wangtt<br /> <br />这样的话, 就会打印出 wangttaaaaa<br /> 如果 <br />wangtt=wangttaaaaa bbbb<br />的话,<br />打印结果为: wangttaaaaa<br />而不是wangttaaaaaabbbb<
2011-01-19 18:02:00
397
原创 查看文件的不同diff
<br />diff file1 file2<br /> <br />可以查看文件是否相同。<br />如果相同, 返回NULL<br />如果不同, 返回不同部分
2010-12-15 11:22:00
449
原创 语言学习 之 perl语言
<br />今天学习简单的打印。<br /> <br />列表与数组:<br />一、列表<br /> 列表是包含在括号里的一序列的值,可以为任何数值,也可为空,如:(1, 5.3 , "hello" , 2),空列表:()。<br /> 注:只含有一个数值的列表(如:(43.2) )与该数值本身(即:43.2 )是不同的,但它们可以互相转化或赋值。<br /> 列表例:<br /> (17, $var, "a string")<br /> (17, 26 << 2)<br /> (
2010-12-14 18:13:00
299
原创 创建swap分区 并开启Swap
<br />只写下我工作中遇到的,呵呵,好喜欢。<br />谢谢zengc.<br />mkdir swapfile<br />dd if=/dev/zero of=/swapfile/swapfile_kdump bs=1M count=128<br />mkswap /swapfile/swapfile_kdump <br />swapon /swapfile/swapfile_kdump <br /> <br />这样就创建了128M 的 swap文件。
2010-12-14 17:34:00
538
原创 shell 语言学习
<br />wc -l file ---计算文件行数<br />wc -w file ---计算文件单词数<br />wc -c file ---计算文件中的字符数<br />grep 'pattern' file ----在文件中搜索字符串“pattern”<br /> 通常用" [ ] "来表示条件测试。注意这里的空格很重要。要确保方括号的空格。 <br />[ -d DIR ] 如果DIR存在并且是一个目录则为真<br />[ -f file ] 如果file存在并且是一个普通文件则为真<
2010-12-09 17:47:00
311
原创 设置IP
<br />首先用ethtool eth<number> 查看哪个端口开着。<br />比如: ethtool eth0<br /> ethtool eth1<br />linux-d109:/ # ethtool eth0<br />Settings for eth0:<br />Cannot get device settings: No such device<br />Cannot get wake-on-lan settings: No such device<br />Can
2010-12-08 18:38:00
1809
原创 initrd文件的解开与压缩方式
<br />还是我自己比较常用并且很喜欢的方法。呵呵。<br /> <br />linux-d109:/home # mkdir wangtt<br />linux-d109:/home # cd wangtt/<br />linux-d109:/home/wangtt # cp /boot/initrd-2.6.27.19-5-default .<br />linux-d109:/home/wangtt # ls<br />initrd-2.6.27.19-5-default<br />linux-d10
2010-12-08 16:46:00
786
原创 压缩与解压命令
这个方式是我最喜欢用的。呵呵当然,也有别的用法。比如: /home/wangtt/wangtt.c我想压缩 wangtt 这个目录linux-d109:/home # lsbuild dead.ko source wangttlinux-d109:/home # tar zcf wangtt.tar.gz wangtt/linux-d109:/home # lsbuild dead.ko source wangtt wangtt.tar.gz解开这个压缩:linux-d109:/home #
2010-12-08 16:38:00
487
原创 转:查看内核版本命令
<br />今天飞飞问我怎么查看一个系统的版本是suse的还是fedro的。<br />我只知道 uname -a<br />然后问了下百度 , 得出以下答案。<br />http://zhidao.baidu.com/question/148159413.html<br /> <br />告诉飞飞:cat /proc/version 解决了他的问题。哈哈哈哈哈<br /> <br /> <br />1. 查看内核版本命令: <br /><br /> 1) [root@q1test01 ~]# cat /
2010-12-08 10:26:00
1458
原创 需要确认的问题
<br />一。 通道一次能处理多少数据。<br />应该是由xfercap_log 这个变量来确定的。<br /> * @xfercap_log; log2 of channel max transfer length (for fast division)<br />可是 max transfer length是由谁来确定的捏?是哪个人悄悄的设置了这个变量?????<br />找到根据啦!哈哈<br />代码:<br />是在 ioat2_enumerate_channels 阶段来做的。原来初始化真有
2010-12-01 17:12:00
337
原创 几个不懂的函数,有待解决
<br />hw = pci_pool_alloc(dma->dma_pool, flags, &phys);<br /> <br />疑问:这个函数是申请pci缓冲池麽? 从字面意思看好像是的。<br /> 怎么申请的呢? dma->dma_pool 是一个pci_pool的结构体, phys 是一个dma_addr_t 的结构体, 是一个地址。<br /> 难道是说,难道是。。。哎,不懂, 还是查明了再说吧。<br />对应的函数是: pci_pool_free.<br
2010-12-01 16:36:00
400
原创 解读函数 alloc channel source
/* ioat2_alloc_chan_resources - allocate/initialize ioat2 descriptor ring * @chan: channel to be initialized */int ioat2_alloc_chan_resources(struct dma_chan *c){ struct ioat2_dma_chan *ioat = to_ioat2_chan(c); struct ioat_chan_common *chan = &ioat->base;
2010-12-01 16:14:00
694
原创 摘抄
<br />这个世界,并不是非黑即白,更广漠的,是中间地带。那些立场坚定的黑白论者,立在原地评是论非,全然不顾自己脚下是虚空。那些走向中间地带的人,用自己的脚一步步丈量,越行越远。那些是非论者并不知道,有些人,看到的风景已经与他们不一样。
2010-12-01 15:56:00
251
原创 转:另类数独知多少
<br /><br />http://jandan.net/2008/07/27/special-sudoku-1.html<br /> <br />原来数独有这么多种类, 看来自己真的是井底之蛙了。 另类数独知多少 - 上篇<br />© sfufoet / 2008.07.27 / 6:30 pm / 12,460 pv <br /><br />最近迷上数独了。搜索了一下,发现一些另类的数独。以前我总以为,数独有什么好玩,不就是一个简单的逻辑推理游戏嘛。最近在 ubuntu 下,不小心玩了数独。就彻底迷
2010-11-29 14:58:00
681
原创 哎呀呀,我也有自己的CSDN博客了
<br />哎呀呀。<br />啊哈哈<br />哈哈。<br />我以后会在这里写下我的工作心得体会。<br />以及工作中遇到的问题。<br />加油!
2010-11-26 16:38:00
251
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人