rng_egd_chr_read分析
来源:互联网 发布:finale 2016 mac 编辑:程序博客网 时间:2024/06/06 11:48
backends/rng-egd.c
------
buf即Rng的物理buffer指针,size即为Rng的buffer的大小。
static void rng_egd_chr_read(void *opaque, const uint8_t *buf, int size){
RngEgd *s = RNG_EGD(opaque);
size_t buf_offset = 0;
while (size > 0 && s->requests) {
RngRequest *req = s->requests->data;
int len = MIN(size, req->size - req->offset);
//如果请求的size(即req->size)大于size,则本次只可以读取Rng缓冲区大小的数据(即size大小的数据)
buf_offset += len;
req->offset += len;//以备下次读取的时候,不再读取上次已经读取过的数据。因为本次请求的数据大于Rng的缓冲区大小,所以只能等到Rng刷新缓冲区以后,再次读取本次请求还需读取的数据。
---
第二种情况,如果本次请求的size小于size的大小,则会不断循环的处理请求链表上的请求。直到Rng的buf为空。
---
size -= len;
if (req->offset == req->size) {
s->requests = g_slist_remove_link(s->requests, s->requests);
//如果本次请求处理完了,则把本次请求从请求链表上删除。
req->receive_entropy(req->opaque, req->data, req->size);
rng_egd_free_request(req);
}
}
}
0 0
- rng_egd_chr_read分析
- 分析
- 分析
- 分析
- 分析
- 分析
- 分析
- 分析
- 分析
- 分析
- 大家帮忙分析分析!
- FFMpeg分析详细分析
- FFMpeg分析详细分析
- core 分析的分析
- 写给自己,分析分析
- FFMpeg分析详细分析
- 图像分析------直方图分析
- 静态分析 - 数据流分析
- 第2天 数值的整数次方
- ENVI波普运算
- [unity3d]水果忍者-界面搭建
- Qt Creator 窗体控件自适应窗口大小布局
- 集合框架
- rng_egd_chr_read分析
- 交通灯管理系统
- 如何知道某个java类从哪个位置加载?
- java.util.map中的方法entrySet解析
- Linux 下编译安装OpenCV
- 银行调度系统
- nodejs的require的用法
- poj 2411 状态压缩dp
- JDK5新特性