3
可能重複:
Inline Assembler for wrapper function doesn’t work for some reason如何檢查我的包裝函數系統調用 - read()是否正確?
我要求寫的包裝功能read , write , close , open & fork
。我寫了4個包裝函數read , write , close , open
。
我的問題是:
我怎麼能寫
fork
包裝功能,使用我寫的read , write , close & open
4包裝的功能呢?如何檢查我寫的包裝是否正確?下面是的
read
包裝函數的代碼 - 名爲my_read
:
ssize_t my_read(int fd, void *buf, size_t count)
{
ssize_t res;
__asm__ volatile(
"int $0x80" /* make the request to the OS */
: "=a" (res), /* return result in eax ("a") */
"+b" (fd), /* pass arg1 in ebx ("b") */
"+c" (buf), /* pass arg2 in ecx ("c") */
"+d" (count) /* pass arg3 in edx ("d") */
: "a" (5) /* passing the system call for read to %eax , with call number 5 */
: "memory", "cc");
/* The operating system will return a negative value on error;
* wrappers return -1 on error and set the errno global variable */
if (-125 <= res && res < 0)
{
errno = -res;
res = -1;
}
return res;
}
備註:我不能直接使用open ,close ,read , write & fork
命令。
如果需要,我可以附加其他3個包裝的其餘代碼。以上是read
的包裝。
問候
羅恩