Diff for /freem/src/locktab.c between versions 1.6 and 1.7

version 1.6, 2025/04/13 04:22:43 version 1.7, 2025/05/01 21:02:31
Line 24 Line 24
  *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.   *   along with FreeM.  If not, see <https://www.gnu.org/licenses/>.
  *   *
  *   $Log$   *   $Log$
    *   Revision 1.7  2025/05/01 21:02:31  snw
    *   Documentation updates
    *
  *   Revision 1.6  2025/04/13 04:22:43  snw   *   Revision 1.6  2025/04/13 04:22:43  snw
  *   Fix snprintf calls   *   Fix snprintf calls
  *   *
Line 49 Line 52
 #include "shmmgr.h"  #include "shmmgr.h"
 #include "mref.h"  #include "mref.h"
 #include "transact.h"  #include "transact.h"
   #include "log.h"
   
 #if !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__OS2__)  #if !defined(__OpenBSD__) && !defined(__APPLE__) && !defined(__OS2__)
 union semun {  union semun {
Line 110  short locktab_get_sem(void) Line 114  short locktab_get_sem(void)
         if (semop (semid_locktab, &s, 1) != -1) {          if (semop (semid_locktab, &s, 1) != -1) {
             return TRUE;              return TRUE;
         }          }
           printf ("jibjaw\r\n");
         sleep (1);          sleep (1);
   
     }      }
Line 237  void locktab_increment(char *key, long l Line 241  void locktab_increment(char *key, long l
                                   
             }              }
             else {              else {
                   int sigint_ct = 0;
                   
                 for (;;) {                  for (;;) {
                                           
                     if (locktab_insert (key) != NULL) {                      if (locktab_insert (key) != NULL) {
Line 244  void locktab_increment(char *key, long l Line 250  void locktab_increment(char *key, long l
                         return;                          return;
                     }                      }
                     else {                      else {
                           if (merr () == INRPT) {
                               sigint_ct++;
   
                               if (sigint_ct == 1) {
                                   printf ("\r\nlocktab_insert:  got Ctrl-C in blocking LOCK; Ctrl-C again to force the process to halt\r\n");
                                   merr_clear ();
                               }
                               else {
                                   printf ("\r\n");
                                   logprintf (FM_LOG_FATAL, "locktab_insert:  blocking LOCK was interrupted; forcing halt");
                               }
                           }
                         sleep (1);                          sleep (1);
                     }                      }
                                   
Line 409  void locktab_decrement(char *key, long l Line 427  void locktab_decrement(char *key, long l
   
 void locktab_unlock_all(void)  void locktab_unlock_all(void)
 {  {
       locktab_unlock_all_by_pid (pid);
   }
   
   void locktab_unlock_all_by_pid(const pid_t target_pid)
   {
     locktab_ent_t *lck;      locktab_ent_t *lck;
       int remove_ct;
   
       remove_ct = 0;
       if (target_pid != pid) {
           logprintf (FM_LOG_INFO, "locktab_unlock_all_by_pid:  removing all locks for pid %ld", target_pid);
       }
   
           
     for (lck = shm_config->hdr->locktab_head; lck != NULL; lck = lck->next) {      for (lck = shm_config->hdr->locktab_head; lck != NULL; lck = lck->next) {
   
         if (lck->owner_job == pid) {          if (lck->owner_job == target_pid) {
               remove_ct++;
               
             if (tp_level > lck->tp_level) {              if (tp_level > lck->tp_level) {
                 merr_raise (M41);                  merr_raise (M41);
                 return;                  return;
Line 428  void locktab_unlock_all(void) Line 459  void locktab_unlock_all(void)
                           
         }          }
   
     }             }
   
       if (target_pid != pid) {
           logprintf (FM_LOG_INFO, "locktab_unlock_all_by_pid:  removed %ld lock(s) for pid %ld", remove_ct, target_pid);
       }
   
           
 }  }
   

Removed from v.1.6  
changed lines
  Added in v.1.7


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>