mescc: Add fsync.
* module/mes/libc-i386.mes (i386:fsync): New function. (i386:libc): Export it. * mlibc.c (fsync): New function.
This commit is contained in:
parent
b41e35cf6f
commit
8460c4ab52
18
mlibc.c
18
mlibc.c
|
@ -114,6 +114,24 @@ write (int fd, char const* s, int n)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
fsync (int fd)
|
||||||
|
{
|
||||||
|
int r;
|
||||||
|
//syscall (SYS_fsync, fd));
|
||||||
|
asm (
|
||||||
|
"mov %1,%%ebx\n\t"
|
||||||
|
|
||||||
|
"mov $0x76, %%eax\n\t"
|
||||||
|
"int $0x80\n\t"
|
||||||
|
"mov %%eax,%0\n\t"
|
||||||
|
: "=r" (r)
|
||||||
|
: "" (fd)
|
||||||
|
: "eax", "ebx"
|
||||||
|
);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
void *
|
void *
|
||||||
brk (void *p)
|
brk (void *p)
|
||||||
{
|
{
|
||||||
|
|
|
@ -92,6 +92,18 @@
|
||||||
#xc3 ; ret
|
#xc3 ; ret
|
||||||
))
|
))
|
||||||
|
|
||||||
|
(define (i386:fsync f g ta t d)
|
||||||
|
'(
|
||||||
|
#x55 ; push %ebp
|
||||||
|
#x89 #xe5 ; mov %esp,%ebp
|
||||||
|
|
||||||
|
#x8b #x5d #x08 ; mov 0x8(%ebp),%ebx
|
||||||
|
#xb8 #x76 #x00 #x00 #x00 ; mov $0x76,%eax
|
||||||
|
#xcd #x80 ; int $0x80
|
||||||
|
|
||||||
|
#xc9 ; leave
|
||||||
|
#xc3 ; ret
|
||||||
|
))
|
||||||
|
|
||||||
(define (i386:_start)
|
(define (i386:_start)
|
||||||
(string-append ".byte"
|
(string-append ".byte"
|
||||||
|
@ -110,4 +122,5 @@
|
||||||
(cons "open" (list i386:open))
|
(cons "open" (list i386:open))
|
||||||
(cons "read" (list i386:read))
|
(cons "read" (list i386:read))
|
||||||
(cons "write" (list i386:write))
|
(cons "write" (list i386:write))
|
||||||
|
(cons "fsync" (list i386:fsync))
|
||||||
(cons "brk" (list i386:brk))))
|
(cons "brk" (list i386:brk))))
|
||||||
|
|
Loading…
Reference in New Issue