Changeset b27a97bb in mainline for libc/generic/io/stream.c
- Timestamp:
- 2006-05-31T15:41:19Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- c0e674a
- Parents:
- 440cff5
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libc/generic/io/stream.c
r440cff5 rb27a97bb 1 /* 2 * Copyright (C) 2006 Josef Cejka 3 * Copyright (C) 2006 Jakub Vana 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: 9 * 10 * - Redistributions of source code must retain the above copyright 11 * notice, this list of conditions and the following disclaimer. 12 * - Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * - The name of the author may not be used to endorse or promote products 16 * derived from this software without specific prior written permission. 17 * 18 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 19 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 20 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 22 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 23 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 27 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 */ 29 30 1 31 #include <io/io.h> 2 32 #include <io/stream.h> … … 9 39 #include <ipc/services.h> 10 40 #include <console.h> 41 #include <unistd.h> 11 42 12 43 #define FDS 32 … … 35 66 } 36 67 37 static char read_stdin(void)68 static ssize_t read_stdin(void *param, void *buf, size_t count) 38 69 { 39 70 ipcarg_t r0,r1; 40 ipc_call_sync_2(console_phone, CONSOLE_GETCHAR, 0, 0, &r0, &r1); 41 42 return r0; 71 size_t i = 0; 72 73 while (i < count) { 74 if (ipc_call_sync_2(console_phone, CONSOLE_GETCHAR, 0, 0, &r0, &r1) < 0) { 75 return -1; 76 } 77 ((char *)buf)[i++] = r0; 78 } 79 return i; 43 80 //return (ssize_t) __SYSCALL3(SYS_IO, 1, (sysarg_t) buf, (sysarg_t) count); 44 81 } 82 45 83 static ssize_t write_stdout(void *param, const void *buf, size_t count) 46 84 { … … 126 164 return 0; 127 165 } 166 167 ssize_t read(int fd, void *buf, size_t count) 168 { 169 if (fd < FDS) 170 return streams[fd].r(streams[fd].param, buf, count); 171 172 return 0; 173 } 174
Note:
See TracChangeset
for help on using the changeset viewer.