Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 22 Oct 1996 18:59:37 -0700
From:      Julian Elischer <julian@whistle.com>
To:        current@freebsd.org
Subject:   [Fwd: another patch for comment]
Message-ID:  <326D7C09.794BDF32@whistle.com>

next in thread | raw e-mail | index | archive | help
This is a multi-part message in MIME format.

--------------1CFBAE3959E2B60015FB7483
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

AARG!
left out the patch!

here it is..

--------------1CFBAE3959E2B60015FB7483
Content-Type: message/rfc822
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

Message-ID: <326D7BB3.446B9B3D@whistle.com>
Date: Tue, 22 Oct 1996 18:58:11 -0700
From: Julian Elischer <julian@whistle.com>
Organization: Whistle Communications
X-Mailer: Mozilla 3.0b6 (X11; I; FreeBSD 2.2-CURRENT i386)
MIME-Version: 1.0
To: current@freebsd.org
Subject: another patch for comment
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

here's another patch I'd like to add.

hopefully I can also eventually add a '/stand/selftest'
as well. Of course at this stage we can only test our own hardware etc.
but I'd like to add a version that can do basic sanity checks
on regular PC hardware as well.

It's such a small change that I'd like to add it to the generic 
sources rather than keep it proprietary.

julian

--------------1CFBAE3959E2B60015FB7483
Content-Type: text/plain; charset=us-ascii; name="init.diff"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="init.diff"

? 0
Index: init_main.c
===================================================================
RCS file: /cvs/freebsd/src/sys/kern/init_main.c,v
retrieving revision 1.49
diff -c -r1.49 init_main.c
*** 1.49	1996/09/23 04:37:54
--- init_main.c	1996/10/23 01:31:29
***************
*** 533,539 ****
   * List of paths to try when searching for "init".
   */
  static char *initpaths[] = {
! 	"/sbin/init",
  	"/sbin/oinit",
  	"/sbin/init.bak",
  	"/stand/sysinstall",
--- 533,540 ----
   * List of paths to try when searching for "init".
   */
  static char *initpaths[] = {
! 	"/stand/selftest",	/* not default, use with RB_SELFTEST */
! 	"/sbin/init",		/* Default action */
  	"/sbin/oinit",
  	"/sbin/init.bak",
  	"/stand/sysinstall",
***************
*** 574,580 ****
  	p->p_vmspace->vm_maxsaddr = (caddr_t)addr;
  	p->p_vmspace->vm_ssize = 1;
  
! 	for (pathp = &initpaths[0]; (path = *pathp) != NULL; pathp++) {
  		/*
  		 * Move out the boot flag argument.
  		 */
--- 575,582 ----
  	p->p_vmspace->vm_maxsaddr = (caddr_t)addr;
  	p->p_vmspace->vm_ssize = 1;
  
! 	for (pathp = ((boothowto & RB_SELFTEST)? &initpaths[0] : &initpaths[1]);
! 			(path = *pathp) != NULL; pathp++) {
  		/*
  		 * Move out the boot flag argument.
  		 */
Index: kern_exit.c
===================================================================
RCS file: /cvs/freebsd/src/sys/kern/kern_exit.c,v
retrieving revision 1.39
diff -c -r1.39 kern_exit.c
*** 1.39	1996/09/13 09:17:03
--- kern_exit.c	1996/10/23 01:31:29
***************
*** 196,202 ****
  			 * drain controlling terminal
  			 * and revoke access to controlling terminal.
  			 */
! 			if (sp->s_ttyp->t_session == sp) {
  				if (sp->s_ttyp->t_pgrp)
  					pgsignal(sp->s_ttyp->t_pgrp, SIGHUP, 1);
  				(void) ttywait(sp->s_ttyp);
--- 196,202 ----
  			 * drain controlling terminal
  			 * and revoke access to controlling terminal.
  			 */
! 			if (sp->s_ttyp && (sp->s_ttyp->t_session == sp)) {
  				if (sp->s_ttyp->t_pgrp)
  					pgsignal(sp->s_ttyp->t_pgrp, SIGHUP, 1);
  				(void) ttywait(sp->s_ttyp);
Index: kern_time.c
===================================================================
RCS file: /cvs/freebsd/src/sys/kern/kern_time.c,v
retrieving revision 1.17
diff -c -r1.17 kern_time.c
*** 1.17	1996/07/12 07:55:35
--- kern_time.c	1996/10/23 01:31:29
***************
*** 56,61 ****
--- 56,62 ----
   */
  
  static void	timevalfix __P((struct timeval *));
+ static void    recalc_realtimer(struct timeval);
  
  #ifndef _SYS_SYSPROTO_H_
  struct gettimeofday_args {
***************
*** 114,120 ****
  	    (error = copyin((caddr_t)uap->tzp, (caddr_t)&atz, sizeof(atz))))
  		return (error);
  	if (uap->tv) {
- 		/* WHAT DO WE DO ABOUT PENDING REAL-TIME TIMEOUTS??? */
  		s = splclock();
  		/*
  		 * Calculate delta directly to minimize clock interrupt
--- 115,120 ----
***************
*** 136,141 ****
--- 136,142 ----
  		timevalfix(&delta);
  		timevaladd(&boottime, &delta);
  		timevaladd(&runtime, &delta);
+ 		recalc_realtimer(delta);
  		LEASE_UPDATETIME(delta.tv_sec);
  		splx(s);
  		resettodr();
***************
*** 144,149 ****
--- 145,164 ----
  		tz = atz;
  	return (0);
  }
+ 
+ 
+ static void     
+ recalc_realtimer(struct timeval delta)
+ {
+ 	struct proc *p;
+                 
+ 	for (p = allproc.lh_first; p != 0; p = p->p_list.le_next) {
+ 		if (timerisset(&p->p_realtimer.it_value)) {
+ 			timevaladd(&p->p_realtimer.it_value, &delta);
+ 			timevalfix(&p->p_realtimer.it_value);
+ 		}       
+ 	}
+ }      
  
  extern	int tickadj;			/* "standard" clock skew, us./tick */
  int	tickdelta;			/* current clock skew, us. per tick */

--------------1CFBAE3959E2B60015FB7483--




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?326D7C09.794BDF32>