initial commit
[pfinal.git] / Routix / src / syscalls / sys_con.c
blobe29681e019ec3aa4b1e09c94c4c1621a07769b9a
1 /*! \addtogroup Syscalls
2 \page sys_con.c
3 Syscalls relacionadas con la consola y las terminales
4 */
7 #include "routix/system.h"
8 #include "routix/paging.h"
9 #include "routix/segm.h"
10 #include "routix/debug.h"
11 #include "sys/syscalls.h"
12 #include "routix/syscalls.h"
13 #include "error.h"
14 #include <routix/kstdio.h>
15 #include "string.h"
16 #include "routix/atomic.h"
17 #ifndef __TASK
18 #include "routix/task.h"
19 #endif
22 //Nuevas
23 extern int sys_process (void);
24 extern int sys_console (void);
25 extern int sys_timer (void);
26 extern int sys_mem (void);
28 extern task_struct_t *actual;
33 // Vector de funciones de llamadas al sistema (grupo Console)
34 int (*syscall_console[MAX_SYSCALLS]) (void) = {
35 (int (*) (void)) sys_print,
36 (int (*) (void)) sys_gets,
37 (int (*) (void)) sys_clrscr
42 // Similar a llamada nix Write pero escribiendo siempre hacia stdout
43 int sys_print (void *buff, size_t largo)
45 buff = convertir_direccion (buff , actual->cr3_backup);
47 size_t aux;
49 static spinlock_t candado = 1;
51 // spin_lock(&candado);
53 for (aux=0 ; aux<largo; aux++) {
54 //Demora utilizada para verificar el funcionamiento de spinlocks
55 // for(i=0 ; i<0x4fff ; i++);
56 putchar(*((char *)buff+aux));
58 // spin_unlock(&candado);
60 return largo;
64 int sys_gets (char *str)
66 str = convertir_direccion (str , actual->cr3_backup);
68 gets (str);
69 return (strlen(str));
72 int sys_clrscr (void)
74 clrscr();
75 return OK;