wangzhengquan
2020-07-28 66e36f251a61c8b6722a90ecfb195e28c87dd99a
src/util/sem_util.c
@@ -14,12 +14,12 @@
    union semun arg;
    struct sembuf sop;
    logger.info("%ld: created semaphore\n", (long)getpid());
    //logger.info("%ld: created semaphore\n", (long)getpid());
    arg.val = 0; /* So initialize it to 0 */
    if (semctl(semid, 0, SETVAL, arg) == -1)
      err_exit(errno, "semctl 1");
    logger.info("%ld: initialized semaphore\n", (long)getpid());
    //logger.info("%ld: initialized semaphore\n", (long)getpid());
    /* Perform a "no-op" semaphore operation - changes sem_otime
       so other processes can see we've initialized the set. */
@@ -29,7 +29,7 @@
    sop.sem_flg = 0;
    if (semop(semid, &sop, 1) == -1)
      err_exit(errno, "semop");
    logger.info("%ld: completed dummy semop()\n", (long)getpid());
    //logger.info("%ld: completed dummy semop()\n", (long)getpid());
  } else { /* We didn't create the semaphore set */
@@ -46,12 +46,12 @@
      if (semid == -1)
        err_exit(errno, "semget 2");
      logger.info("%ld: got semaphore key\n", (long)getpid());
     // logger.info("%ld: got semaphore key\n", (long)getpid());
      /* Wait until another process has called semop() */
      arg.buf = &ds;
      for (j = 0; j < MAX_TRIES; j++) {
        logger.info("Try %d\n", j);
        //logger.info("Try %d\n", j);
        if (semctl(semid, 0, IPC_STAT, arg) == -1)
          err_exit(errno, "semctl 2");
@@ -72,6 +72,7 @@
/* Reserve semaphore - decrement it by 1 */
int SemUtil::dec(int semId) {
logger.debug("%d: SemUtil::dec\n", semId);
  struct sembuf sops;
  sops.sem_num = 0;
@@ -103,7 +104,7 @@
  return 0;
}
int SemUtil::dec_timeout(int semId, struct timespec *timeout) {
int SemUtil::dec_timeout(const int semId, const struct timespec *timeout) {
  struct sembuf sops;
  sops.sem_num = 0;
@@ -121,6 +122,7 @@
/* Release semaphore - increment it by 1 */
int SemUtil::inc(int semId) {
logger.debug("%d: SemUtil::inc\n", semId);
  struct sembuf sops;
  sops.sem_num = 0;