]> git.saurik.com Git - redis.git/commitdiff
Merge pull request #79 from annulen/mac_ppc
authorSalvatore Sanfilippo <antirez@gmail.com>
Tue, 20 Sep 2011 08:58:55 +0000 (01:58 -0700)
committerSalvatore Sanfilippo <antirez@gmail.com>
Tue, 20 Sep 2011 08:58:55 +0000 (01:58 -0700)
Fixed compilation on Mac/PPC

1  2 
src/redis.c

diff --combined src/redis.c
index 2018d13e49158c31206e6681ec58fb88e0038a2c,422ab4b9047b949c9c962ec37c1b6f356a68b8a1..ed3e884169f7a82b4ff2d614bbcb330bba13cf14
@@@ -29,7 -29,6 +29,7 @@@
  
  #include "redis.h"
  #include "slowlog.h"
 +#include "bio.h"
  
  #ifdef HAVE_BACKTRACE
  #include <execinfo.h>
@@@ -576,7 -575,6 +576,7 @@@ int serverCron(struct aeEventLoop *even
       * in objects at every object access, and accuracy is not needed.
       * To access a global var is faster than calling time(NULL) */
      server.unixtime = time(NULL);
 +
      /* We have just 22 bits per object for LRU information.
       * So we use an (eventually wrapping) LRU clock with 10 seconds resolution.
       * 2^22 bits with 10 seconds resoluton is more or less 1.5 years.
           }
      }
  
 +
 +    /* If we postponed an AOF buffer flush, let's try to do it every time the
 +     * cron function is called. */
 +    if (server.aof_flush_postponed_start) flushAppendOnlyFile(0);
 +
      /* Expire a few keys per cycle, only if this is a master.
       * On slaves we wait for DEL operations synthesized by the master
       * in order to guarantee a strict consistency. */
@@@ -740,7 -733,7 +740,7 @@@ void beforeSleep(struct aeEventLoop *ev
      }
  
      /* Write the AOF buffer on disk */
 -    flushAppendOnlyFile();
 +    flushAppendOnlyFile(0);
  }
  
  /* =========================== Server initialization ======================== */
@@@ -827,7 -820,6 +827,7 @@@ void initServerConfig() 
      server.lastfsync = time(NULL);
      server.appendfd = -1;
      server.appendseldb = -1; /* Make sure the first time will not match */
 +    server.aof_flush_postponed_start = 0;
      server.pidfile = zstrdup("/var/run/redis.pid");
      server.dbfilename = zstrdup("dump.rdb");
      server.appendfilename = zstrdup("appendonly.aof");
@@@ -911,8 -903,7 +911,8 @@@ void initServer() 
      if (server.port != 0) {
          server.ipfd = anetTcpServer(server.neterr,server.port,server.bindaddr);
          if (server.ipfd == ANET_ERR) {
 -            redisLog(REDIS_WARNING, "Opening port: %s", server.neterr);
 +            redisLog(REDIS_WARNING, "Opening port %d: %s",
 +                server.port, server.neterr);
              exit(1);
          }
      }
      if (server.cluster_enabled) clusterInit();
      scriptingInit();
      slowlogInit();
 +    bioInit();
      srand(time(NULL)^getpid());
  }
  
@@@ -1032,9 -1022,9 +1032,9 @@@ void call(redisClient *c) 
      slowlogPushEntryIfNeeded(c->argv,c->argc,duration);
      c->cmd->calls++;
  
 -    if (server.appendonly && dirty)
 +    if (server.appendonly && dirty > 0)
          feedAppendOnlyFile(c->cmd,c->db->id,c->argv,c->argc);
 -    if ((dirty || c->cmd->flags & REDIS_CMD_FORCE_REPLICATION) &&
 +    if ((dirty > 0 || c->cmd->flags & REDIS_CMD_FORCE_REPLICATION) &&
          listLength(server.slaves))
          replicationFeedSlaves(server.slaves,c->db->id,c->argv,c->argc);
      if (listLength(server.monitors))
@@@ -1736,7 -1726,6 +1736,7 @@@ void redisAsciiArt(void) 
  int main(int argc, char **argv) {
      long long start;
  
 +    zmalloc_enable_thread_safeness();
      initServerConfig();
      if (argc == 2) {
          if (strcmp(argv[1], "-v") == 0 ||
@@@ -1784,8 -1773,10 +1784,10 @@@ static void *getMcontextEip(ucontext_t 
  #elif defined(__APPLE__) && !defined(MAC_OS_X_VERSION_10_6)
    #if __x86_64__
      return (void*) uc->uc_mcontext->__ss.__rip;
-   #else
+   #elif __i386__
      return (void*) uc->uc_mcontext->__ss.__eip;
+   #else
+     return (void*) uc->uc_mcontext->__ss.__srr0;
    #endif
  #elif defined(__APPLE__) && defined(MAC_OS_X_VERSION_10_6)
    #if defined(_STRUCT_X86_THREAD_STATE64) && !defined(__i386__)