initial commit
[pfinal.git] / Routix / include / sys / syscalls.h
blob8d4906498228b5202ef50a89f0c600c029fb2369
1 /*! \brief Aquí se define la ubicación de las llamadas dentro de los vectores
2 *! \note este header DEBE ser utilizado por el kernel y por la librería estandar de Routix
3 */
5 #ifndef _SYSCALLS_H
6 #define _SYSCALLS_H
9 #define _syscall0(numero,retorno) __asm__ __volatile__ ("int $0x50" : "=a" (retorno) : "a" (numero))
10 #define _syscall1(numero,retorno,param1) __asm__ __volatile__ ("int $0x50" : "=a" (retorno) : "a" (numero), "b" (param1))
11 #define _syscall2(numero,retorno,param1,param2) __asm__ __volatile__ ("int $0x50" : "=a" (retorno) : "a" (numero), \
12 "b" (param1), "c" (param2))
13 #define _syscall3(numero,retorno,param1,param2,param3) __asm__ __volatile__ ("int $0x50" : "=a" (retorno) : "a" (numero), \
14 "b" (param1), "c" (param2), "d" (param3))
17 #define MAX_SYSCALLS 15
19 // Definiciones de grupos
20 #define SYS_PROCESS 0
21 #define SYS_CONSOLE (1 << 16)
22 #define SYS_SIGNALS (2 << 16)
23 #define SYS_TIMER (3 << 16)
24 #define SYS_MEM (4 << 16)
25 #define SYS_MISC (5 << 16)
27 //El valor SYS_%_MAX determina cual es el número de llamadas al sistema para ese grupo, evitando problemas
28 // % equivale al nombre del grupo
30 // Funciones de grupo PROCESS
31 #define SYS_EXEC 0
32 #define SYS_VOID 1
33 #define SYS_FORK 2
34 #define SYS_PERROR 3
35 #define SYS_RENICE 4
36 #define SYS_GETPID 5
37 #define SYS_GETPPID 6
38 #define SYS_EXIT 7
39 #define SYS_SHOW 8
40 #define SYS_WAIT 9
41 #define SYS_EXECVE 10
42 #define SYS_CLONE 11
43 #define SYS_PROCESS_MAX 12 // Cantidad de llamadas en el grupo PROCESS. Debe ser siempre el ultimo valor
45 // Funciones de grupo CONSOLE
46 #define SYS_PRINT 0
47 #define SYS_GETS 1
48 #define SYS_CLRSCR 2
49 #define SYS_CONSOLE_MAX 3 // Cantidad de llamadas en el grupo CONSOLE. Debe ser siempre el ultimo valor
51 // Funciones del grupo SIGNALS
52 #define SYS_KILL 0 //
53 #define SYS_SIGNAL 1
54 #define SYS_SIGACTION 2
55 #define SYS_SIGNAL_CHECK 3
56 #define SYS_SIGPROCMASK 4
57 #define SYS_SIGNALS_MAX 5 // Cantidad de llamadas en el grupo SIGNALS. Debe ser siempre el ultimo valor
60 // Funciones de grupo TIMER
61 #define SYS_SLEEP 0
62 #define SYS_PROC_DUMP 1
63 #define SYS_KILLL 2 //KILL no va aquí (debo crear un grupo SYS_SIGNAL o lo ubico en SYS_MEM ?)
64 #define SYS_USLEEP 3
65 #define SYS_PROC_DUMP_V 4
66 #define SYS_TIMER_DUMP 5
67 #define SYS_TIMER_MAX 6 // Cantidad de llamadas en el grupo TIMER. Debe ser siempre el ultimo valor
69 // Funciones de grupo MEM
70 #define SYS_MALLOC_PAGE 0
71 #define SYS_FREE_PAGE 1
72 #define SYS_FREE_MEM 2
73 #define SYS_MEM_MAX 3 // Cantidad de llamadas en el grupo MEM. Debe ser siempre el ultimo valor
75 // Funciones de grupo MISC
76 #define SYS_SETVAR 0
77 #define SYS_GETVAR 1
78 #define SYS_READ_DEBUG 2
79 #define SYS_MISC_MAX 3 // Cantidad de llamadas en el grupo MEM.
81 void syscall (void);
82 int sys_no_existe (dword numero);
84 #endif