Annotation of rpl/src/indicateurs.c, revision 1.16
1.1 bertrand 1: /*
2: ================================================================================
1.16 ! bertrand 3: RPL/2 (R) version 4.0.21
1.15 bertrand 4: Copyright (C) 1989-2011 Dr. BERTRAND Joël
1.1 bertrand 5:
6: This file is part of RPL/2.
7:
8: RPL/2 is free software; you can redistribute it and/or modify it
9: under the terms of the CeCILL V2 License as published by the french
10: CEA, CNRS and INRIA.
11:
12: RPL/2 is distributed in the hope that it will be useful, but WITHOUT
13: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14: FITNESS FOR A PARTICULAR PURPOSE. See the CeCILL V2 License
15: for more details.
16:
17: You should have received a copy of the CeCILL License
18: along with RPL/2. If not, write to info@cecill.info.
19: ================================================================================
20: */
21:
22:
1.11 bertrand 23: #include "rpl-conv.h"
1.1 bertrand 24:
25:
26: /*
27: ================================================================================
28: Positionnement d'un drapeau d'indicateur à 1
29: ================================================================================
30: Entrée :
31: - pointeur sur la structure processus
32: - numero du drapeau à mettre à 1 (INTEGER*1)
33: --------------------------------------------------------------------------------
34: Sortie : néant
35: --------------------------------------------------------------------------------
36: Effets de bord : néant
37: ================================================================================
38: */
39:
40: void
41: sf(struct_processus *s_etat_processus, unsigned char indice_drapeau)
42: {
43: t_8_bits masque;
44:
45: unsigned char indice_bit;
46: unsigned char indice_bloc;
47: unsigned char taille_bloc;
48:
49: indice_drapeau--;
50: taille_bloc = sizeof(t_8_bits) * 8;
51: indice_bloc = indice_drapeau / taille_bloc;
52: indice_bit = indice_drapeau % taille_bloc;
53:
54: masque = ((t_8_bits) 1) << (taille_bloc - indice_bit - 1);
55:
56: (*s_etat_processus).drapeaux_etat[indice_bloc] |= masque;
57: }
58:
59:
60: /*
61: ================================================================================
62: Positionnement d'un drapeau d'indicateur à 0
63: ================================================================================
64: Entrée :
65: - pointeur sur la structure processus
66: - numero du drapeau à mettre à 0 (INTEGER*1)
67: --------------------------------------------------------------------------------
68: Sortie : néant
69: --------------------------------------------------------------------------------
70: Effets de bord : néant
71: ================================================================================
72: */
73:
74: void
75: cf(struct_processus *s_etat_processus, unsigned char indice_drapeau)
76: {
77: t_8_bits masque;
78:
79: unsigned char indice_bit;
80: unsigned char indice_bloc;
81: unsigned char taille_bloc;
82:
83: indice_drapeau--;
84: taille_bloc = sizeof(t_8_bits) * 8;
85: indice_bloc = indice_drapeau / taille_bloc;
86: indice_bit = indice_drapeau % taille_bloc;
87:
88: masque = ~(((t_8_bits) 1) << (taille_bloc - indice_bit - 1));
89:
90: (*s_etat_processus).drapeaux_etat[indice_bloc] &= masque;
91: }
92:
93:
94: /*
95: ================================================================================
96: Routine renvoyant l'état d'un indicateur
97: ================================================================================
98: Entrée :
99: - pointeur sur la structure processus
100: - numero du drapeau à mettre à 0 (INTEGER*1)
101: --------------------------------------------------------------------------------
102: Sortie : drapeau
103: --------------------------------------------------------------------------------
104: Effets de bord : néant
105: ================================================================================
106: */
107:
108: logical1
109: test_cfsf(struct_processus *s_etat_processus, unsigned char indice_drapeau)
110: {
111: t_8_bits masque;
112:
113: unsigned char indice_bit;
114: unsigned char indice_bloc;
115: unsigned char taille_bloc;
116:
117: indice_drapeau--;
118: taille_bloc = sizeof(t_8_bits) * 8;
119: indice_bloc = indice_drapeau / taille_bloc;
120: indice_bit = indice_drapeau % taille_bloc;
121:
122: masque = ((t_8_bits) 1) << (taille_bloc - indice_bit - 1);
123:
124: return((((*s_etat_processus).drapeaux_etat[indice_bloc] & masque) != 0)
125: ? d_vrai : d_faux);
126: }
127:
128: // vim: ts=4
CVSweb interface <joel.bertrand@systella.fr>