Browse Source

Add a way to know if an IPC component is initialized or not

Yann Weber 4 years ago
parent
commit
5db32eb990
2 changed files with 7 additions and 5 deletions
  1. 5
    3
      include/ipc.h
  2. 2
    2
      src/ipc.c

+ 5
- 3
include/ipc.h View File

43
 
43
 
44
 #define PyFCGI_SEM(i) (PyFCGI_conf.sems[i])
44
 #define PyFCGI_SEM(i) (PyFCGI_conf.sems[i])
45
 
45
 
46
+#define PyFCGI_SEM_OPEN(i) (PyFCGI_conf.sems[i].sem != NULL)
47
+
46
 /**@defgroup IPC_flags IPC component flags
48
 /**@defgroup IPC_flags IPC component flags
47
  * @ingroup IPC
49
  * @ingroup IPC
48
  * @brief For IPC component selection */
50
  * @brief For IPC component selection */
49
 /**@brief Worker state semaphore
51
 /**@brief Worker state semaphore
50
  * @ingroup IPC_flags */
52
  * @ingroup IPC_flags */
51
 #define IPC_WSTATE 2
53
 #define IPC_WSTATE 2
52
-/**@brief Worker state semaphore
54
+/**@brief Request counter semaphore
53
  * @ingroup IPC_flags */
55
  * @ingroup IPC_flags */
54
 #define IPC_WREQS 4
56
 #define IPC_WREQS 4
55
-/**@brief Worker state semaphore
57
+/**@brief Monitor <-> pool semaphore
56
  * @ingroup IPC_flags */
58
  * @ingroup IPC_flags */
57
 #define IPC_SEMST 8
59
 #define IPC_SEMST 8
58
-/**@brief Worker state semaphore
60
+/**@brief Monitor <-> pool SHM flag
59
  * @ingroup IPC_flags */
61
  * @ingroup IPC_flags */
60
 #define IPC_SHMST 16
62
 #define IPC_SHMST 16
61
 
63
 

+ 2
- 2
src/ipc.c View File

107
 	{
107
 	{
108
 		if(flag & semflg[i])
108
 		if(flag & semflg[i])
109
 		{
109
 		{
110
-			continue;
111
-			PyFCGI_conf.context.ipc_flag ^= semflg[i];
112
 			if(sem_close(PyFCGI_SEM(i).sem) < 0)
110
 			if(sem_close(PyFCGI_SEM(i).sem) < 0)
113
 			{
111
 			{
114
 				err = errno;
112
 				err = errno;
118
 					strerror(err));
116
 					strerror(err));
119
 				PyFCGI_SEM(i).sem = NULL;
117
 				PyFCGI_SEM(i).sem = NULL;
120
 			}
118
 			}
119
+			PyFCGI_SEM(i).sem = NULL;
121
 		}
120
 		}
122
 	}
121
 	}
123
 	if(flag & IPC_SHMST)
122
 	if(flag & IPC_SHMST)
149
 					strerror(err));
148
 					strerror(err));
150
 				res = -1;
149
 				res = -1;
151
 			}
150
 			}
151
+			PyFCGI_SEM(i).sem = NULL;
152
 		}
152
 		}
153
 	}
153
 	}
154
 	if(flag & IPC_SHMST)
154
 	if(flag & IPC_SHMST)

Loading…
Cancel
Save