Subversion Repositories Kolibri OS

Rev

Rev 6926 | Rev 6929 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 6926 Rev 6927
Line 11... Line 11...
11
EBADF   equ      9
11
EBADF   equ      9
12
EFAULT  equ     14
12
EFAULT  equ     14
13
;EINVAL  equ     22      11   defined in stack.inc
13
;EINVAL  equ     22      11   defined in stack.inc
14
ENFILE  equ     23
14
ENFILE  equ     23
15
EMFILE  equ     24
15
EMFILE  equ     24
16
 
-
 
-
 
16
EPIPE   equ     32
Line 17... Line 17...
17
 
17
 
18
FILEOP_CLOSE    equ     0
18
FILEOP_CLOSE    equ     0
19
FILEOP_READ     equ     1
19
FILEOP_READ     equ     1
Line 47... Line 47...
47
        dd sys_futex        ;5     reserved
47
        dd sys_futex        ;5     reserved
48
        dd sys_futex        ;6     reserved
48
        dd sys_futex        ;6     reserved
49
        dd sys_futex        ;7     reserved
49
        dd sys_futex        ;7     reserved
50
        dd sys_posix.fail   ;8     sys_open
50
        dd sys_posix.fail   ;8     sys_open
51
        dd sys_posix.fail   ;9     sys_close
51
        dd sys_posix.fail   ;9     sys_close
52
        dd sys_posix.fail   ;10    sys_read
52
        dd sys_read         ;10    read()
53
        dd sys_posix.fail   ;11    sys_write
53
        dd sys_write        ;11    write()
54
        dd sys_posix.fail   ;12    sys_dup3
54
        dd sys_posix.fail   ;12    sys_dup3
55
        dd sys_pipe2        ;13
55
        dd sys_pipe2        ;13
56
.end:
56
.end:
57
endg
57
endg
Line 93... Line 93...
93
        jmp     dword [eax+FILEOP_READ*4]
93
        jmp     dword [eax+FILEOP_READ*4]
94
.fail:
94
.fail:
95
        mov     [esp+SYSCALL_STACK._eax], -EBADF
95
        mov     [esp+SYSCALL_STACK._eax], -EBADF
96
        ret
96
        ret
Line -... Line 97...
-
 
97
 
-
 
98
;ssize_t write(int fd, const void *buf, size_t count);
-
 
99
; ecx fd
-
 
100
; edx buf
-
 
101
; esi count
-
 
102
 
-
 
103
align 4
-
 
104
sys_write:
-
 
105
        cmp     ecx, STDERR_FILENO
-
 
106
        jbe     .fail
-
 
107
        cmp     ecx, (PROC.pdt_0 - PROC.htab)/4
-
 
108
        jae     .fail
-
 
109
 
-
 
110
        mov     edi, [current_process]
-
 
111
        mov     ebp, [edi+PROC.htab+ecx*4]
-
 
112
 
-
 
113
        cmp     [ebp+FILED.magic], 'PIPE'
-
 
114
        jne     .fail
-
 
115
        cmp     [ebp+FILED.handle], ecx
-
 
116
        jne     .fail
-
 
117
 
-
 
118
        mov     ebp, [ebp+FILED.file]
-
 
119
        mov     eax, [ebp]
-
 
120
        jmp     dword [eax+FILEOP_WRITE*4]
-
 
121
.fail:
-
 
122
        mov     [esp+SYSCALL_STACK._eax], -EBADF
-
 
123
        ret