00001
00002
00003
00004
00005
00006 #ifndef INTERPRETEUR_H
00007 #define INTERPRETEUR_H
00008
00009 #include "lib_ksinu.h"
00010 #include "commandes.h"
00011 #include "fifo.h"
00012
00013
00014 int pid_libre();
00015
00016
00017 int page_libre(int pid);
00018
00019
00020 int page_swap_libre();
00021
00022
00023 int liberer_pid (int pid);
00024
00025
00026 int liberer_page (int page);
00027
00028
00029 int liberer_page_swap (int page);
00030
00031
00032 int rapatrier_page_swap (int pid, int page);
00033
00034
00035 #define Z_CODE 0 // Zone de code
00036 #define Z_DONNEES 1 // Zone de donnees
00037 #define Z_PILE 2 // Zone de pile
00038
00039
00040 typedef struct {
00041 int zone;
00042 int num;
00043 } vad_t;
00044
00045
00046 typedef struct {
00047 int type;
00048 int droits;
00049 int num;
00050 } info_page_t;
00051
00052
00053 int adresse_phys (int pid, vad_t ad_v, info_page_t info);
00054
00055
00056 int lire_mot_mem (int num_mot, int num_pp, mot_t mot);
00057
00058
00059 int ecrire_mot_mem (int num_mot, int num_pp, mot_t mot);
00060
00061
00062 int page_swap2mem (int num_page_swap, int num_page_mem);
00063
00064
00065 int page_mem2swap (int num_page_mem, int num_page_swap);
00066
00067
00068 int lire_mot (int pid, vad_t ad_v, mot_t mot);
00069
00070
00071 int ecrire_mot (int pid, vad_t ad_v, mot_t mot);
00072
00073
00074 #define I_AFFECT 1
00075 #define I_AFFECTP 2
00076 #define I_SI 3
00077 #define I_SAUT 4
00078 #define I_CPILE 5
00079 #define I_DPILE 6
00080 #define I_APPEL 7
00081 #define I_RETOUR 8
00082 #define I_TEST 9
00083 #define I_TRAPPE 10
00084 #define I_AFFECTSP 11
00085 #define I_DONNEES 255
00086
00087
00088 #define T_CLONE 1
00089 #define T_RECOUVRE 2
00090 #define T_ATTENDS 3
00091 #define T_FIN 4
00092 #define T_CAPTURE 5
00093 #define T_EMETS 6
00094 #define T_ID 7
00095 #define T_IDP 8
00096 #define T_LIT 9
00097 #define T_ECRIT 10
00098
00099
00100 void next_inst (int pid);
00101
00102
00103 #endif