Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 20 Mar 2004 22:14:35 -0800 (PST)
From:      Juli Mallett <jmallett@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 49442 for review
Message-ID:  <200403210614.i2L6EZdV083171@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=49442

Change 49442 by jmallett@jmallett_oingo on 2004/03/20 22:14:04

	Critical section madness.

Affected files ...

.. //depot/projects/mips/sys/mips/include/critical.h#4 edit
.. //depot/projects/mips/sys/mips/include/proc.h#4 edit
.. //depot/projects/mips/sys/mips/mips/critical.c#2 edit

Differences ...

==== //depot/projects/mips/sys/mips/include/critical.h#4 (text+ko) ====

@@ -1,6 +1,28 @@
 /*-
- * Copyright (c) 2002 Matthew Dillon.  This code is distributed under
- * the BSD copyright, /usr/src/COPYRIGHT.
+ * Copyright (c) 2002 Matthew Dillon.  All Rights Reserved.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 4. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
+ * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+ * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+ * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  * This file contains prototypes and high-level inlines related to
  * machine-level critical function support:
@@ -8,23 +30,23 @@
  *	cpu_critical_enter()		- inlined
  *	cpu_critical_exit()		- inlined
  *	cpu_critical_fork_exit()	- prototyped
- *	cpu_thread_link()		- prototyped
  *	related support functions residing
  *	in <arch>/<arch>/critical.c	- prototyped
  *
- * $FreeBSD$
+ * $P4: //depot/projects/mips/sys/mips/include/critical.h#4 $
  */
 
 #ifndef _MACHINE_CRITICAL_H_
 #define	_MACHINE_CRITICAL_H_
 
+#include <machine/cpufunc.h>
+
 __BEGIN_DECLS
 
 /*
  * Prototypes - see <arch>/<arch>/critical.c
  */
 void cpu_critical_fork_exit(void);
-void cpu_thread_link(struct thread *td);
 
 #ifdef	__GNUC__
 
@@ -34,11 +56,13 @@
  *	This routine is called from critical_enter() on the 0->1 transition
  *	of td_critnest, prior to it being incremented to 1.
  */
-
 static __inline void
 cpu_critical_enter(void)
 {
-	struct thread	*td __unused = curthread;
+	struct thread *td;
+
+	td = curthread;
+	td->td_md.md_savecrit = intr_disable();
 }
 
 /*
@@ -51,14 +75,16 @@
 static __inline void
 cpu_critical_exit(void)
 {
-	struct thread *td __unused = curthread;
+	struct thread *td;
+
+	td = curthread;
+	intr_restore(td->td_md.md_savecrit);
 }
 
-
 #else /* !__GNUC__ */
 
-void cpu_critical_enter(void)
-void cpu_critical_exit(void)
+void cpu_critical_enter(void);
+void cpu_critical_exit(void);
 
 #endif	/* __GNUC__ */
 

==== //depot/projects/mips/sys/mips/include/proc.h#4 (text+ko) ====

@@ -33,6 +33,7 @@
 };
 
 struct mdthread {
+	__register_t md_savecrit;	/* critical section saved SR */
 	void	*md_regs;		/* registers on current frame */
 	int	md_flags;		/* machine-dependent flags */
 };

==== //depot/projects/mips/sys/mips/mips/critical.c#2 (text+ko) ====

@@ -1,23 +1,35 @@
 /*-
- * Copyright (c) 2001 Matthew Dillon.  This code is distributed under
- * the BSD copyright, /usr/src/COPYRIGHT.
+ * Copyright (c) 2004 Juli Mallett <jmallett@FreeBSD.org>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
  *
- * $FreeBSD: src/sys/sparc64/sparc64/critical.c,v 1.6 2002/06/23 14:38:41 mux Exp $
+ * $P4: //depot/projects/mips/sys/mips/mips/critical.c#2 $
  */
 
 #include <sys/param.h>
 #include <sys/systm.h>
-#include <sys/pcpu.h>
-#include <sys/eventhandler.h>	/* XX */
-#include <sys/ktr.h>		/* XX */
-#include <sys/signalvar.h>
-#include <sys/sysproto.h>	/* XX */
 #include <sys/kernel.h>
 #include <sys/proc.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-#include <sys/sysctl.h>
-#include <sys/ucontext.h>
 #include <machine/critical.h>
 
 /*
@@ -26,12 +38,5 @@
 void
 cpu_critical_fork_exit(void)
 {
-}
-
-/*
- * cpu_thread_link() - thread linkup, initialize machine-dependant fields
- */
-void
-cpu_thread_link(struct thread *td)
-{
+	panic("%s", __func__);
 }



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200403210614.i2L6EZdV083171>