昨晚把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的驱动。
小虾加油..
惊险FB神牛!
预祝神牛中考成功。
不错~继续~ 以前用过cygwin。 你是在移植吧
不知道算不算是移植呢。我是想让cygwin里的应用程序能够在sgos2上使用,所以我需要做一个cygwin的兼容层。看似简单,但是实现起来真的很繁琐。