@@ -14,10 +14,9 @@ typedef sem_t *SEM_HANDLE;
1414// Static datas for each process.
1515CountersWorkaround shm_semlock_counters = {
1616 .state_this = THIS_NOT_OPEN ,
17- .name_shm = "/shm_gh125828" ,
17+ .name_shm = SHAREDMEM_NAME ,
1818 .handle_shm = (MEMORY_HANDLE )0 ,
19- .create_shm = 0 ,
20- .name_shm_lock = "/mp_gh125828" ,
19+ .name_shm_lock = GLOCK_NAME ,
2120 .handle_shm_lock = (SEM_HANDLE )0 ,
2221 .header = (HeaderObject * )NULL ,
2322 .counters = (CounterObject * )NULL ,
@@ -27,10 +26,9 @@ HeaderObject *header = NULL;
2726CounterObject * counter = NULL ;
2827
2928static char * show_counter (char * p , CounterObject * counter ) {
30- sprintf (p , "p:%p, n:%s, v:%d, u:%d, t:%s" , counter ,
29+ sprintf (p , "p:%p, n:%s, v:%d, t:%s" , counter ,
3130 counter -> sem_name ,
3231 counter -> internal_value ,
33- counter -> unlink_done ,
3432 ctime (& counter -> ctimestamp ));
3533 return p ;
3634}
@@ -73,7 +71,7 @@ int main(int argc, char *argv[]) {
7371 puts ("+++++++++" );
7472 if (argc > 1 ) {
7573 sscanf (argv [1 ], "%d" , & repeat );
76- if (argc >= 2 ) {
74+ if (argc > 2 ) {
7775 puts (argv [2 ]);
7876 sscanf (argv [2 ], "%lu" , & udelay );
7977 }
@@ -88,13 +86,17 @@ int main(int argc, char *argv[]) {
8886 if (shm_semlock_counters .state_this == THIS_AVAILABLE ) {
8987 memset (& save , '\0' , sizeof (save ));
9088 do {
89+ //ACQUIRE_SHM_LOCK;
90+ acquire_lock (shm_semlock_counters .handle_shm_lock );
9191 if (memcmp (& save , shm_semlock_counters .header , sizeof (HeaderObject )) ) {
9292 time_t timestamp = time (NULL );
9393 puts (ctime (& timestamp ));
9494 dump_shm_semlock_counters ();
9595 memcpy (& save , shm_semlock_counters .header , sizeof (HeaderObject ));
9696 puts ("==========" );
9797 }
98+ //RELEASE_SHM_LOCK;
99+ sem_post (shm_semlock_counters .handle_shm_lock );
98100 usleep (udelay );
99101 } while (repeat -- );
100102 }
0 commit comments