sys_con.c

Go to the documentation of this file.
00001 
00007 #include "routix/system.h"
00008 #include "routix/paging.h"
00009 #include "routix/segm.h"
00010 #include "routix/debug.h"
00011 #include "sys/syscalls.h"
00012 #include "routix/syscalls.h"
00013 #include "error.h"
00014 #include <routix/kstdio.h>
00015 #include "string.h"
00016 #include "routix/atomic.h"
00017 #ifndef __TASK
00018 #include "routix/task.h"
00019 #endif
00020 
00021 
00022 //Nuevas
00023 extern int sys_process (void);
00024 extern int sys_console (void);
00025 extern int sys_timer (void);
00026 extern int sys_mem (void);
00027 
00028 extern task_struct_t *actual;
00029 
00030 
00031 
00032 
00033 // Vector de funciones de llamadas al sistema (grupo Console)
00034 int (*syscall_console[MAX_SYSCALLS]) (void) = {
00035         (int (*) (void)) sys_print,     
00036         (int (*) (void)) sys_gets,      
00037         (int (*) (void)) sys_clrscr     
00038 };
00039 
00040 
00041 
00042 // Similar a llamada nix Write pero escribiendo siempre hacia stdout
00043 int sys_print (void *buff, size_t largo)
00044 {
00045     buff = convertir_direccion (buff , actual->cr3_backup);
00046         
00047     size_t aux;
00048 
00049         static spinlock_t candado = 1;
00050 
00051 //      spin_lock(&candado);
00052         
00053         for (aux=0 ; aux<largo; aux++) {
00054                 //Demora utilizada para verificar el funcionamiento de spinlocks
00055 //              for(i=0 ; i<0x4fff ; i++);
00056                 putchar(*((char *)buff+aux));
00057         }
00058 //      spin_unlock(&candado);
00059 
00060     return largo;
00061 }       
00062 
00063 
00064 int sys_gets (char *str)
00065 {
00066     str = convertir_direccion (str , actual->cr3_backup);
00067 
00068     gets (str);
00069     return (strlen(str));
00070 }       
00071 
00072 int sys_clrscr (void)
00073 {
00074     clrscr();
00075     return OK;
00076 }
00077 
00078 

Generated on Sun May 30 18:38:35 2004 for Routix OS by doxygen 1.3.6