read和_read?

昨晚把uname函数解决了,成功地在模拟的cygwin兼容层上运行了GNU uname程序。接着又尝试了一个比较简单的程序—cat。

 

在运行的过程中,还需要下面两个函数_read和_write。

 

其实这两个函数和read、write有什么区别呢?

 

我懒得去翻GNU的源代码了,_read和read的函数声明是一样的,所以我估计_read是cygwin内部使用的函数。于是,直接在read中调用_read,在_read里实现真正的读取操作的代码。

 

在基本实现了fstat功能后,我发现里面有一个指出块大小的变量。我把这个变量设置为一个页面的大小4096之后,惊奇地发现每次调用_read的时候都是4KB对齐的。真好,看来我在api层的FsReadFile函数里又设置了一下页面对齐有点多余的感觉。

 

附一个运行cat程序显示一个文本文件startup.txt的内容的截图。

 

 

 

下一步准备实现标准输出输入了。写一下tty和kdb的驱动。

read和_read?》有4个想法

  1. Xiaoxia

    不知道算不算是移植呢。我是想让cygwin里的应用程序能够在sgos2上使用,所以我需要做一个cygwin的兼容层。看似简单,但是实现起来真的很繁琐。

    回复

回复 Xiaoxia 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据