PERFORCE change 123727 for review
Xin LI
delphij at FreeBSD.org
Thu Jul 19 12:06:05 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=123727
Change 123727 by delphij at delphij_odin on 2007/07/19 12:05:04
IFC.
Affected files ...
.. //depot/projects/delphij_fork/contrib/diff/FREEBSD-Xlist#2 integrate
.. //depot/projects/delphij_fork/contrib/diff/Makefile.am#2 delete
.. //depot/projects/delphij_fork/contrib/diff/bootstrap#2 delete
.. //depot/projects/delphij_fork/contrib/diff/doc/Makefile.am#2 delete
.. //depot/projects/delphij_fork/contrib/diff/doc/diagmeet.note#2 delete
.. //depot/projects/delphij_fork/contrib/diff/exgettext#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/Makefile.am#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/alloca.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/alloca_.h#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/dirname.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/fnmatch.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/fnmatch_.h#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/fnmatch_loop.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/getopt.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/getopt1.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/getopt_int.h#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/gettimeofday.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/imaxtostr.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/inttostr.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/malloc.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/mkstemp.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/offtostr.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/realloc.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/regex.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/regex.h#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/setmode.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/stdbool_.h#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/strcasecmp.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/stripslash.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/strncasecmp.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/strtol.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/strtoll.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/strtoul.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/strtoull.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/tempname.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/time_r.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/time_r.h#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/umaxtostr.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/waitpid.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/xstrdup.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/xstrtol.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/xstrtoul.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/lib/xstrtoumax.c#2 delete
.. //depot/projects/delphij_fork/contrib/diff/man/Makefile.am#2 delete
.. //depot/projects/delphij_fork/contrib/diff/src/Makefile.am#2 delete
.. //depot/projects/delphij_fork/share/man/man9/module.9#2 integrate
.. //depot/projects/delphij_fork/sys/fs/tmpfs/tmpfs_vnops.c#3 integrate
.. //depot/projects/delphij_fork/sys/kern/kern_mutex.c#2 integrate
.. //depot/projects/delphij_fork/sys/kern/kern_sig.c#2 integrate
.. //depot/projects/delphij_fork/sys/kern/kern_switch.c#2 integrate
.. //depot/projects/delphij_fork/sys/kern/sched_4bsd.c#2 integrate
.. //depot/projects/delphij_fork/sys/netinet6/in6.h#3 integrate
.. //depot/projects/delphij_fork/sys/netipsec/ipsec_input.c#2 integrate
.. //depot/projects/delphij_fork/sys/netipsec/ipsec_output.c#2 integrate
.. //depot/projects/delphij_fork/sys/netipsec/xform_ipip.c#2 integrate
.. //depot/projects/delphij_fork/sys/sparc64/sparc64/pmap.c#2 integrate
.. //depot/projects/delphij_fork/sys/sys/mutex.h#2 integrate
.. //depot/projects/delphij_fork/tools/build/options/WITHOUT_TOOLCHAIN#2 integrate
.. //depot/projects/delphij_fork/tools/regression/fstest/fstest.c#2 integrate
.. //depot/projects/delphij_fork/tools/regression/fstest/tests/open/16.t#2 integrate
.. //depot/projects/delphij_fork/tools/regression/fstest/tests/open/18.t#2 integrate
Differences ...
==== //depot/projects/delphij_fork/contrib/diff/FREEBSD-Xlist#2 (text+ko) ====
@@ -1,17 +1,61 @@
-# $FreeBSD: src/contrib/diff/FREEBSD-Xlist,v 1.1 2007/06/15 07:28:00 delphij Exp $
+# $FreeBSD: src/contrib/diff/FREEBSD-Xlist,v 1.2 2007/07/19 06:57:44 delphij Exp $
INSTALL
+Makefile.am
+Makefile.in
+aclocal.m4
+bootstrap
+config.hin
config/
+configure
+configure.ac
+doc/Makefile.am
+doc/Makefile.in
+doc/diagmeet.note
+exgettext
+lib/Makefile.am
+lib/Makefile.in
+lib/alloca.c
+lib/alloca_.h
+lib/dirname.c
+lib/fnmatch.c
+lib/fnmatch_.h
+lib/fnmatch_loop.c
+lib/getopt.c
+lib/getopt1.c
+lib/getopt_int.h
+lib/gettimeofday.c
+lib/imaxtostr.c
+lib/inttostr.c
+lib/malloc.c
+lib/mkstemp.c
+lib/offtostr.c
+lib/posix/Makefile.in
+lib/realloc.c
+lib/regex.c
+lib/regex.h
+lib/setmode.c
+lib/stdbool_.h
+lib/strcasecmp.c
+lib/stripslash.c
+lib/strncasecmp.c
+lib/strtol.c
+lib/strtoll.c
+lib/strtoul.c
+lib/strtoull.c
+lib/tempname.c
+lib/time_r.c
+lib/time_r.h
+lib/umaxtostr.c
+lib/waitpid.c
+lib/xstrdup.c
+lib/xstrtol.c
+lib/xstrtoul.c
+lib/xstrtoumax.c
m4/
+man/Makefile.am
+man/Makefile.in
ms/
po/
+src/Makefile.am
src/Makefile.in
-lib/posix/Makefile.in
-lib/Makefile.in
-doc/Makefile.in
-man/Makefile.in
-Makefile.in
-aclocal.m4
-config.hin
-configure
-configure.ac
==== //depot/projects/delphij_fork/share/man/man9/module.9#2 (text+ko) ====
@@ -26,9 +26,9 @@
.\" (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/share/man/man9/module.9,v 1.10 2005/06/28 20:15:18 hmp Exp $
+.\" $FreeBSD: src/share/man/man9/module.9,v 1.11 2007/07/19 11:22:34 flz Exp $
.\"
-.Dd March 1, 2001
+.Dd July 19, 2007
.Dt MODULE 9
.Os
.Sh NAME
@@ -85,7 +85,7 @@
.Pp
The module should return
.Er EOPNOTSUPP
-for unrecognized values of
+for unsupported and unrecognized values of
.Fa what .
.Sh EXAMPLES
.Bd -literal
==== //depot/projects/delphij_fork/sys/fs/tmpfs/tmpfs_vnops.c#3 (text+ko) ====
@@ -41,7 +41,7 @@
* tmpfs vnode interface.
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/fs/tmpfs/tmpfs_vnops.c,v 1.7 2007/07/08 15:56:12 delphij Exp $");
+__FBSDID("$FreeBSD: src/sys/fs/tmpfs/tmpfs_vnops.c,v 1.8 2007/07/19 03:34:50 delphij Exp $");
#include <sys/param.h>
#include <sys/fcntl.h>
@@ -440,72 +440,80 @@
}
/* --------------------------------------------------------------------- */
+
static int
-tmpfs_uio_xfer(struct tmpfs_mount *tmp, struct tmpfs_node *node,
- struct uio *uio, vm_object_t uobj)
+tmpfs_mappedread(vm_object_t vobj, vm_object_t tobj, size_t len, struct uio *uio)
{
- struct sf_buf *sf;
- vm_pindex_t idx;
- vm_offset_t d;
- vm_page_t m;
- size_t len;
- int error = 0;
- int behind = 0, ahead = 0;
+ vm_pindex_t idx;
+ vm_page_t m;
+ struct sf_buf *sf;
+ off_t offset, addr;
+ size_t tlen;
+ caddr_t va;
+ int error;
- /* uobj - locked by caller */
+ addr = uio->uio_offset;
+ idx = OFF_TO_IDX(addr);
+ offset = addr & PAGE_MASK;
+ tlen = MIN(PAGE_SIZE - offset, len);
- VM_OBJECT_LOCK(uobj);
- vm_object_pip_add(uobj, 1);
- while (error == 0 && uio->uio_resid > 0) {
- if (node->tn_size <= uio->uio_offset)
- break;
+ if ((vobj == NULL) || (vobj->resident_page_count == 0))
+ goto nocache;
- len = MIN(node->tn_size - uio->uio_offset, uio->uio_resid);
- if (len == 0)
- break;
-
- idx = OFF_TO_IDX(uio->uio_offset);
- d = uio->uio_offset - IDX_TO_OFF(idx);
- len = MIN(len, (PAGE_SIZE - d));
- m = vm_page_grab(uobj, idx, VM_ALLOC_WIRED | VM_ALLOC_ZERO |
- VM_ALLOC_NORMAL | VM_ALLOC_RETRY);
- if (m->valid != VM_PAGE_BITS_ALL){
- if (vm_pager_has_page(uobj, idx, &behind, &ahead)){
- error = vm_pager_get_pages(uobj, &m, 1, 0);
- if (error == VM_PAGER_ERROR){
- printf("vm_pager_get_pages error\n");
- goto out;
- }
-#ifdef DIAGNOSTIC
- /* XXX */
- printf("tmpfs gets page from pager\n");
-#endif
- } else {
- vm_page_zero_invalid(m, TRUE);
- }
- }
- VM_OBJECT_UNLOCK(uobj);
+ VM_OBJECT_LOCK(vobj);
+lookupvpg:
+ if (((m = vm_page_lookup(vobj, idx)) != NULL) &&
+ vm_page_is_valid(m, offset, tlen)) {
+ if (vm_page_sleep_if_busy(m, FALSE, "tmfsmr"))
+ goto lookupvpg;
+ vm_page_busy(m);
+ VM_OBJECT_UNLOCK(vobj);
sched_pin();
sf = sf_buf_alloc(m, SFB_CPUPRIVATE);
- error = uiomove((void *)(sf_buf_kva(sf) + d), len, uio);
+ va = (caddr_t)sf_buf_kva(sf);
+ error = uiomove(va + offset, tlen, uio);
sf_buf_free(sf);
sched_unpin();
- VM_OBJECT_LOCK(uobj);
- vm_page_lock_queues();
- if (error == 0 && uio->uio_rw == UIO_WRITE) {
- vm_page_set_validclean(m, d, len);
+ VM_OBJECT_LOCK(vobj);
+ vm_page_wakeup(m);
+ VM_OBJECT_UNLOCK(vobj);
+ return (error);
+ }
+ VM_OBJECT_UNLOCK(vobj);
+nocache:
+ VM_OBJECT_LOCK(tobj);
+ vm_object_pip_add(tobj, 1);
+ m = vm_page_grab(tobj, idx, VM_ALLOC_WIRED |
+ VM_ALLOC_ZERO | VM_ALLOC_NORMAL | VM_ALLOC_RETRY);
+ if (m->valid != VM_PAGE_BITS_ALL) {
+ int behind, ahead;
+ if (vm_pager_has_page(tobj, idx, &behind, &ahead)) {
+ error = vm_pager_get_pages(tobj, &m, 1, 0);
+ if (error != 0) {
+ printf("tmpfs get pages from pager error [read]\n");
+ goto out;
+ }
+ } else
vm_page_zero_invalid(m, TRUE);
- vm_page_dirty(m);
- }
- vm_page_unwire(m, 0);
- vm_page_activate(m);
- vm_page_wakeup(m);
- vm_page_unlock_queues();
}
+ VM_OBJECT_UNLOCK(tobj);
+ sched_pin();
+ sf = sf_buf_alloc(m, SFB_CPUPRIVATE);
+ va = (caddr_t)sf_buf_kva(sf);
+ error = uiomove(va + offset, tlen, uio);
+ sf_buf_free(sf);
+ sched_unpin();
+ VM_OBJECT_LOCK(tobj);
out:
- vm_object_pip_subtract(uobj, 1);
- VM_OBJECT_UNLOCK(uobj);
- return error;
+ vm_page_lock_queues();
+ vm_page_unwire(m, 0);
+ vm_page_activate(m);
+ vm_page_unlock_queues();
+ vm_page_wakeup(m);
+ vm_object_pip_subtract(tobj, 1);
+ VM_OBJECT_UNLOCK(tobj);
+
+ return (error);
}
static int
@@ -516,6 +524,8 @@
struct tmpfs_node *node;
vm_object_t uobj;
+ size_t len;
+ int resid;
int error;
@@ -534,7 +544,17 @@
node->tn_status |= TMPFS_NODE_ACCESSED;
uobj = node->tn_reg.tn_aobj;
- error = tmpfs_uio_xfer(VFS_TO_TMPFS(vp->v_mount), node, uio, uobj);
+ while ((resid = uio->uio_resid) > 0) {
+ error = 0;
+ if (node->tn_size <= uio->uio_offset)
+ break;
+ len = MIN(node->tn_size - uio->uio_offset, resid);
+ if (len == 0)
+ break;
+ error = tmpfs_mappedread(vp->v_object, uobj, len, uio);
+ if ((error != 0) || (resid == uio->uio_resid))
+ break;
+ }
out:
@@ -544,6 +564,100 @@
/* --------------------------------------------------------------------- */
static int
+tmpfs_mappedwrite(vm_object_t vobj, vm_object_t tobj, size_t len, struct uio *uio)
+{
+ vm_pindex_t idx;
+ vm_page_t vpg, tpg;
+ struct sf_buf *sf;
+ off_t offset, addr;
+ size_t tlen;
+ caddr_t va;
+ int error;
+
+ addr = uio->uio_offset;
+ idx = OFF_TO_IDX(addr);
+ offset = addr & PAGE_MASK;
+ tlen = MIN(PAGE_SIZE - offset, len);
+
+ if ((vobj == NULL) || (vobj->resident_page_count == 0)) {
+ vpg = NULL;
+ goto nocache;
+ }
+
+ VM_OBJECT_LOCK(vobj);
+lookupvpg:
+ if (((vpg = vm_page_lookup(vobj, idx)) != NULL) &&
+ vm_page_is_valid(vpg, offset, tlen)) {
+ if (vm_page_sleep_if_busy(vpg, FALSE, "tmfsmw"))
+ goto lookupvpg;
+ vm_page_busy(vpg);
+ vm_page_lock_queues();
+ vm_page_undirty(vpg);
+ vm_page_unlock_queues();
+ VM_OBJECT_UNLOCK(vobj);
+ sched_pin();
+ sf = sf_buf_alloc(vpg, SFB_CPUPRIVATE);
+ va = (caddr_t)sf_buf_kva(sf);
+ error = uiomove(va + offset, tlen, uio);
+ sf_buf_free(sf);
+ sched_unpin();
+ } else {
+ VM_OBJECT_UNLOCK(vobj);
+ vpg = NULL;
+ }
+nocache:
+ VM_OBJECT_LOCK(tobj);
+ vm_object_pip_add(tobj, 1);
+ tpg = vm_page_grab(tobj, idx, VM_ALLOC_WIRED |
+ VM_ALLOC_ZERO | VM_ALLOC_NORMAL | VM_ALLOC_RETRY);
+ if (tpg->valid != VM_PAGE_BITS_ALL) {
+ int behind, ahead;
+ if (vm_pager_has_page(tobj, idx, &behind, &ahead)) {
+ error = vm_pager_get_pages(tobj, &tpg, 1, 0);
+ if (error != 0) {
+ printf("tmpfs get pages from pager error [write]\n");
+ goto out;
+ }
+ } else
+ vm_page_zero_invalid(tpg, TRUE);
+ }
+ VM_OBJECT_UNLOCK(tobj);
+ if (vpg == NULL) {
+ sched_pin();
+ sf = sf_buf_alloc(tpg, SFB_CPUPRIVATE);
+ va = (caddr_t)sf_buf_kva(sf);
+ error = uiomove(va + offset, tlen, uio);
+ sf_buf_free(sf);
+ sched_unpin();
+ } else {
+ KASSERT(vpg->valid == VM_PAGE_BITS_ALL, ("parts of vpg invalid"));
+ pmap_copy_page(vpg, tpg);
+ }
+ VM_OBJECT_LOCK(tobj);
+out:
+ if (vobj != NULL)
+ VM_OBJECT_LOCK(vobj);
+ vm_page_lock_queues();
+ if (error == 0) {
+ vm_page_set_validclean(tpg, offset, tlen);
+ vm_page_zero_invalid(tpg, TRUE);
+ vm_page_dirty(tpg);
+ }
+ vm_page_unwire(tpg, 0);
+ vm_page_activate(tpg);
+ vm_page_unlock_queues();
+ vm_page_wakeup(tpg);
+ if (vpg != NULL)
+ vm_page_wakeup(vpg);
+ if (vobj != NULL)
+ VM_OBJECT_UNLOCK(vobj);
+ vm_object_pip_subtract(tobj, 1);
+ VM_OBJECT_UNLOCK(tobj);
+
+ return (error);
+}
+
+static int
tmpfs_write(struct vop_write_args *v)
{
struct vnode *vp = v->a_vp;
@@ -552,10 +666,12 @@
struct thread *td = uio->uio_td;
boolean_t extended;
- int error;
+ int error = 0;
off_t oldsize;
struct tmpfs_node *node;
vm_object_t uobj;
+ size_t len;
+ int resid;
node = VP_TO_TMPFS_NODE(vp);
oldsize = node->tn_size;
@@ -596,7 +712,16 @@
}
uobj = node->tn_reg.tn_aobj;
- error = tmpfs_uio_xfer(VFS_TO_TMPFS(vp->v_mount), node, uio, uobj);
+ while ((resid = uio->uio_resid) > 0) {
+ if (node->tn_size <= uio->uio_offset)
+ break;
+ len = MIN(node->tn_size - uio->uio_offset, resid);
+ if (len == 0)
+ break;
+ error = tmpfs_mappedwrite(vp->v_object, uobj, len, uio);
+ if ((error != 0) || (resid == uio->uio_resid))
+ break;
+ }
node->tn_status |= TMPFS_NODE_ACCESSED | TMPFS_NODE_MODIFIED |
(extended ? TMPFS_NODE_CHANGED : 0);
==== //depot/projects/delphij_fork/sys/kern/kern_mutex.c#2 (text+ko) ====
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_mutex.c,v 1.196 2007/06/09 18:09:37 mjacob Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_mutex.c,v 1.198 2007/07/18 20:46:05 jeff Exp $");
#include "opt_adaptive_mutexes.h"
#include "opt_ddb.h"
@@ -118,7 +118,6 @@
* System-wide mutexes
*/
struct mtx blocked_lock;
-struct mtx sched_lock;
struct mtx Giant;
#ifdef LOCK_PROFILING
@@ -473,9 +472,12 @@
{
struct mtx *m;
uintptr_t tid;
- int i;
+ int i, contested;
+ uint64_t waittime;
- i = 0;
+
+ contested = i = 0;
+ waittime = 0;
tid = (uintptr_t)curthread;
for (;;) {
retry:
@@ -488,6 +490,7 @@
m->mtx_recurse++;
break;
}
+ lock_profile_obtain_lock_failed(&m->lock_object, &contested, &waittime);
/* Give interrupts a chance while we spin. */
spinlock_exit();
while (m->mtx_lock != MTX_UNOWNED) {
@@ -508,6 +511,8 @@
break;
_rel_spin_lock(m); /* does spinlock_exit() */
}
+ lock_profile_obtain_lock_success(&m->lock_object, contested,
+ waittime, (file), (line));
WITNESS_LOCK(&m->lock_object, opts | LOP_EXCLUSIVE, file, line);
}
@@ -769,7 +774,6 @@
* Initialize mutexes.
*/
mtx_init(&Giant, "Giant", NULL, MTX_DEF | MTX_RECURSE);
- mtx_init(&sched_lock, "sched lock", NULL, MTX_SPIN | MTX_RECURSE);
mtx_init(&blocked_lock, "blocked lock", NULL, MTX_SPIN);
blocked_lock.mtx_lock = 0xdeadc0de; /* Always blocked. */
mtx_init(&proc0.p_mtx, "process lock", NULL, MTX_DEF | MTX_DUPOK);
==== //depot/projects/delphij_fork/sys/kern/kern_sig.c#2 (text+ko) ====
@@ -35,7 +35,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_sig.c,v 1.348 2007/06/11 23:27:03 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_sig.c,v 1.349 2007/07/19 08:49:16 jeff Exp $");
#include "opt_compat.h"
#include "opt_ktrace.h"
@@ -2365,12 +2365,8 @@
* Bring the priority of a thread up if we want it to get
* killed in this lifetime.
*/
- if (action == SIG_DFL && (prop & SA_KILL)) {
- if (p->p_nice > 0)
- sched_nice(td->td_proc, 0);
- if (td->td_priority > PUSER)
- sched_prio(td, PUSER);
- }
+ if (action == SIG_DFL && (prop & SA_KILL) && td->td_priority > PUSER)
+ sched_prio(td, PUSER);
if (TD_ON_SLEEPQ(td)) {
/*
==== //depot/projects/delphij_fork/sys/kern/kern_switch.c#2 (text+ko) ====
@@ -26,7 +26,7 @@
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/kern_switch.c,v 1.131 2007/06/12 19:50:31 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/kern_switch.c,v 1.132 2007/07/19 08:58:40 jeff Exp $");
#include "opt_sched.h"
@@ -267,8 +267,7 @@
/*
* Thread is runnable but not yet put on system run queue.
*/
- MPASS(ctd->td_lock == &sched_lock);
- MPASS(td->td_lock == &sched_lock);
+ MPASS(ctd->td_lock == td->td_lock);
MPASS(TD_ON_RUNQ(td));
TD_SET_RUNNING(td);
CTR3(KTR_PROC, "preempting to thread %p (pid %d, %s)\n", td,
==== //depot/projects/delphij_fork/sys/kern/sched_4bsd.c#2 (text+ko) ====
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/kern/sched_4bsd.c,v 1.102 2007/06/12 07:47:09 jeff Exp $");
+__FBSDID("$FreeBSD: src/sys/kern/sched_4bsd.c,v 1.103 2007/07/18 20:46:05 jeff Exp $");
#include "opt_hwpmc_hooks.h"
@@ -101,6 +101,7 @@
((ts)->ts_runq != 0 && (ts)->ts_runq != &runq)
static struct td_sched td_sched0;
+struct mtx sched_lock;
static int sched_tdcnt; /* Total runnable threads in the system. */
static int sched_quantum; /* Roundrobin scheduling quantum in ticks. */
@@ -578,6 +579,7 @@
thread0.td_sched = &td_sched0;
thread0.td_lock = &sched_lock;
td_sched0.ts_thread = &thread0;
+ mtx_init(&sched_lock, "sched lock", NULL, MTX_SPIN | MTX_RECURSE);
}
int
==== //depot/projects/delphij_fork/sys/netinet6/in6.h#3 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/netinet6/in6.h,v 1.50 2007/07/05 16:29:39 delphij Exp $ */
+/* $FreeBSD: src/sys/netinet6/in6.h,v 1.51 2007/07/19 09:16:40 bz Exp $ */
/* $KAME: in6.h,v 1.89 2001/05/27 13:28:35 itojun Exp $ */
/*-
@@ -413,7 +413,7 @@
#define IPV6_BINDV6ONLY IPV6_V6ONLY
#endif
-#ifdef IPSEC
+#if 1 /* IPSEC */
#define IPV6_IPSEC_POLICY 28 /* struct; get/set security policy */
#endif /* IPSEC */
==== //depot/projects/delphij_fork/sys/netipsec/ipsec_input.c#2 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/netipsec/ipsec_input.c,v 1.17 2007/06/15 22:23:33 bz Exp $ */
+/* $FreeBSD: src/sys/netipsec/ipsec_input.c,v 1.18 2007/07/19 09:57:54 bz Exp $ */
/* $OpenBSD: ipsec_input.c,v 1.63 2003/02/20 18:35:43 deraadt Exp $ */
/*-
* The authors of this code are John Ioannidis (ji at tla.org),
@@ -56,6 +56,7 @@
#include <sys/syslog.h>
#include <net/if.h>
+#include <net/pfil.h>
#include <net/route.h>
#include <net/netisr.h>
@@ -460,7 +461,7 @@
ipsec_bpf(m, sav, AF_INET);
if (prot != IPPROTO_IPIP)
- if ((error = ipsec_filter(&m, 1)) != 0)
+ if ((error = ipsec_filter(&m, PFIL_IN)) != 0)
return (error);
#endif
==== //depot/projects/delphij_fork/sys/netipsec/ipsec_output.c#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/sys/netipsec/ipsec_output.c,v 1.15 2007/07/01 11:38:29 gnn Exp $
+ * $FreeBSD: src/sys/netipsec/ipsec_output.c,v 1.16 2007/07/19 09:57:54 bz Exp $
*/
/*
@@ -44,6 +44,7 @@
#include <sys/syslog.h>
#include <net/if.h>
+#include <net/pfil.h>
#include <net/route.h>
#include <netinet/in.h>
@@ -362,7 +363,7 @@
#ifdef DEV_ENC
/* pass the mbuf to enc0 for packet filtering */
- if ((error = ipsec_filter(&m, 2)) != 0)
+ if ((error = ipsec_filter(&m, PFIL_OUT)) != 0)
goto bad;
#endif
==== //depot/projects/delphij_fork/sys/netipsec/xform_ipip.c#2 (text+ko) ====
@@ -1,4 +1,4 @@
-/* $FreeBSD: src/sys/netipsec/xform_ipip.c,v 1.14 2007/07/03 12:13:45 gnn Exp $ */
+/* $FreeBSD: src/sys/netipsec/xform_ipip.c,v 1.15 2007/07/19 09:57:54 bz Exp $ */
/* $OpenBSD: ip_ipip.c,v 1.25 2002/06/10 18:04:55 itojun Exp $ */
/*-
* The authors of this code are John Ioannidis (ji at tla.org),
@@ -52,6 +52,7 @@
#include <sys/sysctl.h>
#include <net/if.h>
+#include <net/pfil.h>
#include <net/route.h>
#include <net/netisr.h>
@@ -348,7 +349,7 @@
#ifdef DEV_ENC
/* pass the mbuf to enc0 for packet filtering */
- if (ipsec_filter(&m, 1) != 0)
+ if (ipsec_filter(&m, PFIL_IN) != 0)
return;
#endif
==== //depot/projects/delphij_fork/sys/sparc64/sparc64/pmap.c#2 (text+ko) ====
@@ -39,7 +39,7 @@
* SUCH DAMAGE.
*
* from: @(#)pmap.c 7.7 (Berkeley) 5/12/91
- * $FreeBSD: src/sys/sparc64/sparc64/pmap.c,v 1.164 2007/06/03 19:39:38 alc Exp $
+ * $FreeBSD: src/sys/sparc64/sparc64/pmap.c,v 1.165 2007/07/18 20:46:05 jeff Exp $
*/
/*
@@ -108,6 +108,13 @@
#define PMAP_SHPGPERPROC 200
#endif
+/* XXX */
+#include "opt_sched.h"
+#ifndef SCHED_4BSD
+#error "sparc64 only works with SCHED_4BSD which uses a global scheduler lock."
+#endif
+extern struct mtx sched_lock;
+
/*
* Virtual and physical address of message buffer.
*/
==== //depot/projects/delphij_fork/sys/sys/mutex.h#2 (text+ko) ====
@@ -26,7 +26,7 @@
* SUCH DAMAGE.
*
* from BSDI $Id: mutex.h,v 2.7.2.35 2000/04/27 03:10:26 cp Exp $
- * $FreeBSD: src/sys/sys/mutex.h,v 1.97 2007/06/06 03:40:47 jeff Exp $
+ * $FreeBSD: src/sys/sys/mutex.h,v 1.98 2007/07/18 20:46:06 jeff Exp $
*/
#ifndef _SYS_MUTEX_H_
@@ -355,7 +355,6 @@
/*
* Global locks.
*/
-extern struct mtx sched_lock;
extern struct mtx Giant;
extern struct mtx blocked_lock;
==== //depot/projects/delphij_fork/tools/build/options/WITHOUT_TOOLCHAIN#2 (text) ====
@@ -1,4 +1,5 @@
-.\" $FreeBSD: src/tools/build/options/WITHOUT_TOOLCHAIN,v 1.1 2006/03/21 07:50:50 ru Exp $
-Set to not build
+.\" $FreeBSD: src/tools/build/options/WITHOUT_TOOLCHAIN,v 1.2 2007/07/19 08:14:28 bz Exp $
+Set to not install
programs used for program development,
compilers, debuggers etc.
+.Sy "The option does not work for build targets."
==== //depot/projects/delphij_fork/tools/regression/fstest/fstest.c#2 (text+ko) ====
@@ -23,7 +23,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $FreeBSD: src/tools/regression/fstest/fstest.c,v 1.1 2007/01/17 01:42:07 pjd Exp $
+ * $FreeBSD: src/tools/regression/fstest/fstest.c,v 1.2 2007/07/18 18:07:14 pjd Exp $
*/
#include <sys/param.h>
@@ -530,6 +530,10 @@
fprintf(stderr, "cannot change groups: %s\n", strerror(errno));
exit(1);
}
+ if (setegid(gidset[0]) < 0) {
+ fprintf(stderr, "cannot change effective gid: %s\n", strerror(errno));
+ exit(1);
+ }
free(gidset);
}
==== //depot/projects/delphij_fork/tools/regression/fstest/tests/open/16.t#2 (text+ko) ====
@@ -1,7 +1,7 @@
#!/bin/sh
-# $FreeBSD: src/tools/regression/fstest/tests/open/16.t,v 1.1 2007/01/17 01:42:10 pjd Exp $
+# $FreeBSD: src/tools/regression/fstest/tests/open/16.t,v 1.2 2007/07/18 18:07:15 pjd Exp $
-desc="open returns EMLINK when O_NOFOLLOW was specified and the target is a symbolic link"
+desc="open returns EMLINK/ELOOP when O_NOFOLLOW was specified and the target is a symbolic link"
dir=`dirname $0`
. ${dir}/../misc.sh
@@ -12,8 +12,18 @@
n1=`namegen`
expect 0 symlink ${n0} ${n1}
-expect EMLINK open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644
-expect EMLINK open ${n1} O_RDONLY,O_NOFOLLOW
-expect EMLINK open ${n1} O_WRONLY,O_NOFOLLOW
-expect EMLINK open ${n1} O_RDWR,O_NOFOLLOW
+case "${os}" in
+SunOS)
+ expect ELOOP open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644
+ expect ELOOP open ${n1} O_RDONLY,O_NOFOLLOW
+ expect ELOOP open ${n1} O_WRONLY,O_NOFOLLOW
+ expect ELOOP open ${n1} O_RDWR,O_NOFOLLOW
+ ;;
+*)
+ expect EMLINK open ${n1} O_RDONLY,O_CREAT,O_NOFOLLOW 0644
+ expect EMLINK open ${n1} O_RDONLY,O_NOFOLLOW
+ expect EMLINK open ${n1} O_WRONLY,O_NOFOLLOW
+ expect EMLINK open ${n1} O_RDWR,O_NOFOLLOW
+ ;;
+esac
expect 0 unlink ${n1}
==== //depot/projects/delphij_fork/tools/regression/fstest/tests/open/18.t#2 (text+ko) ====
@@ -1,18 +1,25 @@
#!/bin/sh
-# $FreeBSD: src/tools/regression/fstest/tests/open/18.t,v 1.1 2007/01/17 01:42:10 pjd Exp $
+# $FreeBSD: src/tools/regression/fstest/tests/open/18.t,v 1.2 2007/07/18 18:07:15 pjd Exp $
desc="open returns EWOULDBLOCK when O_NONBLOCK and one of O_SHLOCK or O_EXLOCK is specified and the file is locked"
dir=`dirname $0`
. ${dir}/../misc.sh
-echo "1..6"
+case "${os}" in
+FreeBSD)
+ echo "1..6"
-n0=`namegen`
+ n0=`namegen`
-expect 0 create ${n0} 0644
-expect 0 open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
-expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
-expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
-expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
-expect 0 unlink ${n0}
+ expect 0 create ${n0} 0644
+ expect 0 open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
+ expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
+ expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_SHLOCK : open ${n0} O_RDONLY,O_EXLOCK,O_NONBLOCK
+ expect "EWOULDBLOCK|EAGAIN" open ${n0} O_RDONLY,O_EXLOCK : open ${n0} O_RDONLY,O_SHLOCK,O_NONBLOCK
+ expect 0 unlink ${n0}
+ ;;
+*)
+ quick_exit
+ ;;
+esac
More information about the p4-projects
mailing list