00001 /** 00002 @file commandes.h 00003 Entete de commandes.c 00004 */ 00005 00006 #ifndef COMMANDES_H 00007 #define COMMANDES_H 00008 00009 #include "lib_ksinu.h" 00010 #include "interpreteur.h" 00011 #include "fifo.h" 00012 #include "signaux.h" 00013 00014 /************************************************************************************** 00015 Fait par Ouachani Mourad 00016 **************************************************************************************/ 00017 00018 /// Execute l'instruction CPILE 00019 int cmd_cpile(int pid,mot_t mot); 00020 00021 /// Execute l'instruction DPILE 00022 int cmd_dpile(int pid,mot_t mot); 00023 00024 00025 /************************************************************************************** 00026 Fait par Martin Ludovic 00027 **************************************************************************************/ 00028 00029 /// Commande pour fixer la taille de la zone de donnees. 00030 int cmd_donnees(int pid,mot_t mot); 00031 00032 /// Execute l'instruction AFFECTE ref = ref_cst. 00033 int cmd_affect(int pid,mot_t mot); 00034 00035 /// Execute l'instruction AFFECTE+ ref += ref_cst 00036 int cmd_affectp(int pid,mot_t mot); 00037 00038 /// Execute l'instruction AFFECTESP 00039 int cmd_affectsp(int pid,mot_t mot); 00040 00041 /// Execute l'instruction TEST. 00042 int cmd_test (int pid,mot_t mot); 00043 00044 /// Execute l'instruction SI. 00045 int cmd_si(int pid,mot_t mot); 00046 00047 /// Execute l'instruction SAUT. 00048 int cmd_saut(int pid,mot_t mot); 00049 00050 /// Commande d'appel de fonction 00051 int cmd_appel(int pid,mot_t mot); 00052 00053 /// Commande de retour de fonction 00054 int cmd_retour(int pid); 00055 00056 /// Commande TRAPPE terminant le processus 00057 int cmd_fin(int pid); 00058 00059 /// Commande TRAPPE qui retourne le pid du processus. 00060 int cmd_id(int pid); 00061 00062 /// Commande TRAPPE qui retourne le ppid du processus. 00063 int cmd_idp(int pid); 00064 00065 /// Commande TRAPPE qui associe un handler a un signal pour le processus. 00066 int cmd_capture(int pid); 00067 00068 /// Commande TRAPPE qui envoie a un processus un signal 00069 int cmd_emets(int pid); 00070 00071 /// Commande TRAPPE qui recouvre l'espace memoire d'un processus pour executer un autre programme 00072 int cmd_recouvre(int pid); 00073 00074 /// Commande TRAPPE qui duplique l'espace memoire\n 00075 int cmd_clone(int pid); 00076 00077 /// Commande TRAPPE qui suspend le processu jusqu'à la mort d'un fils 00078 int cmd_attends(int pid); 00079 00080 /// Commande TRAPPE qui lit une lettre ds le tube d'entree 00081 int cmd_lit(int pid); 00082 00083 /// Commande TRAPPE qui ecrit une lettre ds le tube de sortie 00084 int cmd_ecrit(int pid); 00085 00086 /// Termine un processus proprement 00087 int terminer_proc (int pid); 00088 00089 /// Supprime un proc et les pages mem attachees 00090 int supprimer_proc (int pid); 00091 00092 /// Supprime les pages mem attachees au processus 00093 int supprimer_partie_proc (int pid); 00094 00095 /// Regarde l'etat du drapeau du saut conditionnel 00096 int condition_vraie (mot_t mot); 00097 00098 /// Modifie l'etat du drapeau du saut conditionnel 00099 int changer_condition (int condition, mot_t mot); 00100 00101 /// Structure correspondant a un parametre de commande 00102 struct parametre { 00103 int zone; ///< Zone (Z_DONNEES ou Z_PILE) ou se trouve la donnee 00104 int ad; ///< Adresse dans cette zone 00105 int type; ///< Donnee de type constante (P_CONST) ou reference (P_REF) 00106 }; 00107 typedef struct parametre param_t; 00108 00109 #define P_CONST 0 00110 #define P_REF 1 00111 #define P_DIRECT 0 00112 #define P_INDIR 1 00113 00114 /// Parse un mot contenant une instruction 00115 int parser_param (int pid, mot_t mot, param_t tab_param[2], int nb); 00116 00117 00118 #endif