00001 /** 00002 * @file systeme.h 00003 * @brief Entete de systeme.c 00004 */ 00005 00006 #ifndef SYSTEME_H 00007 #define SYSTEME_H 00008 00009 #include "interpreteur.h" 00010 #include "fifo.h" 00011 #include "commandes.h" 00012 00013 00014 /************************************************************************************** 00015 Fait par Martin Ludovic 00016 **************************************************************************************/ 00017 00018 /// Initialise la memoire principale 00019 void init_mem (); 00020 00021 /// Initialise la memoire secondaire (swap) 00022 int init_swap (); 00023 00024 /// Lancement d'un programme 00025 int lancer_prog (char* fic, int pid); 00026 00027 00028 00029 /************************************************************************************** 00030 Fait par Ouachani Mourad 00031 **************************************************************************************/ 00032 00033 /// Handler interceptant SIGUSR1 00034 void top_horloge_handler (int sig); 00035 00036 /// Handler interceptant SIGUSR2 00037 void interface_handler (int sig); 00038 00039 /************************************************* 00040 Liste des commandes 00041 **************************************************/ 00042 00043 #define LP 1 00044 #define STDIN 2 00045 #define QUANTUM 3 00046 #define CADANCE 4 00047 #define HORLOGE 5 00048 #define LPT 6 00049 #define PPP 7 00050 #define PSIG 8 00051 #define SIG 9 00052 #define FIFO_NAME "fifo.f" 00053 00054 /************************************************** 00055 Structures pour les messages 00056 ***************************************************/ 00057 00058 /// Structure representant un message a lire ou a ecrire ds le tube 00059 typedef struct message { 00060 int commande; ///<la commande a executer 00061 char ref[12]; ///<la reference en argument 00062 int int_opt; ///< argument optionnel 00063 int int_opt2; ///<argument optionnel (generalement pour les signaux) 00064 } message; 00065 00066 pid_t pid; 00067 int fifo; 00068 00069 ///Lis dans le tube 00070 int lire_tube(); 00071 00072 ///Ecris dans le tube 00073 int ecrit_tube(struct message mes); 00074 00075 /// Ecrit une chaine de caractére dans le tampon d'entree dun processus 00076 int modif_process(int num_proc, char *ref); 00077 00078 /// Affiche tous les processus et leur etats 00079 int liste_process(); 00080 00081 ///Affiche le contenue de la table des processus 00082 int printtp(pid_t pid); 00083 00084 /// Ecrire le contenue d'une page physique dans un fichier 00085 int printpp(int num_pp); 00086 00087 /// Afficher les signaux 00088 int printsig(int num_sig); 00089 00090 /// Envoyer un signal a un processus 00091 int signal_proc(int num_sign,int num_proces); 00092 00093 ///Interprete une commande lus dans le tube 00094 int interprete_commande(message mes); 00095 00096 #endif