]> Zhao Yanbai Git Server - minix.git/commitdiff
RS - fixed timeouts
authorTomas Hruby <tom@minix3.org>
Fri, 7 May 2010 18:12:16 +0000 (18:12 +0000)
committerTomas Hruby <tom@minix3.org>
Fri, 7 May 2010 18:12:16 +0000 (18:12 +0000)
- rs does not assume hz==60

- rs adjusts its timeout ticks by the system clock frequency

- drivers have time to reply if hz is set too high (e.g. 1000+) for
  instance when debugging

servers/rs/const.h
servers/rs/glo.h
servers/rs/main.c

index 85e4a980cc5547b064248992172b5e4a833d1dd1..cabac55cbd49f52925ce70d10685b1b2ae26b6ad 100644 (file)
@@ -38,8 +38,8 @@
 #define SF_USE_REPL     0x020    /* set when process has a replica */
 
 /* Constants determining RS period and binary exponential backoff. */
-#define RS_INIT_T       600                     /* allow T ticks for init */
-#define RS_DELTA_T       60                     /* check every T ticks */
+#define RS_INIT_T      (system_hz * 10)        /* allow T ticks for init */
+#define RS_DELTA_T     (system_hz)             /* check every T ticks */
 #define BACKOFF_BITS    (sizeof(long)*8)        /* bits in backoff field */
 #define MAX_BACKOFF      30                     /* max backoff in RS_DELTA_T */
 
index a6b897a79bcf0c77e27b5418cefa3c226486bf1d..4998e8553143b38fd46b305262eee1db400627ae 100644 (file)
@@ -52,5 +52,7 @@ EXTERN long rs_verbose;
 /* Set when we are shutting down. */
 EXTERN int shutting_down;
 
+EXTERN unsigned system_hz;
+
 #endif /* RS_GLO_H */
 
index f9a3d1bc3ccf45ade91457097d0f5370d859898d..58f5af3beb2e5f7f2bb02e2188d427c670bdb801 100644 (file)
@@ -169,6 +169,9 @@ PRIVATE int sef_cb_init_fresh(int type, sef_init_info_t *info)
   /* See if we run in verbose mode. */
   env_parse("rs_verbose", "d", 0, &rs_verbose, 0, 1);
 
+  if ((s = sys_getinfo(GET_HZ, &system_hz, sizeof(system_hz), 0, 0)) != OK)
+         panic("Cannot get system timer frequency\n");
+
   /* Initialize the global init descriptor. */
   rinit.rproctab_gid = cpf_grant_direct(ANY, (vir_bytes) rprocpub,
       sizeof(rprocpub), CPF_READ);