Changeset b27a97b in mainline
- 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
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
console/console.c
r440cff5 rb27a97b 100 100 case KBD_PUSHCHAR: 101 101 /* got key from keyboard driver */ 102 102 103 /* find active console */ 104 103 105 /* if client is awaiting key, send it */ 106 104 107 /*FIXME: else store key to its buffer */ 105 108 retval = 0; … … 113 116 /* Send it to first FB, DEBUG */ 114 117 // ipc_call_async_2(connections[0].vfb_phone, FB_PUTCHAR, 0, IPC_GET_ARG1(call),NULL,NULL); 115 ipc_call_sync_2(connections[0].vfb_phone, FB_PUTCHAR, 0, IPC_GET_ARG1(call),NULL,NULL);118 // ipc_call_sync_2(connections[0].vfb_phone, FB_PUTCHAR, 0, IPC_GET_ARG1(call),NULL,NULL); 116 119 117 120 break; … … 149 152 return; 150 153 case CONSOLE_PUTCHAR: 151 /* TODO: send message to fb */154 /* Send message to fb */ 152 155 ipc_call_async_2(connections[consnum].vfb_phone, FB_PUTCHAR, IPC_GET_ARG1(call), IPC_GET_ARG2(call), NULL, NULL); 153 156 break; 154 157 case CONSOLE_GETCHAR: 155 /* FIXME: */ 156 if (!keybuffer_pop(&(connections[active_client].keybuffer), (char *)&arg1)) { 158 /* FIXME: Only temporary solution until request storage will be created */ 159 160 while (!keybuffer_pop(&(connections[active_client].keybuffer), (char *)&arg1)) { 157 161 /* FIXME: buffer empty -> store request */ 158 arg1 = 'X'; /* Only temporary */162 usleep(10000); 159 163 }; 160 //ipc_call_async_2(connections[active_client].vfb_phone, FB_PUTCHAR, ' ', arg1, NULL, (void *)NULL); 164 161 165 break; 162 166 } 163 ipc_answer_fast(callid, 0, 0,0);167 ipc_answer_fast(callid, 0, arg1, 0); 164 168 } 165 169 } … … 190 194 /* TODO: init key_buffer */ 191 195 while ((connections[i].vfb_phone = ipc_connect_me_to(PHONE_NS, SERVICE_VIDEO, 0)) < 0) { 192 193 ipc_call_async_2(connections[i].vfb_phone, FB_PUTCHAR, 'a', 'b', NULL, (void *)NULL);196 usleep(10000); 197 //ipc_call_async_2(connections[i].vfb_phone, FB_PUTCHAR, 'a', 'b', NULL, (void *)NULL); 194 198 } 195 199 } -
init/init.c
r440cff5 rb27a97b 416 416 } 417 417 418 static void test_console(void) 419 { 420 int c; 421 422 while ((c = getchar()) != EOF) 423 putchar(c); 424 } 425 426 418 427 int main(int argc, char *argv[]) 419 428 { … … 423 432 // version_print(); 424 433 434 printf("Hello\nThis is Init\n"); 435 425 436 // test_printf(); 426 437 // test_printf2(); … … 437 448 // test_async_kbd(); 438 449 // test_fb(); 439 440 printf("Hello\nThis is Init\n\nBye."); 441 450 test_console(); 451 452 printf("\nBye.\n"); 442 453 443 454 /* -
libc/generic/io/io.c
r440cff5 rb27a97b 93 93 return EOF; 94 94 } 95 96 int getchar(void) 97 { 98 unsigned char c; 99 if (read(0, (void *)&c , 1) == 1) { 100 return c; 101 } 102 103 return EOF; 104 } 105 106 -
libc/generic/io/stream.c
r440cff5 rb27a97b 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 -
libc/include/io/io.h
r440cff5 rb27a97b 35 35 int putstr(const char * str); 36 36 int putchar(int c); 37 int getchar(void); 37 38 38 39 #endif -
libc/include/io/stream.h
r440cff5 rb27a97b 1 /* 2 * Copyright (C) 2006 Jakub Vana 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * - Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * - Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * - The name of the author may not be used to endorse or promote products 15 * derived from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 1 29 #include <libarch/types.h> 2 #include <unistd.h>3 30 4 31 #define EMFILE -17 … … 8 35 9 36 typedef ssize_t (*pwritefn_t)(void *, const void *, size_t); 10 typedef char (*preadfn_t)(void);37 typedef ssize_t (*preadfn_t)(void *, void *, size_t); 11 38 12 39 fd_t open(const char *fname, int flags); -
libc/include/stdio.h
r440cff5 rb27a97b 35 35 #define EOF (-1) 36 36 37 extern int getchar(void); 38 37 39 extern int puts(const char * str); 38 40 extern int putchar(int c); -
libc/include/unistd.h
r440cff5 rb27a97b 37 37 38 38 extern ssize_t write(int fd, const void * buf, size_t count); 39 extern ssize_t read(int fd, void * buf, size_t count); 39 40 extern void _exit(int status); 40 41 void *sbrk(ssize_t incr);
Note:
See TracChangeset
for help on using the changeset viewer.