]> Zhao Yanbai Git Server - minix.git/commitdiff
. no more HZ
authorBen Gras <ben@minix3.org>
Thu, 11 Dec 2008 14:49:17 +0000 (14:49 +0000)
committerBen Gras <ben@minix3.org>
Thu, 11 Dec 2008 14:49:17 +0000 (14:49 +0000)
 . let user processes query HZ
 . no more custom panic()

servers/pm/glo.h
servers/pm/main.c
servers/pm/misc.c
servers/pm/signal.c
servers/pm/time.c
servers/pm/utility.c

index 6485c1679a217cf28cf0d20c3ec42eb25d379310..b9adae444d94ef68ae2c9bcba28f707c3ddc4a47 100644 (file)
@@ -26,6 +26,7 @@ EXTERN sigset_t ign_sset;     /* which signals are by default ignored */
 EXTERN time_t boottime;                /* time when the system was booted (for
                                 * reporting to FS)
                                 */
+EXTERN u32_t system_hz;                /* System clock frequency. */
 EXTERN int report_reboot;      /* During reboot to report to FS that we are 
                                 * rebooting.
                                 */
index 8f603a7b9a60793bf15443caad6bb54611c3493f..208dca355a11d615c3736d51b803d6c1b3981402 100644 (file)
@@ -342,6 +342,8 @@ PRIVATE void pm_init()
 #endif  
 
  if(f > 0) printf("PM: failed to register %d processes with DS.\n", f);
+
+ system_hz = sys_hz();
 }
 
 /*===========================================================================*
index 4e380cc584efe56c94968ed63c8a998defd56a0f..77d4ff23931d5eb57cd917f8ab500e78f2b33f7e 100644 (file)
@@ -72,9 +72,6 @@ PUBLIC int do_allocmem()
        r = vm_allocmem(m_in.memsize, &retmembase);
        if(r == OK)
                mp->mp_reply.membase = retmembase;
-#if 0
-       printf("PM: do_allocmem: %d\n", r);
-#endif
        return r;
 }
 
@@ -282,6 +279,10 @@ PUBLIC int do_getsysinfo_up()
         src_addr = (vir_bytes) &loadinfo;
         real_len = sizeof(struct loadinfo);
         break;
+  case SIU_SYSTEMHZ:
+        src_addr = (vir_bytes) &system_hz;
+        real_len = sizeof(system_hz);
+       break;
   default:
        return(EINVAL);
   }
index db3f288ad703c8ff2e4718d67bd5fed4ccf5f85b..23c2cb4d1be38aa2c8dd2472c6460570972fd7e6 100644 (file)
@@ -325,7 +325,7 @@ int sec;                    /* how many seconds delay before the signal */
        if ( (s=getuptime(&uptime)) != OK) 
                panic(__FILE__,"set_alarm couldn't get uptime", s);
        exptime = *tmr_exp_time(&mproc[proc_nr_n].mp_timer);
-       remaining = (int) ((exptime - uptime + (HZ-1))/HZ);
+       remaining = (int) ((exptime - uptime + (system_hz-1))/system_hz);
        if (remaining < 0) remaining = 0;       
   } else {
        remaining = 0; 
@@ -347,8 +347,8 @@ int sec;                    /* how many seconds delay before the signal */
    * this be declared properly without combinatorial explosion of message
    * types?
    */
-  ticks = (clock_t) (HZ * (unsigned long) (unsigned) sec);
-  if ( (unsigned long) ticks / HZ != (unsigned) sec)
+  ticks = (clock_t) (system_hz * (unsigned long) (unsigned) sec);
+  if ( (unsigned long) ticks / system_hz != (unsigned) sec)
        ticks = LONG_MAX;       /* eternity (really TMR_NEVER) */
 
   if (ticks != 0) {
index fe59cd6761d019fc5b9d99b55c94713a7fae6fef..2bbb28406f1bdb19313d33cef82d979526f81c22 100644 (file)
@@ -29,8 +29,8 @@ PUBLIC int do_time()
   if ( (s=getuptime(&uptime)) != OK) 
        panic(__FILE__,"do_time couldn't get uptime", s);
 
-  mp->mp_reply.reply_time = (time_t) (boottime + (uptime/HZ));
-  mp->mp_reply.reply_utime = (uptime%HZ)*1000000/HZ;
+  mp->mp_reply.reply_time = (time_t) (boottime + (uptime/system_hz));
+  mp->mp_reply.reply_utime = (uptime%system_hz)*1000000/system_hz;
   return(OK);
 }
 
@@ -51,7 +51,7 @@ PUBLIC int do_stime()
   }
   if ( (s=getuptime(&uptime)) != OK) 
       panic(__FILE__,"do_stime couldn't get uptime", s);
-  boottime = (long) m_in.stime - (uptime/HZ);
+  boottime = (long) m_in.stime - (uptime/system_hz);
 
   s= sys_stime(boottime);              /* Tell kernel about boottime */
   if (s != OK)
index 405c7fdc86b93972042fe1afd5736373055f01dc..ef751582d630eae68a93edf7b112f47d8cbdb32e 100644 (file)
@@ -63,27 +63,6 @@ PUBLIC int no_sys()
   return(ENOSYS);
 }
 
-/*===========================================================================*
- *                             panic                                        *
- *===========================================================================*/
-PUBLIC void panic(who, mess, num)
-char *who;                     /* who caused the panic */
-char *mess;                    /* panic message string */
-int num;                       /* number to go with it */
-{
-/* An unrecoverable error has occurred.  Panics are caused when an internal
- * inconsistency is detected, e.g., a programming error or illegal value of a
- * defined constant. The process manager decides to exit.
- */
-  printf("PM panic (%s): %s", who, mess);
-  if (num != NO_NUM) printf(": %d",num);
-  printf("\n");
-   
-  /* Exit PM. */
-  sys_exit(SELF);
-}
-
-
 /*===========================================================================*
  *                             find_param                                   *
  *===========================================================================*/