From owner-p4-projects@FreeBSD.ORG Sun Nov 14 04:38:43 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C330716A4D2; Sun, 14 Nov 2004 04:38:41 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 199D216A4D0 for ; Sun, 14 Nov 2004 04:38:41 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id B409043D41 for ; Sun, 14 Nov 2004 04:38:40 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAE4cetl049077 for ; Sun, 14 Nov 2004 04:38:40 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAE4cdCZ049066 for perforce@freebsd.org; Sun, 14 Nov 2004 04:38:39 GMT (envelope-from davidxu@freebsd.org) Date: Sun, 14 Nov 2004 04:38:39 GMT Message-Id: <200411140438.iAE4cdCZ049066@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65070 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 04:38:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=65070 Change 65070 by davidxu@davidxu_alona on 2004/11/14 04:35:07 sync with -CURRENT. Affected files ... .. //depot/projects/davidxu_ksedbg/COPYRIGHT#1 branch .. //depot/projects/davidxu_ksedbg/MAINTAINERS#1 branch .. //depot/projects/davidxu_ksedbg/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/Makefile.inc1#1 branch .. //depot/projects/davidxu_ksedbg/README#1 branch .. //depot/projects/davidxu_ksedbg/UPDATING#1 branch .. //depot/projects/davidxu_ksedbg/UPDATING.64BTT#1 branch .. //depot/projects/davidxu_ksedbg/bin/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/Makefile.inc#1 branch .. //depot/projects/davidxu_ksedbg/bin/cat/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/cat/cat.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/cat/cat.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/chflags/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/chflags/chflags.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/chflags/chflags.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/chio/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/chio/chio.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/chio/chio.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/chio/defs.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/chio/pathnames.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/chmod/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/chmod/chmod.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/chmod/chmod.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/cp/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/cp/cp.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/cp/cp.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/cp/extern.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/cp/utils.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/csh/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/csh/USD.doc/csh.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/csh/USD.doc/csh.2#1 branch .. //depot/projects/davidxu_ksedbg/bin/csh/USD.doc/csh.3#1 branch .. //depot/projects/davidxu_ksedbg/bin/csh/USD.doc/csh.4#1 branch .. //depot/projects/davidxu_ksedbg/bin/csh/USD.doc/csh.a#1 branch .. //depot/projects/davidxu_ksedbg/bin/csh/USD.doc/csh.g#1 branch .. //depot/projects/davidxu_ksedbg/bin/csh/USD.doc/tabs#1 branch .. //depot/projects/davidxu_ksedbg/bin/csh/config.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/csh/host.defs#1 branch .. //depot/projects/davidxu_ksedbg/bin/date/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/date/date.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/date/date.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/date/extern.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/date/netdate.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/date/vary.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/date/vary.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/args.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/conv.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/conv_tab.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/dd.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/dd.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/dd.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/extern.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/gen.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/misc.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/position.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.ascii#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.ebcdic#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.ibm#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.lcase#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.oldascii#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.oldebcdic#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.oldibm#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.pareven#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.parnone#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.parodd#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.parset#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.swab#1 branch .. //depot/projects/davidxu_ksedbg/bin/dd/ref.ucase#1 branch .. //depot/projects/davidxu_ksedbg/bin/df/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/df/df.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/df/df.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/domainname/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/domainname/domainname.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/domainname/domainname.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/echo/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/echo/echo.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/echo/echo.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/POSIX#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/README#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/buf.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/cbc.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/ed.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/ed.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/glbl.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/io.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/main.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/re.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/sub.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/=.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/README#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/TODO#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/a.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/a.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/a.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/a1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/a2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/addr.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/addr.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/addr.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/addr1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/addr2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/ascii.d.uu#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/ascii.r.uu#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/ascii.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/bang1.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/bang1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/bang1.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/bang1.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/bang2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/c.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/c.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/c.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/c1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/c2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/ckscripts.sh#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/d.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/d.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/d.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/d.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e1.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e1.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e1.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e2.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e2.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e2.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e3.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e3.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e3.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e3.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e4.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e4.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/e4.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/f1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/f2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g1.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g1.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g1.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g2.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g2.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g2.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g3.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g3.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g3.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g3.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g4.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g4.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g4.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g5.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g5.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/g5.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/h.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/i.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/i.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/i.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/i1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/i2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/i3.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/j.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/j.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/j.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/k.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/k.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/k.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/k1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/k2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/k3.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/k4.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/l.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/l.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/l.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/m.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/m.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/m.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/m.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/mkscripts.sh#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/n.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/n.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/n.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/nl.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/nl1.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/nl1.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/nl1.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/nl2.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/nl2.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/nl2.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/p.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/p.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/p.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/q.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/q.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/q.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/q1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r1.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r1.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r1.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r2.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r2.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r2.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r3.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r3.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/r3.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s1.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s1.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s1.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s10.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s2.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s2.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s2.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s3.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s3.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s3.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s3.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s4.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s5.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s6.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s7.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s8.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/s9.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/t.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/t.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/t1.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/t1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/t1.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/t1.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/t2.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/t2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/t2.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/t2.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/u.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/u.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/u.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/u.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/v.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/v.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/v.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/w.d#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/w.r#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/w.t#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/w1.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/w2.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/w3.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/x.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/test/z.err#1 branch .. //depot/projects/davidxu_ksedbg/bin/ed/undo.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/expr/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/expr/expr.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/expr/expr.y#1 branch .. //depot/projects/davidxu_ksedbg/bin/getfacl/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/getfacl/getfacl.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/getfacl/getfacl.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/hostname/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/hostname/hostname.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/hostname/hostname.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/kenv/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/kenv/kenv.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/kenv/kenv.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/kill/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/kill/kill.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/kill/kill.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ln/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/ln/ln.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/ln/ln.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ln/symlink.7#1 branch .. //depot/projects/davidxu_ksedbg/bin/ls/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/ls/cmp.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ls/extern.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/ls/ls.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/ls/ls.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ls/ls.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/ls/print.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ls/util.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/mkdir/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/mkdir/mkdir.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/mkdir/mkdir.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/mv/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/mv/mv.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/mv/mv.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/ar_io.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/ar_subs.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/buf_subs.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/cache.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/cache.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/cpio.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/cpio.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/cpio.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/extern.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/file_subs.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/ftree.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/ftree.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/gen_subs.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/getoldopt.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/options.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/options.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/pat_rep.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/pat_rep.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/pax.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/pax.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/pax.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/sel_subs.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/sel_subs.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/tables.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/tables.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/tar.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/tar.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/tar.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pax/tty_subs.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ps/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/ps/extern.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/ps/fmt.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ps/keyword.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ps/nlist.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ps/print.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ps/ps.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/ps/ps.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/ps/ps.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/pwd/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/pwd/pwd.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/pwd/pwd.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/rcp/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/rcp/extern.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/rcp/rcp.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/rcp/rcp.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/rcp/util.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/realpath/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/realpath/realpath.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/realpath/realpath.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/rm/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/rm/rm.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/rm/rm.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/rmail/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/rmdir/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/rmdir/rmdir.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/rmdir/rmdir.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/setfacl/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/setfacl/file.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/setfacl/mask.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/setfacl/merge.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/setfacl/remove.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/setfacl/setfacl.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/setfacl/setfacl.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/setfacl/setfacl.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/setfacl/util.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/TOUR#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/alias.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/alias.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/arith.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/arith.y#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/arith_lex.l#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/bltin/bltin.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/bltin/echo.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/bltin/echo.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/builtins.def#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/cd.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/cd.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/error.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/error.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/eval.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/eval.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/exec.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/exec.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/expand.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/expand.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/funcs/cmv#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/funcs/dirs#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/funcs/kill#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/funcs/login#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/funcs/newgrp#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/funcs/popd#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/funcs/pushd#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/funcs/suspend#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/histedit.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/init.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/input.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/input.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/jobs.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/jobs.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/mail.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/mail.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/main.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/main.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/memalloc.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/memalloc.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/miscbltin.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/mkbuiltins#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/mkinit.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/mknodes.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/mksyntax.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/mktokens#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/myhistedit.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/mystring.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/mystring.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/nodes.c.pat#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/nodetypes#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/options.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/options.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/output.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/output.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/parser.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/parser.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/redir.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/redir.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/sh.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/shell.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/show.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/show.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/trap.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/trap.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/var.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sh/var.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/sleep/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/sleep/sleep.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/sleep/sleep.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/cchar.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/extern.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/gfmt.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/key.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/modes.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/print.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/stty.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/stty.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/stty.h#1 branch .. //depot/projects/davidxu_ksedbg/bin/stty/util.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/sync/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/sync/sync.8#1 branch .. //depot/projects/davidxu_ksedbg/bin/sync/sync.c#1 branch .. //depot/projects/davidxu_ksedbg/bin/test/Makefile#1 branch .. //depot/projects/davidxu_ksedbg/bin/test/TEST.README#1 branch .. //depot/projects/davidxu_ksedbg/bin/test/TEST.csh#1 branch .. //depot/projects/davidxu_ksedbg/bin/test/TEST.sh#1 branch .. //depot/projects/davidxu_ksedbg/bin/test/test.1#1 branch .. //depot/projects/davidxu_ksedbg/bin/test/test.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/AUTHORS#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/BUGS#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/COPYING#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/ChangeLog#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/FREEBSD-Xlist#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/FREEBSD-upgrade#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/INSTALL#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/MIRRORS.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/MIRRORS.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/NEWS#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/README#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/README.ldap#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/README.y2k#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/am_ops.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amd.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amd.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amd.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_auto.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_direct.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_error.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_host.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_inherit.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_link.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_linkx.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_nfsl.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_nfsx.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_program.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_root.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_toplvl.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amfs_union.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amq_subr.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/amq_svc.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/autil.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/clock.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/conf.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/conf_parse.y#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/conf_tok.l#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/get_args.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/info_file.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/info_hesiod.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/info_ldap.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/info_ndbm.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/info_nis.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/info_nisplus.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/info_passwd.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/info_union.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/map.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/mapc.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/mntfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/nfs_prot_svc.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/nfs_start.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/nfs_subr.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_TEMPLATE.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_cachefs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_cdfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_efs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_lofs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_mfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_nfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_nfs3.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_nullfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_pcfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_tfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_tmpfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_ufs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_umapfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_unionfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/ops_xfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/opts.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/restart.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/rpc_fwd.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/sched.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/srvr_amfs_auto.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amd/srvr_nfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amq/amq.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amq/amq.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amq/amq.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amq/amq_clnt.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amq/amq_xdr.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amq/pawd.1#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/amq/pawd.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/aux_conf.h.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/bootstrap#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/conf/checkmount/checkmount_bsd44.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/conf/fh_dref/fh_dref_freebsd22.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/conf/mtab/mtab_bsd.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/conf/sa_dref/sa_dref_bsd44.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/conf/transp/transp_sockets.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/conf/trap/trap_default.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/conf/umount/umount_bsd44.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/doc/am-utils.texi#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/doc/texinfo.tex#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/doc/version.texi#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fixmount/fixmount.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fixmount/fixmount.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/fsi_analyze.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/fsi_data.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/fsi_dict.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/fsi_gram.y#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/fsi_lex.l#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/fsi_util.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/fsinfo.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/fsinfo.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/fsinfo.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/wr_atab.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/wr_bparam.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/wr_dumpset.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/wr_exportfs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/fsinfo/wr_fstab.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/hlfsd/hlfsd.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/hlfsd/hlfsd.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/hlfsd/hlfsd.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/hlfsd/homedir.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/hlfsd/nfs_prot_svc.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/hlfsd/stubs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/include/am_compat.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/include/am_defs.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/include/am_utils.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/include/am_xdr_func.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/include/amq_defs.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/include/mount_headers1.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/include/mount_headers2.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/ldap-id.ms#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/ldap-id.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/alloca.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/amu.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/hasmntopt.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/misc_rpc.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/mount_fs.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/mtab.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/nfs_prot_xdr.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/strerror.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/util.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/wire.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/xdr_func.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/libamu/xutil.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/GNUmakefile#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/amdgrep#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/amindent#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/autopat#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/chop-aclocal.pl#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/copy-if-newbig#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/macros/HEADER#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/macros/TRAILER#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/mk-aclocal#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/mkconf#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/rmtspc#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/m4/update_build_version#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/mk-amd-map/mk-amd-map.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/mk-amd-map/mk-amd-map.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/Makefile.am#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/am-eject.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/amd.conf-sample#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/amd.conf.5#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/amd2ldif.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/amd2sun.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/automount2amd.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/automount2amd.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/ctl-amd.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/ctl-hlfsd.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/expn.1#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/expn.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/fix-amd-map.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/fixrmtab.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/redhat-ctl-amd.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/wait4amd.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/scripts/wait4amd2die.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/tasks#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/wire-test/wire-test.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/amd/wire-test/wire-test.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/AUTHORS#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/ChangeLog#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Examples/ckbook.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Examples/pi.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Examples/primes.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Examples/twins.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/FAQ#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/FREEBSD-upgrade#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/INSTALL#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Makefile.am#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/NEWS#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/README#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/BUG.bc#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/array.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/arrayp.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/aryprm.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/atan.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/checklib.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/div.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/exp.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/fact.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/jn.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/ln.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/mul.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/raise.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/signum#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/sine.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/sqrt.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/sqrt1.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/sqrt2.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/testfn.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/Test/timetest#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/acconfig.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/aclocal.m4#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/Makefile.am#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/bc.y#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/bcdefs.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/const.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/execute.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/fix-libmath_h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/global.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/global.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/libmath.b#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/libmath.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/load.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/main.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/proto.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/sbc.y#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/scan.l#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/storage.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/bc/util.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/config.h.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/configure#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/configure.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/Makefile.am#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/array.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/dc-proto.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/dc-regdef.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/dc.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/dc.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/eval.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/misc.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/numeric.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/stack.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/dc/string.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/doc/Makefile.am#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/doc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/doc/bc.1#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/doc/bc.texi#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/doc/dc.1#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/doc/dc.texi#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/h/number.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/install-sh#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/lib/Makefile.am#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/lib/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/lib/number.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/lib/testmul.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/lib/vfprintf.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/missing#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/mkinstalldirs#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bc/stamp-h.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/CHANGES#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/COPYRIGHT#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/FAQ#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/FREEBSD-Upgrade#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/FREEBSD-Xlist#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/KNOWN_DEFECTS#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/README#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/acconfig.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/check-tool.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/check-tool.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/named-checkconf.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/named-checkconf.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/named-checkconf.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/named-checkconf.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/named-checkzone.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/named-checkzone.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/named-checkzone.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/check/named-checkzone.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/dig.1#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/dig.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/dig.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/dig.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/dighost.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/host.1#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/host.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/host.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/host.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/include/dig/dig.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/nslookup.1#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/nslookup.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/nslookup.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dig/nslookup.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-keygen.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-keygen.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-keygen.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-keygen.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-makekeyset.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-makekeyset.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-makekeyset.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-makekeyset.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-signkey.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-signkey.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-signkey.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-signkey.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-signzone.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-signzone.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-signzone.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssec-signzone.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssectool.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/dnssec/dnssectool.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/aclconf.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/builtin.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/client.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/config.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/control.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/controlconf.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/aclconf.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/builtin.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/client.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/config.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/control.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/globals.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/interfacemgr.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/listenlist.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/log.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/logconf.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/lwaddr.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/lwdclient.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/lwresd.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/lwsearch.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/main.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/notify.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/query.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/server.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/sortlist.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/tkeyconf.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/tsigconf.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/types.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/update.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/xfrout.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/include/named/zoneconf.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/interfacemgr.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/listenlist.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/log.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/logconf.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwaddr.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwdclient.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwderror.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwdgabn.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwdgnba.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwdgrbn.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwdnoop.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwresd.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwresd.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwresd.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwresd.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/lwsearch.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/main.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/named.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/named.conf.5#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/named.conf.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/named.conf.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/named.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/named.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/notify.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/query.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/server.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/sortlist.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/tkeyconf.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/tsigconf.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/unix/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/unix/include/named/os.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/unix/os.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/update.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/xfrout.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/named/zoneconf.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/nsupdate/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/nsupdate/nsupdate.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/nsupdate/nsupdate.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/nsupdate/nsupdate.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/nsupdate/nsupdate.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/include/rndc/os.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc-confgen.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc-confgen.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc-confgen.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc-confgen.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc.8#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc.conf#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc.conf.5#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc.conf.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc.conf.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc.docbook#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/rndc.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/unix/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/unix/os.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/util.c#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/bin/rndc/util.h#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/config.guess#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/config.sub#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/configure.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM-book.xml#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM.ch01.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM.ch02.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM.ch03.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM.ch04.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM.ch05.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM.ch06.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM.ch07.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM.ch08.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM.ch09.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Bv9ARM.html#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/README-SGML#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/isc.color.gif#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/nominum-docbook-html.dsl.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/nominum-docbook-print.dsl.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/arm/validate.sh.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-baba-dnsext-acl-reqts-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-daigle-napstr-04.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-danisch-dns-rr-smtp-03.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-dnsext-opcode-discover-02.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-durand-dnsop-dynreverse-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-axfr-clarify-05.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-dhcid-rr-08.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-2535typecode-change-06.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-intro-11.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-protocol-07.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-records-09.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-insensitive-04.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-interop3597-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-keyrr-key-signing-flag-12.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-mdns-33.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-tkey-renewal-mode-04.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-tsig-sha-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsext-wcard-clarify-02.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsop-bad-dns-res-02.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsop-dnssec-operational-practices-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-configuration-02.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-issues-09.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-transport-guidelines-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsop-key-rollover-requirements-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsop-misbehavior-against-aaaa-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsop-respsize-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-dnsop-serverid-02.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-enum-e164-gstn-np-05.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-ipseckey-rr-09.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-ipv6-node-requirements-08.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ietf-secsh-dns-05.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-ihren-dnsext-threshold-validation-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-kato-dnsop-local-zones-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/draft-park-ipv6-extensions-dns-pnp-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/draft/update#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/misc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/misc/dnssec#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/misc/format-options.pl#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/misc/ipv6#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/misc/migration#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/misc/migration-4to9#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/misc/options#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/misc/rfc-compliance#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/misc/roadmap#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/misc/sdb#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/index#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1032.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1033.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1034.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1035.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1101.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1122.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1123.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1183.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1348.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1535.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1536.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1537.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1591.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1611.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1612.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1706.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1712.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1750.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1876.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1886.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1982.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1995.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc1996.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2052.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2104.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2119.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2133.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2136.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2137.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2163.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2168.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2181.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2230.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2308.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2317.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2373.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2374.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2375.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2418.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2535.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2536.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2537.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2538.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2539.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2540.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2541.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2553.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2671.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2672.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2673.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2782.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2825.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2826.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2845.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2874.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2915.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2929.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2930.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc2931.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3007.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3008.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3071.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3090.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3110.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3123.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3152.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3197.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3225.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3226.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3258.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3363.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3364.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3425.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3445.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3467.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3490.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3491.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3492.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3493.txt#1 branch .. //depot/projects/davidxu_ksedbg/contrib/bind9/doc/rfc/rfc3513.txt#1 branch >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun Nov 14 04:55:02 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9EAE816A4D1; Sun, 14 Nov 2004 04:55:01 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 688B916A4CE for ; Sun, 14 Nov 2004 04:55:01 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3DF7343D3F for ; Sun, 14 Nov 2004 04:55:01 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAE4t14I055904 for ; Sun, 14 Nov 2004 04:55:01 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAE4t0kL055891 for perforce@freebsd.org; Sun, 14 Nov 2004 04:55:00 GMT (envelope-from sam@freebsd.org) Date: Sun, 14 Nov 2004 04:55:00 GMT Message-Id: <200411140455.iAE4t0kL055891@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65071 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 04:55:02 -0000 http://perforce.freebsd.org/chv.cgi?CH=65071 Change 65071 by sam@sam_ebb on 2004/11/14 04:54:39 cleanup a bunch of cruft now that the proper definitions are available Affected files ... .. //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#12 edit Differences ... ==== //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#12 (text+ko) ==== @@ -77,6 +77,7 @@ #include #include +#include #include #include #include @@ -767,42 +768,11 @@ } while (len >= sizeof(struct ieee80211req_sta_info)); } -#include - -/* - * Useful combinations of channel characteristics. - */ -#define IEEE80211_CHAN_FHSS \ - (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_GFSK) -#define IEEE80211_CHAN_A \ - (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM) -#define IEEE80211_CHAN_B \ - (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_CCK) -#define IEEE80211_CHAN_PUREG \ - (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM) -#define IEEE80211_CHAN_G \ - (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN) -#define IEEE80211_CHAN_T \ - (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO) - -#define IEEE80211_IS_CHAN_FHSS(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_FHSS) == IEEE80211_CHAN_FHSS) -#define IEEE80211_IS_CHAN_A(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_A) == IEEE80211_CHAN_A) -#define IEEE80211_IS_CHAN_B(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_B) == IEEE80211_CHAN_B) -#define IEEE80211_IS_CHAN_PUREG(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_PUREG) == IEEE80211_CHAN_PUREG) -#define IEEE80211_IS_CHAN_G(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_G) == IEEE80211_CHAN_G) -#define IEEE80211_IS_CHAN_T(_c) \ - (((_c)->ic_flags & IEEE80211_CHAN_T) == IEEE80211_CHAN_T) +static void +print_chaninfo(const struct ieee80211_channel *c) +{ #define IEEE80211_IS_CHAN_PASSIVE(_c) \ (((_c)->ic_flags & IEEE80211_CHAN_PASSIVE)) - -static void -print_chaninfo(const struct ieee80211_chaninfo *c) -{ char buf[14]; buf[0] = '\0'; @@ -821,6 +791,7 @@ printf("Channel %3u : %u%c Mhz%-14.14s", ieee80211_mhz2ieee(c->ic_freq), c->ic_freq, IEEE80211_IS_CHAN_PASSIVE(c) ? '*' : ' ', buf); +#undef IEEE80211_IS_CHAN_PASSIVE } static void @@ -896,14 +867,6 @@ #undef iseq } -enum ieee80211_opmode { - IEEE80211_M_STA = 1, /* infrastructure station */ - IEEE80211_M_IBSS = 0, /* IBSS (adhoc) station */ - IEEE80211_M_AHDEMO = 3, /* Old lucent compatible adhoc demo */ - IEEE80211_M_HOSTAP = 6, /* Software Access Point */ - IEEE80211_M_MONITOR = 8 /* Monitor mode */ -}; - static enum ieee80211_opmode get80211opmode(int s) { From owner-p4-projects@FreeBSD.ORG Sun Nov 14 05:01:09 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5B86C16A4D1; Sun, 14 Nov 2004 05:01:09 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3715F16A4CE for ; Sun, 14 Nov 2004 05:01:09 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 13A0143D48 for ; Sun, 14 Nov 2004 05:01:09 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAE518Cp056152 for ; Sun, 14 Nov 2004 05:01:08 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAE518pT056149 for perforce@freebsd.org; Sun, 14 Nov 2004 05:01:08 GMT (envelope-from sam@freebsd.org) Date: Sun, 14 Nov 2004 05:01:08 GMT Message-Id: <200411140501.iAE518pT056149@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65072 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 05:01:10 -0000 http://perforce.freebsd.org/chv.cgi?CH=65072 Change 65072 by sam@sam_ebb on 2004/11/14 05:00:37 er, don't explicitly include _ieee80211.h Affected files ... .. //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#13 edit Differences ... ==== //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#13 (text+ko) ==== @@ -77,7 +77,6 @@ #include #include -#include #include #include #include From owner-p4-projects@FreeBSD.ORG Sun Nov 14 05:07:17 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 38D0616A4D1; Sun, 14 Nov 2004 05:07:17 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0D7C916A4CE for ; Sun, 14 Nov 2004 05:07:17 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id DF46F43D39 for ; Sun, 14 Nov 2004 05:07:16 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAE57G3c056306 for ; Sun, 14 Nov 2004 05:07:16 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAE57GN4056303 for perforce@freebsd.org; Sun, 14 Nov 2004 05:07:16 GMT (envelope-from davidxu@freebsd.org) Date: Sun, 14 Nov 2004 05:07:16 GMT Message-Id: <200411140507.iAE57GN4056303@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65073 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 05:07:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=65073 Change 65073 by davidxu@davidxu_alona on 2004/11/14 05:07:11 use wakeup not wakeup_one, it is unknown who is waiting on the wchan. Affected files ... .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_thr.c#5 edit Differences ... ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_thr.c#5 (text+ko) ==== @@ -308,7 +308,7 @@ mtx_lock_spin(&sched_lock); ttd->td_flags |= TDF_THRWAKEUP; mtx_unlock_spin(&sched_lock); - wakeup_one((void *)ttd); + wakeup((void *)ttd); PROC_UNLOCK(td->td_proc); return (0); } From owner-p4-projects@FreeBSD.ORG Sun Nov 14 05:13:25 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 43E4F16A4D1; Sun, 14 Nov 2004 05:13:25 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1619616A4CE for ; Sun, 14 Nov 2004 05:13:25 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E919D43D46 for ; Sun, 14 Nov 2004 05:13:24 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAE5DOFN056481 for ; Sun, 14 Nov 2004 05:13:24 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAE5DOTv056478 for perforce@freebsd.org; Sun, 14 Nov 2004 05:13:24 GMT (envelope-from davidxu@freebsd.org) Date: Sun, 14 Nov 2004 05:13:24 GMT Message-Id: <200411140513.iAE5DOTv056478@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65074 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 05:13:25 -0000 http://perforce.freebsd.org/chv.cgi?CH=65074 Change 65074 by davidxu@davidxu_alona on 2004/11/14 05:12:40 1. Fix a race between signal and umtx_unlock. a waiter may be resumed by signal and left or exited, heavily loaded test causes kernel to crash. 2. Use distributed queue locks instead of single giant lock. Affected files ... .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 edit Differences ... ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 (text+ko) ==== @@ -49,25 +49,48 @@ pid_t uq_pid; /* Pid key component. */ }; +LIST_HEAD(umtx_head, umtx_q); +struct umtxq_chain { + struct umtx_head uc_queues; /* List of sleep queues. */ + struct mtx uc_lock; /* lock for this chain. */ +}; + #define UMTX_QUEUES 128 #define UMTX_HASH(pid, umtx) \ - (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES) + ((((uintptr_t)pid << 16) + ((uintptr_t)umtx & 65535)) % UMTX_QUEUES) -LIST_HEAD(umtx_head, umtx_q); -static struct umtx_head queues[UMTX_QUEUES]; +static struct umtxq_chain umtxq_chains[UMTX_QUEUES]; static MALLOC_DEFINE(M_UMTX, "umtx", "UMTX queue memory"); -static struct mtx umtx_lock; -MTX_SYSINIT(umtx, &umtx_lock, "umtx", MTX_DEF); - -#define UMTX_LOCK() mtx_lock(&umtx_lock); -#define UMTX_UNLOCK() mtx_unlock(&umtx_lock); +#define UMTX_LOCK(td, umtx) \ + mtx_lock(&umtxq_chains[UMTX_HASH((td)->td_proc->p_pid, \ + (umtx))].uc_lock) +#define UMTX_UNLOCK(td, umtx) \ + mtx_unlock(&umtxq_chains[UMTX_HASH((td)->td_proc->p_pid, \ + (umtx))].uc_lock); +#define UMTX_MUTEX(td, umtx) \ + (&umtxq_chains[UMTX_HASH(td->td_proc->p_pid, umtx)].uc_lock) #define UMTX_CONTESTED LONG_MIN +static void umtx_sysinit(void *); static struct umtx_q *umtx_lookup(struct thread *, struct umtx *umtx); static struct umtx_q *umtx_insert(struct thread *, struct umtx *umtx); +SYSINIT(umtx, SI_SUB_LOCK, SI_ORDER_MIDDLE, umtx_sysinit, NULL); + +static void +umtx_sysinit(void *arg) +{ + int i; + + for (i = 0; i < UMTX_QUEUES; ++i) { + LIST_INIT(&umtxq_chains[i].uc_queues); + mtx_init(&umtxq_chains[i].uc_lock, "umtxq_lock", NULL, + MTX_DEF | MTX_DUPOK); + } +} + static struct umtx_q * umtx_lookup(struct thread *td, struct umtx *umtx) { @@ -75,9 +98,11 @@ struct umtx_q *uq; pid_t pid; + mtx_assert(UMTXQ_MUTEX(td, umtx), MA_OWNED); + pid = td->td_proc->p_pid; - head = &queues[UMTX_HASH(td->td_proc->p_pid, umtx)]; + head = &umtxq_chains[UMTX_HASH(td->td_proc->p_pid, umtx)].uc_queues; LIST_FOREACH(uq, head, uq_next) { if (uq->uq_pid == pid && uq->uq_umtx == umtx) @@ -102,16 +127,16 @@ if ((uq = umtx_lookup(td, umtx)) == NULL) { struct umtx_q *ins; - UMTX_UNLOCK(); + UMTX_UNLOCK(td, umtx); ins = malloc(sizeof(*uq), M_UMTX, M_ZERO | M_WAITOK); - UMTX_LOCK(); + UMTX_LOCK(td, umtx); /* * Some one else could have succeeded while we were blocked * waiting on memory. */ if ((uq = umtx_lookup(td, umtx)) == NULL) { - head = &queues[UMTX_HASH(pid, umtx)]; + head = &umtxq_chains[UMTX_HASH(pid, umtx)].uc_queues; uq = ins; uq->uq_pid = pid; uq->uq_umtx = umtx; @@ -148,7 +173,7 @@ struct umtx *umtx; intptr_t owner; intptr_t old; - int error; + int error = 0; uq = NULL; @@ -189,10 +214,16 @@ continue; } + /* + * If we caught a signal, we have retried and now + * exit immediately. + */ + if (error) + return (error); - UMTX_LOCK(); + UMTX_LOCK(td, umtx); uq = umtx_insert(td, umtx); - UMTX_UNLOCK(); + UMTX_UNLOCK(td, umtx); /* * Set the contested bit so that a release in user space @@ -205,9 +236,9 @@ /* The address was invalid. */ if (old == -1) { - UMTX_LOCK(); + UMTX_LOCK(td, umtx); umtx_remove(uq, td); - UMTX_UNLOCK(); + UMTX_UNLOCK(td, umtx); return (EFAULT); } @@ -216,24 +247,29 @@ * and we need to retry or we lost a race to the thread * unlocking the umtx. */ - PROC_LOCK(td->td_proc); + UMTX_LOCK(td, umtx); if (old == owner && (td->td_flags & TDF_UMTXWAKEUP) == 0) - error = msleep(td, &td->td_proc->p_mtx, + error = msleep(td, UMTX_MUTEX(td, umtx), td->td_priority | PCATCH, "umtx", 0); else error = 0; - mtx_lock_spin(&sched_lock); - td->td_flags &= ~TDF_UMTXWAKEUP; - mtx_unlock_spin(&sched_lock); - PROC_UNLOCK(td->td_proc); + umtx_remove(uq, td); + UMTX_UNLOCK(td, umtx); - UMTX_LOCK(); - umtx_remove(uq, td); - UMTX_UNLOCK(); + if (td->td_flags & TDF_UMTXWAKEUP) { + /* + * if we were resumed by umtx_unlock, we should retry + * to avoid a race. + */ + mtx_lock_spin(&sched_lock); + td->td_flags &= ~TDF_UMTXWAKEUP; + mtx_unlock_spin(&sched_lock); + continue; + } /* - * If we caught a signal we might have to retry or exit - * immediately. + * If we caught a signal without resumed by umtx_unlock, + * exit immediately. */ if (error) return (error); @@ -246,7 +282,7 @@ _umtx_unlock(struct thread *td, struct _umtx_unlock_args *uap) /* struct umtx *umtx */ { - struct thread *blocked; + struct thread *blocked, *blocked2; struct umtx *umtx; struct umtx_q *uq; intptr_t owner; @@ -276,12 +312,17 @@ * there is zero or one thread only waiting for it. * Otherwise, it must be marked as contested. */ - UMTX_LOCK(); + UMTX_LOCK(td, umtx); uq = umtx_lookup(td, umtx); if (uq == NULL || (uq != NULL && (blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL && TAILQ_NEXT(blocked, td_umtx) == NULL)) { - UMTX_UNLOCK(); + if (blocked) { + mtx_lock_spin(&sched_lock); + blocked->td_flags |= TDF_UMTXWAKEUP; + mtx_unlock_spin(&sched_lock); + } + UMTX_UNLOCK(td, umtx); old = casuptr((intptr_t *)&umtx->u_owner, owner, UMTX_UNOWNED); if (old == -1) @@ -293,19 +334,25 @@ * Recheck the umtx queue to make sure another thread * didn't put itself on it after it was unlocked. */ - UMTX_LOCK(); + UMTX_LOCK(td, umtx); uq = umtx_lookup(td, umtx); if (uq != NULL && - ((blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL && + ((blocked2 = TAILQ_FIRST(&uq->uq_tdq)) != NULL && TAILQ_NEXT(blocked, td_umtx) != NULL)) { - UMTX_UNLOCK(); + if (blocked == NULL) { + mtx_lock_spin(&sched_lock); + blocked2->td_flags |= TDF_UMTXWAKEUP; + mtx_unlock_spin(&sched_lock); + blocked = blocked2; + } + UMTX_UNLOCK(td, umtx); old = casuptr((intptr_t *)&umtx->u_owner, UMTX_UNOWNED, UMTX_CONTESTED); } else { - UMTX_UNLOCK(); + UMTX_UNLOCK(td, umtx); } } else { - UMTX_UNLOCK(); + UMTX_UNLOCK(td, umtx); old = casuptr((intptr_t *)&umtx->u_owner, owner, UMTX_CONTESTED); if (old != -1 && old != owner) @@ -318,14 +365,7 @@ /* * If there is a thread waiting on the umtx, wake it up. */ - if (blocked != NULL) { - PROC_LOCK(blocked->td_proc); - mtx_lock_spin(&sched_lock); - blocked->td_flags |= TDF_UMTXWAKEUP; - mtx_unlock_spin(&sched_lock); - PROC_UNLOCK(blocked->td_proc); + if (blocked != NULL) wakeup(blocked); - } - return (0); } From owner-p4-projects@FreeBSD.ORG Sun Nov 14 05:17:30 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 843A916A4D1; Sun, 14 Nov 2004 05:17:30 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6083716A4CE for ; Sun, 14 Nov 2004 05:17:30 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3DE4443D1D for ; Sun, 14 Nov 2004 05:17:30 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAE5HUYS056662 for ; Sun, 14 Nov 2004 05:17:30 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAE5HTeY056659 for perforce@freebsd.org; Sun, 14 Nov 2004 05:17:29 GMT (envelope-from davidxu@freebsd.org) Date: Sun, 14 Nov 2004 05:17:29 GMT Message-Id: <200411140517.iAE5HTeY056659@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65075 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 05:17:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=65075 Change 65075 by davidxu@davidxu_alona on 2004/11/14 05:16:31 Add a missed change. Affected files ... .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#5 edit Differences ... ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#5 (text+ko) ==== @@ -338,7 +338,7 @@ uq = umtx_lookup(td, umtx); if (uq != NULL && ((blocked2 = TAILQ_FIRST(&uq->uq_tdq)) != NULL && - TAILQ_NEXT(blocked, td_umtx) != NULL)) { + TAILQ_NEXT(blocked2, td_umtx) != NULL)) { if (blocked == NULL) { mtx_lock_spin(&sched_lock); blocked2->td_flags |= TDF_UMTXWAKEUP; From owner-p4-projects@FreeBSD.ORG Sun Nov 14 05:28:44 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 447C516A4D1; Sun, 14 Nov 2004 05:28:44 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 210B516A4CE for ; Sun, 14 Nov 2004 05:28:44 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1526543D31 for ; Sun, 14 Nov 2004 05:28:44 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAE5Shhq056955 for ; Sun, 14 Nov 2004 05:28:43 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAE5Shu7056952 for perforce@freebsd.org; Sun, 14 Nov 2004 05:28:43 GMT (envelope-from davidxu@freebsd.org) Date: Sun, 14 Nov 2004 05:28:43 GMT Message-Id: <200411140528.iAE5Shu7056952@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65076 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 05:28:44 -0000 http://perforce.freebsd.org/chv.cgi?CH=65076 Change 65076 by davidxu@davidxu_alona on 2004/11/14 05:28:02 Mark TDF_UMTXWAKEUP in else case. Affected files ... .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_thr.c#6 edit .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#6 edit Differences ... ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_thr.c#6 (text+ko) ==== ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#6 (text+ko) ==== @@ -352,6 +352,11 @@ UMTX_UNLOCK(td, umtx); } } else { + if (blocked != NULL) { + mtx_lock_spin(&sched_lock); + blocked->td_flags |= TDF_UMTXWAKEUP; + mtx_unlock_spin(&sched_lock); + } UMTX_UNLOCK(td, umtx); old = casuptr((intptr_t *)&umtx->u_owner, owner, UMTX_CONTESTED); From owner-p4-projects@FreeBSD.ORG Sun Nov 14 06:11:37 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1ED0E16A4D1; Sun, 14 Nov 2004 06:11:37 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id EA67416A4CE for ; Sun, 14 Nov 2004 06:11:36 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C866943D1F for ; Sun, 14 Nov 2004 06:11:36 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAE6Ba7I058192 for ; Sun, 14 Nov 2004 06:11:36 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAE6Ba0t058189 for perforce@freebsd.org; Sun, 14 Nov 2004 06:11:36 GMT (envelope-from sam@freebsd.org) Date: Sun, 14 Nov 2004 06:11:36 GMT Message-Id: <200411140611.iAE6Ba0t058189@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65078 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 06:11:37 -0000 http://perforce.freebsd.org/chv.cgi?CH=65078 Change 65078 by sam@sam_ebb on 2004/11/14 06:11:05 force default tx q parameters to be used (until we bring in wme support) Affected files ... .. //depot/projects/wifi/sys/dev/ath/if_ath.c#21 edit Differences ... ==== //depot/projects/wifi/sys/dev/ath/if_ath.c#21 (text+ko) ==== @@ -2549,6 +2549,9 @@ } memset(&qi, 0, sizeof(qi)); qi.tqi_subtype = haltype; + qi.tqi_aifs = HAL_TXQ_USEDEFAULT; + qi.tqi_cwmin = HAL_TXQ_USEDEFAULT; + qi.tqi_cwmax = HAL_TXQ_USEDEFAULT; /* * Enable interrupts only for EOL and DESC conditions. * We mark tx descriptors to receive a DESC interrupt From owner-p4-projects@FreeBSD.ORG Sun Nov 14 06:13:40 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0448816A4D1; Sun, 14 Nov 2004 06:13:40 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D304916A4CE for ; Sun, 14 Nov 2004 06:13:39 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id A90B343D31 for ; Sun, 14 Nov 2004 06:13:39 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAE6DdKN058250 for ; Sun, 14 Nov 2004 06:13:39 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAE6Dd7U058247 for perforce@freebsd.org; Sun, 14 Nov 2004 06:13:39 GMT (envelope-from sam@freebsd.org) Date: Sun, 14 Nov 2004 06:13:39 GMT Message-Id: <200411140613.iAE6Dd7U058247@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65079 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 06:13:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=65079 Change 65079 by sam@sam_ebb on 2004/11/14 06:12:54 improve the meaningfulness of rssi estimates for hostap, ibss, and ahdemo modes Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211_node.c#14 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211_node.c#14 (text+ko) ==== @@ -1571,42 +1571,54 @@ ieee80211_getrssi(struct ieee80211com *ic) { #define NZ(x) ((x) == 0 ? 1 : (x)) - u_int8_t rssi; + struct ieee80211_node_table *nt = ic->ic_sta; + u_int32_t rssi_samples, rssi_total; + struct ieee80211_node *ni; + rssi_total = 0; + rssi_samples = 0; switch (ic->ic_opmode) { - case IEEE80211_M_IBSS: - case IEEE80211_M_AHDEMO: - case IEEE80211_M_HOSTAP: { - u_int32_t rssi_samples, rssi_total; - struct ieee80211_node_table *nt = ic->ic_sta; - - /* average stats from all neighbors */ - rssi_samples = 0; - rssi_total = 0; - if (nt != NULL) { - struct ieee80211_node *ni; - /* XXX locking */ - TAILQ_FOREACH(ni, &ic->ic_sta->nt_node, ni_list) - if (ic->ic_opmode != IEEE80211_M_HOSTAP || - IEEE80211_AID(ni->ni_associd) != 0) { - rssi_samples++; - rssi_total += ic->ic_node_getrssi(ni); - } + case IEEE80211_M_IBSS: /* average of all ibss neighbors */ + nt = ic->ic_sta; + if (nt == NULL) + break; + /* XXX locking */ + TAILQ_FOREACH(ni, &ic->ic_sta->nt_node, ni_list) + if (ni->ni_capinfo & IEEE80211_CAPINFO_IBSS) { + rssi_samples++; + rssi_total += ic->ic_node_getrssi(ni); + } + break; + case IEEE80211_M_AHDEMO: /* average of all neighbors */ + nt = ic->ic_sta; + if (nt == NULL) + break; + /* XXX locking */ + TAILQ_FOREACH(ni, &ic->ic_sta->nt_node, ni_list) { + rssi_samples++; + rssi_total += ic->ic_node_getrssi(ni); } - rssi = rssi_total / NZ(rssi_samples); + break; + case IEEE80211_M_HOSTAP: /* average of all associated stations */ + nt = ic->ic_sta; + if (nt == NULL) + break; + /* XXX locking */ + TAILQ_FOREACH(ni, &ic->ic_sta->nt_node, ni_list) + if (IEEE80211_AID(ni->ni_associd) != 0) { + rssi_samples++; + rssi_total += ic->ic_node_getrssi(ni); + } break; - } - case IEEE80211_M_STA: - case IEEE80211_M_MONITOR: + case IEEE80211_M_MONITOR: /* XXX */ + case IEEE80211_M_STA: /* use stats from associated ap */ default: - /* use stats from associated ap */ if (ic->ic_bss != NULL) - rssi = ic->ic_node_getrssi(ic->ic_bss); - else - rssi = 0; + rssi_total = ic->ic_node_getrssi(ic->ic_bss); + rssi_samples = 1; break; } - return rssi; + return rssi_total / NZ(rssi_samples); #undef NZ } From owner-p4-projects@FreeBSD.ORG Sun Nov 14 06:17:45 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 65E4516A4D1; Sun, 14 Nov 2004 06:17:45 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 433C416A4CE for ; Sun, 14 Nov 2004 06:17:45 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1A70643D49 for ; Sun, 14 Nov 2004 06:17:45 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAE6Hi3n058411 for ; Sun, 14 Nov 2004 06:17:45 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAE6Hi0q058408 for perforce@freebsd.org; Sun, 14 Nov 2004 06:17:44 GMT (envelope-from sam@freebsd.org) Date: Sun, 14 Nov 2004 06:17:44 GMT Message-Id: <200411140617.iAE6Hi0q058408@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65080 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 06:17:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=65080 Change 65080 by sam@sam_ebb on 2004/11/14 06:17:12 Correct ibss setup: o set current operating mode when starting up so 11g operating parameters are set correctly o setup the basic rates when operating in 11g or 11b o setup ERP operation properly While here cleanup some harmless cruft (like not marking SIBSS when operating in hostap mode). Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211_node.c#15 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211_node.c#15 (text+ko) ==== @@ -366,26 +366,52 @@ } ni = ic->ic_bss; - ic->ic_flags |= IEEE80211_F_SIBSS; - ieee80211_set_chan(ic, ni, chan); IEEE80211_ADDR_COPY(ni->ni_macaddr, ic->ic_myaddr); IEEE80211_ADDR_COPY(ni->ni_bssid, ic->ic_myaddr); - if (ic->ic_opmode == IEEE80211_M_IBSS) - ni->ni_bssid[0] |= 0x02; /* local bit for IBSS */ ni->ni_esslen = ic->ic_des_esslen; memcpy(ni->ni_essid, ic->ic_des_essid, ni->ni_esslen); ni->ni_rssi = 0; ni->ni_rstamp = 0; ni->ni_tstamp.tsf = 0; ni->ni_intval = ic->ic_lintval; - ni->ni_capinfo = IEEE80211_CAPINFO_IBSS; + ni->ni_capinfo = 0; + ni->ni_erp = 0; if (ic->ic_flags & IEEE80211_F_PRIVACY) ni->ni_capinfo |= IEEE80211_CAPINFO_PRIVACY; if (ic->ic_phytype == IEEE80211_T_FH) { ni->ni_fhdwell = 200; /* XXX */ ni->ni_fhindex = 1; } - ni->ni_erp = 0; + if (ic->ic_opmode == IEEE80211_M_IBSS) { + ic->ic_flags |= IEEE80211_F_SIBSS; + ni->ni_capinfo |= IEEE80211_CAPINFO_IBSS; /* XXX */ + ni->ni_bssid[0] |= 0x02; /* local bit for IBSS */ + } + /* + * Fix the channel and related attributes. + */ + ieee80211_set_chan(ic, ni, chan); + ic->ic_curmode = ieee80211_chan2mode(ic, chan); + /* + * Do mode-specific rate setup. + */ + if (ic->ic_curmode == IEEE80211_MODE_11G) { + /* + * Use a mixed 11b/11g rate set. + */ + ieee80211_set11gbasicrates(&ni->ni_rates, IEEE80211_MODE_11G); + } else if (ic->ic_curmode == IEEE80211_MODE_11B) { + /* + * Force pure 11b rate set. + */ + ieee80211_set11gbasicrates(&ni->ni_rates, IEEE80211_MODE_11B); + } + /* + * Set the erp state (mostly the slot time) to deal with + * the auto-select case; this should be redundant if the + * mode is locked. + */ + ieee80211_reset_erp(ic); ieee80211_new_state(ic, IEEE80211_S_RUN, -1); } From owner-p4-projects@FreeBSD.ORG Sun Nov 14 06:27:50 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A05B816A4D1; Sun, 14 Nov 2004 06:27:50 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from green.homeunix.org (freefall.freebsd.org [216.136.204.21]) by hub.freebsd.org (Postfix) with ESMTP id 25D9316A4CE; Sun, 14 Nov 2004 06:27:50 +0000 (GMT) Received: from green.homeunix.org (green@localhost [127.0.0.1]) by green.homeunix.org (8.13.1/8.13.1) with ESMTP id iAE6RnK3025008; Sun, 14 Nov 2004 01:27:49 -0500 (EST) (envelope-from green@green.homeunix.org) Received: (from green@localhost) by green.homeunix.org (8.13.1/8.13.1/Submit) id iAE6Rmmu025007; Sun, 14 Nov 2004 01:27:48 -0500 (EST) (envelope-from green) Date: Sun, 14 Nov 2004 01:27:48 -0500 From: Brian Fundakowski Feldman To: David Xu Message-ID: <20041114062748.GH997@green.homeunix.org> References: <200411140513.iAE5DOTv056478@repoman.freebsd.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <200411140513.iAE5DOTv056478@repoman.freebsd.org> User-Agent: Mutt/1.5.6i cc: Perforce Change Reviews Subject: Re: PERFORCE change 65074 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 06:27:51 -0000 On Sun, Nov 14, 2004 at 05:13:24AM +0000, David Xu wrote: > http://perforce.freebsd.org/chv.cgi?CH=65074 > > Change 65074 by davidxu@davidxu_alona on 2004/11/14 05:12:40 > > 1. Fix a race between signal and umtx_unlock. a waiter > may be resumed by signal and left or exited, heavily > loaded test causes kernel to crash. > 2. Use distributed queue locks instead of single giant > lock. This sounds like it could be why recently valgrind has grown broken, and is now entirely non-working and someimes crashes the system? -- Brian Fundakowski Feldman \'[ FreeBSD ]''''''''''\ <> green@FreeBSD.org \ The Power to Serve! \ Opinions expressed are my own. \,,,,,,,,,,,,,,,,,,,,,,\ From owner-p4-projects@FreeBSD.ORG Sun Nov 14 10:20:46 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B2E7A16A4D1; Sun, 14 Nov 2004 10:20:45 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5378516A4CE for ; Sun, 14 Nov 2004 10:20:45 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id F0DBE43D54 for ; Sun, 14 Nov 2004 10:20:44 +0000 (GMT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAEAKiwh073010 for ; Sun, 14 Nov 2004 10:20:44 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAEAKh17073007 for perforce@freebsd.org; Sun, 14 Nov 2004 10:20:43 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 14 Nov 2004 10:20:43 GMT Message-Id: <200411141020.iAEAKh17073007@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Subject: PERFORCE change 65085 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 10:20:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=65085 Change 65085 by rwatson@rwatson_zoo on 2004/11/14 10:19:59 Integrate netperf_socket up to @64998: - busdma uses zone-like mechanism for bounce buffers. - many an armism - more vmisms - if_gx removed - network drivers less verbose about link state changes - if_em vlan fix for promiscuous mode - direct device access from file descriptor now supported - sf_buf_alloc() interface can now take a sleep argument - atomic operation optimization for up - critical section KTR tracing - system v ipc ABI cleanup - c99 sparse structure initialization for protocols/domains - fdclose() centralized - unifdef ALTQ if_var.h - in_addprefix(), in_scrubprefix(). - loop back TCP input locking fixes to make sure info lock is held over use of pcb. - kame ipsec tcp signatures - loop back of NFS server locking fixes relating to nfsrv_access() - if_sf polling support - if_xl xl_watchdog queuing fix Affected files ... .. //depot/projects/netperf_socket/sys/alpha/conf/GENERIC#13 integrate .. //depot/projects/netperf_socket/sys/alpha/conf/NOTES#4 integrate .. //depot/projects/netperf_socket/sys/amd64/amd64/busdma_machdep.c#7 integrate .. //depot/projects/netperf_socket/sys/arm/arm/bcopy_page.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/bcopyinout.S#3 integrate .. //depot/projects/netperf_socket/sys/arm/arm/bcopyinout_xscale.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/blockio.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/bus_space_asm_generic.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/copystr.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc.c#5 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm_arm3.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm_arm67.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm_arm7tdmi.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm_arm8.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm_arm9.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm_armv4.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm_ixp12x0.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm_sa1.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm_sa11x0.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/cpufunc_asm_xscale.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/fiq_subr.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/fusu.S#4 integrate .. //depot/projects/netperf_socket/sys/arm/arm/genassym.c#3 integrate .. //depot/projects/netperf_socket/sys/arm/arm/in_cksum_arm.S#3 integrate .. //depot/projects/netperf_socket/sys/arm/arm/intr.c#4 integrate .. //depot/projects/netperf_socket/sys/arm/arm/irq_dispatch.S#3 integrate .. //depot/projects/netperf_socket/sys/arm/arm/locore.S#5 integrate .. //depot/projects/netperf_socket/sys/arm/arm/mem.c#1 branch .. //depot/projects/netperf_socket/sys/arm/arm/nexus_io_asm.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/pmap.c#11 integrate .. //depot/projects/netperf_socket/sys/arm/arm/setcpsr.S#2 integrate .. //depot/projects/netperf_socket/sys/arm/arm/support.S#5 integrate .. //depot/projects/netperf_socket/sys/arm/arm/swtch.S#4 integrate .. //depot/projects/netperf_socket/sys/arm/arm/vm_machdep.c#6 integrate .. //depot/projects/netperf_socket/sys/arm/conf/IQ31244#3 integrate .. //depot/projects/netperf_socket/sys/arm/conf/SIMICS#5 integrate .. //depot/projects/netperf_socket/sys/arm/include/asm.h#3 integrate .. //depot/projects/netperf_socket/sys/arm/include/memdev.h#1 branch .. //depot/projects/netperf_socket/sys/arm/include/pmap.h#5 integrate .. //depot/projects/netperf_socket/sys/arm/xscale/i80321/iq31244_machdep.c#3 integrate .. //depot/projects/netperf_socket/sys/boot/common/commands.c#3 integrate .. //depot/projects/netperf_socket/sys/boot/forth/loader.conf#13 integrate .. //depot/projects/netperf_socket/sys/boot/forth/loader.conf.5#5 integrate .. //depot/projects/netperf_socket/sys/boot/i386/libi386/biossmap.c#2 integrate .. //depot/projects/netperf_socket/sys/compat/linprocfs/linprocfs.c#5 integrate .. //depot/projects/netperf_socket/sys/compat/svr4/svr4_filio.c#3 integrate .. //depot/projects/netperf_socket/sys/conf/NOTES#45 integrate .. //depot/projects/netperf_socket/sys/conf/files#56 integrate .. //depot/projects/netperf_socket/sys/conf/files.i386#30 integrate .. //depot/projects/netperf_socket/sys/conf/files.sparc64#12 integrate .. //depot/projects/netperf_socket/sys/conf/kern.post.mk#10 integrate .. //depot/projects/netperf_socket/sys/conf/options#33 integrate .. //depot/projects/netperf_socket/sys/conf/options.arm#3 integrate .. //depot/projects/netperf_socket/sys/contrib/pf/net/pf.c#16 integrate .. //depot/projects/netperf_socket/sys/dev/acpica/acpi_pcib.c#12 integrate .. //depot/projects/netperf_socket/sys/dev/acpica/acpi_pcib_acpi.c#12 integrate .. //depot/projects/netperf_socket/sys/dev/acpica/acpi_snc.c#1 branch .. //depot/projects/netperf_socket/sys/dev/acpica/acpi_video.c#9 integrate .. //depot/projects/netperf_socket/sys/dev/aha/aha_isa.c#3 integrate .. //depot/projects/netperf_socket/sys/dev/ata/ata-card.c#6 integrate .. //depot/projects/netperf_socket/sys/dev/bge/if_bge.c#13 integrate .. //depot/projects/netperf_socket/sys/dev/ed/if_ed.c#10 integrate .. //depot/projects/netperf_socket/sys/dev/ed/if_ed_cbus.c#2 integrate .. //depot/projects/netperf_socket/sys/dev/em/if_em.c#13 integrate .. //depot/projects/netperf_socket/sys/dev/em/if_em.h#4 integrate .. //depot/projects/netperf_socket/sys/dev/esp/esp_sbus.c#7 integrate .. //depot/projects/netperf_socket/sys/dev/esp/lsi64854.c#3 delete .. //depot/projects/netperf_socket/sys/dev/esp/lsi64854reg.h#2 delete .. //depot/projects/netperf_socket/sys/dev/esp/lsi64854var.h#3 delete .. //depot/projects/netperf_socket/sys/dev/fdc/fdc.c#14 integrate .. //depot/projects/netperf_socket/sys/dev/firewire/fwmem.c#5 integrate .. //depot/projects/netperf_socket/sys/dev/gx/if_gx.c#6 delete .. //depot/projects/netperf_socket/sys/dev/gx/if_gxreg.h#2 delete .. //depot/projects/netperf_socket/sys/dev/gx/if_gxvar.h#2 delete .. //depot/projects/netperf_socket/sys/dev/lge/if_lge.c#9 integrate .. //depot/projects/netperf_socket/sys/dev/md/md.c#25 integrate .. //depot/projects/netperf_socket/sys/dev/nge/if_nge.c#15 integrate .. //depot/projects/netperf_socket/sys/dev/pbio/pbio.c#2 integrate .. //depot/projects/netperf_socket/sys/dev/pci/pci.c#13 integrate .. //depot/projects/netperf_socket/sys/dev/sound/pci/maestro.c#5 integrate .. //depot/projects/netperf_socket/sys/dev/sound/pci/maestro_reg.h#2 integrate .. //depot/projects/netperf_socket/sys/dev/usb/ehci.c#11 integrate .. //depot/projects/netperf_socket/sys/dev/usb/ohci.c#5 integrate .. //depot/projects/netperf_socket/sys/dev/usb/uhci.c#7 integrate .. //depot/projects/netperf_socket/sys/dev/usb/uhub.c#9 integrate .. //depot/projects/netperf_socket/sys/dev/usb/umass.c#13 integrate .. //depot/projects/netperf_socket/sys/dev/usb/usb_port.h#4 integrate .. //depot/projects/netperf_socket/sys/fs/autofs/autofs.h#5 delete .. //depot/projects/netperf_socket/sys/fs/autofs/autofs_util.c#5 delete .. //depot/projects/netperf_socket/sys/fs/autofs/autofs_vfsops.c#5 delete .. //depot/projects/netperf_socket/sys/fs/autofs/autofs_vnops.c#5 delete .. //depot/projects/netperf_socket/sys/fs/devfs/devfs_vfsops.c#5 integrate .. //depot/projects/netperf_socket/sys/fs/devfs/devfs_vnops.c#8 integrate .. //depot/projects/netperf_socket/sys/fs/fdescfs/fdesc_vfsops.c#7 integrate .. //depot/projects/netperf_socket/sys/fs/hpfs/hpfs_vfsops.c#6 integrate .. //depot/projects/netperf_socket/sys/fs/msdosfs/msdosfs_vfsops.c#11 integrate .. //depot/projects/netperf_socket/sys/fs/ntfs/ntfs_vfsops.c#7 integrate .. //depot/projects/netperf_socket/sys/fs/nullfs/null_vfsops.c#6 integrate .. //depot/projects/netperf_socket/sys/fs/nwfs/nwfs_vfsops.c#4 integrate .. //depot/projects/netperf_socket/sys/fs/portalfs/portal_vfsops.c#6 integrate .. //depot/projects/netperf_socket/sys/fs/smbfs/smbfs_vfsops.c#5 integrate .. //depot/projects/netperf_socket/sys/fs/umapfs/umap_vfsops.c#5 integrate .. //depot/projects/netperf_socket/sys/fs/unionfs/union_vfsops.c#6 integrate .. //depot/projects/netperf_socket/sys/geom/geom.h#9 integrate .. //depot/projects/netperf_socket/sys/geom/geom_event.c#6 integrate .. //depot/projects/netperf_socket/sys/geom/mirror/g_mirror.c#15 integrate .. //depot/projects/netperf_socket/sys/geom/raid3/g_raid3.c#9 integrate .. //depot/projects/netperf_socket/sys/gnu/ext2fs/ext2_mount.h#6 integrate .. //depot/projects/netperf_socket/sys/gnu/ext2fs/ext2_vfsops.c#11 integrate .. //depot/projects/netperf_socket/sys/i386/acpica/acpi_asus.c#11 integrate .. //depot/projects/netperf_socket/sys/i386/acpica/acpi_panasonic.c#5 integrate .. //depot/projects/netperf_socket/sys/i386/i386/autoconf.c#6 integrate .. //depot/projects/netperf_socket/sys/i386/i386/busdma_machdep.c#7 integrate .. //depot/projects/netperf_socket/sys/i386/i386/vm_machdep.c#16 integrate .. //depot/projects/netperf_socket/sys/i386/include/atomic.h#3 integrate .. //depot/projects/netperf_socket/sys/i386/isa/pbio.c#3 delete .. //depot/projects/netperf_socket/sys/isofs/cd9660/cd9660_vfsops.c#10 integrate .. //depot/projects/netperf_socket/sys/kern/init_main.c#11 integrate .. //depot/projects/netperf_socket/sys/kern/kern_descrip.c#21 integrate .. //depot/projects/netperf_socket/sys/kern/kern_environment.c#4 integrate .. //depot/projects/netperf_socket/sys/kern/kern_exec.c#18 integrate .. //depot/projects/netperf_socket/sys/kern/kern_fork.c#20 integrate .. //depot/projects/netperf_socket/sys/kern/kern_mac.c#6 integrate .. //depot/projects/netperf_socket/sys/kern/kern_shutdown.c#19 integrate .. //depot/projects/netperf_socket/sys/kern/kern_subr.c#9 integrate .. //depot/projects/netperf_socket/sys/kern/kern_switch.c#17 integrate .. //depot/projects/netperf_socket/sys/kern/sched_ule.c#24 integrate .. //depot/projects/netperf_socket/sys/kern/subr_param.c#7 integrate .. //depot/projects/netperf_socket/sys/kern/subr_witness.c#13 integrate .. //depot/projects/netperf_socket/sys/kern/sys_pipe.c#8 integrate .. //depot/projects/netperf_socket/sys/kern/sysv_msg.c#3 integrate .. //depot/projects/netperf_socket/sys/kern/sysv_sem.c#4 integrate .. //depot/projects/netperf_socket/sys/kern/sysv_shm.c#8 integrate .. //depot/projects/netperf_socket/sys/kern/tty.c#18 integrate .. //depot/projects/netperf_socket/sys/kern/uipc_cow.c#4 integrate .. //depot/projects/netperf_socket/sys/kern/uipc_domain.c#8 integrate .. //depot/projects/netperf_socket/sys/kern/uipc_socket.c#43 integrate .. //depot/projects/netperf_socket/sys/kern/uipc_syscalls.c#29 integrate .. //depot/projects/netperf_socket/sys/kern/uipc_usrreq.c#28 integrate .. //depot/projects/netperf_socket/sys/kern/vfs_mount.c#17 integrate .. //depot/projects/netperf_socket/sys/kern/vfs_subr.c#27 integrate .. //depot/projects/netperf_socket/sys/kern/vfs_syscalls.c#15 integrate .. //depot/projects/netperf_socket/sys/kern/vfs_vnops.c#13 integrate .. //depot/projects/netperf_socket/sys/libkern/arm/divsi3.S#3 integrate .. //depot/projects/netperf_socket/sys/libkern/arm/ffs.S#2 integrate .. //depot/projects/netperf_socket/sys/modules/Makefile#23 integrate .. //depot/projects/netperf_socket/sys/modules/acpi/Makefile#5 integrate .. //depot/projects/netperf_socket/sys/modules/acpi/acpi_snc/Makefile#1 branch .. //depot/projects/netperf_socket/sys/modules/autofs/Makefile#3 delete .. //depot/projects/netperf_socket/sys/modules/esp/Makefile#3 integrate .. //depot/projects/netperf_socket/sys/modules/gx/Makefile#2 delete .. //depot/projects/netperf_socket/sys/net/if_ppp.c#9 integrate .. //depot/projects/netperf_socket/sys/net/if_pppvar.h#2 integrate .. //depot/projects/netperf_socket/sys/net/if_sl.c#14 integrate .. //depot/projects/netperf_socket/sys/net/if_var.h#22 integrate .. //depot/projects/netperf_socket/sys/net/ppp_tty.c#5 integrate .. //depot/projects/netperf_socket/sys/net/raw_usrreq.c#8 integrate .. //depot/projects/netperf_socket/sys/net/rtsock.c#16 integrate .. //depot/projects/netperf_socket/sys/netatalk/ddp_usrreq.c#12 integrate .. //depot/projects/netperf_socket/sys/netatm/atm_aal5.c#3 integrate .. //depot/projects/netperf_socket/sys/netatm/atm_usrreq.c#2 integrate .. //depot/projects/netperf_socket/sys/netgraph/bluetooth/socket/ng_btsocket.c#4 integrate .. //depot/projects/netperf_socket/sys/netgraph/ng_device.c#9 integrate .. //depot/projects/netperf_socket/sys/netgraph/ng_socket.c#8 integrate .. //depot/projects/netperf_socket/sys/netinet/in.c#6 integrate .. //depot/projects/netperf_socket/sys/netinet/ip_divert.c#17 integrate .. //depot/projects/netperf_socket/sys/netinet/ip_fastfwd.c#14 integrate .. //depot/projects/netperf_socket/sys/netinet/raw_ip.c#17 integrate .. //depot/projects/netperf_socket/sys/netinet/tcp_input.c#21 integrate .. //depot/projects/netperf_socket/sys/netinet/tcp_subr.c#24 integrate .. //depot/projects/netperf_socket/sys/netinet/tcp_usrreq.c#16 integrate .. //depot/projects/netperf_socket/sys/netinet/udp_usrreq.c#18 integrate .. //depot/projects/netperf_socket/sys/netinet6/ah_core.c#3 integrate .. //depot/projects/netperf_socket/sys/netinet6/raw_ip6.c#9 integrate .. //depot/projects/netperf_socket/sys/netinet6/udp6_usrreq.c#8 integrate .. //depot/projects/netperf_socket/sys/netipsec/keysock.c#3 integrate .. //depot/projects/netperf_socket/sys/netipx/ipx_usrreq.c#5 integrate .. //depot/projects/netperf_socket/sys/netipx/spx_usrreq.c#9 integrate .. //depot/projects/netperf_socket/sys/netkey/key.c#6 integrate .. //depot/projects/netperf_socket/sys/netkey/key.h#2 integrate .. //depot/projects/netperf_socket/sys/netkey/keydb.h#2 integrate .. //depot/projects/netperf_socket/sys/netkey/keysock.c#4 integrate .. //depot/projects/netperf_socket/sys/netnatm/natm.c#7 integrate .. //depot/projects/netperf_socket/sys/netsmb/smb_dev.c#5 integrate .. //depot/projects/netperf_socket/sys/nfs4client/nfs4_vfsops.c#9 integrate .. //depot/projects/netperf_socket/sys/nfsclient/nfs_vfsops.c#11 integrate .. //depot/projects/netperf_socket/sys/nfsserver/nfs_serv.c#12 integrate .. //depot/projects/netperf_socket/sys/pc98/conf/NOTES#18 integrate .. //depot/projects/netperf_socket/sys/pc98/pc98/fd.c#16 integrate .. //depot/projects/netperf_socket/sys/pci/if_de.c#11 integrate .. //depot/projects/netperf_socket/sys/pci/if_sf.c#10 integrate .. //depot/projects/netperf_socket/sys/pci/if_sfreg.h#2 integrate .. //depot/projects/netperf_socket/sys/pci/if_xl.c#13 integrate .. //depot/projects/netperf_socket/sys/sparc64/sbus/lsi64854.c#2 integrate .. //depot/projects/netperf_socket/sys/sparc64/sparc64/vm_machdep.c#10 integrate .. //depot/projects/netperf_socket/sys/sys/_types.h#6 integrate .. //depot/projects/netperf_socket/sys/sys/conf.h#12 integrate .. //depot/projects/netperf_socket/sys/sys/fdcio.h#4 integrate .. //depot/projects/netperf_socket/sys/sys/file.h#4 integrate .. //depot/projects/netperf_socket/sys/sys/filedesc.h#5 integrate .. //depot/projects/netperf_socket/sys/sys/kernel.h#8 integrate .. //depot/projects/netperf_socket/sys/sys/ktr.h#4 integrate .. //depot/projects/netperf_socket/sys/sys/mac_policy.h#7 integrate .. //depot/projects/netperf_socket/sys/sys/msg.h#2 integrate .. //depot/projects/netperf_socket/sys/sys/pbioio.h#2 delete .. //depot/projects/netperf_socket/sys/sys/protosw.h#4 integrate .. //depot/projects/netperf_socket/sys/sys/resource.h#6 integrate .. //depot/projects/netperf_socket/sys/sys/rman.h#5 integrate .. //depot/projects/netperf_socket/sys/sys/sem.h#2 integrate .. //depot/projects/netperf_socket/sys/sys/sf_buf.h#4 integrate .. //depot/projects/netperf_socket/sys/sys/shm.h#2 integrate .. //depot/projects/netperf_socket/sys/sys/vnode.h#13 integrate .. //depot/projects/netperf_socket/sys/ufs/ffs/ffs_vfsops.c#13 integrate .. //depot/projects/netperf_socket/sys/vm/vm_object.c#13 integrate .. //depot/projects/netperf_socket/sys/vm/vm_pager.h#4 integrate .. //depot/projects/netperf_socket/sys/vm/vm_param.h#4 integrate Differences ... ==== //depot/projects/netperf_socket/sys/alpha/conf/GENERIC#13 (text+ko) ==== @@ -18,7 +18,7 @@ # # For hardware specific information check HARDWARE.TXT # -# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.180 2004/11/02 20:57:19 andre Exp $ +# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.181 2004/11/09 22:23:34 wilko Exp $ machine alpha cpu EV4 @@ -32,7 +32,6 @@ # Platforms supported options API_UP1000 # UP1000, UP1100 (Nautilus) -options DEC_AXPPCI_33 # UDB, Multia, AXPpci33, NoName options DEC_EB164 # EB164, PC164, PC164LX, PC164SX options DEC_EB64PLUS # EB64+, AlphaPC64, Aspen Alpine, etc options DEC_2100_A50 # AlphaStation 200, 250, 255, 400 @@ -41,8 +40,6 @@ options DEC_ST550 # Personal Workstation 433, 500, 600 options DEC_ST6600 # XP1000, DP264, DS20, DS10, family options DEC_1000A # AlphaServer 1000, 1000A, 800 -# TurboLaser support is broken -# options DEC_KN8AE # AlphaServer 8200/8400 (Turbolaser) options DEC_KN300 # AlphaServer 4100 (Rawhide), # AlphaServer 1200 (Tincup) ==== //depot/projects/netperf_socket/sys/alpha/conf/NOTES#4 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/alpha/conf/NOTES,v 1.155 2004/08/28 21:47:24 wilko Exp $ +# $FreeBSD: src/sys/alpha/conf/NOTES,v 1.156 2004/11/09 22:24:47 wilko Exp $ # # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. @@ -27,7 +27,6 @@ # PLATFORM OPTIONS options API_UP1000 # UP1000, UP1100 (Nautilus) -options DEC_AXPPCI_33 # UDB, Multia, AXPpci33, NoName options DEC_EB164 # EB164, PC164, PC164LX, PC164SX options DEC_EB64PLUS # EB64+, AlphaPC64, Aspen Alpine, etc options DEC_2100_A50 # AlphaStation 200, 250, 255, 400 @@ -36,8 +35,6 @@ options DEC_ST550 # Personal Workstation 433, 500, 600 options DEC_ST6600 # XP1000, DP264, DS20, DS10, family options DEC_1000A # AlphaServer 1000, 1000A, 800 -# TurboLaser support is broken -# options DEC_KN8AE # AlphaServer 8200/8400 (Turbolaser) options DEC_KN300 # AlphaServer 4100 (Rawhide), # AlphaServer 1200 (Tincup) ==== //depot/projects/netperf_socket/sys/amd64/amd64/busdma_machdep.c#7 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.59 2004/11/05 18:24:01 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.60 2004/11/10 03:49:24 scottl Exp $"); #include #include @@ -52,6 +52,8 @@ #define MAX_BPAGES 512 +struct bounce_zone; + struct bus_dma_tag { bus_dma_tag_t parent; bus_size_t alignment; @@ -69,6 +71,7 @@ bus_dma_lock_t *lockfunc; void *lockfuncarg; bus_dma_segment_t *segments; + struct bounce_zone *bounce_zone; }; struct bounce_page { @@ -81,29 +84,32 @@ int busdma_swi_pending; +struct bounce_zone { + STAILQ_ENTRY(bounce_zone) links; + STAILQ_HEAD(bp_list, bounce_page) bounce_page_list; + int free_bpages; + int reserved_bpages; + int active_bpages; + int total_bounced; + int total_deferred; + bus_size_t alignment; + bus_size_t boundary; + bus_addr_t lowaddr; + char zoneid[8]; + char lowaddrid[20]; + struct sysctl_ctx_list sysctl_tree; + struct sysctl_oid *sysctl_tree_top; +}; + static struct mtx bounce_lock; -static STAILQ_HEAD(bp_list, bounce_page) bounce_page_list; -static int free_bpages; -static int reserved_bpages; -static int active_bpages; static int total_bpages; -static int total_bounced; -static int total_deferred; +static int busdma_zonecount; +static STAILQ_HEAD(, bounce_zone) bounce_zone_list; static bus_addr_t bounce_lowaddr = BUS_SPACE_MAXADDR; SYSCTL_NODE(_hw, OID_AUTO, busdma, CTLFLAG_RD, 0, "Busdma parameters"); -SYSCTL_INT(_hw_busdma, OID_AUTO, free_bpages, CTLFLAG_RD, &free_bpages, 0, - "Free bounce pages"); -SYSCTL_INT(_hw_busdma, OID_AUTO, reserved_bpages, CTLFLAG_RD, &reserved_bpages, - 0, "Reserved bounce pages"); -SYSCTL_INT(_hw_busdma, OID_AUTO, active_bpages, CTLFLAG_RD, &active_bpages, 0, - "Active bounce pages"); SYSCTL_INT(_hw_busdma, OID_AUTO, total_bpages, CTLFLAG_RD, &total_bpages, 0, "Total bounce pages"); -SYSCTL_INT(_hw_busdma, OID_AUTO, total_bounced, CTLFLAG_RD, &total_bounced, 0, - "Total bounce requests"); -SYSCTL_INT(_hw_busdma, OID_AUTO, total_deferred, CTLFLAG_RD, &total_deferred, 0, - "Total bounce requests that were deferred"); struct bus_dmamap { struct bp_list bpages; @@ -122,6 +128,7 @@ static struct bus_dmamap nobounce_dmamap; static void init_bounce_pages(void *dummy); +static struct bounce_zone * alloc_bounce_zone(bus_dma_tag_t dmat); static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages); static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit); @@ -219,7 +226,8 @@ /* Return a NULL tag on failure */ *dmat = NULL; - newtag = (bus_dma_tag_t)malloc(sizeof(*newtag), M_DEVBUF, M_NOWAIT); + newtag = (bus_dma_tag_t)malloc(sizeof(*newtag), M_DEVBUF, + M_ZERO | M_NOWAIT); if (newtag == NULL) { CTR3(KTR_BUSDMA, "bus_dma_tag_create returned tag %p tag " "flags 0x%x error %d", newtag, 0, error); @@ -376,6 +384,7 @@ */ if (dmat->lowaddr < ptoa((vm_paddr_t)Maxmem) || dmat->alignment > 1 || dmat->boundary > 0) { + /* Must bounce */ int maxpages; @@ -845,7 +854,7 @@ * want to add support for invalidating * the caches on broken hardware */ - total_bounced++; + dmat->bounce_zone->total_bounced++; CTR3(KTR_BUSDMA, "_bus_dmamap_sync: tag %p tag flags 0x%x " "op 0x%x performing bounce", op, dmat, dmat->flags); @@ -873,22 +882,111 @@ init_bounce_pages(void *dummy __unused) { - free_bpages = 0; - reserved_bpages = 0; - active_bpages = 0; total_bpages = 0; - STAILQ_INIT(&bounce_page_list); + STAILQ_INIT(&bounce_zone_list); STAILQ_INIT(&bounce_map_waitinglist); STAILQ_INIT(&bounce_map_callbacklist); mtx_init(&bounce_lock, "bounce pages lock", NULL, MTX_DEF); } SYSINIT(bpages, SI_SUB_LOCK, SI_ORDER_ANY, init_bounce_pages, NULL); +static struct sysctl_ctx_list * +busdma_sysctl_tree(struct bounce_zone *bz) +{ + return (&bz->sysctl_tree); +} + +static struct sysctl_oid * +busdma_sysctl_tree_top(struct bounce_zone *bz) +{ + return (bz->sysctl_tree_top); +} + +static struct bounce_zone * +alloc_bounce_zone(bus_dma_tag_t dmat) +{ + struct bounce_zone *bz; + + if ((bz = (struct bounce_zone *)malloc(sizeof(*bz), M_DEVBUF, + M_NOWAIT | M_ZERO)) == NULL) + return (NULL); + + STAILQ_INIT(&bz->bounce_page_list); + bz->free_bpages = 0; + bz->reserved_bpages = 0; + bz->active_bpages = 0; + bz->lowaddr = dmat->lowaddr; + bz->alignment = dmat->alignment; + bz->boundary = dmat->boundary; + snprintf(bz->zoneid, 8, "zone%d", busdma_zonecount); + busdma_zonecount++; + snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); + STAILQ_INSERT_TAIL(&bounce_zone_list, bz, links); + + sysctl_ctx_init(&bz->sysctl_tree); + bz->sysctl_tree_top = SYSCTL_ADD_NODE(&bz->sysctl_tree, + SYSCTL_STATIC_CHILDREN(_hw_busdma), OID_AUTO, bz->zoneid, + CTLFLAG_RD, 0, ""); + if (bz->sysctl_tree_top == NULL) { + sysctl_ctx_free(&bz->sysctl_tree); + return (bz); + } + + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "free_bpages", CTLFLAG_RD, &bz->free_bpages, 0, + "Free bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "reserved_bpages", CTLFLAG_RD, &bz->reserved_bpages, 0, + "Reserved bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "active_bpages", CTLFLAG_RD, &bz->active_bpages, 0, + "Active bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_bounced", CTLFLAG_RD, &bz->total_bounced, 0, + "Total bounce requests"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_deferred", CTLFLAG_RD, &bz->total_deferred, 0, + "Total bounce requests that were deferred"); + SYSCTL_ADD_STRING(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "lowaddr", CTLFLAG_RD, bz->lowaddrid, 0, ""); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "alignment", CTLFLAG_RD, &bz->alignment, 0, ""); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "boundary", CTLFLAG_RD, &bz->boundary, 0, ""); + + return (bz); +} + static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages) { + struct bounce_zone *bz; int count; + bz = dmat->bounce_zone; + if (bz == NULL) { + STAILQ_FOREACH(bz, &bounce_zone_list, links) { + if ((dmat->alignment <= bz->alignment) + && (dmat->boundary <= bz->boundary) + && (dmat->lowaddr >= bz->lowaddr)) + break; + } + + if (bz == NULL) { + if ((bz = alloc_bounce_zone(dmat)) == NULL) + return (ENOMEM); + } + dmat->bounce_zone = bz; + } + count = 0; while (numpages > 0) { struct bounce_page *bpage; @@ -900,18 +998,18 @@ break; bpage->vaddr = (vm_offset_t)contigmalloc(PAGE_SIZE, M_DEVBUF, M_NOWAIT, 0ul, - dmat->lowaddr, + bz->lowaddr, PAGE_SIZE, - dmat->boundary); + bz->boundary); if (bpage->vaddr == 0) { free(bpage, M_DEVBUF); break; } bpage->busaddr = pmap_kextract(bpage->vaddr); mtx_lock(&bounce_lock); - STAILQ_INSERT_TAIL(&bounce_page_list, bpage, links); + STAILQ_INSERT_TAIL(&bz->bounce_page_list, bpage, links); total_bpages++; - free_bpages++; + bz->free_bpages++; mtx_unlock(&bounce_lock); count++; numpages--; @@ -922,14 +1020,16 @@ static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit) { + struct bounce_zone *bz; int pages; mtx_assert(&bounce_lock, MA_OWNED); - pages = MIN(free_bpages, map->pagesneeded - map->pagesreserved); + bz = dmat->bounce_zone; + pages = MIN(bz->free_bpages, map->pagesneeded - map->pagesreserved); if (commit == 0 && map->pagesneeded > (map->pagesreserved + pages)) return (map->pagesneeded - (map->pagesreserved + pages)); - free_bpages -= pages; - reserved_bpages += pages; + bz->free_bpages -= pages; + bz->reserved_bpages += pages; map->pagesreserved += pages; pages = map->pagesneeded - map->pagesreserved; @@ -940,11 +1040,14 @@ add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, bus_size_t size) { + struct bounce_zone *bz; struct bounce_page *bpage; + KASSERT(dmat->bounce_zone != NULL, ("no bounce zone in dma tag")); KASSERT(map != NULL && map != &nobounce_dmamap, ("add_bounce_page: bad map %p", map)); + bz = dmat->bounce_zone; if (map->pagesneeded == 0) panic("add_bounce_page: map doesn't need any pages"); map->pagesneeded--; @@ -954,13 +1057,13 @@ map->pagesreserved--; mtx_lock(&bounce_lock); - bpage = STAILQ_FIRST(&bounce_page_list); + bpage = STAILQ_FIRST(&bz->bounce_page_list); if (bpage == NULL) panic("add_bounce_page: free page list is empty"); - STAILQ_REMOVE_HEAD(&bounce_page_list, links); - reserved_bpages--; - active_bpages++; + STAILQ_REMOVE_HEAD(&bz->bounce_page_list, links); + bz->reserved_bpages--; + bz->active_bpages++; mtx_unlock(&bounce_lock); bpage->datavaddr = vaddr; @@ -973,21 +1076,23 @@ free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage) { struct bus_dmamap *map; + struct bounce_zone *bz; + bz = dmat->bounce_zone; bpage->datavaddr = 0; bpage->datacount = 0; mtx_lock(&bounce_lock); - STAILQ_INSERT_HEAD(&bounce_page_list, bpage, links); - free_bpages++; - active_bpages--; + STAILQ_INSERT_HEAD(&bz->bounce_page_list, bpage, links); + bz->free_bpages++; + bz->active_bpages--; if ((map = STAILQ_FIRST(&bounce_map_waitinglist)) != NULL) { if (reserve_bounce_pages(map->dmat, map, 1) == 0) { STAILQ_REMOVE_HEAD(&bounce_map_waitinglist, links); STAILQ_INSERT_TAIL(&bounce_map_callbacklist, map, links); busdma_swi_pending = 1; - total_deferred++; + bz->total_deferred++; swi_sched(vm_ih, 0); } } ==== //depot/projects/netperf_socket/sys/arm/arm/bcopy_page.S#2 (text+ko) ==== @@ -40,7 +40,7 @@ #include #include -__FBSDID("$FreeBSD: src/sys/arm/arm/bcopy_page.S,v 1.1 2004/05/14 11:46:42 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/bcopy_page.S,v 1.2 2004/11/09 16:47:47 cognet Exp $"); #ifndef __XSCALE__ /* #define BIG_LOOPS */ @@ -242,7 +242,7 @@ strd r4, [r1], #0x08 bgt 1b ldmfd sp!, {r4, r5} - mov pc, lr + RET /* * XSCALE version of bzero_page @@ -269,5 +269,5 @@ strd r2, [r0], #8 subs r1, r1, #128 bne 1b - mov pc, lr + RET #endif /* __XSCALE__ */ ==== //depot/projects/netperf_socket/sys/arm/arm/bcopyinout.S#3 (text+ko) ==== @@ -40,7 +40,7 @@ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/bcopyinout.S,v 1.2 2004/09/23 21:56:36 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/bcopyinout.S,v 1.3 2004/11/09 16:47:47 cognet Exp $"); #ifdef __XSCALE__ #include #else @@ -80,7 +80,7 @@ /* Quick exit if length is zero */ teq r2, #0 moveq r0, #0 - moveq pc, lr + RETEQ SAVE_REGS #ifdef MULTIPROCESSOR @@ -280,14 +280,14 @@ str r5, [r4, #PCB_ONFAULT] RESTORE_REGS - mov pc, lr + RET .Lcopyfault: mov r0, #14 /* EFAULT */ str r5, [r4, #PCB_ONFAULT] RESTORE_REGS - mov pc, lr + RET /* * r0 = kernel space address @@ -304,7 +304,7 @@ /* Quick exit if length is zero */ teq r2, #0 moveq r0, #0 - moveq pc, lr + RETeq SAVE_REGS #ifdef MULTIPROCESSOR @@ -501,7 +501,7 @@ str r5, [r4, #PCB_ONFAULT] RESTORE_REGS - mov pc, lr + RET /* * r0 = kernel space source address @@ -517,7 +517,7 @@ /* Quick exit if length is zero */ teq r2, #0 moveq r0, #0 - moveq pc, lr + RETeq SAVE_REGS #ifdef MULTIPROCESSOR @@ -703,7 +703,7 @@ str r5, [r4, #PCB_ONFAULT] RESTORE_REGS - mov pc, lr + RET #endif /* !__XSCALE__ */ /* @@ -738,7 +738,7 @@ strb r3, [r1] mov r0, #0 /* No fault */ 1: str ip, [r2, #PCB_ONFAULT] - mov pc, lr + RET /* * int badaddr_read_2(const uint16_t *src, uint16_t *dest) @@ -772,7 +772,7 @@ strh r3, [r1] mov r0, #0 /* No fault */ 1: str ip, [r2, #PCB_ONFAULT] - mov pc, lr + RET /* * int badaddr_read_4(const uint32_t *src, uint32_t *dest) @@ -806,5 +806,5 @@ str r3, [r1] mov r0, #0 /* No fault */ 1: str ip, [r2, #PCB_ONFAULT] - mov pc, lr + RET ==== //depot/projects/netperf_socket/sys/arm/arm/bcopyinout_xscale.S#2 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/bcopyinout_xscale.S,v 1.1 2004/05/14 11:46:42 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/bcopyinout_xscale.S,v 1.2 2004/11/09 16:47:47 cognet Exp $"); .text .align 0 @@ -111,7 +111,7 @@ ldrbt ip, [r0], #0x01 strb ip, [r1], #0x01 cmp r2, #0x00 /* All done? */ - moveq pc, lr + RETeq /* Destination buffer is now word aligned */ .Lcopyin_wordaligned: @@ -193,7 +193,7 @@ .Lcopyin_w_lessthan128: adds r2, r2, #0x80 /* Adjust for extra sub */ ldmeqfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq subs r2, r2, #0x20 blt .Lcopyin_w_lessthan32 @@ -218,7 +218,7 @@ .Lcopyin_w_lessthan32: adds r2, r2, #0x20 /* Adjust for extra sub */ ldmeqfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ and r4, r2, #0x18 rsb r5, r4, #0x18 @@ -246,14 +246,14 @@ /* Less than 8 bytes remaining */ ldmfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ mov r3, #0x00 .Lcopyin_w_less_than8: subs r2, r2, #0x04 ldrget ip, [r0], #0x04 strge ip, [r1], #0x04 - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ addlt r2, r2, #0x04 ldrbt ip, [r0], #0x01 cmp r2, #0x02 @@ -262,7 +262,7 @@ ldrgtbt ip, [r0] strgeb r2, [r1], #0x01 strgtb ip, [r1] - mov pc, lr + RET /* * At this point, it has not been possible to word align both buffers. @@ -317,7 +317,7 @@ adds r2, r2, #0x10 ldmeqfd sp!, {r4-r7} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x04 sublt r0, r0, #0x03 blt .Lcopyin_l4 @@ -378,7 +378,7 @@ adds r2, r2, #0x10 ldmeqfd sp!, {r4-r7} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x04 sublt r0, r0, #0x02 blt .Lcopyin_l4 @@ -439,7 +439,7 @@ adds r2, r2, #0x10 ldmeqfd sp!, {r4-r7} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x04 sublt r0, r0, #0x01 blt .Lcopyin_l4 @@ -465,7 +465,7 @@ ldmfd sp!, {r4-r7} mov r3, #0x00 adds r2, r2, #0x04 - moveq pc, lr + RETeq .Lcopyin_l4_2: rsbs r2, r2, #0x03 addne pc, pc, r2, lsl #3 @@ -476,7 +476,7 @@ strb ip, [r1], #0x01 ldrbt ip, [r0] strb ip, [r1] - mov pc, lr + RET /* @@ -541,7 +541,7 @@ ldrb ip, [r0], #0x01 strbt ip, [r1], #0x01 cmp r2, #0x00 /* All done? */ - moveq pc, lr + RETeq /* Destination buffer is now word aligned */ .Lcopyout_wordaligned: @@ -639,7 +639,7 @@ .Lcopyout_w_lessthan128: adds r2, r2, #0x80 /* Adjust for extra sub */ ldmeqfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x20 blt .Lcopyout_w_lessthan32 @@ -668,7 +668,7 @@ .Lcopyout_w_lessthan32: adds r2, r2, #0x20 /* Adjust for extra sub */ ldmeqfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ and r4, r2, #0x18 rsb r5, r4, #0x18 @@ -696,14 +696,14 @@ /* Less than 8 bytes remaining */ ldmfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ mov r3, #0x00 .Lcopyout_w_less_than8: subs r2, r2, #0x04 ldrge ip, [r0], #0x04 strget ip, [r1], #0x04 - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ addlt r2, r2, #0x04 ldrb ip, [r0], #0x01 cmp r2, #0x02 @@ -712,7 +712,7 @@ ldrgtb ip, [r0] strgebt r2, [r1], #0x01 strgtbt ip, [r1] - mov pc, lr + RET /* * At this point, it has not been possible to word align both buffers. @@ -767,7 +767,7 @@ adds r2, r2, #0x10 ldmeqfd sp!, {r4-r7} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x04 sublt r0, r0, #0x03 blt .Lcopyout_l4 @@ -828,7 +828,7 @@ adds r2, r2, #0x10 ldmeqfd sp!, {r4-r7} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x04 sublt r0, r0, #0x02 blt .Lcopyout_l4 @@ -889,7 +889,7 @@ adds r2, r2, #0x10 ldmeqfd sp!, {r4-r7} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x04 sublt r0, r0, #0x01 blt .Lcopyout_l4 @@ -915,7 +915,7 @@ ldmfd sp!, {r4-r7} mov r3, #0x00 adds r2, r2, #0x04 - moveq pc, lr + RETeq .Lcopyout_l4_2: rsbs r2, r2, #0x03 addne pc, pc, r2, lsl #3 @@ -926,7 +926,7 @@ strbt ip, [r1], #0x01 ldrb ip, [r0] strbt ip, [r1] - mov pc, lr + RET /* @@ -990,7 +990,7 @@ ldrb ip, [r0], #0x01 strb ip, [r1], #0x01 cmp r2, #0x00 /* All done? */ - moveq pc, lr + RETeq /* Destination buffer is now word aligned */ .Lkcopy_wordaligned: @@ -1071,7 +1071,7 @@ .Lkcopy_w_lessthan128: adds r2, r2, #0x80 /* Adjust for extra sub */ ldmeqfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x20 blt .Lkcopy_w_lessthan32 @@ -1096,7 +1096,7 @@ .Lkcopy_w_lessthan32: adds r2, r2, #0x20 /* Adjust for extra sub */ ldmeqfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ and r4, r2, #0x18 rsb r5, r4, #0x18 @@ -1124,14 +1124,14 @@ /* Less than 8 bytes remaining */ >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun Nov 14 11:30:10 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 45B1A16A4D1; Sun, 14 Nov 2004 11:30:10 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1FED116A4CE for ; Sun, 14 Nov 2004 11:30:10 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 004A943D1F for ; Sun, 14 Nov 2004 11:30:10 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAEBU9iP075090 for ; Sun, 14 Nov 2004 11:30:09 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAEBU9V2075087 for perforce@freebsd.org; Sun, 14 Nov 2004 11:30:09 GMT (envelope-from davidxu@freebsd.org) Date: Sun, 14 Nov 2004 11:30:09 GMT Message-Id: <200411141130.iAEBU9V2075087@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65088 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 11:30:10 -0000 http://perforce.freebsd.org/chv.cgi?CH=65088 Change 65088 by davidxu@davidxu_alona on 2004/11/14 11:29:43 1. Fix another race in umtx_unlock, after current thread sets UMTX_UNOWNED, a new thread can come in and lock the umtx, this results current thread can not set UMTX_CONTESTED bit, Although current thread will wake a thread on wait queue,but that thread can receive a signal and breaks out of loop, so no contested bit will be set. 2. Macro optimization in umtx_lock, test sucessful before failure case. Affected files ... .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#7 edit Differences ... ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#7 (text+ko) ==== @@ -56,8 +56,8 @@ }; #define UMTX_QUEUES 128 -#define UMTX_HASH(pid, umtx) \ - ((((uintptr_t)pid << 16) + ((uintptr_t)umtx & 65535)) % UMTX_QUEUES) +#define UMTX_HASH(pid, umtx) \ + ((((uintptr_t)pid << 16) + (((uintptr_t)umtx >> 4) & 65535)) % UMTX_QUEUES) static struct umtxq_chain umtxq_chains[UMTX_QUEUES]; static MALLOC_DEFINE(M_UMTX, "umtx", "UMTX queue memory"); @@ -73,14 +73,14 @@ #define UMTX_CONTESTED LONG_MIN -static void umtx_sysinit(void *); +static void umtx_queues_init(void *); static struct umtx_q *umtx_lookup(struct thread *, struct umtx *umtx); static struct umtx_q *umtx_insert(struct thread *, struct umtx *umtx); -SYSINIT(umtx, SI_SUB_LOCK, SI_ORDER_MIDDLE, umtx_sysinit, NULL); +SYSINIT(umtx, SI_SUB_LOCK, SI_ORDER_MIDDLE, umtx_queues_init, NULL); static void -umtx_sysinit(void *arg) +umtx_queues_init(void *arg) { int i; @@ -190,26 +190,26 @@ owner = casuptr((intptr_t *)&umtx->u_owner, UMTX_UNOWNED, td->td_tid); + /* The acquire succeeded. */ + if (owner == UMTX_UNOWNED) + return (0); + /* The address was invalid. */ if (owner == -1) return (EFAULT); - /* The acquire succeeded. */ - if (owner == UMTX_UNOWNED) - return (0); - /* If no one owns it but it is contested try to acquire it. */ if (owner == UMTX_CONTESTED) { owner = casuptr((intptr_t *)&umtx->u_owner, UMTX_CONTESTED, td->td_tid | UMTX_CONTESTED); + if (owner == UMTX_CONTESTED) + return (0); + /* The address was invalid. */ if (owner == -1) return (EFAULT); - if (owner == UMTX_CONTESTED) - return (0); - /* If this failed the lock has changed, restart. */ continue; } @@ -305,72 +305,69 @@ /* We should only ever be in here for contested locks */ if ((owner & UMTX_CONTESTED) == 0) return (EINVAL); - blocked = NULL; /* * When unlocking the umtx, it must be marked as unowned if * there is zero or one thread only waiting for it. * Otherwise, it must be marked as contested. */ + old = casuptr((intptr_t *)&umtx->u_owner, owner, UMTX_UNOWNED); + if (old == -1) + return (EFAULT); + if (old != owner) + return (EINVAL); + /* + * At the point, a new thread can lock the umtx before we + * reach here, so contested bit will not be set, if there + * are two or more threads on wait queue, we should set + * contensted bit for them. + */ + blocked = NULL; UMTX_LOCK(td, umtx); uq = umtx_lookup(td, umtx); - if (uq == NULL || - (uq != NULL && (blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL && - TAILQ_NEXT(blocked, td_umtx) == NULL)) { - if (blocked) { - mtx_lock_spin(&sched_lock); - blocked->td_flags |= TDF_UMTXWAKEUP; - mtx_unlock_spin(&sched_lock); - } + if (uq == NULL) { UMTX_UNLOCK(td, umtx); - old = casuptr((intptr_t *)&umtx->u_owner, owner, - UMTX_UNOWNED); - if (old == -1) - return (EFAULT); - if (old != owner) - return (EINVAL); + return (0); + } + blocked2 = NULL; + if ((blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL) { + mtx_lock_spin(&sched_lock); + blocked->td_flags |= TDF_UMTXWAKEUP; + mtx_unlock_spin(&sched_lock); + blocked2 = TAILQ_NEXT(blocked, td_umtx); + } + UMTX_UNLOCK(td, umtx); + /* + * If there is second thread waiting on umtx, set contested bit, + * if they are resumed before we reach here, it is harmless, + * just a bit nonefficient. + */ + if (blocked2 != NULL) { + owner = UMTX_UNOWNED; + for (;;) { + old = casuptr((intptr_t *)&umtx->u_owner, owner, + owner | UMTX_CONTESTED); + if (old == -1) + return (EFAULT); + if (old == owner) + break; + owner = old; + } /* - * Recheck the umtx queue to make sure another thread - * didn't put itself on it after it was unlocked. + * Another thread locked the umtx before us, so don't bother + * to wake more threads, that thread will do it when it unlocks + * the umtx. */ - UMTX_LOCK(td, umtx); - uq = umtx_lookup(td, umtx); - if (uq != NULL && - ((blocked2 = TAILQ_FIRST(&uq->uq_tdq)) != NULL && - TAILQ_NEXT(blocked2, td_umtx) != NULL)) { - if (blocked == NULL) { - mtx_lock_spin(&sched_lock); - blocked2->td_flags |= TDF_UMTXWAKEUP; - mtx_unlock_spin(&sched_lock); - blocked = blocked2; - } - UMTX_UNLOCK(td, umtx); - old = casuptr((intptr_t *)&umtx->u_owner, - UMTX_UNOWNED, UMTX_CONTESTED); - } else { - UMTX_UNLOCK(td, umtx); - } - } else { - if (blocked != NULL) { - mtx_lock_spin(&sched_lock); - blocked->td_flags |= TDF_UMTXWAKEUP; - mtx_unlock_spin(&sched_lock); - } - UMTX_UNLOCK(td, umtx); - old = casuptr((intptr_t *)&umtx->u_owner, - owner, UMTX_CONTESTED); - if (old != -1 && old != owner) - return (EINVAL); + if ((owner & ~UMTX_CONTESTED) != 0) + return (0); } - if (old == -1) - return (EFAULT); - /* * If there is a thread waiting on the umtx, wake it up. */ if (blocked != NULL) wakeup(blocked); + return (0); } From owner-p4-projects@FreeBSD.ORG Sun Nov 14 11:31:59 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 86D9116A4D2; Sun, 14 Nov 2004 11:31:59 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 60E2016A4CE; Sun, 14 Nov 2004 11:31:59 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5326F43D46; Sun, 14 Nov 2004 11:31:59 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from [127.0.0.1] (davidxu@localhost [127.0.0.1]) iAEBVsQ2051139; Sun, 14 Nov 2004 11:31:57 GMT (envelope-from davidxu@freebsd.org) Message-ID: <4197422A.4020905@freebsd.org> Date: Sun, 14 Nov 2004 19:31:54 +0800 From: David Xu User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.2) Gecko/20040921 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Brian Fundakowski Feldman References: <200411140513.iAE5DOTv056478@repoman.freebsd.org> <20041114062748.GH997@green.homeunix.org> In-Reply-To: <20041114062748.GH997@green.homeunix.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: Perforce Change Reviews Subject: Re: PERFORCE change 65074 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 11:32:00 -0000 Brian Fundakowski Feldman wrote: >On Sun, Nov 14, 2004 at 05:13:24AM +0000, David Xu wrote: > > >>http://perforce.freebsd.org/chv.cgi?CH=65074 >> >>Change 65074 by davidxu@davidxu_alona on 2004/11/14 05:12:40 >> >> 1. Fix a race between signal and umtx_unlock. a waiter >> may be resumed by signal and left or exited, heavily >> loaded test causes kernel to crash. >> 2. Use distributed queue locks instead of single giant >> lock. >> >> > >This sounds like it could be why recently valgrind has grown broken, >and is now entirely non-working and someimes crashes the system? > > > Both have bug, valgrind seems have lock leak, umtx code has race condition. David Xu From owner-p4-projects@FreeBSD.ORG Sun Nov 14 18:36:56 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CFC7C16A4D1; Sun, 14 Nov 2004 18:36:55 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A32D316A4CE for ; Sun, 14 Nov 2004 18:36:55 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5936943D54 for ; Sun, 14 Nov 2004 18:36:55 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAEIatHB005917 for ; Sun, 14 Nov 2004 18:36:55 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAEIasWr005914 for perforce@freebsd.org; Sun, 14 Nov 2004 18:36:54 GMT (envelope-from marcel@freebsd.org) Date: Sun, 14 Nov 2004 18:36:54 GMT Message-Id: <200411141836.iAEIasWr005914@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65110 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 18:36:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=65110 Change 65110 by marcel@marcel_nfs on 2004/11/14 18:36:36 IFC @65109 Affected files ... .. //depot/projects/uart/arm/arm/genassym.c#2 integrate .. //depot/projects/uart/arm/arm/intr.c#2 integrate .. //depot/projects/uart/arm/arm/irq_dispatch.S#2 integrate .. //depot/projects/uart/arm/arm/pmap.c#4 integrate .. //depot/projects/uart/arm/xscale/i80321/i80321.c#2 integrate .. //depot/projects/uart/boot/common/commands.c#4 integrate .. //depot/projects/uart/compat/svr4/svr4_filio.c#4 integrate .. //depot/projects/uart/compat/svr4/svr4_misc.c#4 integrate .. //depot/projects/uart/conf/NOTES#20 integrate .. //depot/projects/uart/conf/files#34 integrate .. //depot/projects/uart/conf/files.i386#11 integrate .. //depot/projects/uart/conf/kern.post.mk#5 integrate .. //depot/projects/uart/conf/options#15 integrate .. //depot/projects/uart/dev/acpi_support/acpi_asus.c#1 branch .. //depot/projects/uart/dev/acpi_support/acpi_panasonic.c#1 branch .. //depot/projects/uart/dev/acpi_support/acpi_sony.c#1 branch .. //depot/projects/uart/dev/acpi_support/acpi_toshiba.c#1 branch .. //depot/projects/uart/dev/acpica/acpi_pcib.c#6 integrate .. //depot/projects/uart/dev/acpica/acpi_snc.c#1 branch .. //depot/projects/uart/dev/aha/aha_isa.c#5 integrate .. //depot/projects/uart/dev/em/if_em.c#9 integrate .. //depot/projects/uart/dev/em/if_em.h#10 integrate .. //depot/projects/uart/dev/md/md.c#8 integrate .. //depot/projects/uart/dev/pbio/pbio.c#2 integrate .. //depot/projects/uart/dev/sound/pci/maestro.c#8 integrate .. //depot/projects/uart/dev/streams/streams.c#4 integrate .. //depot/projects/uart/dev/usb/ehci.c#7 integrate .. //depot/projects/uart/dev/usb/ohci.c#8 integrate .. //depot/projects/uart/dev/usb/uhci.c#9 integrate .. //depot/projects/uart/dev/usb/usb_port.h#8 integrate .. //depot/projects/uart/fs/devfs/devfs_vnops.c#5 integrate .. //depot/projects/uart/fs/fdescfs/fdesc_vfsops.c#4 integrate .. //depot/projects/uart/fs/fdescfs/fdesc_vnops.c#4 integrate .. //depot/projects/uart/fs/fifofs/fifo_vnops.c#4 integrate .. //depot/projects/uart/fs/unionfs/union_subr.c#4 integrate .. //depot/projects/uart/fs/unionfs/union_vfsops.c#4 integrate .. //depot/projects/uart/fs/unionfs/union_vnops.c#4 integrate .. //depot/projects/uart/i386/acpica/acpi_asus.c#4 integrate .. //depot/projects/uart/i386/include/atomic.h#3 integrate .. //depot/projects/uart/i386/isa/pbio.c#2 delete .. //depot/projects/uart/kern/kern_descrip.c#10 integrate .. //depot/projects/uart/kern/kern_event.c#3 integrate .. //depot/projects/uart/kern/kern_exec.c#8 integrate .. //depot/projects/uart/kern/kern_fork.c#7 integrate .. //depot/projects/uart/kern/sched_ule.c#10 integrate .. //depot/projects/uart/kern/sys_generic.c#5 integrate .. //depot/projects/uart/kern/sys_socket.c#3 integrate .. //depot/projects/uart/kern/sysv_msg.c#4 integrate .. //depot/projects/uart/kern/sysv_sem.c#4 integrate .. //depot/projects/uart/kern/sysv_shm.c#4 integrate .. //depot/projects/uart/kern/tty.c#4 integrate .. //depot/projects/uart/kern/uipc_domain.c#6 integrate .. //depot/projects/uart/kern/uipc_syscalls.c#8 integrate .. //depot/projects/uart/kern/vfs_default.c#6 integrate .. //depot/projects/uart/kern/vfs_subr.c#10 integrate .. //depot/projects/uart/kern/vfs_syscalls.c#9 integrate .. //depot/projects/uart/modules/acpi/Makefile#7 integrate .. //depot/projects/uart/modules/acpi/acpi_snc/Makefile#1 branch .. //depot/projects/uart/netinet/in.c#3 integrate .. //depot/projects/uart/netinet/ip_divert.c#5 integrate .. //depot/projects/uart/nfsserver/nfs_serv.c#3 integrate .. //depot/projects/uart/pci/if_sf.c#6 integrate .. //depot/projects/uart/pci/if_sk.c#7 integrate .. //depot/projects/uart/sys/filedesc.h#4 integrate .. //depot/projects/uart/sys/msg.h#2 integrate .. //depot/projects/uart/sys/pbioio.h#2 delete .. //depot/projects/uart/sys/sem.h#2 integrate .. //depot/projects/uart/sys/shm.h#2 integrate .. //depot/projects/uart/sys/vnode.h#7 integrate .. //depot/projects/uart/ufs/ffs/ffs_vfsops.c#8 integrate Differences ... ==== //depot/projects/uart/arm/arm/genassym.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/genassym.c,v 1.2 2004/09/23 22:11:06 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/genassym.c,v 1.3 2004/11/12 21:49:05 cognet Exp $"); #include #include #include @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -109,3 +110,6 @@ ASSYM(P_SIGEVENT, P_SIGEVENT); ASSYM(P_PROFIL, P_PROFIL); ASSYM(TRAPFRAMESIZE, sizeof(struct trapframe)); + +ASSYM(MAXCOMLEN, MAXCOMLEN); +ASSYM(NIRQ, NIRQ); ==== //depot/projects/uart/arm/arm/intr.c#2 (text+ko) ==== @@ -37,7 +37,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.3 2004/09/23 22:09:57 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.4 2004/11/12 21:49:05 cognet Exp $"); #include #include #include @@ -50,7 +50,10 @@ #include #include -struct ithd *ithreads[NIRQ]; +static struct ithd *ithreads[NIRQ]; +static int intrcnt_tab[NIRQ]; +static int intrcnt_index = 0; +static int last_printed = 0; struct arm_intr { driver_intr_t *handler; void *arg; @@ -69,7 +72,8 @@ void arm_handler_execute(void *, int); -void arm_setup_irqhandler(const char *name, void (*hand)(void*), void *arg, +void +arm_setup_irqhandler(const char *name, void (*hand)(void*), void *arg, int irq, int flags, void **cookiep) { struct ithd *cur_ith; @@ -87,6 +91,14 @@ if (error) return; ithreads[irq] = cur_ith; + last_printed += + snprintf(intrnames + last_printed, + MAXCOMLEN + 1, + "irq%d: %s", irq, name); + last_printed++; + intrcnt_tab[irq] = intrcnt_index; + intrcnt_index++; + } if (!(flags & INTR_FAST)) { intr->handler = hand; @@ -120,6 +132,7 @@ arm_mask_irqs(irqnb); while (irqnb != 0) { i = ffs(irqnb) - 1; + intrcnt[intrcnt_tab[i]]++; irqnb &= ~(1U << i); ithd = ithreads[i]; if (!ithd) ==== //depot/projects/uart/arm/arm/irq_dispatch.S#2 (text+ko) ==== @@ -72,7 +72,7 @@ #include #include #include -__FBSDID("$FreeBSD: src/sys/arm/arm/irq_dispatch.S,v 1.2 2004/09/23 22:09:57 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/irq_dispatch.S,v 1.3 2004/11/12 21:49:05 cognet Exp $"); /* * irq_entry: @@ -102,18 +102,13 @@ .align 0 - /* - * XXX Provide intrnames/intrcnt for legacy code, but - * don't actually use them. - */ - .global _C_LABEL(intrnames), _C_LABEL(eintrnames) .global _C_LABEL(intrcnt), _C_LABEL(eintrcnt) _C_LABEL(intrnames): + .space NIRQ * (MAXCOMLEN + 1) _C_LABEL(eintrnames): - - .global _C_LABEL(intrcnt), _C_LABEL(sintrcnt), _C_LABEL(eintrcnt) _C_LABEL(intrcnt): + .space NIRQ * 4 _C_LABEL(eintrcnt): .global _C_LABEL(current_intr_depth) ==== //depot/projects/uart/arm/arm/pmap.c#4 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.17 2004/11/10 22:11:08 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.19 2004/11/13 14:54:31 cognet Exp $"); #include #include #include @@ -1668,6 +1668,8 @@ simple_unlock(&pg->mdpage.pvh_slock); PMAP_HEAD_TO_MAP_UNLOCK(); #endif + if (maskbits & PVF_WRITE) + vm_page_flag_clear(pg, PG_WRITEABLE); return (count); } @@ -1789,6 +1791,8 @@ pg->md.urw_mappings--; else pg->md.uro_mappings--; + if (TAILQ_FIRST(&pg->md.pv_list) == NULL) + vm_page_flag_clear(pg, PG_WRITEABLE); } static struct pv_entry * @@ -1921,9 +1925,6 @@ pvzone = uma_zcreate("PV ENTRY", sizeof (struct pv_entry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); uma_prealloc(pvzone, MINPV); - l2table_zone = uma_zcreate("L2 Table", sizeof(struct l2_dtable), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, - UMA_ZONE_VM | UMA_ZONE_NOFREE); /* * Now it is safe to enable pv_table recording. */ @@ -2173,6 +2174,11 @@ l2zone = uma_zcreate("L2 Table", L2_TABLE_SIZE_REAL, pmap_l2ptp_ctor, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); uma_prealloc(l2zone, 4096); + l2table_zone = uma_zcreate("L2 Table", sizeof(struct l2_dtable), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, + UMA_ZONE_VM | UMA_ZONE_NOFREE); + uma_prealloc(l2table_zone, 1024); + uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); uma_zone_set_obj(l2zone, &l2zone_obj, pv_entry_max); @@ -3689,6 +3695,7 @@ pmap_acquire_pmap_lock(pm); #endif + vm_page_lock_queues(); pmap_update(pm); if (!pmap_is_current(pm)) { cleanlist_idx = PMAP_REMOVE_CLEAN_LIST_SIZE + 1; @@ -3845,6 +3852,7 @@ pmap_free_l2_bucket(pm, l2b, mappings); } + vm_page_unlock_queues(); if (flushall) cpu_tlb_flushID(); #if 0 ==== //depot/projects/uart/arm/xscale/i80321/i80321.c#2 (text+ko) ==== @@ -40,7 +40,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321.c,v 1.1 2004/09/23 22:45:36 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321.c,v 1.2 2004/11/13 15:12:26 cognet Exp $"); #include #include @@ -146,7 +146,6 @@ bus_space_write_4(sc->sc_st, sc->sc_atu_sh, ATU_IALR2, (0xffffffff - (sc->sc_iwin[2].iwin_size - 1)) & 0xffffffc0); - printf("size : %d\n", (sc->sc_iwin[2].iwin_size - 1) / (1024 * 1024)); bus_space_write_4(sc->sc_st, sc->sc_atu_sh, ATU_IATVR2, sc->sc_iwin[2].iwin_xlate); ==== //depot/projects/uart/boot/common/commands.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/common/commands.c,v 1.20 2004/09/29 13:43:55 ru Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/common/commands.c,v 1.22 2004/11/13 17:04:55 ru Exp $"); #include #include @@ -214,12 +214,23 @@ command_commandlist(int argc, char *argv[]) { struct bootblk_command **cmdp; - - printf("Available commands:\n"); + int res; + char name[20]; + + res = 0; + pager_open(); + res = pager_output("Available commands:\n"); SET_FOREACH(cmdp, Xcommand_set) { - if (((*cmdp)->c_name != NULL) && ((*cmdp)->c_desc != NULL)) - printf(" %-15s %s\n", (*cmdp)->c_name, (*cmdp)->c_desc); + if (res) + break; + if (((*cmdp)->c_name != NULL) && ((*cmdp)->c_desc != NULL)) { + sprintf(name, " %-15s ", (*cmdp)->c_name); + pager_output(name); + pager_output((*cmdp)->c_desc); + res = pager_output("\n"); + } } + pager_close(); return(CMD_OK); } @@ -301,7 +312,7 @@ return(CMD_OK); } -COMMAND_SET(echo, "echo", NULL, command_echo); +COMMAND_SET(echo, "echo", "echo arguments", command_echo); static int command_echo(int argc, char *argv[]) @@ -340,7 +351,7 @@ * A passable emulation of the sh(1) command of the same name. */ -COMMAND_SET(read, "read", NULL, command_read); +COMMAND_SET(read, "read", "read input from the terminal", command_read); static int command_read(int argc, char *argv[]) ==== //depot/projects/uart/compat/svr4/svr4_filio.c#4 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_filio.c,v 1.32 2004/11/07 15:59:27 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_filio.c,v 1.33 2004/11/13 11:53:00 phk Exp $"); #include #include @@ -211,15 +211,15 @@ switch (cmd) { case SVR4_FIOCLEX: - FILEDESC_LOCK(fdp); + FILEDESC_LOCK_FAST(fdp); fdp->fd_ofileflags[fd] |= UF_EXCLOSE; - FILEDESC_UNLOCK(fdp); + FILEDESC_UNLOCK_FAST(fdp); return 0; case SVR4_FIONCLEX: - FILEDESC_LOCK(fdp); + FILEDESC_LOCK_FAST(fdp); fdp->fd_ofileflags[fd] &= ~UF_EXCLOSE; - FILEDESC_UNLOCK(fdp); + FILEDESC_UNLOCK_FAST(fdp); return 0; case SVR4_FIOGETOWN: ==== //depot/projects/uart/compat/svr4/svr4_misc.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_misc.c,v 1.74 2004/10/05 18:51:10 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/svr4/svr4_misc.c,v 1.75 2004/11/13 11:53:00 phk Exp $"); #include "opt_mac.h" @@ -618,10 +618,10 @@ return error; } VREF(vp); - FILEDESC_LOCK(fdp); + FILEDESC_LOCK_FAST(fdp); vpold = fdp->fd_rdir; fdp->fd_rdir = vp; - FILEDESC_UNLOCK(fdp); + FILEDESC_UNLOCK_FAST(fdp); if (vpold != NULL) vrele(vpold); fdrop(fp, td); ==== //depot/projects/uart/conf/NOTES#20 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1287 2004/11/08 19:05:21 phk Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1288 2004/11/12 19:44:30 peter Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -756,7 +756,6 @@ options NFSCLIENT #Network File System client # The rest are optional: -options AUTOFS #Auto File System options CD9660 #ISO 9660 filesystem options FDESCFS #File descriptor filesystem options HPFS #OS/2 File system ==== //depot/projects/uart/conf/files#34 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.962 2004/11/10 19:54:17 markm Exp $ +# $FreeBSD: src/sys/conf/files,v 1.966 2004/11/12 04:48:24 imp Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -300,6 +300,7 @@ dev/acpica/Osd/OsdStream.c optional acpi dev/acpica/Osd/OsdSynch.c optional acpi dev/acpica/Osd/OsdTable.c optional acpi +dev/acpica/acpi_snc.c optional acpi_snc acpi dev/acpica/acpi_video.c optional acpi_video acpi dev/adlink/adlink.c optional adlink dev/advansys/adv_eisa.c optional adv eisa @@ -594,6 +595,7 @@ dev/patm/if_patm_tx.c optional patm pci dev/patm/if_patm_attach.c optional patm pci dev/patm/if_patm_rtables.c optional patm pci +dev/pbio/pbio.c optional pbio isa dev/pccard/card_if.m standard dev/pccard/pccard.c optional pccard dev/pccard/pccard_cis.c optional pccard ==== //depot/projects/uart/conf/files.i386#11 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.i386,v 1.506 2004/10/24 08:53:40 scottl Exp $ +# $FreeBSD: src/sys/conf/files.i386,v 1.507 2004/11/11 04:53:46 imp Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -292,7 +292,6 @@ i386/isa/mse.c optional mse i386/isa/nmi.c standard i386/isa/npx.c optional npx -i386/isa/pbio.c optional pbio i386/isa/pcf.c optional pcf i386/isa/pcvt/pcvt_drv.c optional vt i386/isa/pcvt/pcvt_ext.c optional vt ==== //depot/projects/uart/conf/kern.post.mk#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/kern.post.mk,v 1.70 2004/09/23 08:34:50 phk Exp $ +# $FreeBSD: src/sys/conf/kern.post.mk,v 1.73 2004/11/14 00:22:18 imp Exp $ # Part of a unified Makefile for building kernels. This part includes all # the definitions that need to be after all the % directives except %RULES @@ -27,6 +27,20 @@ .endif .endfor +# Handle out of tree ports +.if defined(PORTS_MODULES) +.if defined(SYSDIR) +PORTSMODULESENV=SYSDIR=${SYSDIR} +.endif +.for target in all install clean +${target}: ports-${target} +ports-${target}: +.for __i in ${PORTS_MODULES} + cd $${PORTSDIR:-/usr/ports/}${__i}; ${PORTSMODULESENV} ${MAKE} -B ${target} +.endfor +.endfor +.endif + .ORDER: kernel-install modules-install kernel-all: ${KERNEL_KO} ==== //depot/projects/uart/conf/options#15 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options,v 1.486 2004/10/27 19:26:01 rwatson Exp $ +# $FreeBSD: src/sys/conf/options,v 1.487 2004/11/12 19:44:30 peter Exp $ # # On the handling of kernel options # @@ -162,7 +162,6 @@ # time, since the corresponding lkms cannot work if there are any static # dependencies. Unusability is enforced by hiding the defines for the # options in a never-included header. -AUTOFS opt_dontuse.h CD9660 opt_dontuse.h CODA opt_dontuse.h EXT2FS opt_dontuse.h ==== //depot/projects/uart/dev/acpica/acpi_pcib.c#6 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pcib.c,v 1.50 2004/08/13 06:22:07 njl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_pcib.c,v 1.51 2004/11/11 22:33:08 jhb Exp $"); #include "opt_acpi.h" #include @@ -70,11 +70,13 @@ /* * Get the PCI interrupt routing table for this bus. If we can't - * get it, this is not an error but may reduce functionality. + * get it, this is not an error but may reduce functionality. There + * are several valid bridges in the field that do not have a _PRT, so + * only warn about missing tables if bootverbose is set. */ prt->Length = ACPI_ALLOCATE_BUFFER; status = AcpiGetIrqRoutingTable(acpi_get_handle(dev), prt); - if (ACPI_FAILURE(status)) + if (ACPI_FAILURE(status) && (bootverbose || status != AE_NOT_FOUND)) device_printf(dev, "could not get PCI interrupt routing table for %s - %s\n", acpi_name(acpi_get_handle(dev)), AcpiFormatException(status)); ==== //depot/projects/uart/dev/aha/aha_isa.c#5 (text+ko) ==== @@ -54,7 +54,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/aha/aha_isa.c,v 1.29 2004/03/17 17:50:24 njl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/aha/aha_isa.c,v 1.31 2004/11/12 02:18:42 imp Exp $"); #include #include @@ -122,7 +122,7 @@ port_rid = 0; port_res = bus_alloc_resource(dev, SYS_RES_IOPORT, &port_rid, - 0, ~0, AHA_NREGS, RF_ACTIVE); + 0, ~0, AHA_NREGS, RF_ACTIVE); if (port_res == NULL) return (ENXIO); @@ -150,7 +150,7 @@ "settings for adapter at %#jx. Failing probe\n", (uintmax_t)port_start); aha_free(aha); - bus_release_resource(dev, SYS_RES_IOPORT, port_rid, + bus_release_resource(dev, SYS_RES_IOPORT, port_rid, port_res); return (ENXIO); } @@ -208,7 +208,8 @@ RF_ACTIVE); if (!aha->irq) { device_printf(dev, "Unable to allocate excluse use of irq\n"); - bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, aha->port); + bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, + aha->port); return ENOMEM; } @@ -217,7 +218,8 @@ RF_ACTIVE); if (!aha->drq) { device_printf(dev, "Unable to allocate drq\n"); - bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, aha->port); + bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, + aha->port); bus_release_resource(dev, SYS_RES_IRQ, aha->irqrid, aha->irq); return ENOMEM; } @@ -247,41 +249,45 @@ /* lockfunc */ busdma_lock_mutex, /* lockarg */ &Giant, &aha->parent_dmat) != 0) { - aha_free(aha); - bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, aha->port); + bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, + aha->port); bus_release_resource(dev, SYS_RES_IRQ, aha->irqrid, aha->irq); bus_release_resource(dev, SYS_RES_DRQ, aha->drqrid, aha->drq); - return (ENOMEM); - } + aha_free(aha); + return (ENOMEM); + } - if (aha_init(aha)) { + if (aha_init(aha)) { device_printf(dev, "init failed\n"); - aha_free(aha); - bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, aha->port); + bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, + aha->port); bus_release_resource(dev, SYS_RES_IRQ, aha->irqrid, aha->irq); bus_release_resource(dev, SYS_RES_DRQ, aha->drqrid, aha->drq); - return (ENOMEM); - } + aha_free(aha); + return (ENOMEM); + } error = aha_attach(aha); if (error) { device_printf(dev, "attach failed\n"); - aha_free(aha); - bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, aha->port); + bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, + aha->port); bus_release_resource(dev, SYS_RES_IRQ, aha->irqrid, aha->irq); bus_release_resource(dev, SYS_RES_DRQ, aha->drqrid, aha->drq); - return (error); + aha_free(aha); + return (error); } - error = bus_setup_intr(dev, aha->irq, INTR_TYPE_CAM|INTR_ENTROPY, aha_intr, aha, - &ih); + error = bus_setup_intr(dev, aha->irq, INTR_TYPE_CAM|INTR_ENTROPY, + aha_intr, aha, &ih); if (error) { device_printf(dev, "Unable to register interrupt handler\n"); - aha_free(aha); - bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, aha->port); + bus_release_resource(dev, SYS_RES_IOPORT, aha->portrid, + aha->port); bus_release_resource(dev, SYS_RES_IRQ, aha->irqrid, aha->irq); bus_release_resource(dev, SYS_RES_DRQ, aha->drqrid, aha->drq); - return (error); + aha_free(aha); + return (error); } return (0); ==== //depot/projects/uart/dev/em/if_em.c#9 (text+ko) ==== @@ -31,7 +31,7 @@ ***************************************************************************/ -/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.51 2004/11/03 14:11:18 phk Exp $*/ +/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.53 2004/11/12 11:03:07 rwatson Exp $*/ #include @@ -161,7 +161,7 @@ static int em_get_buf(int i, struct adapter *, struct mbuf *); static void em_enable_vlans(struct adapter *); -static int em_encap(struct adapter *, struct mbuf *); +static int em_encap(struct adapter *, struct mbuf **); static void em_smartspeed(struct adapter *); static int em_82547_fifo_workaround(struct adapter *, int); static void em_82547_update_fifo_head(struct adapter *, int); @@ -310,26 +310,14 @@ em_adapter_list = adapter; /* SYSCTL stuff */ - sysctl_ctx_init(&adapter->sysctl_ctx); - adapter->sysctl_tree = SYSCTL_ADD_NODE(&adapter->sysctl_ctx, - SYSCTL_STATIC_CHILDREN(_hw), - OID_AUTO, - device_get_nameunit(dev), - CTLFLAG_RD, - 0, ""); - if (adapter->sysctl_tree == NULL) { - error = EIO; - goto err_sysctl; - } - - SYSCTL_ADD_PROC(&adapter->sysctl_ctx, - SYSCTL_CHILDREN(adapter->sysctl_tree), + SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, "debug_info", CTLTYPE_INT|CTLFLAG_RW, (void *)adapter, 0, em_sysctl_debug_info, "I", "Debug Information"); - SYSCTL_ADD_PROC(&adapter->sysctl_ctx, - SYSCTL_CHILDREN(adapter->sysctl_tree), + SYSCTL_ADD_PROC(device_get_sysctl_ctx(dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(dev)), OID_AUTO, "stats", CTLTYPE_INT|CTLFLAG_RW, (void *)adapter, 0, em_sysctl_stats, "I", "Statistics"); @@ -504,8 +492,6 @@ err_tx_desc: err_pci: em_free_pci_resources(adapter); - sysctl_ctx_free(&adapter->sysctl_ctx); -err_sysctl: return(error); } @@ -553,9 +539,6 @@ adapter->rx_desc_base = NULL; } - /* Free the sysctl tree */ - sysctl_ctx_free(&adapter->sysctl_ctx); - /* Remove from the adapter list */ if (em_adapter_list == adapter) em_adapter_list = adapter->next; @@ -616,7 +599,7 @@ if (m_head == NULL) break; - if (em_encap(adapter, m_head)) { + if (em_encap(adapter, &m_head)) { ifp->if_flags |= IFF_OACTIVE; IFQ_DRV_PREPEND(&ifp->if_snd, m_head); break; @@ -1176,13 +1159,15 @@ * return 0 on success, positive on failure **********************************************************************/ static int -em_encap(struct adapter *adapter, struct mbuf *m_head) +em_encap(struct adapter *adapter, struct mbuf **m_headp) { u_int32_t txd_upper; u_int32_t txd_lower, txd_used = 0, txd_saved = 0; int i, j, error; u_int64_t address; + struct mbuf *m_head; + /* For 82544 Workaround */ DESC_ARRAY desc_array; u_int32_t array_elements; @@ -1198,6 +1183,8 @@ struct em_tx_desc *current_tx_desc = NULL; struct ifnet *ifp = &adapter->interface_data.ac_if; + m_head = *m_headp; + /* * Force a cleanup if number of TX descriptors * available hits the threshold @@ -1250,6 +1237,36 @@ mtag = VLAN_OUTPUT_TAG(ifp, m_head); #endif + /* + * When operating in promiscuous mode, hardware encapsulation for + * packets is disabled. This means we have to add the vlan + * encapsulation in the driver, since it will have come down from the + * VLAN layer with a tag instead of a VLAN header. + */ + if (mtag != NULL && adapter->em_insert_vlan_header) { + struct ether_vlan_header *evl; + struct ether_header eh; + + m_head = m_pullup(m_head, sizeof(eh)); + if (m_head == NULL) + return (ENOBUFS); + eh = *mtod(m_head, struct ether_header *); + M_PREPEND(m_head, sizeof(*evl), M_DONTWAIT); + if (m_head == NULL) + return (ENOBUFS); + m_head = m_pullup(m_head, sizeof(*evl)); + if (m_head == NULL) + return (ENOBUFS); + evl = mtod(m_head, struct ether_vlan_header *); + bcopy(&eh, evl, sizeof(*evl)); + evl->evl_proto = evl->evl_encap_proto; + evl->evl_encap_proto = htons(ETHERTYPE_VLAN); + evl->evl_tag = htons(VLAN_TAG_VALUE(mtag)); + m_tag_delete(m_head, mtag); + mtag = NULL; + *m_headp = m_head; + } + i = adapter->next_avail_tx_desc; if (adapter->pcix_82544) { txd_saved = i; @@ -1497,19 +1514,20 @@ if (ifp->if_flags & IFF_PROMISC) { reg_rctl |= (E1000_RCTL_UPE | E1000_RCTL_MPE); E1000_WRITE_REG(&adapter->hw, RCTL, reg_rctl); - /* Disable VLAN stripping in promiscous mode * This enables bridging of vlan tagged frames to occur * and also allows vlan tags to be seen in tcpdump */ ctrl &= ~E1000_CTRL_VME; E1000_WRITE_REG(&adapter->hw, CTRL, ctrl); - + adapter->em_insert_vlan_header = 1; } else if (ifp->if_flags & IFF_ALLMULTI) { reg_rctl |= E1000_RCTL_MPE; reg_rctl &= ~E1000_RCTL_UPE; E1000_WRITE_REG(&adapter->hw, RCTL, reg_rctl); - } + adapter->em_insert_vlan_header = 0; + } else + adapter->em_insert_vlan_header = 0; return; } @@ -1526,6 +1544,8 @@ E1000_WRITE_REG(&adapter->hw, RCTL, reg_rctl); em_enable_vlans(adapter); + adapter->em_insert_vlan_header = 0; + return; } @@ -3391,8 +3411,8 @@ info->adapter = adapter; info->offset = offset; info->value = value; - SYSCTL_ADD_PROC(&adapter->sysctl_ctx, - SYSCTL_CHILDREN(adapter->sysctl_tree), + SYSCTL_ADD_PROC(device_get_sysctl_ctx(adapter->dev), + SYSCTL_CHILDREN(device_get_sysctl_tree(adapter->dev)), OID_AUTO, name, CTLTYPE_INT|CTLFLAG_RW, info, 0, em_sysctl_int_delay, "I", description); } ==== //depot/projects/uart/dev/em/if_em.h#10 (text+ko) ==== @@ -31,7 +31,7 @@ ***************************************************************************/ -/*$FreeBSD: src/sys/dev/em/if_em.h,v 1.26 2004/09/01 23:22:41 pdeuskar Exp $*/ +/*$FreeBSD: src/sys/dev/em/if_em.h,v 1.29 2004/11/12 11:03:07 rwatson Exp $*/ #ifndef _EM_H_DEFINED_ #define _EM_H_DEFINED_ @@ -46,6 +46,7 @@ #include #include #include +#include #include #include @@ -74,7 +75,6 @@ #include #include #include -#include #include "opt_bdg.h" #include @@ -346,6 +346,7 @@ int io_rid; u_int8_t unit; struct mtx mtx; + int em_insert_vlan_header; /* Info about the board itself */ u_int32_t part_num; @@ -399,9 +400,6 @@ struct mbuf *fmp; struct mbuf *lmp; - struct sysctl_ctx_list sysctl_ctx; - struct sysctl_oid *sysctl_tree; - /* Misc stats maintained by the driver */ unsigned long dropped_pkts; unsigned long mbuf_alloc_failed; ==== //depot/projects/uart/dev/md/md.c#8 (text+ko) ==== @@ -6,7 +6,7 @@ * this stuff is worth it, you can buy me a beer in return. Poul-Henning Kamp * ---------------------------------------------------------------------------- * - * $FreeBSD: src/sys/dev/md/md.c,v 1.144 2004/11/06 13:16:35 pjd Exp $ + * $FreeBSD: src/sys/dev/md/md.c,v 1.145 2004/11/13 05:00:12 marcel Exp $ * */ @@ -1087,7 +1087,7 @@ case MDIOCDETACH: if (mdio->md_version != MDIOVERSION) return (EINVAL); - if (mdio->md_file != NULL || mdio->md_mediasize != 0 || + if (mdio->md_file[0] != '\0' || mdio->md_mediasize != 0 || mdio->md_options != 0) return (EINVAL); return (mddetach(mdio->md_unit, td)); ==== //depot/projects/uart/dev/pbio/pbio.c#2 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/pbio/pbio.c,v 1.5 2004/10/11 00:58:24 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/pbio/pbio.c,v 1.6 2004/11/11 19:14:09 obrien Exp $"); #include #include @@ -46,7 +46,7 @@ #include #include /* DELAY() */ #include -#include /* pbio IOCTL definitions */ +#include /* pbio IOCTL definitions */ #include #include ==== //depot/projects/uart/dev/sound/pci/maestro.c#8 (text+ko) ==== @@ -1,5 +1,5 @@ /*- - * Copyright (c) 2000 Taku YAMAMOTO + * Copyright (c) 2000-2004 Taku YAMAMOTO * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -54,7 +54,7 @@ #include -SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pci/maestro.c,v 1.25 2004/11/10 04:29:09 julian Exp $"); +SND_DECLARE_FILE("$FreeBSD: src/sys/dev/sound/pci/maestro.c,v 1.26 2004/11/11 13:01:13 ru Exp $"); #define inline __inline @@ -472,7 +472,7 @@ } } -static inline void +static void apu_setparam(struct agg_info *ess, int apuch, u_int32_t wpwa, u_int16_t size, int16_t pan, u_int dv) { ==== //depot/projects/uart/dev/streams/streams.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/streams/streams.c,v 1.47 2004/07/15 08:26:03 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/streams/streams.c,v 1.48 2004/11/13 11:53:01 phk Exp $"); #include #include @@ -256,26 +256,26 @@ if ((error = socreate(family, &so, type, protocol, td->td_ucred, td)) != 0) { - FILEDESC_LOCK(p->p_fd); + FILEDESC_LOCK_FAST(p->p_fd); /* Check the fd table entry hasn't changed since we made it. */ extraref = 0; if (p->p_fd->fd_ofiles[fd] == fp) { p->p_fd->fd_ofiles[fd] = NULL; extraref = 1; } - FILEDESC_UNLOCK(p->p_fd); + FILEDESC_UNLOCK_FAST(p->p_fd); if (extraref) fdrop(fp, td); fdrop(fp, td); return error; } - FILEDESC_LOCK(p->p_fd); + FILEDESC_LOCK_FAST(p->p_fd); fp->f_data = so; fp->f_flag = FREAD|FWRITE; fp->f_ops = &svr4_netops; fp->f_type = DTYPE_SOCKET; - FILEDESC_UNLOCK(p->p_fd); + FILEDESC_UNLOCK_FAST(p->p_fd); (void)svr4_stream_get(fp); fdrop(fp, td); ==== //depot/projects/uart/dev/usb/ehci.c#7 (text+ko) ==== @@ -6,7 +6,7 @@ */ >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sun Nov 14 20:36:22 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B16C916A4D1; Sun, 14 Nov 2004 20:36:21 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8A58816A4CE for ; Sun, 14 Nov 2004 20:36:21 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 77C9943D31 for ; Sun, 14 Nov 2004 20:36:21 +0000 (GMT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAEKaL3d010077 for ; Sun, 14 Nov 2004 20:36:21 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAEKaLcM010074 for perforce@freebsd.org; Sun, 14 Nov 2004 20:36:21 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Sun, 14 Nov 2004 20:36:21 GMT Message-Id: <200411142036.iAEKaLcM010074@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Subject: PERFORCE change 65116 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 20:36:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=65116 Change 65116 by rwatson@rwatson_paprika on 2004/11/14 20:35:38 Integ if_em "out of mbuf" fix for vlan scenario. Affected files ... .. //depot/projects/netperf_socket/sys/dev/em/if_em.c#14 integrate Differences ... ==== //depot/projects/netperf_socket/sys/dev/em/if_em.c#14 (text+ko) ==== @@ -31,7 +31,7 @@ ***************************************************************************/ -/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.53 2004/11/12 11:03:07 rwatson Exp $*/ +/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.54 2004/11/14 20:20:28 rwatson Exp $*/ #include @@ -598,8 +598,14 @@ IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); if (m_head == NULL) break; - + + /* + * em_encap() can modify our pointer, and or make it NULL on + * failure. In that event, we can't requeue. + */ if (em_encap(adapter, &m_head)) { + if (m_head == NULL) + break; ifp->if_flags |= IFF_OACTIVE; IFQ_DRV_PREPEND(&ifp->if_snd, m_head); break; @@ -1248,15 +1254,24 @@ struct ether_header eh; m_head = m_pullup(m_head, sizeof(eh)); - if (m_head == NULL) + if (m_head == NULL) { + *m_headp = NULL; + bus_dmamap_destroy(adapter->txtag, q.map); return (ENOBUFS); + } eh = *mtod(m_head, struct ether_header *); M_PREPEND(m_head, sizeof(*evl), M_DONTWAIT); - if (m_head == NULL) + if (m_head == NULL) { + *m_headp = NULL; + bus_dmamap_destroy(adapter->txtag, q.map); return (ENOBUFS); + } m_head = m_pullup(m_head, sizeof(*evl)); - if (m_head == NULL) + if (m_head == NULL) { + *m_headp = NULL; + bus_dmamap_destroy(adapter->txtag, q.map); return (ENOBUFS); + } evl = mtod(m_head, struct ether_vlan_header *); bcopy(&eh, evl, sizeof(*evl)); evl->evl_proto = evl->evl_encap_proto; From owner-p4-projects@FreeBSD.ORG Sun Nov 14 23:16:40 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9EE4A16A4D1; Sun, 14 Nov 2004 23:16:40 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7AA6E16A4CE for ; Sun, 14 Nov 2004 23:16:40 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6EBA043D48 for ; Sun, 14 Nov 2004 23:16:40 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAENGeGj022418 for ; Sun, 14 Nov 2004 23:16:40 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAENGeTr022415 for perforce@freebsd.org; Sun, 14 Nov 2004 23:16:40 GMT (envelope-from sam@freebsd.org) Date: Sun, 14 Nov 2004 23:16:40 GMT Message-Id: <200411142316.iAENGeTr022415@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65130 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Nov 2004 23:16:41 -0000 http://perforce.freebsd.org/chv.cgi?CH=65130 Change 65130 by sam@sam_ebb on 2004/11/14 23:16:06 fix typo in ps-poll handling Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211_input.c#13 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211_input.c#13 (text+ko) ==== @@ -269,7 +269,7 @@ /* turn off power save mode, dequeue stored packets */ ni->ni_flags &= ~IEEE80211_NODE_PWR_MGT; ic->ic_set_tim(ic, ni->ni_associd, 0); - while (!_IF_QLEN(&ni->ni_savedq) != 0) { + while (_IF_QLEN(&ni->ni_savedq) != 0) { struct mbuf *m0; _IF_DEQUEUE(&ni->ni_savedq, m0); /* XXX need different driver interface */ From owner-p4-projects@FreeBSD.ORG Mon Nov 15 03:06:22 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3203016A4D1; Mon, 15 Nov 2004 03:06:22 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D84E916A4CE for ; Mon, 15 Nov 2004 03:06:21 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id A4E0443D54 for ; Mon, 15 Nov 2004 03:06:20 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAF36Kme037783 for ; Mon, 15 Nov 2004 03:06:20 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAF36KBj037780 for perforce@freebsd.org; Mon, 15 Nov 2004 03:06:20 GMT (envelope-from marcel@freebsd.org) Date: Mon, 15 Nov 2004 03:06:20 GMT Message-Id: <200411150306.iAF36KBj037780@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65139 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 03:06:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=65139 Change 65139 by marcel@marcel_nfs on 2004/11/15 03:05:56 IFC @65138 Affected files ... .. //depot/projects/uart/dev/acpica/acpi_snc.c#2 integrate .. //depot/projects/uart/dev/em/if_em.c#10 integrate .. //depot/projects/uart/dev/puc/puc_sbus.c#7 integrate .. //depot/projects/uart/dev/uart/uart_bus.h#33 integrate .. //depot/projects/uart/dev/uart/uart_core.c#37 integrate .. //depot/projects/uart/dev/uart/uart_dev_ns8250.c#31 integrate .. //depot/projects/uart/dev/uart/uart_subr.c#4 integrate .. //depot/projects/uart/ia64/conf/GENERIC.hints#5 integrate .. //depot/projects/uart/modules/acpi/Makefile#8 integrate .. //depot/projects/uart/pci/if_sk.c#8 integrate Differences ... ==== //depot/projects/uart/dev/acpica/acpi_snc.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/dev/acpica/acpi_snc.c,v 1.2 2004/11/13 23:39:56 imp Exp $ + * $FreeBSD: src/sys/dev/acpica/acpi_snc.c,v 1.3 2004/11/14 20:37:41 truckman Exp $ */ #include "opt_acpi.h" @@ -125,20 +125,20 @@ acpi_snc_oids[i].comment); } - return_VALUE(0); + return (0); } static int acpi_snc_detach(device_t dev) { - return_VALUE(0); + return (0); } #if 0 static int acpi_snc_suspend(device_t dev) { struct acpi_snc_softc *sc = device_get_softc(dev); - return_VALUE(0); + return (0); } static int ==== //depot/projects/uart/dev/em/if_em.c#10 (text+ko) ==== @@ -31,7 +31,7 @@ ***************************************************************************/ -/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.53 2004/11/12 11:03:07 rwatson Exp $*/ +/*$FreeBSD: src/sys/dev/em/if_em.c,v 1.54 2004/11/14 20:20:28 rwatson Exp $*/ #include @@ -598,8 +598,14 @@ IFQ_DRV_DEQUEUE(&ifp->if_snd, m_head); if (m_head == NULL) break; - + + /* + * em_encap() can modify our pointer, and or make it NULL on + * failure. In that event, we can't requeue. + */ if (em_encap(adapter, &m_head)) { + if (m_head == NULL) + break; ifp->if_flags |= IFF_OACTIVE; IFQ_DRV_PREPEND(&ifp->if_snd, m_head); break; @@ -1248,15 +1254,24 @@ struct ether_header eh; m_head = m_pullup(m_head, sizeof(eh)); - if (m_head == NULL) + if (m_head == NULL) { + *m_headp = NULL; + bus_dmamap_destroy(adapter->txtag, q.map); return (ENOBUFS); + } eh = *mtod(m_head, struct ether_header *); M_PREPEND(m_head, sizeof(*evl), M_DONTWAIT); - if (m_head == NULL) + if (m_head == NULL) { + *m_headp = NULL; + bus_dmamap_destroy(adapter->txtag, q.map); return (ENOBUFS); + } m_head = m_pullup(m_head, sizeof(*evl)); - if (m_head == NULL) + if (m_head == NULL) { + *m_headp = NULL; + bus_dmamap_destroy(adapter->txtag, q.map); return (ENOBUFS); + } evl = mtod(m_head, struct ether_vlan_header *); bcopy(&eh, evl, sizeof(*evl)); evl->evl_proto = evl->evl_encap_proto; ==== //depot/projects/uart/dev/puc/puc_sbus.c#7 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/puc/puc_sbus.c,v 1.4 2004/08/12 17:41:30 marius Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/puc/puc_sbus.c,v 1.5 2004/11/15 02:47:37 marcel Exp $"); #include "opt_puc.h" @@ -51,7 +51,7 @@ const char *nm; nm = ofw_bus_get_name(dev); - if (!strcmp(nm, "zs")) { + if (!strcmp(nm, "zs") && device_get_unit(dev) == 0) { device_set_desc(dev, "Zilog Z8530 dual channel SCC"); return (0); } ==== //depot/projects/uart/dev/uart/uart_bus.h#33 (text+ko) ==== @@ -23,7 +23,7 @@ * (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/dev/uart/uart_bus.h,v 1.7 2004/10/12 08:22:31 phk Exp $ + * $FreeBSD: src/sys/dev/uart/uart_bus.h,v 1.8 2004/11/14 23:12:14 marcel Exp $ */ #ifndef _DEV_UART_BUS_H_ @@ -80,6 +80,7 @@ #define UART_IOCTL_BREAK 1 #define UART_IOCTL_IFLOW 2 #define UART_IOCTL_OFLOW 3 +#define UART_IOCTL_BAUD 4 /* * UART class & instance (=softc) ==== //depot/projects/uart/dev/uart/uart_core.c#37 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_core.c,v 1.10 2004/07/10 21:16:01 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_core.c,v 1.11 2004/11/14 23:12:14 marcel Exp $"); #ifndef KLD_MODULE #include "opt_comconsole.h" @@ -404,6 +404,11 @@ } if (sc->sc_sysdev != NULL) { + if (sc->sc_sysdev->baudrate == 0) { + if (UART_IOCTL(sc, UART_IOCTL_BAUD, + (intptr_t)&sc->sc_sysdev->baudrate) != 0) + sc->sc_sysdev->baudrate = -1; + } switch (sc->sc_sysdev->type) { case UART_DEV_CONSOLE: device_printf(dev, "console"); ==== //depot/projects/uart/dev/uart/uart_dev_ns8250.c#31 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_ns8250.c,v 1.10 2004/08/06 15:51:31 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_dev_ns8250.c,v 1.12 2004/11/15 00:00:24 marcel Exp $"); #include #include @@ -468,7 +468,7 @@ ns8250_bus_ioctl(struct uart_softc *sc, int request, intptr_t data) { struct uart_bas *bas; - int error; + int baudrate, divisor, error; uint8_t efr, lcr; bas = &sc->sc_bas; @@ -514,6 +514,20 @@ uart_setreg(bas, REG_LCR, lcr); uart_barrier(bas); break; + case UART_IOCTL_BAUD: + lcr = uart_getreg(bas, REG_LCR); + uart_setreg(bas, REG_LCR, lcr | LCR_DLAB); + uart_barrier(bas); + divisor = uart_getdreg(bas, REG_DL); + uart_barrier(bas); + uart_setreg(bas, REG_LCR, lcr); + uart_barrier(bas); + baudrate = (divisor > 0) ? bas->rclk / divisor / 16 : 0; + if (baudrate > 0) + *(int*)data = baudrate; + else + error = ENXIO; + break; default: error = EINVAL; break; ==== //depot/projects/uart/dev/uart/uart_subr.c#4 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_subr.c,v 1.2 2004/03/20 08:38:33 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_subr.c,v 1.3 2004/11/14 21:38:22 marcel Exp $"); #include #include @@ -242,6 +242,26 @@ */ if (addr == ~0U) return (EINVAL); + + /* + * Accept only the well-known baudrates. Any invalid baudrate + * is silently replaced with a 0-valued baudrate. The 0 baudrate + * has special meaning. It means that we're not supposed to + * program the baudrate and simply communicate with whatever + * speed the hardware is currently programmed for. + */ + if (di->baudrate >= 19200) { + if (di->baudrate % 19200) + di->baudrate = 0; + } else if (di->baudrate >= 1200) { + if (di->baudrate % 1200) + di->baudrate = 0; + } else if (di->baudrate > 0) { + if (di->baudrate % 75) + di->baudrate = 0; + } else + di->baudrate = 0; + /* XXX the size of the mapping depends on the UART class. */ if (bus_space_map(di->bas.bst, addr, 8, 0, &di->bas.bsh) != 0) return (EINVAL); ==== //depot/projects/uart/ia64/conf/GENERIC.hints#5 (text+ko) ==== @@ -1,2 +1,2 @@ -# $FreeBSD: src/sys/ia64/conf/GENERIC.hints,v 1.7 2004/03/20 04:23:03 marcel Exp $ -hw.uart.console="io:0x3f8,br:115200" +# $FreeBSD: src/sys/ia64/conf/GENERIC.hints,v 1.8 2004/11/14 23:42:48 marcel Exp $ +hw.uart.console="io:0x3f8" ==== //depot/projects/uart/modules/acpi/Makefile#8 (text+ko) ==== @@ -1,4 +1,12 @@ -# $FreeBSD: src/sys/modules/acpi/Makefile,v 1.41 2004/11/11 22:54:57 imp Exp $ +# $FreeBSD: src/sys/modules/acpi/Makefile,v 1.42 2004/11/14 20:53:17 scottl Exp $ + +.if ${MACHINE_ARCH} == "amd64" || ${MACHINE_ARCH} == "ia64" +.error "ACPI can only be compiled into the kernel on the amd64 and ia64 platforms" +.endif + +.if ${MACHINE_ARCH} != "i386" +.error "The ACPI module is only for i386" +.endif SUBDIR= acpi acpi_asus acpi_panasonic acpi_snc acpi_toshiba acpi_video ==== //depot/projects/uart/pci/if_sk.c#8 (text+ko) ==== @@ -48,7 +48,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/pci/if_sk.c,v 1.88 2004/11/13 20:21:57 bz Exp $"); +__FBSDID("$FreeBSD: src/sys/pci/if_sk.c,v 1.89 2004/11/14 20:17:01 obrien Exp $"); /* * SysKonnect SK-NET gigabit ethernet driver for FreeBSD. Supports @@ -136,7 +136,7 @@ #ifndef lint static const char rcsid[] = - "$FreeBSD: src/sys/pci/if_sk.c,v 1.88 2004/11/13 20:21:57 bz Exp $"; + "$FreeBSD: src/sys/pci/if_sk.c,v 1.89 2004/11/14 20:17:01 obrien Exp $"; #endif static struct sk_type sk_devs[] = { @@ -1598,6 +1598,10 @@ } sc->sk_rboff = SK_RBOFF_0; } + device_printf(dev, "type = %s\n", + (sc->sk_type == SK_GENESIS) ? "GENESIS" : "YUKON"); + device_printf(dev, "SK_EPROM0 = 0x%02x\n", skrs); + device_printf(dev, "SRAM size = 0x%06x\n", sc->sk_ramsize); /* Read and save physical media type */ switch(sk_win_read_1(sc, SK_PMDTYPE)) { @@ -1650,6 +1654,12 @@ } } } + + /* read CHIPVER 0xb1. */ + device_printf(dev, "chip ver 0x%02x\n", sk_win_read_1(sc, SK_CHIPVER)); + /* read CONFIG 0x73. */ + device_printf(dev, "chip conf 0x%02x\n", sk_win_read_1(sc, SK_CONFIG)); + sc->sk_devs[SK_PORT_A] = device_add_child(dev, "sk", -1); port = malloc(sizeof(int), M_DEVBUF, M_NOWAIT); *port = SK_PORT_A; From owner-p4-projects@FreeBSD.ORG Mon Nov 15 16:30:53 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 85B0516A51C; Mon, 15 Nov 2004 16:30:53 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5C57516A51A for ; Mon, 15 Nov 2004 16:30:53 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 36D0C43D2F for ; Mon, 15 Nov 2004 16:30:53 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAFGUrgk089226 for ; Mon, 15 Nov 2004 16:30:53 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAFGUq70089223 for perforce@freebsd.org; Mon, 15 Nov 2004 16:30:52 GMT (envelope-from jhb@freebsd.org) Date: Mon, 15 Nov 2004 16:30:52 GMT Message-Id: <200411151630.iAFGUq70089223@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65186 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 16:30:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=65186 Change 65186 by jhb@jhb_slimer on 2004/11/15 16:30:32 Don't recursively panic in this function. Affected files ... .. //depot/projects/smpng/sys/i386/i386/local_apic.c#18 edit Differences ... ==== //depot/projects/smpng/sys/i386/i386/local_apic.c#18 (text+ko) ==== @@ -755,8 +755,12 @@ } /* Wait for an earlier IPI to finish. */ - if (!lapic_ipi_wait(BEFORE_SPIN)) - panic("APIC: Previous IPI is stuck"); + if (!lapic_ipi_wait(BEFORE_SPIN)) { + if (panicstr != NULL) + return; + else + panic("APIC: Previous IPI is stuck"); + } lapic_ipi_raw(icrlo, destfield); From owner-p4-projects@FreeBSD.ORG Mon Nov 15 18:53:16 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E990416A4D1; Mon, 15 Nov 2004 18:53:15 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AD19616A4CE for ; Mon, 15 Nov 2004 18:53:15 +0000 (GMT) Received: from mail1.speakeasy.net (mail1.speakeasy.net [216.254.0.201]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6D88B43D45 for ; Mon, 15 Nov 2004 18:53:15 +0000 (GMT) (envelope-from jhb@FreeBSD.org) Received: (qmail 12619 invoked from network); 15 Nov 2004 18:53:15 -0000 Received: from dsl027-160-063.atl1.dsl.speakeasy.net (HELO server.baldwin.cx) ([216.27.160.63]) (envelope-sender ) encrypted SMTP for ; 15 Nov 2004 18:53:12 -0000 Received: from [10.50.41.235] (gw1.twc.weather.com [216.133.140.1]) (authenticated bits=0) by server.baldwin.cx (8.12.11/8.12.11) with ESMTP id iAFIqEli075648; Mon, 15 Nov 2004 13:52:59 -0500 (EST) (envelope-from jhb@FreeBSD.org) From: John Baldwin To: David Xu Date: Mon, 15 Nov 2004 13:18:49 -0500 User-Agent: KMail/1.6.2 References: <200411140513.iAE5DOTv056478@repoman.freebsd.org> In-Reply-To: <200411140513.iAE5DOTv056478@repoman.freebsd.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200411151318.49415.jhb@FreeBSD.org> X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on server.baldwin.cx cc: Perforce Change Reviews Subject: Re: PERFORCE change 65074 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 18:53:16 -0000 On Sunday 14 November 2004 12:13 am, David Xu wrote: > http://perforce.freebsd.org/chv.cgi?CH=65074 > > Change 65074 by davidxu@davidxu_alona on 2004/11/14 05:12:40 > > 1. Fix a race between signal and umtx_unlock. a waiter > may be resumed by signal and left or exited, heavily > loaded test causes kernel to crash. > 2. Use distributed queue locks instead of single giant > lock. > > Affected files ... > > .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 edit > > Differences ... > > ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 (text+ko) > ==== > > @@ -49,25 +49,48 @@ > pid_t uq_pid; /* Pid key component. */ > }; > > #define UMTX_QUEUES 128 > #define UMTX_HASH(pid, umtx) \ > - (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES) > + ((((uintptr_t)pid << 16) + ((uintptr_t)umtx & 65535)) % UMTX_QUEUES) I'm curious why you changed the hash macro here? Low order bits of pointers tend to be zero due to alignment, so I think this will result in fewer "useful" bits and more collisions and longer chains. -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org From owner-p4-projects@FreeBSD.ORG Mon Nov 15 19:20:19 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7E18516A4D1; Mon, 15 Nov 2004 19:20:19 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5522716A4CE for ; Mon, 15 Nov 2004 19:20:19 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2A31843D1D for ; Mon, 15 Nov 2004 19:20:19 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAFJKJx9001857 for ; Mon, 15 Nov 2004 19:20:19 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAFJKIJd001854 for perforce@freebsd.org; Mon, 15 Nov 2004 19:20:18 GMT (envelope-from jhb@freebsd.org) Date: Mon, 15 Nov 2004 19:20:18 GMT Message-Id: <200411151920.iAFJKIJd001854@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65191 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 19:20:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=65191 Change 65191 by jhb@jhb_slimer on 2004/11/15 19:20:11 Tweak interrupt storming some. Once we detect an interrupt storm, go into storming mode for at least one second or until it stops interrupting each time we enable the interrupt source. While in storming mode, we only allow one interrupt per clock tick. Before, we would allow storm_threshold interrupts per clock tick which wasn't that great. Affected files ... .. //depot/projects/smpng/sys/kern/kern_intr.c#59 edit Differences ... ==== //depot/projects/smpng/sys/kern/kern_intr.c#59 (text+ko) ==== @@ -485,7 +485,7 @@ struct intrhand *ih; /* and our interrupt handler chain */ struct thread *td; struct proc *p; - int count, warned; + int count, warned, storming; td = curthread; p = td->td_proc; @@ -494,6 +494,7 @@ ("%s: ithread and proc linkage out of sync", __func__)); count = 0; warned = 0; + storming = 0; /* * As long as we have interrupts outstanding, go through the @@ -549,10 +550,26 @@ } /* - * If we detect an interrupt storm, pause with the - * source masked until the next hardclock tick. + * Interrupt storm handling: + * + * If this interrupt source is currently storming, + * then throttle it to only fire the handler once + * per clock tick. Each second we go out of storming + * mode to see if the storm has subsided. + * + * If this interrupt source is not currently + * storming, but the number of back to back + * interrupts exceeds the storm threshold, then + * enter storming mode. */ - if (intr_storm_threshold != 0 && + if (storming) { + tsleep(&count, td->td_priority, "istorm", 1); + if (count > hz) { + storming = 0; + count = 0; + } else + count++; + } else if (intr_storm_threshold != 0 && count >= intr_storm_threshold) { if (!warned) { printf( @@ -560,7 +577,7 @@ p->p_comm); warned = 1; } - tsleep(&count, td->td_priority, "istorm", 1); + storming = 1; count = 0; } else count++; @@ -580,6 +597,7 @@ if (!ithd->it_need) { TD_SET_IWAIT(td); count = 0; + storming = 0; CTR2(KTR_INTR, "%s: pid %d: done", __func__, p->p_pid); mi_switch(SW_VOL, NULL); CTR2(KTR_INTR, "%s: pid %d: resumed", __func__, p->p_pid); From owner-p4-projects@FreeBSD.ORG Mon Nov 15 20:17:30 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 84CC516A4D1; Mon, 15 Nov 2004 20:17:30 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5F77D16A4CE for ; Mon, 15 Nov 2004 20:17:30 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5111443D1F for ; Mon, 15 Nov 2004 20:17:30 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAFKHU2X005105 for ; Mon, 15 Nov 2004 20:17:30 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAFKHUvQ005102 for perforce@freebsd.org; Mon, 15 Nov 2004 20:17:30 GMT (envelope-from jhb@freebsd.org) Date: Mon, 15 Nov 2004 20:17:30 GMT Message-Id: <200411152017.iAFKHUvQ005102@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65196 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 20:17:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=65196 Change 65196 by jhb@jhb_slimer on 2004/11/15 20:17:23 Ugh, more hacking that may help this further. If this helps, then I think the real fix is going to be to hack on critical sections. Affected files ... .. //depot/projects/smpng/sys/kern/kern_mutex.c#88 edit Differences ... ==== //depot/projects/smpng/sys/kern/kern_mutex.c#88 (text+ko) ==== @@ -577,6 +577,9 @@ int line) { int i = 0; +#ifdef __i386__ + int apic_hack; +#endif if (LOCK_LOG_TEST(&m->mtx_object, opts)) CTR1(KTR_LOCK, "_mtx_lock_spin: %p spinning", m); @@ -587,6 +590,11 @@ /* Give interrupts a chance while we spin. */ critical_exit(); +#ifdef __i386__ + apic_hack = (read_eflags() & PSL_I) == 0; + if (apic_hack) + APIC_IPI_SPINWAIT_ENTER(); +#endif while (m->mtx_lock != MTX_UNOWNED) { if (i++ < 10000000) { cpu_spinwait(); @@ -605,6 +613,10 @@ } cpu_spinwait(); } +#ifdef __i386__ + if (apic_hack) + APIC_IPI_SPINWAIT_EXIT(); +#endif critical_enter(); } From owner-p4-projects@FreeBSD.ORG Mon Nov 15 20:19:33 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8FB2E16A4D1; Mon, 15 Nov 2004 20:19:33 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6BF0416A4CE for ; Mon, 15 Nov 2004 20:19:33 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 46F7443D1F for ; Mon, 15 Nov 2004 20:19:33 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAFKJXO8005190 for ; Mon, 15 Nov 2004 20:19:33 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAFKJWdR005187 for perforce@freebsd.org; Mon, 15 Nov 2004 20:19:32 GMT (envelope-from jhb@freebsd.org) Date: Mon, 15 Nov 2004 20:19:32 GMT Message-Id: <200411152019.iAFKJWdR005187@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65197 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 20:19:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=65197 Change 65197 by jhb@jhb_slimer on 2004/11/15 20:18:42 Compile. Affected files ... .. //depot/projects/smpng/sys/kern/kern_mutex.c#89 edit Differences ... ==== //depot/projects/smpng/sys/kern/kern_mutex.c#89 (text+ko) ==== @@ -59,6 +59,9 @@ #include #include +#ifdef __i386__ +#include +#endif #include #include #include From owner-p4-projects@FreeBSD.ORG Mon Nov 15 20:20:35 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4DD5116A4D1; Mon, 15 Nov 2004 20:20:35 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2A61A16A4CE for ; Mon, 15 Nov 2004 20:20:35 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0532343D41 for ; Mon, 15 Nov 2004 20:20:35 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAFKKYvh005246 for ; Mon, 15 Nov 2004 20:20:34 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAFKKYmU005243 for perforce@freebsd.org; Mon, 15 Nov 2004 20:20:34 GMT (envelope-from jhb@freebsd.org) Date: Mon, 15 Nov 2004 20:20:34 GMT Message-Id: <200411152020.iAFKKYmU005243@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65198 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 20:20:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=65198 Change 65198 by jhb@jhb_twclab on 2004/11/15 20:20:33 Actually compile. Affected files ... .. //depot/projects/smpng/sys/kern/kern_mutex.c#90 edit Differences ... ==== //depot/projects/smpng/sys/kern/kern_mutex.c#90 (text+ko) ==== @@ -60,6 +60,8 @@ #include #ifdef __i386__ +#include +#include #include #endif #include From owner-p4-projects@FreeBSD.ORG Mon Nov 15 20:57:22 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F0BF116A4D1; Mon, 15 Nov 2004 20:57:21 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B445016A4CE for ; Mon, 15 Nov 2004 20:57:21 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8232543D2F for ; Mon, 15 Nov 2004 20:57:21 +0000 (GMT) (envelope-from wsalamon@computer.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAFKvLx4013070 for ; Mon, 15 Nov 2004 20:57:21 GMT (envelope-from wsalamon@computer.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAFKvLYu013067 for perforce@freebsd.org; Mon, 15 Nov 2004 20:57:21 GMT (envelope-from wsalamon@computer.org) Date: Mon, 15 Nov 2004 20:57:21 GMT Message-Id: <200411152057.iAFKvLYu013067@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to wsalamon@computer.org using -f From: Wayne Salamon To: Perforce Change Reviews Subject: PERFORCE change 65203 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 20:57:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=65203 Change 65203 by wsalamon@rickenbacker on 2004/11/15 20:56:45 Add audit event constants to system calls. Most are AUE_NULL, and should be filled in as the sys/kern/syscalls.master are filled. Affected files ... .. //depot/projects/trustedbsd/audit3/sys/i386/linux/syscalls.master#3 edit Differences ... ==== //depot/projects/trustedbsd/audit3/sys/i386/linux/syscalls.master#3 (text+ko) ==== @@ -9,6 +9,11 @@ ; type one of STD, OBSOL, UNIMPL, COMPAT ; name psuedo-prototype of syscall routine ; If one of the following alts is different, then all appear: +; audit the audit event associated with the system call +; A value of AUE_NULL means no auditing, but it also means that +; there is no audit event for the call at this time. For the +; case where the event exists, but we don't want auditing, the +; event should be #defined to AUE_NULL in audit_kevents.h. ; altname name of system call if different ; alttag name of args struct tag if different from [o]`name'"_args" ; altrtyp return type if not int (bogus - syscalls always return int) @@ -31,301 +36,346 @@ ; #ifdef's, etc. may be included, and are copied to the output files. 0 UNIMPL setup -1 MNOPROTO { void sys_exit(int rval); } exit sys_exit_args void -2 MSTD { int linux_fork(void); } -3 MNOPROTO { int read(int fd, char *buf, u_int nbyte); } -4 MNOPROTO { int write(int fd, char *buf, u_int nbyte); } -5 STD { int linux_open(char *path, l_int flags, l_int mode); } -6 MNOPROTO { int close(int fd); } -7 MSTD { int linux_waitpid(l_pid_t pid, l_int *status, l_int options); } -8 STD { int linux_creat(char *path, l_int mode); } -9 STD { int linux_link(char *path, char *to); } -10 STD { int linux_unlink(char *path); } -11 STD { int linux_execve(char *path, char **argp, char **envp); } -12 STD { int linux_chdir(char *path); } -13 STD { int linux_time(l_time_t *tm); } -14 STD { int linux_mknod(char *path, l_int mode, l_dev_t dev); } -15 STD { int linux_chmod(char *path, l_mode_t mode); } +1 MNOPROTO { void sys_exit(int rval); } AUE_EXIT exit sys_exit_args void +2 MSTD { int linux_fork(void); } AUE_FORK +3 MNOPROTO { int read(int fd, char *buf, u_int nbyte); } AUE_NULL +4 MNOPROTO { int write(int fd, char *buf, u_int nbyte); } AUE_NULL +5 STD { int linux_open(char *path, l_int flags, l_int mode); } AUE_OPEN +6 MNOPROTO { int close(int fd); } AUE_CLOSE +7 MSTD { int linux_waitpid(l_pid_t pid, \ + l_int *status, l_int options); } AUE_NULL +8 STD { int linux_creat(char *path, l_int mode); } AUE_NULL +9 STD { int linux_link(char *path, char *to); } AUE_NULL +10 STD { int linux_unlink(char *path); } AUE_NULL +11 STD { int linux_execve(char *path, char **argp, \ + char **envp); } AUE_NULL +12 STD { int linux_chdir(char *path); } AUE_NULL +13 STD { int linux_time(l_time_t *tm); } AUE_NULL +14 STD { int linux_mknod(char *path, l_int mode, \ + l_dev_t dev); } AUE_NULL +15 STD { int linux_chmod(char *path, l_mode_t mode); } AUE_NULL 16 STD { int linux_lchown16(char *path, l_uid16_t uid, \ - l_gid16_t gid); } + l_gid16_t gid); } AUE_NULL 17 UNIMPL break -18 STD { int linux_stat(char *path, struct ostat *up); } -19 STD { int linux_lseek(l_uint fdes, l_off_t off, l_int whence); } -20 MSTD { int linux_getpid(void); } +18 STD { int linux_stat(char *path, struct ostat *up); } AUE_NULL +19 STD { int linux_lseek(l_uint fdes, l_off_t off, \ + l_int whence); } AUE_NULL +20 MSTD { int linux_getpid(void); } AUE_NULL 21 STD { int linux_mount(char *specialfile, char *dir, \ char *filesystemtype, l_ulong rwflag, \ - void *data); } -22 STD { int linux_oldumount(char *path); } -23 MSTD { int linux_setuid16(l_uid16_t uid); } -24 MSTD { int linux_getuid16(void); } -25 STD { int linux_stime(void); } + void *data); } AUE_NULL +22 STD { int linux_oldumount(char *path); } AUE_NULL +23 MSTD { int linux_setuid16(l_uid16_t uid); } AUE_NULL +24 MSTD { int linux_getuid16(void); } AUE_NULL +25 STD { int linux_stime(void); } AUE_NULL 26 MSTD { int linux_ptrace(l_long req, l_long pid, l_long addr, \ - l_long data); } -27 STD { int linux_alarm(l_uint secs); } -28 STD { int linux_fstat(l_uint fd, struct ostat *up); } -29 MSTD { int linux_pause(void); } -30 STD { int linux_utime(char *fname, struct l_utimbuf *times); } + l_long data); } AUE_NULL +27 STD { int linux_alarm(l_uint secs); } AUE_NULL +28 STD { int linux_fstat(l_uint fd, struct ostat *up); } AUE_NULL +29 MSTD { int linux_pause(void); } AUE_NULL +30 STD { int linux_utime(char *fname, \ + struct l_utimbuf *times); } AUE_NULL 31 UNIMPL stty 32 UNIMPL gtty -33 STD { int linux_access(char *path, l_int flags); } -34 MSTD { int linux_nice(l_int inc); } +33 STD { int linux_access(char *path, l_int flags); } AUE_NULL +34 MSTD { int linux_nice(l_int inc); } AUE_NULL 35 UNIMPL ftime -36 NOPROTO { int sync(void); } -37 MSTD { int linux_kill(l_int pid, l_int signum); } -38 STD { int linux_rename(char *from, char *to); } -39 STD { int linux_mkdir(char *path, l_int mode); } -40 STD { int linux_rmdir(char *path); } -41 MNOPROTO { int dup(u_int fd); } -42 MSTD { int linux_pipe(l_ulong *pipefds); } -43 STD { int linux_times(struct l_times_argv *buf); } +36 NOPROTO { int sync(void); } AUE_NULL +37 MSTD { int linux_kill(l_int pid, l_int signum); } AUE_NULL +38 STD { int linux_rename(char *from, char *to); } AUE_NULL +39 STD { int linux_mkdir(char *path, l_int mode); } AUE_NULL +40 STD { int linux_rmdir(char *path); } AUE_NULL +41 MNOPROTO { int dup(u_int fd); } AUE_NULL +42 MSTD { int linux_pipe(l_ulong *pipefds); } AUE_NULL +43 STD { int linux_times(struct l_times_argv *buf); } AUE_NULL 44 UNIMPL prof -45 STD { int linux_brk(l_ulong dsend); } -46 MSTD { int linux_setgid16(l_gid16_t gid); } -47 MSTD { int linux_getgid16(void); } -48 MSTD { int linux_signal(l_int sig, l_handler_t handler); } -49 MSTD { int linux_geteuid16(void); } -50 MSTD { int linux_getegid16(void); } -51 MNOPROTO { int acct(char *path); } -52 STD { int linux_umount(char *path, l_int flags); } +45 STD { int linux_brk(l_ulong dsend); } AUE_NULL +46 MSTD { int linux_setgid16(l_gid16_t gid); } AUE_NULL +47 MSTD { int linux_getgid16(void); } AUE_NULL +48 MSTD { int linux_signal(l_int sig, l_handler_t handler); } AUE_NULL +49 MSTD { int linux_geteuid16(void); } AUE_NULL +50 MSTD { int linux_getegid16(void); } AUE_NULL +51 MNOPROTO { int acct(char *path); } AUE_NULL +52 STD { int linux_umount(char *path, l_int flags); } AUE_NULL 53 UNIMPL lock -54 STD { int linux_ioctl(l_uint fd, l_uint cmd, l_ulong arg); } -55 MSTD { int linux_fcntl(l_uint fd, l_uint cmd, l_ulong arg); } +54 STD { int linux_ioctl(l_uint fd, l_uint cmd, l_ulong arg); } AUE_NULL +55 MSTD { int linux_fcntl(l_uint fd, l_uint cmd, l_ulong arg); } AUE_NULL 56 UNIMPL mpx -57 MNOPROTO { int setpgid(int pid, int pgid); } +57 MNOPROTO { int setpgid(int pid, int pgid); } AUE_NULL 58 UNIMPL ulimit -59 STD { int linux_olduname(void); } -60 MNOPROTO { int umask(int newmask); } -61 NOPROTO { int chroot(char *path); } -62 STD { int linux_ustat(l_dev_t dev, struct l_ustat *ubuf); } -63 MNOPROTO { int dup2(u_int from, u_int to); } -64 MNOPROTO { int getppid(void); } -65 MNOPROTO { int getpgrp(void); } -66 MNOPROTO { int setsid(void); } +59 STD { int linux_olduname(void); } AUE_NULL +60 MNOPROTO { int umask(int newmask); } AUE_NULL +61 NOPROTO { int chroot(char *path); } AUE_NULL +62 STD { int linux_ustat(l_dev_t dev, struct l_ustat *ubuf); } AUE_NULL +63 MNOPROTO { int dup2(u_int from, u_int to); } AUE_NULL +64 MNOPROTO { int getppid(void); } AUE_NULL +65 MNOPROTO { int getpgrp(void); } AUE_NULL +66 MNOPROTO { int setsid(void); } AUE_NULL 67 MSTD { int linux_sigaction(l_int sig, l_osigaction_t *nsa, \ - l_osigaction_t *osa); } -68 MSTD { int linux_sgetmask(void); } -69 MSTD { int linux_ssetmask(l_osigset_t mask); } -70 MSTD { int linux_setreuid16(l_uid16_t ruid, l_uid16_t euid); } -71 MSTD { int linux_setregid16(l_gid16_t rgid, l_gid16_t egid); } + l_osigaction_t *osa); } AUE_NULL +68 MSTD { int linux_sgetmask(void); } AUE_NULL +69 MSTD { int linux_ssetmask(l_osigset_t mask); } AUE_NULL +70 MSTD { int linux_setreuid16(l_uid16_t ruid, \ + l_uid16_t euid); } AUE_NULL +71 MSTD { int linux_setregid16(l_gid16_t rgid, \ + l_gid16_t egid); } AUE_NULL 72 MSTD { int linux_sigsuspend(l_int hist0, l_int hist1, \ - l_osigset_t mask); } -73 MSTD { int linux_sigpending(l_osigset_t *mask); } -74 MNOPROTO { int osethostname(char *hostname, u_int len); } \ + l_osigset_t mask); } AUE_NULL +73 MSTD { int linux_sigpending(l_osigset_t *mask); } AUE_NULL +74 MNOPROTO { int osethostname(char *hostname, u_int len); } AUE_NULL \ osethostname sethostname_args int -75 MSTD { int linux_setrlimit(l_uint resource, struct l_rlimit *rlim); } +75 MSTD { int linux_setrlimit(l_uint resource, \ + struct l_rlimit *rlim); } AUE_NULL 76 MSTD { int linux_old_getrlimit(l_uint resource, \ - struct l_rlimit *rlim); } -77 MNOPROTO { int getrusage(int who, struct rusage *rusage); } -78 MNOPROTO { int gettimeofday(struct timeval *tp, struct timezone *tzp); } -79 MNOPROTO { int settimeofday(struct timeval *tp, struct timezone *tzp); } -80 MSTD { int linux_getgroups16(l_uint gidsetsize, l_gid16_t *gidset); } -81 MSTD { int linux_setgroups16(l_uint gidsetsize, l_gid16_t *gidset); } -82 STD { int linux_old_select(struct l_old_select_argv *ptr); } -83 STD { int linux_symlink(char *path, char *to); } -84 NOPROTO { int ostat(char *path, struct ostat *up); } -85 STD { int linux_readlink(char *name, char *buf, l_int count); } -86 STD { int linux_uselib(char *library); } -87 NOPROTO { int swapon(char *name); } + struct l_rlimit *rlim); } AUE_NULL +77 MNOPROTO { int getrusage(int who, struct rusage *rusage); } AUE_NULL +78 MNOPROTO { int gettimeofday(struct timeval *tp, \ + struct timezone *tzp); } AUE_NULL +79 MNOPROTO { int settimeofday(struct timeval *tp, \ + struct timezone *tzp); } AUE_NULL +80 MSTD { int linux_getgroups16(l_uint gidsetsize, \ + l_gid16_t *gidset); } AUE_NULL +81 MSTD { int linux_setgroups16(l_uint gidsetsize, \ + l_gid16_t *gidset); } AUE_NULL +82 STD { int linux_old_select(struct l_old_select_argv *ptr); } AUE_NULL +83 STD { int linux_symlink(char *path, char *to); } AUE_NULL +84 NOPROTO { int ostat(char *path, struct ostat *up); } AUE_NULL +85 STD { int linux_readlink(char *name, char *buf, \ + l_int count); } AUE_NULL +86 STD { int linux_uselib(char *library); } AUE_NULL +87 NOPROTO { int swapon(char *name); } AUE_NULL 88 STD { int linux_reboot(l_int magic1, l_int magic2, l_uint cmd, \ - void *arg); } + void *arg); } AUE_NULL 89 STD { int linux_readdir(l_uint fd, struct l_dirent *dent, \ - l_uint count); } -90 STD { int linux_mmap(struct l_mmap_argv *ptr); } -91 NOPROTO { int munmap(caddr_t addr, int len); } -92 STD { int linux_truncate(char *path, l_ulong length); } -93 NOPROTO { int oftruncate(int fd, long length); } -94 NOPROTO { int fchmod(int fd, int mode); } -95 NOPROTO { int fchown(int fd, int uid, int gid); } -96 MNOPROTO { int getpriority(int which, int who); } -97 MNOPROTO { int setpriority(int which, int who, int prio); } + l_uint count); } AUE_NULL +90 STD { int linux_mmap(struct l_mmap_argv *ptr); } AUE_NULL +91 NOPROTO { int munmap(caddr_t addr, int len); } AUE_NULL +92 STD { int linux_truncate(char *path, l_ulong length); } AUE_NULL +93 NOPROTO { int oftruncate(int fd, long length); } AUE_NULL +94 NOPROTO { int fchmod(int fd, int mode); } AUE_NULL +95 NOPROTO { int fchown(int fd, int uid, int gid); } AUE_NULL +96 MNOPROTO { int getpriority(int which, int who); } AUE_NULL +97 MNOPROTO { int setpriority(int which, int who, int prio); } AUE_NULL 98 UNIMPL profil -99 STD { int linux_statfs(char *path, struct l_statfs_buf *buf); } -100 STD { int linux_fstatfs(l_uint fd, struct l_statfs_buf *buf); } +99 STD { int linux_statfs(char *path, \ + struct l_statfs_buf *buf); } AUE_NULL +100 STD { int linux_fstatfs(l_uint fd, \ + struct l_statfs_buf *buf); } AUE_NULL 101 STD { int linux_ioperm(l_ulong start, l_ulong length, \ - l_int enable); } -102 STD { int linux_socketcall(l_int what, l_ulong args); } -103 STD { int linux_syslog(l_int type, char *buf, l_int len); } + l_int enable); } AUE_NULL +102 STD { int linux_socketcall(l_int what, l_ulong args); } AUE_NULL +103 STD { int linux_syslog(l_int type, char *buf, l_int len); } AUE_NULL 104 STD { int linux_setitimer(l_int which, struct l_itimerval *itv, \ - struct l_itimerval *oitv); } -105 STD { int linux_getitimer(l_int which, struct l_itimerval *itv); } -106 STD { int linux_newstat(char *path, struct l_newstat *buf); } -107 STD { int linux_newlstat(char *path, struct l_newstat *buf); } -108 STD { int linux_newfstat(l_uint fd, struct l_newstat *buf); } -109 STD { int linux_uname(void); } -110 STD { int linux_iopl(l_ulong level); } -111 STD { int linux_vhangup(void); } + struct l_itimerval *oitv); } AUE_NULL +105 STD { int linux_getitimer(l_int which, \ + struct l_itimerval *itv); } AUE_NULL +106 STD { int linux_newstat(char *path, \ + struct l_newstat *buf); } AUE_NULL +107 STD { int linux_newlstat(char *path, \ + struct l_newstat *buf); } AUE_NULL +108 STD { int linux_newfstat(l_uint fd, \ + struct l_newstat *buf); } AUE_NULL +109 STD { int linux_uname(void); } AUE_NULL +110 STD { int linux_iopl(l_ulong level); } AUE_NULL +111 STD { int linux_vhangup(void); } AUE_NULL 112 UNIMPL idle -113 STD { int linux_vm86old(void); } +113 STD { int linux_vm86old(void); } AUE_NULL 114 MSTD { int linux_wait4(l_pid_t pid, l_uint *status, \ - l_int options, struct l_rusage *rusage); } -115 STD { int linux_swapoff(void); } -116 STD { int linux_sysinfo(struct l_sysinfo *info); } + l_int options, struct l_rusage *rusage); } AUE_NULL +115 STD { int linux_swapoff(void); } AUE_NULL +116 STD { int linux_sysinfo(struct l_sysinfo *info); } AUE_NULL 117 STD { int linux_ipc(l_uint what, l_int arg1, l_int arg2, \ - l_int arg3, void *ptr, l_long arg5); } -118 NOPROTO { int fsync(int fd); } -119 MSTD { int linux_sigreturn(struct l_sigframe *sfp); } -120 MSTD { int linux_clone(l_int flags, void *stack); } -121 MNOPROTO { int setdomainname(char *name, int len); } -122 STD { int linux_newuname(struct l_new_utsname *buf); } + l_int arg3, void *ptr, l_long arg5); } AUE_NULL +118 NOPROTO { int fsync(int fd); } AUE_NULL +119 MSTD { int linux_sigreturn(struct l_sigframe *sfp); } AUE_NULL +120 MSTD { int linux_clone(l_int flags, void *stack); } AUE_NULL +121 MNOPROTO { int setdomainname(char *name, int len); } AUE_NULL +122 STD { int linux_newuname(struct l_new_utsname *buf); } AUE_NULL 123 STD { int linux_modify_ldt(l_int func, void *ptr, \ - l_ulong bytecount); } -124 STD { int linux_adjtimex(void); } -125 NOPROTO { int mprotect(caddr_t addr, int len, int prot); } + l_ulong bytecount); } AUE_NULL +124 STD { int linux_adjtimex(void); } AUE_NULL +125 NOPROTO { int mprotect(caddr_t addr, int len, int prot); } AUE_NULL 126 MSTD { int linux_sigprocmask(l_int how, l_osigset_t *mask, \ - l_osigset_t *omask); } -127 STD { int linux_create_module(void); } -128 STD { int linux_init_module(void); } -129 STD { int linux_delete_module(void); } -130 STD { int linux_get_kernel_syms(void); } -131 STD { int linux_quotactl(void); } -132 NOPROTO { int getpgid(int pid); } -133 NOPROTO { int fchdir(int fd); } -134 STD { int linux_bdflush(void); } -135 STD { int linux_sysfs(l_int option, l_ulong arg1, l_ulong arg2); } -136 STD { int linux_personality(l_ulong per); } + l_osigset_t *omask); } AUE_NULL +127 STD { int linux_create_module(void); } AUE_NULL +128 STD { int linux_init_module(void); } AUE_NULL +129 STD { int linux_delete_module(void); } AUE_NULL +130 STD { int linux_get_kernel_syms(void); } AUE_NULL +131 STD { int linux_quotactl(void); } AUE_NULL +132 NOPROTO { int getpgid(int pid); } AUE_NULL +133 NOPROTO { int fchdir(int fd); } AUE_NULL +134 STD { int linux_bdflush(void); } AUE_NULL +135 STD { int linux_sysfs(l_int option, l_ulong arg1, \ + l_ulong arg2); } AUE_NULL +136 STD { int linux_personality(l_ulong per); } AUE_NULL 137 UNIMPL afs_syscall -138 STD { int linux_setfsuid16(l_uid16_t uid); } -139 STD { int linux_setfsgid16(l_gid16_t gid); } +138 STD { int linux_setfsuid16(l_uid16_t uid); } AUE_NULL +139 STD { int linux_setfsgid16(l_gid16_t gid); } AUE_NULL 140 STD { int linux_llseek(l_int fd, l_ulong ohigh, l_ulong olow, \ - l_loff_t *res, l_uint whence); } -141 STD { int linux_getdents(l_uint fd, void *dent, l_uint count); } + l_loff_t *res, l_uint whence); } AUE_NULL +141 STD { int linux_getdents(l_uint fd, void *dent, \ + l_uint count); } AUE_NULL 142 STD { int linux_select(l_int nfds, l_fd_set *readfds, \ l_fd_set *writefds, l_fd_set *exceptfds, \ - struct l_timeval *timeout); } -143 NOPROTO { int flock(int fd, int how); } -144 STD { int linux_msync(l_ulong addr, l_size_t len, l_int fl); } -145 NOPROTO { int readv(int fd, struct iovec *iovp, u_int iovcnt); } -146 NOPROTO { int writev(int fd, struct iovec *iovp, u_int iovcnt); } -147 MSTD { int linux_getsid(l_pid_t pid); } -148 STD { int linux_fdatasync(l_uint fd); } -149 STD { int linux_sysctl(struct l___sysctl_args *args); } -150 MNOPROTO { int mlock(const void *addr, size_t len); } -151 MNOPROTO { int munlock(const void *addr, size_t len); } -152 MNOPROTO { int mlockall(int how); } -153 MNOPROTO { int munlockall(void); } + struct l_timeval *timeout); } AUE_NULL +143 NOPROTO { int flock(int fd, int how); } AUE_NULL +144 STD { int linux_msync(l_ulong addr, \ + l_size_t len, l_int fl); } AUE_NULL +145 NOPROTO { int readv(int fd, struct iovec *iovp, \ + u_int iovcnt); } AUE_NULL +146 NOPROTO { int writev(int fd, struct iovec *iovp, \ + u_int iovcnt); } AUE_NULL +147 MSTD { int linux_getsid(l_pid_t pid); } AUE_NULL +148 STD { int linux_fdatasync(l_uint fd); } AUE_NULL +149 STD { int linux_sysctl(struct l___sysctl_args *args); } AUE_NULL +150 MNOPROTO { int mlock(const void *addr, size_t len); } AUE_NULL +151 MNOPROTO { int munlock(const void *addr, size_t len); } AUE_NULL +152 MNOPROTO { int mlockall(int how); } AUE_NULL +153 MNOPROTO { int munlockall(void); } AUE_NULL 154 MNOPROTO { int sched_setparam(pid_t pid, \ - const struct sched_param *param); } + const struct sched_param *param); } AUE_NULL 155 MNOPROTO { int sched_getparam(pid_t pid, \ - struct sched_param *param); } + struct sched_param *param); } AUE_NULL 156 MSTD { int linux_sched_setscheduler(l_pid_t pid, \ - l_int policy, struct l_sched_param *param); } -157 MSTD { int linux_sched_getscheduler(l_pid_t pid); } -158 NOPROTO { int sched_yield(void); } -159 MSTD { int linux_sched_get_priority_max(l_int policy); } -160 MSTD { int linux_sched_get_priority_min(l_int policy); } + l_int policy, \ + struct l_sched_param *param); } AUE_NULL +157 MSTD { int linux_sched_getscheduler(l_pid_t pid); } AUE_NULL +158 NOPROTO { int sched_yield(void); } AUE_NULL +159 MSTD { int linux_sched_get_priority_max(l_int policy); } AUE_NULL +160 MSTD { int linux_sched_get_priority_min(l_int policy); } AUE_NULL 161 MNOPROTO { int sched_rr_get_interval(l_pid_t pid, \ - struct l_timespec *interval); } + struct l_timespec *interval); } AUE_NULL 162 MNOPROTO { int nanosleep(const struct timespec *rqtp, \ - struct timespec *rmtp); } + struct timespec *rmtp); } AUE_NULL 163 STD { int linux_mremap(l_ulong addr, l_ulong old_len, \ l_ulong new_len, l_ulong flags, \ - l_ulong new_addr); } + l_ulong new_addr); } AUE_NULL 164 MSTD { int linux_setresuid16(l_uid16_t ruid, \ - l_uid16_t euid, l_uid16_t suid); } + l_uid16_t euid, l_uid16_t suid); } AUE_NULL 165 MSTD { int linux_getresuid16(l_uid16_t *ruid, \ - l_uid16_t *euid, l_uid16_t *suid); } -166 STD { int linux_vm86(void); } -167 STD { int linux_query_module(void); } -168 NOPROTO { int poll(struct pollfd*, unsigned int nfds, long timeout); } -169 STD { int linux_nfsservctl(void); } + l_uid16_t *euid, l_uid16_t *suid); } AUE_NULL +166 STD { int linux_vm86(void); } AUE_NULL +167 STD { int linux_query_module(void); } AUE_NULL +168 NOPROTO { int poll(struct pollfd*, unsigned int nfds, \ + long timeout); } AUE_NULL +169 STD { int linux_nfsservctl(void); } AUE_NULL 170 MSTD { int linux_setresgid16(l_gid16_t rgid, \ - l_gid16_t egid, l_gid16_t sgid); } + l_gid16_t egid, l_gid16_t sgid); } AUE_NULL 171 MSTD { int linux_getresgid16(l_gid16_t *rgid, \ - l_gid16_t *egid, l_gid16_t *sgid); } -172 STD { int linux_prctl(void); } -173 STD { int linux_rt_sigreturn(struct l_ucontext *ucp); } + l_gid16_t *egid, l_gid16_t *sgid); } AUE_NULL +172 STD { int linux_prctl(void); } AUE_NULL +173 STD { int linux_rt_sigreturn(struct l_ucontext *ucp); } AUE_NULL 174 MSTD { int linux_rt_sigaction(l_int sig, \ l_sigaction_t *act, l_sigaction_t *oact, \ - l_size_t sigsetsize); } + l_size_t sigsetsize); } AUE_NULL 175 MSTD { int linux_rt_sigprocmask(l_int how, \ l_sigset_t *mask, l_sigset_t *omask, \ - l_size_t sigsetsize); } -176 STD { int linux_rt_sigpending(void); } -177 STD { int linux_rt_sigtimedwait(void); } -178 STD { int linux_rt_sigqueueinfo(void); } + l_size_t sigsetsize); } AUE_NULL +176 STD { int linux_rt_sigpending(void); } AUE_NULL +177 STD { int linux_rt_sigtimedwait(void); } AUE_NULL +178 STD { int linux_rt_sigqueueinfo(void); } AUE_NULL 179 MSTD { int linux_rt_sigsuspend(l_sigset_t *newset, \ - l_size_t sigsetsize); } + l_size_t sigsetsize); } AUE_NULL 180 STD { int linux_pread(l_uint fd, char *buf, \ - l_size_t nbyte, l_loff_t offset); } + l_size_t nbyte, l_loff_t offset); } AUE_NULL 181 STD { int linux_pwrite(l_uint fd, char *buf, \ - l_size_t nbyte, l_loff_t offset); } -182 STD { int linux_chown16(char *path, l_uid16_t uid, l_gid16_t gid); } -183 STD { int linux_getcwd(char *buf, l_ulong bufsize); } -184 STD { int linux_capget(void); } -185 STD { int linux_capset(void); } -186 STD { int linux_sigaltstack(l_stack_t *uss, l_stack_t *uoss); } -187 STD { int linux_sendfile(void); } + l_size_t nbyte, l_loff_t offset); } AUE_NULL +182 STD { int linux_chown16(char *path, l_uid16_t uid, \ + l_gid16_t gid); } AUE_NULL +183 STD { int linux_getcwd(char *buf, l_ulong bufsize); } AUE_NULL +184 STD { int linux_capget(void); } AUE_NULL +185 STD { int linux_capset(void); } AUE_NULL +186 STD { int linux_sigaltstack(l_stack_t *uss, \ + l_stack_t *uoss); } AUE_NULL +187 STD { int linux_sendfile(void); } AUE_NULL 188 UNIMPL getpmsg 189 UNIMPL putpmsg -190 MSTD { int linux_vfork(void); } -191 MSTD { int linux_getrlimit(l_uint resource, struct l_rlimit *rlim); } +190 MSTD { int linux_vfork(void); } AUE_NULL +191 MSTD { int linux_getrlimit(l_uint resource, \ + struct l_rlimit *rlim); } AUE_NULL 192 STD { int linux_mmap2(l_ulong addr, l_ulong len, \ l_ulong prot, l_ulong flags, l_ulong fd, \ - l_ulong pgoff); } -193 STD { int linux_truncate64(char *path, l_loff_t length); } -194 STD { int linux_ftruncate64(l_uint fd, l_loff_t length); } + l_ulong pgoff); } AUE_NULL +193 STD { int linux_truncate64(char *path, l_loff_t length); } AUE_NULL +194 STD { int linux_ftruncate64(l_uint fd, l_loff_t length); } AUE_NULL 195 STD { int linux_stat64(char *filename, \ - struct l_stat64 *statbuf, l_long flags); } + struct l_stat64 *statbuf, \ + l_long flags); } AUE_NULL 196 STD { int linux_lstat64(char *filename, \ - struct l_stat64 *statbuf, l_long flags); } + struct l_stat64 *statbuf, \ + l_long flags); } AUE_NULL 197 STD { int linux_fstat64(l_ulong fd, \ - struct l_stat64 *statbuf, l_long flags); } + struct l_stat64 *statbuf, \ + l_long flags); } AUE_NULL 198 STD { int linux_lchown(char *path, l_uid_t uid, \ - l_gid_t gid); } -199 MSTD { int linux_getuid(void); } -200 MSTD { int linux_getgid(void); } -201 MNOPROTO { int geteuid(void); } -202 MNOPROTO { int getegid(void); } -203 MNOPROTO { int setreuid(uid_t ruid, uid_t euid); } -204 MNOPROTO { int setregid(gid_t rgid, gid_t egid); } -205 MSTD { int linux_getgroups(l_int gidsetsize, l_gid_t *grouplist); } -206 MSTD { int linux_setgroups(l_int gidsetsize, l_gid_t *grouplist); } + l_gid_t gid); } AUE_NULL +199 MSTD { int linux_getuid(void); } AUE_NULL +200 MSTD { int linux_getgid(void); } AUE_NULL +201 MNOPROTO { int geteuid(void); } AUE_NULL +202 MNOPROTO { int getegid(void); } AUE_NULL +203 MNOPROTO { int setreuid(uid_t ruid, uid_t euid); } AUE_NULL +204 MNOPROTO { int setregid(gid_t rgid, gid_t egid); } AUE_NULL +205 MSTD { int linux_getgroups(l_int gidsetsize, \ + l_gid_t *grouplist); } AUE_NULL +206 MSTD { int linux_setgroups(l_int gidsetsize, \ + l_gid_t *grouplist); } AUE_NULL 207 NODEF fchown fchown fchown_args int -208 MNOPROTO { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } -209 MNOPROTO { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } -210 MNOPROTO { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } -211 MNOPROTO { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } -212 STD { int linux_chown(char *path, l_uid_t uid, l_gid_t gid); } -213 MNOPROTO { int setuid(uid_t uid); } -214 MNOPROTO { int setgid(gid_t gid); } -215 STD { int linux_setfsuid(l_uid_t uid); } -216 STD { int linux_setfsgid(l_gid_t gid); } -217 STD { int linux_pivot_root(char *new_root, char *put_old); } -218 STD { int linux_mincore(l_ulong start, l_size_t len, u_char *vec); } -219 MNOPROTO { int madvise(void *addr, size_t len, int behav); } -220 STD { int linux_getdents64(l_uint fd, void *dirent, l_uint count); } -221 MSTD { int linux_fcntl64(l_uint fd, l_uint cmd, l_ulong arg); } +208 MNOPROTO { int setresuid(uid_t ruid, uid_t euid, \ + uid_t suid); } AUE_NULL +209 MNOPROTO { int getresuid(uid_t *ruid, uid_t *euid, \ + uid_t *suid); } AUE_NULL +210 MNOPROTO { int setresgid(gid_t rgid, gid_t egid, \ + gid_t sgid); } AUE_NULL +211 MNOPROTO { int getresgid(gid_t *rgid, gid_t *egid, \ + gid_t *sgid); } AUE_NULL +212 STD { int linux_chown(char *path, l_uid_t uid, \ + l_gid_t gid); } AUE_NULL +213 MNOPROTO { int setuid(uid_t uid); } AUE_NULL +214 MNOPROTO { int setgid(gid_t gid); } AUE_NULL +215 STD { int linux_setfsuid(l_uid_t uid); } AUE_NULL +216 STD { int linux_setfsgid(l_gid_t gid); } AUE_NULL +217 STD { int linux_pivot_root(char *new_root, \ + char *put_old); } AUE_NULL +218 STD { int linux_mincore(l_ulong start, l_size_t len, \ + u_char *vec); } AUE_NULL +219 MNOPROTO { int madvise(void *addr, size_t len, \ + int behav); } AUE_NULL +220 STD { int linux_getdents64(l_uint fd, void *dirent, \ + l_uint count); } AUE_NULL +221 MSTD { int linux_fcntl64(l_uint fd, l_uint cmd, \ + l_ulong arg); } AUE_NULL 222 UNIMPL 223 UNIMPL -224 STD { long linux_gettid(void); } +224 STD { long linux_gettid(void); } AUE_NULL 225 UNIMPL linux_readahead -226 STD { int linux_setxattr(void); } -227 STD { int linux_lsetxattr(void); } -228 STD { int linux_fsetxattr(void); } -229 STD { int linux_getxattr(void); } -230 STD { int linux_lgetxattr(void); } -231 STD { int linux_fgetxattr(void); } -232 STD { int linux_listxattr(void); } -233 STD { int linux_llistxattr(void); } -234 STD { int linux_flistxattr(void); } -235 STD { int linux_removexattr(void); } -236 STD { int linux_lremovexattr(void); } -237 STD { int linux_fremovexattr(void); } -238 STD { int linux_tkill(int tid, int sig); } +226 STD { int linux_setxattr(void); } AUE_NULL +227 STD { int linux_lsetxattr(void); } AUE_NULL +228 STD { int linux_fsetxattr(void); } AUE_NULL +229 STD { int linux_getxattr(void); } AUE_NULL +230 STD { int linux_lgetxattr(void); } AUE_NULL +231 STD { int linux_fgetxattr(void); } AUE_NULL +232 STD { int linux_listxattr(void); } AUE_NULL +233 STD { int linux_llistxattr(void); } AUE_NULL +234 STD { int linux_flistxattr(void); } AUE_NULL +235 STD { int linux_removexattr(void); } AUE_NULL +236 STD { int linux_lremovexattr(void); } AUE_NULL +237 STD { int linux_fremovexattr(void); } AUE_NULL +238 STD { int linux_tkill(int tid, int sig); } AUE_NULL 239 UNIMPL linux_sendfile64 240 UNIMPL linux_futex 241 UNIMPL linux_sched_setaffinity 242 UNIMPL linux_sched_getaffinity -243 STD { int linux_set_thread_area(void *entry); } +243 STD { int linux_set_thread_area(void *entry); } AUE_NULL 244 UNIMPL linux_get_thread_area 245 UNIMPL linux_io_setup 246 UNIMPL linux_io_destroy 247 UNIMPL linux_io_getevents 248 UNIMPL linux_io_submit 249 UNIMPL linux_io_cancel -250 STD { int linux_fadvise64(void); } +250 STD { int linux_fadvise64(void); } AUE_NULL 251 UNIMPL -252 MNOPROTO { void sys_exit(int rval); } exit_group sys_exit_args void +252 MNOPROTO { void sys_exit(int rval); } AUE_NULL \ + exit_group sys_exit_args void 253 UNIMPL linux_lookup_dcookie 254 UNIMPL linux_epoll_create 255 UNIMPL linux_epoll_ctl From owner-p4-projects@FreeBSD.ORG Mon Nov 15 20:58:24 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C547A16A4D1; Mon, 15 Nov 2004 20:58:23 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 825E316A4CE for ; Mon, 15 Nov 2004 20:58:23 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 48A5A43D1F for ; Mon, 15 Nov 2004 20:58:23 +0000 (GMT) (envelope-from wsalamon@computer.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAFKwNdI013120 for ; Mon, 15 Nov 2004 20:58:23 GMT (envelope-from wsalamon@computer.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAFKwMbF013117 for perforce@freebsd.org; Mon, 15 Nov 2004 20:58:22 GMT (envelope-from wsalamon@computer.org) Date: Mon, 15 Nov 2004 20:58:22 GMT Message-Id: <200411152058.iAFKwMbF013117@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to wsalamon@computer.org using -f From: Wayne Salamon To: Perforce Change Reviews Subject: PERFORCE change 65204 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 20:58:24 -0000 http://perforce.freebsd.org/chv.cgi?CH=65204 Change 65204 by wsalamon@rickenbacker on 2004/11/15 20:58:14 Commit the auto-generated syscall related files for Linux. Affected files ... .. //depot/projects/trustedbsd/audit3/sys/i386/linux/linux_proto.h#3 edit .. //depot/projects/trustedbsd/audit3/sys/i386/linux/linux_syscall.h#3 edit .. //depot/projects/trustedbsd/audit3/sys/i386/linux/linux_sysent.c#3 edit Differences ... ==== //depot/projects/trustedbsd/audit3/sys/i386/linux/linux_proto.h#3 (text+ko) ==== @@ -2,7 +2,7 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/i386/linux/linux_proto.h,v 1.61 2004/09/06 09:33:30 dfr Exp $ + * $FreeBSD$ * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.58 2004/09/06 09:32:59 dfr Exp */ ==== //depot/projects/trustedbsd/audit3/sys/i386/linux/linux_syscall.h#3 (text+ko) ==== @@ -2,7 +2,7 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/i386/linux/linux_syscall.h,v 1.55 2004/09/06 09:33:30 dfr Exp $ + * $FreeBSD$ * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.58 2004/09/06 09:32:59 dfr Exp */ ==== //depot/projects/trustedbsd/audit3/sys/i386/linux/linux_sysent.c#3 (text+ko) ==== @@ -2,10 +2,11 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/i386/linux/linux_sysent.c,v 1.62 2004/09/06 09:33:30 dfr Exp $ + * $FreeBSD$ * created from FreeBSD: src/sys/i386/linux/syscalls.master,v 1.58 2004/09/06 09:32:59 dfr Exp */ +#include #include "opt_compat.h" #include #include @@ -17,272 +18,272 @@ /* The casts are bogus but will do for now. */ struct sysent linux_sysent[] = { - { 0, (sy_call_t *)nosys }, /* 0 = setup */ - { SYF_MPSAFE | AS(sys_exit_args), (sy_call_t *)sys_exit }, /* 1 = exit */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_fork }, /* 2 = linux_fork */ - { SYF_MPSAFE | AS(read_args), (sy_call_t *)read }, /* 3 = read */ - { SYF_MPSAFE | AS(write_args), (sy_call_t *)write }, /* 4 = write */ - { AS(linux_open_args), (sy_call_t *)linux_open }, /* 5 = linux_open */ - { SYF_MPSAFE | AS(close_args), (sy_call_t *)close }, /* 6 = close */ - { SYF_MPSAFE | AS(linux_waitpid_args), (sy_call_t *)linux_waitpid }, /* 7 = linux_waitpid */ - { AS(linux_creat_args), (sy_call_t *)linux_creat }, /* 8 = linux_creat */ - { AS(linux_link_args), (sy_call_t *)linux_link }, /* 9 = linux_link */ - { AS(linux_unlink_args), (sy_call_t *)linux_unlink }, /* 10 = linux_unlink */ - { AS(linux_execve_args), (sy_call_t *)linux_execve }, /* 11 = linux_execve */ - { AS(linux_chdir_args), (sy_call_t *)linux_chdir }, /* 12 = linux_chdir */ - { AS(linux_time_args), (sy_call_t *)linux_time }, /* 13 = linux_time */ - { AS(linux_mknod_args), (sy_call_t *)linux_mknod }, /* 14 = linux_mknod */ - { AS(linux_chmod_args), (sy_call_t *)linux_chmod }, /* 15 = linux_chmod */ - { AS(linux_lchown16_args), (sy_call_t *)linux_lchown16 }, /* 16 = linux_lchown16 */ - { 0, (sy_call_t *)nosys }, /* 17 = break */ - { AS(linux_stat_args), (sy_call_t *)linux_stat }, /* 18 = linux_stat */ - { AS(linux_lseek_args), (sy_call_t *)linux_lseek }, /* 19 = linux_lseek */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_getpid }, /* 20 = linux_getpid */ - { AS(linux_mount_args), (sy_call_t *)linux_mount }, /* 21 = linux_mount */ - { AS(linux_oldumount_args), (sy_call_t *)linux_oldumount }, /* 22 = linux_oldumount */ - { SYF_MPSAFE | AS(linux_setuid16_args), (sy_call_t *)linux_setuid16 }, /* 23 = linux_setuid16 */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_getuid16 }, /* 24 = linux_getuid16 */ - { 0, (sy_call_t *)linux_stime }, /* 25 = linux_stime */ - { SYF_MPSAFE | AS(linux_ptrace_args), (sy_call_t *)linux_ptrace }, /* 26 = linux_ptrace */ - { AS(linux_alarm_args), (sy_call_t *)linux_alarm }, /* 27 = linux_alarm */ - { AS(linux_fstat_args), (sy_call_t *)linux_fstat }, /* 28 = linux_fstat */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_pause }, /* 29 = linux_pause */ - { AS(linux_utime_args), (sy_call_t *)linux_utime }, /* 30 = linux_utime */ - { 0, (sy_call_t *)nosys }, /* 31 = stty */ - { 0, (sy_call_t *)nosys }, /* 32 = gtty */ - { AS(linux_access_args), (sy_call_t *)linux_access }, /* 33 = linux_access */ - { SYF_MPSAFE | AS(linux_nice_args), (sy_call_t *)linux_nice }, /* 34 = linux_nice */ - { 0, (sy_call_t *)nosys }, /* 35 = ftime */ - { 0, (sy_call_t *)sync }, /* 36 = sync */ - { SYF_MPSAFE | AS(linux_kill_args), (sy_call_t *)linux_kill }, /* 37 = linux_kill */ - { AS(linux_rename_args), (sy_call_t *)linux_rename }, /* 38 = linux_rename */ - { AS(linux_mkdir_args), (sy_call_t *)linux_mkdir }, /* 39 = linux_mkdir */ - { AS(linux_rmdir_args), (sy_call_t *)linux_rmdir }, /* 40 = linux_rmdir */ - { SYF_MPSAFE | AS(dup_args), (sy_call_t *)dup }, /* 41 = dup */ - { SYF_MPSAFE | AS(linux_pipe_args), (sy_call_t *)linux_pipe }, /* 42 = linux_pipe */ - { AS(linux_times_args), (sy_call_t *)linux_times }, /* 43 = linux_times */ - { 0, (sy_call_t *)nosys }, /* 44 = prof */ - { AS(linux_brk_args), (sy_call_t *)linux_brk }, /* 45 = linux_brk */ - { SYF_MPSAFE | AS(linux_setgid16_args), (sy_call_t *)linux_setgid16 }, /* 46 = linux_setgid16 */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_getgid16 }, /* 47 = linux_getgid16 */ - { SYF_MPSAFE | AS(linux_signal_args), (sy_call_t *)linux_signal }, /* 48 = linux_signal */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_geteuid16 }, /* 49 = linux_geteuid16 */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_getegid16 }, /* 50 = linux_getegid16 */ - { SYF_MPSAFE | AS(acct_args), (sy_call_t *)acct }, /* 51 = acct */ - { AS(linux_umount_args), (sy_call_t *)linux_umount }, /* 52 = linux_umount */ - { 0, (sy_call_t *)nosys }, /* 53 = lock */ - { AS(linux_ioctl_args), (sy_call_t *)linux_ioctl }, /* 54 = linux_ioctl */ - { SYF_MPSAFE | AS(linux_fcntl_args), (sy_call_t *)linux_fcntl }, /* 55 = linux_fcntl */ - { 0, (sy_call_t *)nosys }, /* 56 = mpx */ - { SYF_MPSAFE | AS(setpgid_args), (sy_call_t *)setpgid }, /* 57 = setpgid */ - { 0, (sy_call_t *)nosys }, /* 58 = ulimit */ - { 0, (sy_call_t *)linux_olduname }, /* 59 = linux_olduname */ - { SYF_MPSAFE | AS(umask_args), (sy_call_t *)umask }, /* 60 = umask */ - { AS(chroot_args), (sy_call_t *)chroot }, /* 61 = chroot */ - { AS(linux_ustat_args), (sy_call_t *)linux_ustat }, /* 62 = linux_ustat */ - { SYF_MPSAFE | AS(dup2_args), (sy_call_t *)dup2 }, /* 63 = dup2 */ - { SYF_MPSAFE | 0, (sy_call_t *)getppid }, /* 64 = getppid */ - { SYF_MPSAFE | 0, (sy_call_t *)getpgrp }, /* 65 = getpgrp */ - { SYF_MPSAFE | 0, (sy_call_t *)setsid }, /* 66 = setsid */ - { SYF_MPSAFE | AS(linux_sigaction_args), (sy_call_t *)linux_sigaction }, /* 67 = linux_sigaction */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_sgetmask }, /* 68 = linux_sgetmask */ - { SYF_MPSAFE | AS(linux_ssetmask_args), (sy_call_t *)linux_ssetmask }, /* 69 = linux_ssetmask */ - { SYF_MPSAFE | AS(linux_setreuid16_args), (sy_call_t *)linux_setreuid16 }, /* 70 = linux_setreuid16 */ - { SYF_MPSAFE | AS(linux_setregid16_args), (sy_call_t *)linux_setregid16 }, /* 71 = linux_setregid16 */ - { SYF_MPSAFE | AS(linux_sigsuspend_args), (sy_call_t *)linux_sigsuspend }, /* 72 = linux_sigsuspend */ - { SYF_MPSAFE | AS(linux_sigpending_args), (sy_call_t *)linux_sigpending }, /* 73 = linux_sigpending */ - { SYF_MPSAFE | AS(sethostname_args), (sy_call_t *)osethostname }, /* 74 = osethostname */ - { SYF_MPSAFE | AS(linux_setrlimit_args), (sy_call_t *)linux_setrlimit }, /* 75 = linux_setrlimit */ - { SYF_MPSAFE | AS(linux_old_getrlimit_args), (sy_call_t *)linux_old_getrlimit }, /* 76 = linux_old_getrlimit */ - { SYF_MPSAFE | AS(getrusage_args), (sy_call_t *)getrusage }, /* 77 = getrusage */ - { SYF_MPSAFE | AS(gettimeofday_args), (sy_call_t *)gettimeofday }, /* 78 = gettimeofday */ - { SYF_MPSAFE | AS(settimeofday_args), (sy_call_t *)settimeofday }, /* 79 = settimeofday */ - { SYF_MPSAFE | AS(linux_getgroups16_args), (sy_call_t *)linux_getgroups16 }, /* 80 = linux_getgroups16 */ - { SYF_MPSAFE | AS(linux_setgroups16_args), (sy_call_t *)linux_setgroups16 }, /* 81 = linux_setgroups16 */ - { AS(linux_old_select_args), (sy_call_t *)linux_old_select }, /* 82 = linux_old_select */ - { AS(linux_symlink_args), (sy_call_t *)linux_symlink }, /* 83 = linux_symlink */ - { AS(ostat_args), (sy_call_t *)ostat }, /* 84 = ostat */ - { AS(linux_readlink_args), (sy_call_t *)linux_readlink }, /* 85 = linux_readlink */ - { AS(linux_uselib_args), (sy_call_t *)linux_uselib }, /* 86 = linux_uselib */ - { AS(swapon_args), (sy_call_t *)swapon }, /* 87 = swapon */ - { AS(linux_reboot_args), (sy_call_t *)linux_reboot }, /* 88 = linux_reboot */ - { AS(linux_readdir_args), (sy_call_t *)linux_readdir }, /* 89 = linux_readdir */ - { AS(linux_mmap_args), (sy_call_t *)linux_mmap }, /* 90 = linux_mmap */ - { AS(munmap_args), (sy_call_t *)munmap }, /* 91 = munmap */ - { AS(linux_truncate_args), (sy_call_t *)linux_truncate }, /* 92 = linux_truncate */ - { AS(oftruncate_args), (sy_call_t *)oftruncate }, /* 93 = oftruncate */ - { AS(fchmod_args), (sy_call_t *)fchmod }, /* 94 = fchmod */ - { AS(fchown_args), (sy_call_t *)fchown }, /* 95 = fchown */ - { SYF_MPSAFE | AS(getpriority_args), (sy_call_t *)getpriority }, /* 96 = getpriority */ - { SYF_MPSAFE | AS(setpriority_args), (sy_call_t *)setpriority }, /* 97 = setpriority */ - { 0, (sy_call_t *)nosys }, /* 98 = profil */ - { AS(linux_statfs_args), (sy_call_t *)linux_statfs }, /* 99 = linux_statfs */ - { AS(linux_fstatfs_args), (sy_call_t *)linux_fstatfs }, /* 100 = linux_fstatfs */ - { AS(linux_ioperm_args), (sy_call_t *)linux_ioperm }, /* 101 = linux_ioperm */ - { AS(linux_socketcall_args), (sy_call_t *)linux_socketcall }, /* 102 = linux_socketcall */ - { AS(linux_syslog_args), (sy_call_t *)linux_syslog }, /* 103 = linux_syslog */ - { AS(linux_setitimer_args), (sy_call_t *)linux_setitimer }, /* 104 = linux_setitimer */ - { AS(linux_getitimer_args), (sy_call_t *)linux_getitimer }, /* 105 = linux_getitimer */ - { AS(linux_newstat_args), (sy_call_t *)linux_newstat }, /* 106 = linux_newstat */ - { AS(linux_newlstat_args), (sy_call_t *)linux_newlstat }, /* 107 = linux_newlstat */ - { AS(linux_newfstat_args), (sy_call_t *)linux_newfstat }, /* 108 = linux_newfstat */ - { 0, (sy_call_t *)linux_uname }, /* 109 = linux_uname */ - { AS(linux_iopl_args), (sy_call_t *)linux_iopl }, /* 110 = linux_iopl */ - { 0, (sy_call_t *)linux_vhangup }, /* 111 = linux_vhangup */ - { 0, (sy_call_t *)nosys }, /* 112 = idle */ - { 0, (sy_call_t *)linux_vm86old }, /* 113 = linux_vm86old */ - { SYF_MPSAFE | AS(linux_wait4_args), (sy_call_t *)linux_wait4 }, /* 114 = linux_wait4 */ - { 0, (sy_call_t *)linux_swapoff }, /* 115 = linux_swapoff */ - { AS(linux_sysinfo_args), (sy_call_t *)linux_sysinfo }, /* 116 = linux_sysinfo */ - { AS(linux_ipc_args), (sy_call_t *)linux_ipc }, /* 117 = linux_ipc */ - { AS(fsync_args), (sy_call_t *)fsync }, /* 118 = fsync */ - { SYF_MPSAFE | AS(linux_sigreturn_args), (sy_call_t *)linux_sigreturn }, /* 119 = linux_sigreturn */ - { SYF_MPSAFE | AS(linux_clone_args), (sy_call_t *)linux_clone }, /* 120 = linux_clone */ - { SYF_MPSAFE | AS(setdomainname_args), (sy_call_t *)setdomainname }, /* 121 = setdomainname */ - { AS(linux_newuname_args), (sy_call_t *)linux_newuname }, /* 122 = linux_newuname */ - { AS(linux_modify_ldt_args), (sy_call_t *)linux_modify_ldt }, /* 123 = linux_modify_ldt */ - { 0, (sy_call_t *)linux_adjtimex }, /* 124 = linux_adjtimex */ - { AS(mprotect_args), (sy_call_t *)mprotect }, /* 125 = mprotect */ - { SYF_MPSAFE | AS(linux_sigprocmask_args), (sy_call_t *)linux_sigprocmask }, /* 126 = linux_sigprocmask */ - { 0, (sy_call_t *)linux_create_module }, /* 127 = linux_create_module */ - { 0, (sy_call_t *)linux_init_module }, /* 128 = linux_init_module */ - { 0, (sy_call_t *)linux_delete_module }, /* 129 = linux_delete_module */ - { 0, (sy_call_t *)linux_get_kernel_syms }, /* 130 = linux_get_kernel_syms */ - { 0, (sy_call_t *)linux_quotactl }, /* 131 = linux_quotactl */ - { AS(getpgid_args), (sy_call_t *)getpgid }, /* 132 = getpgid */ - { AS(fchdir_args), (sy_call_t *)fchdir }, /* 133 = fchdir */ - { 0, (sy_call_t *)linux_bdflush }, /* 134 = linux_bdflush */ - { AS(linux_sysfs_args), (sy_call_t *)linux_sysfs }, /* 135 = linux_sysfs */ - { AS(linux_personality_args), (sy_call_t *)linux_personality }, /* 136 = linux_personality */ - { 0, (sy_call_t *)nosys }, /* 137 = afs_syscall */ - { AS(linux_setfsuid16_args), (sy_call_t *)linux_setfsuid16 }, /* 138 = linux_setfsuid16 */ - { AS(linux_setfsgid16_args), (sy_call_t *)linux_setfsgid16 }, /* 139 = linux_setfsgid16 */ - { AS(linux_llseek_args), (sy_call_t *)linux_llseek }, /* 140 = linux_llseek */ - { AS(linux_getdents_args), (sy_call_t *)linux_getdents }, /* 141 = linux_getdents */ - { AS(linux_select_args), (sy_call_t *)linux_select }, /* 142 = linux_select */ - { AS(flock_args), (sy_call_t *)flock }, /* 143 = flock */ - { AS(linux_msync_args), (sy_call_t *)linux_msync }, /* 144 = linux_msync */ - { AS(readv_args), (sy_call_t *)readv }, /* 145 = readv */ - { AS(writev_args), (sy_call_t *)writev }, /* 146 = writev */ - { SYF_MPSAFE | AS(linux_getsid_args), (sy_call_t *)linux_getsid }, /* 147 = linux_getsid */ - { AS(linux_fdatasync_args), (sy_call_t *)linux_fdatasync }, /* 148 = linux_fdatasync */ - { AS(linux_sysctl_args), (sy_call_t *)linux_sysctl }, /* 149 = linux_sysctl */ - { SYF_MPSAFE | AS(mlock_args), (sy_call_t *)mlock }, /* 150 = mlock */ - { SYF_MPSAFE | AS(munlock_args), (sy_call_t *)munlock }, /* 151 = munlock */ - { SYF_MPSAFE | AS(mlockall_args), (sy_call_t *)mlockall }, /* 152 = mlockall */ - { SYF_MPSAFE | 0, (sy_call_t *)munlockall }, /* 153 = munlockall */ - { SYF_MPSAFE | AS(sched_setparam_args), (sy_call_t *)sched_setparam }, /* 154 = sched_setparam */ - { SYF_MPSAFE | AS(sched_getparam_args), (sy_call_t *)sched_getparam }, /* 155 = sched_getparam */ - { SYF_MPSAFE | AS(linux_sched_setscheduler_args), (sy_call_t *)linux_sched_setscheduler }, /* 156 = linux_sched_setscheduler */ - { SYF_MPSAFE | AS(linux_sched_getscheduler_args), (sy_call_t *)linux_sched_getscheduler }, /* 157 = linux_sched_getscheduler */ - { 0, (sy_call_t *)sched_yield }, /* 158 = sched_yield */ - { SYF_MPSAFE | AS(linux_sched_get_priority_max_args), (sy_call_t *)linux_sched_get_priority_max }, /* 159 = linux_sched_get_priority_max */ - { SYF_MPSAFE | AS(linux_sched_get_priority_min_args), (sy_call_t *)linux_sched_get_priority_min }, /* 160 = linux_sched_get_priority_min */ - { SYF_MPSAFE | AS(sched_rr_get_interval_args), (sy_call_t *)sched_rr_get_interval }, /* 161 = sched_rr_get_interval */ - { SYF_MPSAFE | AS(nanosleep_args), (sy_call_t *)nanosleep }, /* 162 = nanosleep */ - { AS(linux_mremap_args), (sy_call_t *)linux_mremap }, /* 163 = linux_mremap */ - { SYF_MPSAFE | AS(linux_setresuid16_args), (sy_call_t *)linux_setresuid16 }, /* 164 = linux_setresuid16 */ - { SYF_MPSAFE | AS(linux_getresuid16_args), (sy_call_t *)linux_getresuid16 }, /* 165 = linux_getresuid16 */ - { 0, (sy_call_t *)linux_vm86 }, /* 166 = linux_vm86 */ - { 0, (sy_call_t *)linux_query_module }, /* 167 = linux_query_module */ - { AS(poll_args), (sy_call_t *)poll }, /* 168 = poll */ - { 0, (sy_call_t *)linux_nfsservctl }, /* 169 = linux_nfsservctl */ - { SYF_MPSAFE | AS(linux_setresgid16_args), (sy_call_t *)linux_setresgid16 }, /* 170 = linux_setresgid16 */ - { SYF_MPSAFE | AS(linux_getresgid16_args), (sy_call_t *)linux_getresgid16 }, /* 171 = linux_getresgid16 */ - { 0, (sy_call_t *)linux_prctl }, /* 172 = linux_prctl */ - { AS(linux_rt_sigreturn_args), (sy_call_t *)linux_rt_sigreturn }, /* 173 = linux_rt_sigreturn */ - { SYF_MPSAFE | AS(linux_rt_sigaction_args), (sy_call_t *)linux_rt_sigaction }, /* 174 = linux_rt_sigaction */ - { SYF_MPSAFE | AS(linux_rt_sigprocmask_args), (sy_call_t *)linux_rt_sigprocmask }, /* 175 = linux_rt_sigprocmask */ - { 0, (sy_call_t *)linux_rt_sigpending }, /* 176 = linux_rt_sigpending */ - { 0, (sy_call_t *)linux_rt_sigtimedwait }, /* 177 = linux_rt_sigtimedwait */ - { 0, (sy_call_t *)linux_rt_sigqueueinfo }, /* 178 = linux_rt_sigqueueinfo */ - { SYF_MPSAFE | AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend }, /* 179 = linux_rt_sigsuspend */ - { AS(linux_pread_args), (sy_call_t *)linux_pread }, /* 180 = linux_pread */ - { AS(linux_pwrite_args), (sy_call_t *)linux_pwrite }, /* 181 = linux_pwrite */ - { AS(linux_chown16_args), (sy_call_t *)linux_chown16 }, /* 182 = linux_chown16 */ - { AS(linux_getcwd_args), (sy_call_t *)linux_getcwd }, /* 183 = linux_getcwd */ - { 0, (sy_call_t *)linux_capget }, /* 184 = linux_capget */ - { 0, (sy_call_t *)linux_capset }, /* 185 = linux_capset */ - { AS(linux_sigaltstack_args), (sy_call_t *)linux_sigaltstack }, /* 186 = linux_sigaltstack */ - { 0, (sy_call_t *)linux_sendfile }, /* 187 = linux_sendfile */ - { 0, (sy_call_t *)nosys }, /* 188 = getpmsg */ - { 0, (sy_call_t *)nosys }, /* 189 = putpmsg */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_vfork }, /* 190 = linux_vfork */ - { SYF_MPSAFE | AS(linux_getrlimit_args), (sy_call_t *)linux_getrlimit }, /* 191 = linux_getrlimit */ - { AS(linux_mmap2_args), (sy_call_t *)linux_mmap2 }, /* 192 = linux_mmap2 */ - { AS(linux_truncate64_args), (sy_call_t *)linux_truncate64 }, /* 193 = linux_truncate64 */ - { AS(linux_ftruncate64_args), (sy_call_t *)linux_ftruncate64 }, /* 194 = linux_ftruncate64 */ - { AS(linux_stat64_args), (sy_call_t *)linux_stat64 }, /* 195 = linux_stat64 */ - { AS(linux_lstat64_args), (sy_call_t *)linux_lstat64 }, /* 196 = linux_lstat64 */ - { AS(linux_fstat64_args), (sy_call_t *)linux_fstat64 }, /* 197 = linux_fstat64 */ - { AS(linux_lchown_args), (sy_call_t *)linux_lchown }, /* 198 = linux_lchown */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_getuid }, /* 199 = linux_getuid */ - { SYF_MPSAFE | 0, (sy_call_t *)linux_getgid }, /* 200 = linux_getgid */ - { SYF_MPSAFE | 0, (sy_call_t *)geteuid }, /* 201 = geteuid */ - { SYF_MPSAFE | 0, (sy_call_t *)getegid }, /* 202 = getegid */ - { SYF_MPSAFE | AS(setreuid_args), (sy_call_t *)setreuid }, /* 203 = setreuid */ - { SYF_MPSAFE | AS(setregid_args), (sy_call_t *)setregid }, /* 204 = setregid */ - { SYF_MPSAFE | AS(linux_getgroups_args), (sy_call_t *)linux_getgroups }, /* 205 = linux_getgroups */ - { SYF_MPSAFE | AS(linux_setgroups_args), (sy_call_t *)linux_setgroups }, /* 206 = linux_setgroups */ - { AS(fchown_args), (sy_call_t *)fchown }, /* 207 = fchown */ - { SYF_MPSAFE | AS(setresuid_args), (sy_call_t *)setresuid }, /* 208 = setresuid */ - { SYF_MPSAFE | AS(getresuid_args), (sy_call_t *)getresuid }, /* 209 = getresuid */ - { SYF_MPSAFE | AS(setresgid_args), (sy_call_t *)setresgid }, /* 210 = setresgid */ - { SYF_MPSAFE | AS(getresgid_args), (sy_call_t *)getresgid }, /* 211 = getresgid */ - { AS(linux_chown_args), (sy_call_t *)linux_chown }, /* 212 = linux_chown */ - { SYF_MPSAFE | AS(setuid_args), (sy_call_t *)setuid }, /* 213 = setuid */ - { SYF_MPSAFE | AS(setgid_args), (sy_call_t *)setgid }, /* 214 = setgid */ - { AS(linux_setfsuid_args), (sy_call_t *)linux_setfsuid }, /* 215 = linux_setfsuid */ - { AS(linux_setfsgid_args), (sy_call_t *)linux_setfsgid }, /* 216 = linux_setfsgid */ - { AS(linux_pivot_root_args), (sy_call_t *)linux_pivot_root }, /* 217 = linux_pivot_root */ - { AS(linux_mincore_args), (sy_call_t *)linux_mincore }, /* 218 = linux_mincore */ - { SYF_MPSAFE | AS(madvise_args), (sy_call_t *)madvise }, /* 219 = madvise */ - { AS(linux_getdents64_args), (sy_call_t *)linux_getdents64 }, /* 220 = linux_getdents64 */ - { SYF_MPSAFE | AS(linux_fcntl64_args), (sy_call_t *)linux_fcntl64 }, /* 221 = linux_fcntl64 */ - { 0, (sy_call_t *)nosys }, /* 222 = */ - { 0, (sy_call_t *)nosys }, /* 223 = */ - { 0, (sy_call_t *)linux_gettid }, /* 224 = linux_gettid */ - { 0, (sy_call_t *)nosys }, /* 225 = linux_readahead */ - { 0, (sy_call_t *)linux_setxattr }, /* 226 = linux_setxattr */ - { 0, (sy_call_t *)linux_lsetxattr }, /* 227 = linux_lsetxattr */ - { 0, (sy_call_t *)linux_fsetxattr }, /* 228 = linux_fsetxattr */ - { 0, (sy_call_t *)linux_getxattr }, /* 229 = linux_getxattr */ - { 0, (sy_call_t *)linux_lgetxattr }, /* 230 = linux_lgetxattr */ - { 0, (sy_call_t *)linux_fgetxattr }, /* 231 = linux_fgetxattr */ - { 0, (sy_call_t *)linux_listxattr }, /* 232 = linux_listxattr */ - { 0, (sy_call_t *)linux_llistxattr }, /* 233 = linux_llistxattr */ - { 0, (sy_call_t *)linux_flistxattr }, /* 234 = linux_flistxattr */ - { 0, (sy_call_t *)linux_removexattr }, /* 235 = linux_removexattr */ - { 0, (sy_call_t *)linux_lremovexattr }, /* 236 = linux_lremovexattr */ - { 0, (sy_call_t *)linux_fremovexattr }, /* 237 = linux_fremovexattr */ - { AS(linux_tkill_args), (sy_call_t *)linux_tkill }, /* 238 = linux_tkill */ - { 0, (sy_call_t *)nosys }, /* 239 = linux_sendfile64 */ - { 0, (sy_call_t *)nosys }, /* 240 = linux_futex */ - { 0, (sy_call_t *)nosys }, /* 241 = linux_sched_setaffinity */ - { 0, (sy_call_t *)nosys }, /* 242 = linux_sched_getaffinity */ - { AS(linux_set_thread_area_args), (sy_call_t *)linux_set_thread_area }, /* 243 = linux_set_thread_area */ - { 0, (sy_call_t *)nosys }, /* 244 = linux_get_thread_area */ - { 0, (sy_call_t *)nosys }, /* 245 = linux_io_setup */ - { 0, (sy_call_t *)nosys }, /* 246 = linux_io_destroy */ - { 0, (sy_call_t *)nosys }, /* 247 = linux_io_getevents */ - { 0, (sy_call_t *)nosys }, /* 248 = linux_io_submit */ - { 0, (sy_call_t *)nosys }, /* 249 = linux_io_cancel */ - { 0, (sy_call_t *)linux_fadvise64 }, /* 250 = linux_fadvise64 */ - { 0, (sy_call_t *)nosys }, /* 251 = */ - { SYF_MPSAFE | AS(sys_exit_args), (sy_call_t *)sys_exit }, /* 252 = exit_group */ - { 0, (sy_call_t *)nosys }, /* 253 = linux_lookup_dcookie */ - { 0, (sy_call_t *)nosys }, /* 254 = linux_epoll_create */ - { 0, (sy_call_t *)nosys }, /* 255 = linux_epoll_ctl */ - { 0, (sy_call_t *)nosys }, /* 256 = linux_epoll_wait */ - { 0, (sy_call_t *)nosys }, /* 257 = linux_remap_file_pages */ - { 0, (sy_call_t *)nosys }, /* 258 = linux_set_tid_address */ - { 0, (sy_call_t *)nosys }, /* 259 = linux_timer_create */ - { 0, (sy_call_t *)nosys }, /* 260 = linux_timer_settime */ - { 0, (sy_call_t *)nosys }, /* 261 = linux_timer_gettime */ - { 0, (sy_call_t *)nosys }, /* 262 = linux_timer_getoverrun */ - { 0, (sy_call_t *)nosys }, /* 263 = linux_timer_delete */ - { 0, (sy_call_t *)nosys }, /* 264 = linux_clock_settime */ - { 0, (sy_call_t *)nosys }, /* 265 = linux_clock_gettime */ - { 0, (sy_call_t *)nosys }, /* 266 = linux_clock_getres */ - { 0, (sy_call_t *)nosys }, /* 267 = linux_clock_nanosleep */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 0 = setup */ + { SYF_MPSAFE | AS(sys_exit_args), (sy_call_t *)sys_exit, AUE_EXIT }, /* 1 = exit */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_fork, AUE_FORK }, /* 2 = linux_fork */ + { SYF_MPSAFE | AS(read_args), (sy_call_t *)read, AUE_NULL }, /* 3 = read */ + { SYF_MPSAFE | AS(write_args), (sy_call_t *)write, AUE_NULL }, /* 4 = write */ + { AS(linux_open_args), (sy_call_t *)linux_open, AUE_OPEN }, /* 5 = linux_open */ + { SYF_MPSAFE | AS(close_args), (sy_call_t *)close, AUE_CLOSE }, /* 6 = close */ + { SYF_MPSAFE | AS(linux_waitpid_args), (sy_call_t *)linux_waitpid, AUE_NULL }, /* 7 = linux_waitpid */ + { AS(linux_creat_args), (sy_call_t *)linux_creat, AUE_NULL }, /* 8 = linux_creat */ + { AS(linux_link_args), (sy_call_t *)linux_link, AUE_NULL }, /* 9 = linux_link */ + { AS(linux_unlink_args), (sy_call_t *)linux_unlink, AUE_NULL }, /* 10 = linux_unlink */ + { AS(linux_execve_args), (sy_call_t *)linux_execve, AUE_NULL }, /* 11 = linux_execve */ + { AS(linux_chdir_args), (sy_call_t *)linux_chdir, AUE_NULL }, /* 12 = linux_chdir */ + { AS(linux_time_args), (sy_call_t *)linux_time, AUE_NULL }, /* 13 = linux_time */ + { AS(linux_mknod_args), (sy_call_t *)linux_mknod, AUE_NULL }, /* 14 = linux_mknod */ + { AS(linux_chmod_args), (sy_call_t *)linux_chmod, AUE_NULL }, /* 15 = linux_chmod */ + { AS(linux_lchown16_args), (sy_call_t *)linux_lchown16, AUE_NULL }, /* 16 = linux_lchown16 */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 17 = break */ + { AS(linux_stat_args), (sy_call_t *)linux_stat, AUE_NULL }, /* 18 = linux_stat */ + { AS(linux_lseek_args), (sy_call_t *)linux_lseek, AUE_NULL }, /* 19 = linux_lseek */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_getpid, AUE_NULL }, /* 20 = linux_getpid */ + { AS(linux_mount_args), (sy_call_t *)linux_mount, AUE_NULL }, /* 21 = linux_mount */ + { AS(linux_oldumount_args), (sy_call_t *)linux_oldumount, AUE_NULL }, /* 22 = linux_oldumount */ + { SYF_MPSAFE | AS(linux_setuid16_args), (sy_call_t *)linux_setuid16, AUE_NULL }, /* 23 = linux_setuid16 */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_getuid16, AUE_NULL }, /* 24 = linux_getuid16 */ + { 0, (sy_call_t *)linux_stime, AUE_NULL }, /* 25 = linux_stime */ + { SYF_MPSAFE | AS(linux_ptrace_args), (sy_call_t *)linux_ptrace, AUE_NULL }, /* 26 = linux_ptrace */ + { AS(linux_alarm_args), (sy_call_t *)linux_alarm, AUE_NULL }, /* 27 = linux_alarm */ + { AS(linux_fstat_args), (sy_call_t *)linux_fstat, AUE_NULL }, /* 28 = linux_fstat */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_pause, AUE_NULL }, /* 29 = linux_pause */ + { AS(linux_utime_args), (sy_call_t *)linux_utime, AUE_NULL }, /* 30 = linux_utime */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 31 = stty */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 32 = gtty */ + { AS(linux_access_args), (sy_call_t *)linux_access, AUE_NULL }, /* 33 = linux_access */ + { SYF_MPSAFE | AS(linux_nice_args), (sy_call_t *)linux_nice, AUE_NULL }, /* 34 = linux_nice */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 35 = ftime */ + { 0, (sy_call_t *)sync, AUE_NULL }, /* 36 = sync */ + { SYF_MPSAFE | AS(linux_kill_args), (sy_call_t *)linux_kill, AUE_NULL }, /* 37 = linux_kill */ + { AS(linux_rename_args), (sy_call_t *)linux_rename, AUE_NULL }, /* 38 = linux_rename */ + { AS(linux_mkdir_args), (sy_call_t *)linux_mkdir, AUE_NULL }, /* 39 = linux_mkdir */ + { AS(linux_rmdir_args), (sy_call_t *)linux_rmdir, AUE_NULL }, /* 40 = linux_rmdir */ + { SYF_MPSAFE | AS(dup_args), (sy_call_t *)dup, AUE_NULL }, /* 41 = dup */ + { SYF_MPSAFE | AS(linux_pipe_args), (sy_call_t *)linux_pipe, AUE_NULL }, /* 42 = linux_pipe */ + { AS(linux_times_args), (sy_call_t *)linux_times, AUE_NULL }, /* 43 = linux_times */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 44 = prof */ + { AS(linux_brk_args), (sy_call_t *)linux_brk, AUE_NULL }, /* 45 = linux_brk */ + { SYF_MPSAFE | AS(linux_setgid16_args), (sy_call_t *)linux_setgid16, AUE_NULL }, /* 46 = linux_setgid16 */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_getgid16, AUE_NULL }, /* 47 = linux_getgid16 */ + { SYF_MPSAFE | AS(linux_signal_args), (sy_call_t *)linux_signal, AUE_NULL }, /* 48 = linux_signal */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_geteuid16, AUE_NULL }, /* 49 = linux_geteuid16 */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_getegid16, AUE_NULL }, /* 50 = linux_getegid16 */ + { SYF_MPSAFE | AS(acct_args), (sy_call_t *)acct, AUE_NULL }, /* 51 = acct */ + { AS(linux_umount_args), (sy_call_t *)linux_umount, AUE_NULL }, /* 52 = linux_umount */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 53 = lock */ + { AS(linux_ioctl_args), (sy_call_t *)linux_ioctl, AUE_NULL }, /* 54 = linux_ioctl */ + { SYF_MPSAFE | AS(linux_fcntl_args), (sy_call_t *)linux_fcntl, AUE_NULL }, /* 55 = linux_fcntl */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 56 = mpx */ + { SYF_MPSAFE | AS(setpgid_args), (sy_call_t *)setpgid, AUE_NULL }, /* 57 = setpgid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 58 = ulimit */ + { 0, (sy_call_t *)linux_olduname, AUE_NULL }, /* 59 = linux_olduname */ + { SYF_MPSAFE | AS(umask_args), (sy_call_t *)umask, AUE_NULL }, /* 60 = umask */ + { AS(chroot_args), (sy_call_t *)chroot, AUE_NULL }, /* 61 = chroot */ + { AS(linux_ustat_args), (sy_call_t *)linux_ustat, AUE_NULL }, /* 62 = linux_ustat */ + { SYF_MPSAFE | AS(dup2_args), (sy_call_t *)dup2, AUE_NULL }, /* 63 = dup2 */ + { SYF_MPSAFE | 0, (sy_call_t *)getppid, AUE_NULL }, /* 64 = getppid */ + { SYF_MPSAFE | 0, (sy_call_t *)getpgrp, AUE_NULL }, /* 65 = getpgrp */ + { SYF_MPSAFE | 0, (sy_call_t *)setsid, AUE_NULL }, /* 66 = setsid */ + { SYF_MPSAFE | AS(linux_sigaction_args), (sy_call_t *)linux_sigaction, AUE_NULL }, /* 67 = linux_sigaction */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_sgetmask, AUE_NULL }, /* 68 = linux_sgetmask */ + { SYF_MPSAFE | AS(linux_ssetmask_args), (sy_call_t *)linux_ssetmask, AUE_NULL }, /* 69 = linux_ssetmask */ + { SYF_MPSAFE | AS(linux_setreuid16_args), (sy_call_t *)linux_setreuid16, AUE_NULL }, /* 70 = linux_setreuid16 */ + { SYF_MPSAFE | AS(linux_setregid16_args), (sy_call_t *)linux_setregid16, AUE_NULL }, /* 71 = linux_setregid16 */ + { SYF_MPSAFE | AS(linux_sigsuspend_args), (sy_call_t *)linux_sigsuspend, AUE_NULL }, /* 72 = linux_sigsuspend */ + { SYF_MPSAFE | AS(linux_sigpending_args), (sy_call_t *)linux_sigpending, AUE_NULL }, /* 73 = linux_sigpending */ + { SYF_MPSAFE | AS(sethostname_args), (sy_call_t *)osethostname, AUE_NULL }, /* 74 = osethostname */ + { SYF_MPSAFE | AS(linux_setrlimit_args), (sy_call_t *)linux_setrlimit, AUE_NULL }, /* 75 = linux_setrlimit */ + { SYF_MPSAFE | AS(linux_old_getrlimit_args), (sy_call_t *)linux_old_getrlimit, AUE_NULL }, /* 76 = linux_old_getrlimit */ + { SYF_MPSAFE | AS(getrusage_args), (sy_call_t *)getrusage, AUE_NULL }, /* 77 = getrusage */ + { SYF_MPSAFE | AS(gettimeofday_args), (sy_call_t *)gettimeofday, AUE_NULL }, /* 78 = gettimeofday */ + { SYF_MPSAFE | AS(settimeofday_args), (sy_call_t *)settimeofday, AUE_NULL }, /* 79 = settimeofday */ + { SYF_MPSAFE | AS(linux_getgroups16_args), (sy_call_t *)linux_getgroups16, AUE_NULL }, /* 80 = linux_getgroups16 */ + { SYF_MPSAFE | AS(linux_setgroups16_args), (sy_call_t *)linux_setgroups16, AUE_NULL }, /* 81 = linux_setgroups16 */ + { AS(linux_old_select_args), (sy_call_t *)linux_old_select, AUE_NULL }, /* 82 = linux_old_select */ + { AS(linux_symlink_args), (sy_call_t *)linux_symlink, AUE_NULL }, /* 83 = linux_symlink */ + { AS(ostat_args), (sy_call_t *)ostat, AUE_NULL }, /* 84 = ostat */ + { AS(linux_readlink_args), (sy_call_t *)linux_readlink, AUE_NULL }, /* 85 = linux_readlink */ + { AS(linux_uselib_args), (sy_call_t *)linux_uselib, AUE_NULL }, /* 86 = linux_uselib */ + { AS(swapon_args), (sy_call_t *)swapon, AUE_NULL }, /* 87 = swapon */ + { AS(linux_reboot_args), (sy_call_t *)linux_reboot, AUE_NULL }, /* 88 = linux_reboot */ + { AS(linux_readdir_args), (sy_call_t *)linux_readdir, AUE_NULL }, /* 89 = linux_readdir */ + { AS(linux_mmap_args), (sy_call_t *)linux_mmap, AUE_NULL }, /* 90 = linux_mmap */ + { AS(munmap_args), (sy_call_t *)munmap, AUE_NULL }, /* 91 = munmap */ + { AS(linux_truncate_args), (sy_call_t *)linux_truncate, AUE_NULL }, /* 92 = linux_truncate */ + { AS(oftruncate_args), (sy_call_t *)oftruncate, AUE_NULL }, /* 93 = oftruncate */ + { AS(fchmod_args), (sy_call_t *)fchmod, AUE_NULL }, /* 94 = fchmod */ + { AS(fchown_args), (sy_call_t *)fchown, AUE_NULL }, /* 95 = fchown */ + { SYF_MPSAFE | AS(getpriority_args), (sy_call_t *)getpriority, AUE_NULL }, /* 96 = getpriority */ + { SYF_MPSAFE | AS(setpriority_args), (sy_call_t *)setpriority, AUE_NULL }, /* 97 = setpriority */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 98 = profil */ + { AS(linux_statfs_args), (sy_call_t *)linux_statfs, AUE_NULL }, /* 99 = linux_statfs */ + { AS(linux_fstatfs_args), (sy_call_t *)linux_fstatfs, AUE_NULL }, /* 100 = linux_fstatfs */ + { AS(linux_ioperm_args), (sy_call_t *)linux_ioperm, AUE_NULL }, /* 101 = linux_ioperm */ + { AS(linux_socketcall_args), (sy_call_t *)linux_socketcall, AUE_NULL }, /* 102 = linux_socketcall */ + { AS(linux_syslog_args), (sy_call_t *)linux_syslog, AUE_NULL }, /* 103 = linux_syslog */ + { AS(linux_setitimer_args), (sy_call_t *)linux_setitimer, AUE_NULL }, /* 104 = linux_setitimer */ + { AS(linux_getitimer_args), (sy_call_t *)linux_getitimer, AUE_NULL }, /* 105 = linux_getitimer */ + { AS(linux_newstat_args), (sy_call_t *)linux_newstat, AUE_NULL }, /* 106 = linux_newstat */ + { AS(linux_newlstat_args), (sy_call_t *)linux_newlstat, AUE_NULL }, /* 107 = linux_newlstat */ + { AS(linux_newfstat_args), (sy_call_t *)linux_newfstat, AUE_NULL }, /* 108 = linux_newfstat */ + { 0, (sy_call_t *)linux_uname, AUE_NULL }, /* 109 = linux_uname */ + { AS(linux_iopl_args), (sy_call_t *)linux_iopl, AUE_NULL }, /* 110 = linux_iopl */ + { 0, (sy_call_t *)linux_vhangup, AUE_NULL }, /* 111 = linux_vhangup */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 112 = idle */ + { 0, (sy_call_t *)linux_vm86old, AUE_NULL }, /* 113 = linux_vm86old */ + { SYF_MPSAFE | AS(linux_wait4_args), (sy_call_t *)linux_wait4, AUE_NULL }, /* 114 = linux_wait4 */ + { 0, (sy_call_t *)linux_swapoff, AUE_NULL }, /* 115 = linux_swapoff */ + { AS(linux_sysinfo_args), (sy_call_t *)linux_sysinfo, AUE_NULL }, /* 116 = linux_sysinfo */ + { AS(linux_ipc_args), (sy_call_t *)linux_ipc, AUE_NULL }, /* 117 = linux_ipc */ + { AS(fsync_args), (sy_call_t *)fsync, AUE_NULL }, /* 118 = fsync */ + { SYF_MPSAFE | AS(linux_sigreturn_args), (sy_call_t *)linux_sigreturn, AUE_NULL }, /* 119 = linux_sigreturn */ + { SYF_MPSAFE | AS(linux_clone_args), (sy_call_t *)linux_clone, AUE_NULL }, /* 120 = linux_clone */ + { SYF_MPSAFE | AS(setdomainname_args), (sy_call_t *)setdomainname, AUE_NULL }, /* 121 = setdomainname */ + { AS(linux_newuname_args), (sy_call_t *)linux_newuname, AUE_NULL }, /* 122 = linux_newuname */ + { AS(linux_modify_ldt_args), (sy_call_t *)linux_modify_ldt, AUE_NULL }, /* 123 = linux_modify_ldt */ + { 0, (sy_call_t *)linux_adjtimex, AUE_NULL }, /* 124 = linux_adjtimex */ + { AS(mprotect_args), (sy_call_t *)mprotect, AUE_NULL }, /* 125 = mprotect */ + { SYF_MPSAFE | AS(linux_sigprocmask_args), (sy_call_t *)linux_sigprocmask, AUE_NULL }, /* 126 = linux_sigprocmask */ + { 0, (sy_call_t *)linux_create_module, AUE_NULL }, /* 127 = linux_create_module */ + { 0, (sy_call_t *)linux_init_module, AUE_NULL }, /* 128 = linux_init_module */ + { 0, (sy_call_t *)linux_delete_module, AUE_NULL }, /* 129 = linux_delete_module */ + { 0, (sy_call_t *)linux_get_kernel_syms, AUE_NULL }, /* 130 = linux_get_kernel_syms */ + { 0, (sy_call_t *)linux_quotactl, AUE_NULL }, /* 131 = linux_quotactl */ + { AS(getpgid_args), (sy_call_t *)getpgid, AUE_NULL }, /* 132 = getpgid */ + { AS(fchdir_args), (sy_call_t *)fchdir, AUE_NULL }, /* 133 = fchdir */ + { 0, (sy_call_t *)linux_bdflush, AUE_NULL }, /* 134 = linux_bdflush */ + { AS(linux_sysfs_args), (sy_call_t *)linux_sysfs, AUE_NULL }, /* 135 = linux_sysfs */ + { AS(linux_personality_args), (sy_call_t *)linux_personality, AUE_NULL }, /* 136 = linux_personality */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 137 = afs_syscall */ + { AS(linux_setfsuid16_args), (sy_call_t *)linux_setfsuid16, AUE_NULL }, /* 138 = linux_setfsuid16 */ + { AS(linux_setfsgid16_args), (sy_call_t *)linux_setfsgid16, AUE_NULL }, /* 139 = linux_setfsgid16 */ + { AS(linux_llseek_args), (sy_call_t *)linux_llseek, AUE_NULL }, /* 140 = linux_llseek */ + { AS(linux_getdents_args), (sy_call_t *)linux_getdents, AUE_NULL }, /* 141 = linux_getdents */ + { AS(linux_select_args), (sy_call_t *)linux_select, AUE_NULL }, /* 142 = linux_select */ + { AS(flock_args), (sy_call_t *)flock, AUE_NULL }, /* 143 = flock */ + { AS(linux_msync_args), (sy_call_t *)linux_msync, AUE_NULL }, /* 144 = linux_msync */ + { AS(readv_args), (sy_call_t *)readv, AUE_NULL }, /* 145 = readv */ + { AS(writev_args), (sy_call_t *)writev, AUE_NULL }, /* 146 = writev */ + { SYF_MPSAFE | AS(linux_getsid_args), (sy_call_t *)linux_getsid, AUE_NULL }, /* 147 = linux_getsid */ + { AS(linux_fdatasync_args), (sy_call_t *)linux_fdatasync, AUE_NULL }, /* 148 = linux_fdatasync */ + { AS(linux_sysctl_args), (sy_call_t *)linux_sysctl, AUE_NULL }, /* 149 = linux_sysctl */ + { SYF_MPSAFE | AS(mlock_args), (sy_call_t *)mlock, AUE_NULL }, /* 150 = mlock */ + { SYF_MPSAFE | AS(munlock_args), (sy_call_t *)munlock, AUE_NULL }, /* 151 = munlock */ + { SYF_MPSAFE | AS(mlockall_args), (sy_call_t *)mlockall, AUE_NULL }, /* 152 = mlockall */ + { SYF_MPSAFE | 0, (sy_call_t *)munlockall, AUE_NULL }, /* 153 = munlockall */ + { SYF_MPSAFE | AS(sched_setparam_args), (sy_call_t *)sched_setparam, AUE_NULL }, /* 154 = sched_setparam */ + { SYF_MPSAFE | AS(sched_getparam_args), (sy_call_t *)sched_getparam, AUE_NULL }, /* 155 = sched_getparam */ + { SYF_MPSAFE | AS(linux_sched_setscheduler_args), (sy_call_t *)linux_sched_setscheduler, AUE_NULL }, /* 156 = linux_sched_setscheduler */ + { SYF_MPSAFE | AS(linux_sched_getscheduler_args), (sy_call_t *)linux_sched_getscheduler, AUE_NULL }, /* 157 = linux_sched_getscheduler */ + { 0, (sy_call_t *)sched_yield, AUE_NULL }, /* 158 = sched_yield */ + { SYF_MPSAFE | AS(linux_sched_get_priority_max_args), (sy_call_t *)linux_sched_get_priority_max, AUE_NULL }, /* 159 = linux_sched_get_priority_max */ + { SYF_MPSAFE | AS(linux_sched_get_priority_min_args), (sy_call_t *)linux_sched_get_priority_min, AUE_NULL }, /* 160 = linux_sched_get_priority_min */ + { SYF_MPSAFE | AS(sched_rr_get_interval_args), (sy_call_t *)sched_rr_get_interval, AUE_NULL }, /* 161 = sched_rr_get_interval */ + { SYF_MPSAFE | AS(nanosleep_args), (sy_call_t *)nanosleep, AUE_NULL }, /* 162 = nanosleep */ + { AS(linux_mremap_args), (sy_call_t *)linux_mremap, AUE_NULL }, /* 163 = linux_mremap */ + { SYF_MPSAFE | AS(linux_setresuid16_args), (sy_call_t *)linux_setresuid16, AUE_NULL }, /* 164 = linux_setresuid16 */ + { SYF_MPSAFE | AS(linux_getresuid16_args), (sy_call_t *)linux_getresuid16, AUE_NULL }, /* 165 = linux_getresuid16 */ + { 0, (sy_call_t *)linux_vm86, AUE_NULL }, /* 166 = linux_vm86 */ + { 0, (sy_call_t *)linux_query_module, AUE_NULL }, /* 167 = linux_query_module */ + { AS(poll_args), (sy_call_t *)poll, AUE_NULL }, /* 168 = poll */ + { 0, (sy_call_t *)linux_nfsservctl, AUE_NULL }, /* 169 = linux_nfsservctl */ + { SYF_MPSAFE | AS(linux_setresgid16_args), (sy_call_t *)linux_setresgid16, AUE_NULL }, /* 170 = linux_setresgid16 */ + { SYF_MPSAFE | AS(linux_getresgid16_args), (sy_call_t *)linux_getresgid16, AUE_NULL }, /* 171 = linux_getresgid16 */ + { 0, (sy_call_t *)linux_prctl, AUE_NULL }, /* 172 = linux_prctl */ + { AS(linux_rt_sigreturn_args), (sy_call_t *)linux_rt_sigreturn, AUE_NULL }, /* 173 = linux_rt_sigreturn */ + { SYF_MPSAFE | AS(linux_rt_sigaction_args), (sy_call_t *)linux_rt_sigaction, AUE_NULL }, /* 174 = linux_rt_sigaction */ + { SYF_MPSAFE | AS(linux_rt_sigprocmask_args), (sy_call_t *)linux_rt_sigprocmask, AUE_NULL }, /* 175 = linux_rt_sigprocmask */ + { 0, (sy_call_t *)linux_rt_sigpending, AUE_NULL }, /* 176 = linux_rt_sigpending */ + { 0, (sy_call_t *)linux_rt_sigtimedwait, AUE_NULL }, /* 177 = linux_rt_sigtimedwait */ + { 0, (sy_call_t *)linux_rt_sigqueueinfo, AUE_NULL }, /* 178 = linux_rt_sigqueueinfo */ + { SYF_MPSAFE | AS(linux_rt_sigsuspend_args), (sy_call_t *)linux_rt_sigsuspend, AUE_NULL }, /* 179 = linux_rt_sigsuspend */ + { AS(linux_pread_args), (sy_call_t *)linux_pread, AUE_NULL }, /* 180 = linux_pread */ + { AS(linux_pwrite_args), (sy_call_t *)linux_pwrite, AUE_NULL }, /* 181 = linux_pwrite */ + { AS(linux_chown16_args), (sy_call_t *)linux_chown16, AUE_NULL }, /* 182 = linux_chown16 */ + { AS(linux_getcwd_args), (sy_call_t *)linux_getcwd, AUE_NULL }, /* 183 = linux_getcwd */ + { 0, (sy_call_t *)linux_capget, AUE_NULL }, /* 184 = linux_capget */ + { 0, (sy_call_t *)linux_capset, AUE_NULL }, /* 185 = linux_capset */ + { AS(linux_sigaltstack_args), (sy_call_t *)linux_sigaltstack, AUE_NULL }, /* 186 = linux_sigaltstack */ + { 0, (sy_call_t *)linux_sendfile, AUE_NULL }, /* 187 = linux_sendfile */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 188 = getpmsg */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 189 = putpmsg */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_vfork, AUE_NULL }, /* 190 = linux_vfork */ + { SYF_MPSAFE | AS(linux_getrlimit_args), (sy_call_t *)linux_getrlimit, AUE_NULL }, /* 191 = linux_getrlimit */ + { AS(linux_mmap2_args), (sy_call_t *)linux_mmap2, AUE_NULL }, /* 192 = linux_mmap2 */ + { AS(linux_truncate64_args), (sy_call_t *)linux_truncate64, AUE_NULL }, /* 193 = linux_truncate64 */ + { AS(linux_ftruncate64_args), (sy_call_t *)linux_ftruncate64, AUE_NULL }, /* 194 = linux_ftruncate64 */ + { AS(linux_stat64_args), (sy_call_t *)linux_stat64, AUE_NULL }, /* 195 = linux_stat64 */ + { AS(linux_lstat64_args), (sy_call_t *)linux_lstat64, AUE_NULL }, /* 196 = linux_lstat64 */ + { AS(linux_fstat64_args), (sy_call_t *)linux_fstat64, AUE_NULL }, /* 197 = linux_fstat64 */ + { AS(linux_lchown_args), (sy_call_t *)linux_lchown, AUE_NULL }, /* 198 = linux_lchown */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_getuid, AUE_NULL }, /* 199 = linux_getuid */ + { SYF_MPSAFE | 0, (sy_call_t *)linux_getgid, AUE_NULL }, /* 200 = linux_getgid */ + { SYF_MPSAFE | 0, (sy_call_t *)geteuid, AUE_NULL }, /* 201 = geteuid */ + { SYF_MPSAFE | 0, (sy_call_t *)getegid, AUE_NULL }, /* 202 = getegid */ + { SYF_MPSAFE | AS(setreuid_args), (sy_call_t *)setreuid, AUE_NULL }, /* 203 = setreuid */ + { SYF_MPSAFE | AS(setregid_args), (sy_call_t *)setregid, AUE_NULL }, /* 204 = setregid */ + { SYF_MPSAFE | AS(linux_getgroups_args), (sy_call_t *)linux_getgroups, AUE_NULL }, /* 205 = linux_getgroups */ + { SYF_MPSAFE | AS(linux_setgroups_args), (sy_call_t *)linux_setgroups, AUE_NULL }, /* 206 = linux_setgroups */ + { AS(fchown_args), (sy_call_t *)fchown, AUE_NULL }, /* 207 = fchown */ + { SYF_MPSAFE | AS(setresuid_args), (sy_call_t *)setresuid, AUE_NULL }, /* 208 = setresuid */ + { SYF_MPSAFE | AS(getresuid_args), (sy_call_t *)getresuid, AUE_NULL }, /* 209 = getresuid */ + { SYF_MPSAFE | AS(setresgid_args), (sy_call_t *)setresgid, AUE_NULL }, /* 210 = setresgid */ + { SYF_MPSAFE | AS(getresgid_args), (sy_call_t *)getresgid, AUE_NULL }, /* 211 = getresgid */ + { AS(linux_chown_args), (sy_call_t *)linux_chown, AUE_NULL }, /* 212 = linux_chown */ + { SYF_MPSAFE | AS(setuid_args), (sy_call_t *)setuid, AUE_NULL }, /* 213 = setuid */ + { SYF_MPSAFE | AS(setgid_args), (sy_call_t *)setgid, AUE_NULL }, /* 214 = setgid */ + { AS(linux_setfsuid_args), (sy_call_t *)linux_setfsuid, AUE_NULL }, /* 215 = linux_setfsuid */ + { AS(linux_setfsgid_args), (sy_call_t *)linux_setfsgid, AUE_NULL }, /* 216 = linux_setfsgid */ + { AS(linux_pivot_root_args), (sy_call_t *)linux_pivot_root, AUE_NULL }, /* 217 = linux_pivot_root */ + { AS(linux_mincore_args), (sy_call_t *)linux_mincore, AUE_NULL }, /* 218 = linux_mincore */ + { SYF_MPSAFE | AS(madvise_args), (sy_call_t *)madvise, AUE_NULL }, /* 219 = madvise */ + { AS(linux_getdents64_args), (sy_call_t *)linux_getdents64, AUE_NULL }, /* 220 = linux_getdents64 */ + { SYF_MPSAFE | AS(linux_fcntl64_args), (sy_call_t *)linux_fcntl64, AUE_NULL }, /* 221 = linux_fcntl64 */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 222 = */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 223 = */ + { 0, (sy_call_t *)linux_gettid, AUE_NULL }, /* 224 = linux_gettid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 225 = linux_readahead */ + { 0, (sy_call_t *)linux_setxattr, AUE_NULL }, /* 226 = linux_setxattr */ + { 0, (sy_call_t *)linux_lsetxattr, AUE_NULL }, /* 227 = linux_lsetxattr */ + { 0, (sy_call_t *)linux_fsetxattr, AUE_NULL }, /* 228 = linux_fsetxattr */ + { 0, (sy_call_t *)linux_getxattr, AUE_NULL }, /* 229 = linux_getxattr */ + { 0, (sy_call_t *)linux_lgetxattr, AUE_NULL }, /* 230 = linux_lgetxattr */ + { 0, (sy_call_t *)linux_fgetxattr, AUE_NULL }, /* 231 = linux_fgetxattr */ + { 0, (sy_call_t *)linux_listxattr, AUE_NULL }, /* 232 = linux_listxattr */ + { 0, (sy_call_t *)linux_llistxattr, AUE_NULL }, /* 233 = linux_llistxattr */ + { 0, (sy_call_t *)linux_flistxattr, AUE_NULL }, /* 234 = linux_flistxattr */ + { 0, (sy_call_t *)linux_removexattr, AUE_NULL }, /* 235 = linux_removexattr */ + { 0, (sy_call_t *)linux_lremovexattr, AUE_NULL }, /* 236 = linux_lremovexattr */ + { 0, (sy_call_t *)linux_fremovexattr, AUE_NULL }, /* 237 = linux_fremovexattr */ + { AS(linux_tkill_args), (sy_call_t *)linux_tkill, AUE_NULL }, /* 238 = linux_tkill */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 239 = linux_sendfile64 */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 240 = linux_futex */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 241 = linux_sched_setaffinity */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 242 = linux_sched_getaffinity */ + { AS(linux_set_thread_area_args), (sy_call_t *)linux_set_thread_area, AUE_NULL }, /* 243 = linux_set_thread_area */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 244 = linux_get_thread_area */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 245 = linux_io_setup */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 246 = linux_io_destroy */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 247 = linux_io_getevents */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 248 = linux_io_submit */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 249 = linux_io_cancel */ + { 0, (sy_call_t *)linux_fadvise64, AUE_NULL }, /* 250 = linux_fadvise64 */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 251 = */ + { SYF_MPSAFE | AS(sys_exit_args), (sy_call_t *)sys_exit, AUE_NULL }, /* 252 = exit_group */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 253 = linux_lookup_dcookie */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 254 = linux_epoll_create */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 255 = linux_epoll_ctl */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 256 = linux_epoll_wait */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 257 = linux_remap_file_pages */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 258 = linux_set_tid_address */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 259 = linux_timer_create */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 260 = linux_timer_settime */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 261 = linux_timer_gettime */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 262 = linux_timer_getoverrun */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 263 = linux_timer_delete */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 264 = linux_clock_settime */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 265 = linux_clock_gettime */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 266 = linux_clock_getres */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 267 = linux_clock_nanosleep */ }; From owner-p4-projects@FreeBSD.ORG Mon Nov 15 20:59:43 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9827616A4D3; Mon, 15 Nov 2004 20:59:42 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5830316A4CE; Mon, 15 Nov 2004 20:59:42 +0000 (GMT) Received: from fledge.watson.org (fledge.watson.org [204.156.12.50]) by mx1.FreeBSD.org (Postfix) with ESMTP id 66DE943D1F; Mon, 15 Nov 2004 20:59:41 +0000 (GMT) (envelope-from arr@watson.org) Received: from fledge.watson.org (localhost [127.0.0.1]) by fledge.watson.org (8.13.1/8.13.1) with ESMTP id iAFKwGbk029212; Mon, 15 Nov 2004 15:58:16 -0500 (EST) (envelope-from arr@watson.org) Received: from localhost (arr@localhost)iAFKwGSV029209; Mon, 15 Nov 2004 15:58:16 -0500 (EST) (envelope-from arr@watson.org) X-Authentication-Warning: fledge.watson.org: arr owned process doing -bs Date: Mon, 15 Nov 2004 15:58:16 -0500 (EST) From: "Andrew R. Reiter" To: Wayne Salamon In-Reply-To: <200411152057.iAFKvLYu013067@repoman.freebsd.org> Message-ID: <20041115155716.C28699@fledge.watson.org> References: <200411152057.iAFKvLYu013067@repoman.freebsd.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: Perforce Change Reviews Subject: Re: PERFORCE change 65203 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 20:59:43 -0000 Curious since I'll probably hack on this a bit later today: Are you dealing with the freebsd32 syscall masters as well? I am going to also investigate if pecoff support is actually used or is rotting to hell... so may want to stay away from that piece if theres anything that requires modification there. On Mon, 15 Nov 2004, Wayne Salamon wrote: :http://perforce.freebsd.org/chv.cgi?CH=65203 : :Change 65203 by wsalamon@rickenbacker on 2004/11/15 20:56:45 : : Add audit event constants to system calls. Most are AUE_NULL, and : should be filled in as the sys/kern/syscalls.master are filled. : :Affected files ... : :.. //depot/projects/trustedbsd/audit3/sys/i386/linux/syscalls.master#3 edit : :Differences ... : :==== //depot/projects/trustedbsd/audit3/sys/i386/linux/syscalls.master#3 (text+ko) ==== : :@@ -9,6 +9,11 @@ : ; type one of STD, OBSOL, UNIMPL, COMPAT : ; name psuedo-prototype of syscall routine : ; If one of the following alts is different, then all appear: :+; audit the audit event associated with the system call :+; A value of AUE_NULL means no auditing, but it also means that :+; there is no audit event for the call at this time. For the :+; case where the event exists, but we don't want auditing, the :+; event should be #defined to AUE_NULL in audit_kevents.h. : ; altname name of system call if different : ; alttag name of args struct tag if different from [o]`name'"_args" : ; altrtyp return type if not int (bogus - syscalls always return int) :@@ -31,301 +36,346 @@ : ; #ifdef's, etc. may be included, and are copied to the output files. : : 0 UNIMPL setup :-1 MNOPROTO { void sys_exit(int rval); } exit sys_exit_args void :-2 MSTD { int linux_fork(void); } :-3 MNOPROTO { int read(int fd, char *buf, u_int nbyte); } :-4 MNOPROTO { int write(int fd, char *buf, u_int nbyte); } :-5 STD { int linux_open(char *path, l_int flags, l_int mode); } :-6 MNOPROTO { int close(int fd); } :-7 MSTD { int linux_waitpid(l_pid_t pid, l_int *status, l_int options); } :-8 STD { int linux_creat(char *path, l_int mode); } :-9 STD { int linux_link(char *path, char *to); } :-10 STD { int linux_unlink(char *path); } :-11 STD { int linux_execve(char *path, char **argp, char **envp); } :-12 STD { int linux_chdir(char *path); } :-13 STD { int linux_time(l_time_t *tm); } :-14 STD { int linux_mknod(char *path, l_int mode, l_dev_t dev); } :-15 STD { int linux_chmod(char *path, l_mode_t mode); } :+1 MNOPROTO { void sys_exit(int rval); } AUE_EXIT exit sys_exit_args void :+2 MSTD { int linux_fork(void); } AUE_FORK :+3 MNOPROTO { int read(int fd, char *buf, u_int nbyte); } AUE_NULL :+4 MNOPROTO { int write(int fd, char *buf, u_int nbyte); } AUE_NULL :+5 STD { int linux_open(char *path, l_int flags, l_int mode); } AUE_OPEN :+6 MNOPROTO { int close(int fd); } AUE_CLOSE :+7 MSTD { int linux_waitpid(l_pid_t pid, \ :+ l_int *status, l_int options); } AUE_NULL :+8 STD { int linux_creat(char *path, l_int mode); } AUE_NULL :+9 STD { int linux_link(char *path, char *to); } AUE_NULL :+10 STD { int linux_unlink(char *path); } AUE_NULL :+11 STD { int linux_execve(char *path, char **argp, \ :+ char **envp); } AUE_NULL :+12 STD { int linux_chdir(char *path); } AUE_NULL :+13 STD { int linux_time(l_time_t *tm); } AUE_NULL :+14 STD { int linux_mknod(char *path, l_int mode, \ :+ l_dev_t dev); } AUE_NULL :+15 STD { int linux_chmod(char *path, l_mode_t mode); } AUE_NULL : 16 STD { int linux_lchown16(char *path, l_uid16_t uid, \ :- l_gid16_t gid); } :+ l_gid16_t gid); } AUE_NULL : 17 UNIMPL break :-18 STD { int linux_stat(char *path, struct ostat *up); } :-19 STD { int linux_lseek(l_uint fdes, l_off_t off, l_int whence); } :-20 MSTD { int linux_getpid(void); } :+18 STD { int linux_stat(char *path, struct ostat *up); } AUE_NULL :+19 STD { int linux_lseek(l_uint fdes, l_off_t off, \ :+ l_int whence); } AUE_NULL :+20 MSTD { int linux_getpid(void); } AUE_NULL : 21 STD { int linux_mount(char *specialfile, char *dir, \ : char *filesystemtype, l_ulong rwflag, \ :- void *data); } :-22 STD { int linux_oldumount(char *path); } :-23 MSTD { int linux_setuid16(l_uid16_t uid); } :-24 MSTD { int linux_getuid16(void); } :-25 STD { int linux_stime(void); } :+ void *data); } AUE_NULL :+22 STD { int linux_oldumount(char *path); } AUE_NULL :+23 MSTD { int linux_setuid16(l_uid16_t uid); } AUE_NULL :+24 MSTD { int linux_getuid16(void); } AUE_NULL :+25 STD { int linux_stime(void); } AUE_NULL : 26 MSTD { int linux_ptrace(l_long req, l_long pid, l_long addr, \ :- l_long data); } :-27 STD { int linux_alarm(l_uint secs); } :-28 STD { int linux_fstat(l_uint fd, struct ostat *up); } :-29 MSTD { int linux_pause(void); } :-30 STD { int linux_utime(char *fname, struct l_utimbuf *times); } :+ l_long data); } AUE_NULL :+27 STD { int linux_alarm(l_uint secs); } AUE_NULL :+28 STD { int linux_fstat(l_uint fd, struct ostat *up); } AUE_NULL :+29 MSTD { int linux_pause(void); } AUE_NULL :+30 STD { int linux_utime(char *fname, \ :+ struct l_utimbuf *times); } AUE_NULL : 31 UNIMPL stty : 32 UNIMPL gtty :-33 STD { int linux_access(char *path, l_int flags); } :-34 MSTD { int linux_nice(l_int inc); } :+33 STD { int linux_access(char *path, l_int flags); } AUE_NULL :+34 MSTD { int linux_nice(l_int inc); } AUE_NULL : 35 UNIMPL ftime :-36 NOPROTO { int sync(void); } :-37 MSTD { int linux_kill(l_int pid, l_int signum); } :-38 STD { int linux_rename(char *from, char *to); } :-39 STD { int linux_mkdir(char *path, l_int mode); } :-40 STD { int linux_rmdir(char *path); } :-41 MNOPROTO { int dup(u_int fd); } :-42 MSTD { int linux_pipe(l_ulong *pipefds); } :-43 STD { int linux_times(struct l_times_argv *buf); } :+36 NOPROTO { int sync(void); } AUE_NULL :+37 MSTD { int linux_kill(l_int pid, l_int signum); } AUE_NULL :+38 STD { int linux_rename(char *from, char *to); } AUE_NULL :+39 STD { int linux_mkdir(char *path, l_int mode); } AUE_NULL :+40 STD { int linux_rmdir(char *path); } AUE_NULL :+41 MNOPROTO { int dup(u_int fd); } AUE_NULL :+42 MSTD { int linux_pipe(l_ulong *pipefds); } AUE_NULL :+43 STD { int linux_times(struct l_times_argv *buf); } AUE_NULL : 44 UNIMPL prof :-45 STD { int linux_brk(l_ulong dsend); } :-46 MSTD { int linux_setgid16(l_gid16_t gid); } :-47 MSTD { int linux_getgid16(void); } :-48 MSTD { int linux_signal(l_int sig, l_handler_t handler); } :-49 MSTD { int linux_geteuid16(void); } :-50 MSTD { int linux_getegid16(void); } :-51 MNOPROTO { int acct(char *path); } :-52 STD { int linux_umount(char *path, l_int flags); } :+45 STD { int linux_brk(l_ulong dsend); } AUE_NULL :+46 MSTD { int linux_setgid16(l_gid16_t gid); } AUE_NULL :+47 MSTD { int linux_getgid16(void); } AUE_NULL :+48 MSTD { int linux_signal(l_int sig, l_handler_t handler); } AUE_NULL :+49 MSTD { int linux_geteuid16(void); } AUE_NULL :+50 MSTD { int linux_getegid16(void); } AUE_NULL :+51 MNOPROTO { int acct(char *path); } AUE_NULL :+52 STD { int linux_umount(char *path, l_int flags); } AUE_NULL : 53 UNIMPL lock :-54 STD { int linux_ioctl(l_uint fd, l_uint cmd, l_ulong arg); } :-55 MSTD { int linux_fcntl(l_uint fd, l_uint cmd, l_ulong arg); } :+54 STD { int linux_ioctl(l_uint fd, l_uint cmd, l_ulong arg); } AUE_NULL :+55 MSTD { int linux_fcntl(l_uint fd, l_uint cmd, l_ulong arg); } AUE_NULL : 56 UNIMPL mpx :-57 MNOPROTO { int setpgid(int pid, int pgid); } :+57 MNOPROTO { int setpgid(int pid, int pgid); } AUE_NULL : 58 UNIMPL ulimit :-59 STD { int linux_olduname(void); } :-60 MNOPROTO { int umask(int newmask); } :-61 NOPROTO { int chroot(char *path); } :-62 STD { int linux_ustat(l_dev_t dev, struct l_ustat *ubuf); } :-63 MNOPROTO { int dup2(u_int from, u_int to); } :-64 MNOPROTO { int getppid(void); } :-65 MNOPROTO { int getpgrp(void); } :-66 MNOPROTO { int setsid(void); } :+59 STD { int linux_olduname(void); } AUE_NULL :+60 MNOPROTO { int umask(int newmask); } AUE_NULL :+61 NOPROTO { int chroot(char *path); } AUE_NULL :+62 STD { int linux_ustat(l_dev_t dev, struct l_ustat *ubuf); } AUE_NULL :+63 MNOPROTO { int dup2(u_int from, u_int to); } AUE_NULL :+64 MNOPROTO { int getppid(void); } AUE_NULL :+65 MNOPROTO { int getpgrp(void); } AUE_NULL :+66 MNOPROTO { int setsid(void); } AUE_NULL : 67 MSTD { int linux_sigaction(l_int sig, l_osigaction_t *nsa, \ :- l_osigaction_t *osa); } :-68 MSTD { int linux_sgetmask(void); } :-69 MSTD { int linux_ssetmask(l_osigset_t mask); } :-70 MSTD { int linux_setreuid16(l_uid16_t ruid, l_uid16_t euid); } :-71 MSTD { int linux_setregid16(l_gid16_t rgid, l_gid16_t egid); } :+ l_osigaction_t *osa); } AUE_NULL :+68 MSTD { int linux_sgetmask(void); } AUE_NULL :+69 MSTD { int linux_ssetmask(l_osigset_t mask); } AUE_NULL :+70 MSTD { int linux_setreuid16(l_uid16_t ruid, \ :+ l_uid16_t euid); } AUE_NULL :+71 MSTD { int linux_setregid16(l_gid16_t rgid, \ :+ l_gid16_t egid); } AUE_NULL : 72 MSTD { int linux_sigsuspend(l_int hist0, l_int hist1, \ :- l_osigset_t mask); } :-73 MSTD { int linux_sigpending(l_osigset_t *mask); } :-74 MNOPROTO { int osethostname(char *hostname, u_int len); } \ :+ l_osigset_t mask); } AUE_NULL :+73 MSTD { int linux_sigpending(l_osigset_t *mask); } AUE_NULL :+74 MNOPROTO { int osethostname(char *hostname, u_int len); } AUE_NULL \ : osethostname sethostname_args int :-75 MSTD { int linux_setrlimit(l_uint resource, struct l_rlimit *rlim); } :+75 MSTD { int linux_setrlimit(l_uint resource, \ :+ struct l_rlimit *rlim); } AUE_NULL : 76 MSTD { int linux_old_getrlimit(l_uint resource, \ :- struct l_rlimit *rlim); } :-77 MNOPROTO { int getrusage(int who, struct rusage *rusage); } :-78 MNOPROTO { int gettimeofday(struct timeval *tp, struct timezone *tzp); } :-79 MNOPROTO { int settimeofday(struct timeval *tp, struct timezone *tzp); } :-80 MSTD { int linux_getgroups16(l_uint gidsetsize, l_gid16_t *gidset); } :-81 MSTD { int linux_setgroups16(l_uint gidsetsize, l_gid16_t *gidset); } :-82 STD { int linux_old_select(struct l_old_select_argv *ptr); } :-83 STD { int linux_symlink(char *path, char *to); } :-84 NOPROTO { int ostat(char *path, struct ostat *up); } :-85 STD { int linux_readlink(char *name, char *buf, l_int count); } :-86 STD { int linux_uselib(char *library); } :-87 NOPROTO { int swapon(char *name); } :+ struct l_rlimit *rlim); } AUE_NULL :+77 MNOPROTO { int getrusage(int who, struct rusage *rusage); } AUE_NULL :+78 MNOPROTO { int gettimeofday(struct timeval *tp, \ :+ struct timezone *tzp); } AUE_NULL :+79 MNOPROTO { int settimeofday(struct timeval *tp, \ :+ struct timezone *tzp); } AUE_NULL :+80 MSTD { int linux_getgroups16(l_uint gidsetsize, \ :+ l_gid16_t *gidset); } AUE_NULL :+81 MSTD { int linux_setgroups16(l_uint gidsetsize, \ :+ l_gid16_t *gidset); } AUE_NULL :+82 STD { int linux_old_select(struct l_old_select_argv *ptr); } AUE_NULL :+83 STD { int linux_symlink(char *path, char *to); } AUE_NULL :+84 NOPROTO { int ostat(char *path, struct ostat *up); } AUE_NULL :+85 STD { int linux_readlink(char *name, char *buf, \ :+ l_int count); } AUE_NULL :+86 STD { int linux_uselib(char *library); } AUE_NULL :+87 NOPROTO { int swapon(char *name); } AUE_NULL : 88 STD { int linux_reboot(l_int magic1, l_int magic2, l_uint cmd, \ :- void *arg); } :+ void *arg); } AUE_NULL : 89 STD { int linux_readdir(l_uint fd, struct l_dirent *dent, \ :- l_uint count); } :-90 STD { int linux_mmap(struct l_mmap_argv *ptr); } :-91 NOPROTO { int munmap(caddr_t addr, int len); } :-92 STD { int linux_truncate(char *path, l_ulong length); } :-93 NOPROTO { int oftruncate(int fd, long length); } :-94 NOPROTO { int fchmod(int fd, int mode); } :-95 NOPROTO { int fchown(int fd, int uid, int gid); } :-96 MNOPROTO { int getpriority(int which, int who); } :-97 MNOPROTO { int setpriority(int which, int who, int prio); } :+ l_uint count); } AUE_NULL :+90 STD { int linux_mmap(struct l_mmap_argv *ptr); } AUE_NULL :+91 NOPROTO { int munmap(caddr_t addr, int len); } AUE_NULL :+92 STD { int linux_truncate(char *path, l_ulong length); } AUE_NULL :+93 NOPROTO { int oftruncate(int fd, long length); } AUE_NULL :+94 NOPROTO { int fchmod(int fd, int mode); } AUE_NULL :+95 NOPROTO { int fchown(int fd, int uid, int gid); } AUE_NULL :+96 MNOPROTO { int getpriority(int which, int who); } AUE_NULL :+97 MNOPROTO { int setpriority(int which, int who, int prio); } AUE_NULL : 98 UNIMPL profil :-99 STD { int linux_statfs(char *path, struct l_statfs_buf *buf); } :-100 STD { int linux_fstatfs(l_uint fd, struct l_statfs_buf *buf); } :+99 STD { int linux_statfs(char *path, \ :+ struct l_statfs_buf *buf); } AUE_NULL :+100 STD { int linux_fstatfs(l_uint fd, \ :+ struct l_statfs_buf *buf); } AUE_NULL : 101 STD { int linux_ioperm(l_ulong start, l_ulong length, \ :- l_int enable); } :-102 STD { int linux_socketcall(l_int what, l_ulong args); } :-103 STD { int linux_syslog(l_int type, char *buf, l_int len); } :+ l_int enable); } AUE_NULL :+102 STD { int linux_socketcall(l_int what, l_ulong args); } AUE_NULL :+103 STD { int linux_syslog(l_int type, char *buf, l_int len); } AUE_NULL : 104 STD { int linux_setitimer(l_int which, struct l_itimerval *itv, \ :- struct l_itimerval *oitv); } :-105 STD { int linux_getitimer(l_int which, struct l_itimerval *itv); } :-106 STD { int linux_newstat(char *path, struct l_newstat *buf); } :-107 STD { int linux_newlstat(char *path, struct l_newstat *buf); } :-108 STD { int linux_newfstat(l_uint fd, struct l_newstat *buf); } :-109 STD { int linux_uname(void); } :-110 STD { int linux_iopl(l_ulong level); } :-111 STD { int linux_vhangup(void); } :+ struct l_itimerval *oitv); } AUE_NULL :+105 STD { int linux_getitimer(l_int which, \ :+ struct l_itimerval *itv); } AUE_NULL :+106 STD { int linux_newstat(char *path, \ :+ struct l_newstat *buf); } AUE_NULL :+107 STD { int linux_newlstat(char *path, \ :+ struct l_newstat *buf); } AUE_NULL :+108 STD { int linux_newfstat(l_uint fd, \ :+ struct l_newstat *buf); } AUE_NULL :+109 STD { int linux_uname(void); } AUE_NULL :+110 STD { int linux_iopl(l_ulong level); } AUE_NULL :+111 STD { int linux_vhangup(void); } AUE_NULL : 112 UNIMPL idle :-113 STD { int linux_vm86old(void); } :+113 STD { int linux_vm86old(void); } AUE_NULL : 114 MSTD { int linux_wait4(l_pid_t pid, l_uint *status, \ :- l_int options, struct l_rusage *rusage); } :-115 STD { int linux_swapoff(void); } :-116 STD { int linux_sysinfo(struct l_sysinfo *info); } :+ l_int options, struct l_rusage *rusage); } AUE_NULL :+115 STD { int linux_swapoff(void); } AUE_NULL :+116 STD { int linux_sysinfo(struct l_sysinfo *info); } AUE_NULL : 117 STD { int linux_ipc(l_uint what, l_int arg1, l_int arg2, \ :- l_int arg3, void *ptr, l_long arg5); } :-118 NOPROTO { int fsync(int fd); } :-119 MSTD { int linux_sigreturn(struct l_sigframe *sfp); } :-120 MSTD { int linux_clone(l_int flags, void *stack); } :-121 MNOPROTO { int setdomainname(char *name, int len); } :-122 STD { int linux_newuname(struct l_new_utsname *buf); } :+ l_int arg3, void *ptr, l_long arg5); } AUE_NULL :+118 NOPROTO { int fsync(int fd); } AUE_NULL :+119 MSTD { int linux_sigreturn(struct l_sigframe *sfp); } AUE_NULL :+120 MSTD { int linux_clone(l_int flags, void *stack); } AUE_NULL :+121 MNOPROTO { int setdomainname(char *name, int len); } AUE_NULL :+122 STD { int linux_newuname(struct l_new_utsname *buf); } AUE_NULL : 123 STD { int linux_modify_ldt(l_int func, void *ptr, \ :- l_ulong bytecount); } :-124 STD { int linux_adjtimex(void); } :-125 NOPROTO { int mprotect(caddr_t addr, int len, int prot); } :+ l_ulong bytecount); } AUE_NULL :+124 STD { int linux_adjtimex(void); } AUE_NULL :+125 NOPROTO { int mprotect(caddr_t addr, int len, int prot); } AUE_NULL : 126 MSTD { int linux_sigprocmask(l_int how, l_osigset_t *mask, \ :- l_osigset_t *omask); } :-127 STD { int linux_create_module(void); } :-128 STD { int linux_init_module(void); } :-129 STD { int linux_delete_module(void); } :-130 STD { int linux_get_kernel_syms(void); } :-131 STD { int linux_quotactl(void); } :-132 NOPROTO { int getpgid(int pid); } :-133 NOPROTO { int fchdir(int fd); } :-134 STD { int linux_bdflush(void); } :-135 STD { int linux_sysfs(l_int option, l_ulong arg1, l_ulong arg2); } :-136 STD { int linux_personality(l_ulong per); } :+ l_osigset_t *omask); } AUE_NULL :+127 STD { int linux_create_module(void); } AUE_NULL :+128 STD { int linux_init_module(void); } AUE_NULL :+129 STD { int linux_delete_module(void); } AUE_NULL :+130 STD { int linux_get_kernel_syms(void); } AUE_NULL :+131 STD { int linux_quotactl(void); } AUE_NULL :+132 NOPROTO { int getpgid(int pid); } AUE_NULL :+133 NOPROTO { int fchdir(int fd); } AUE_NULL :+134 STD { int linux_bdflush(void); } AUE_NULL :+135 STD { int linux_sysfs(l_int option, l_ulong arg1, \ :+ l_ulong arg2); } AUE_NULL :+136 STD { int linux_personality(l_ulong per); } AUE_NULL : 137 UNIMPL afs_syscall :-138 STD { int linux_setfsuid16(l_uid16_t uid); } :-139 STD { int linux_setfsgid16(l_gid16_t gid); } :+138 STD { int linux_setfsuid16(l_uid16_t uid); } AUE_NULL :+139 STD { int linux_setfsgid16(l_gid16_t gid); } AUE_NULL : 140 STD { int linux_llseek(l_int fd, l_ulong ohigh, l_ulong olow, \ :- l_loff_t *res, l_uint whence); } :-141 STD { int linux_getdents(l_uint fd, void *dent, l_uint count); } :+ l_loff_t *res, l_uint whence); } AUE_NULL :+141 STD { int linux_getdents(l_uint fd, void *dent, \ :+ l_uint count); } AUE_NULL : 142 STD { int linux_select(l_int nfds, l_fd_set *readfds, \ : l_fd_set *writefds, l_fd_set *exceptfds, \ :- struct l_timeval *timeout); } :-143 NOPROTO { int flock(int fd, int how); } :-144 STD { int linux_msync(l_ulong addr, l_size_t len, l_int fl); } :-145 NOPROTO { int readv(int fd, struct iovec *iovp, u_int iovcnt); } :-146 NOPROTO { int writev(int fd, struct iovec *iovp, u_int iovcnt); } :-147 MSTD { int linux_getsid(l_pid_t pid); } :-148 STD { int linux_fdatasync(l_uint fd); } :-149 STD { int linux_sysctl(struct l___sysctl_args *args); } :-150 MNOPROTO { int mlock(const void *addr, size_t len); } :-151 MNOPROTO { int munlock(const void *addr, size_t len); } :-152 MNOPROTO { int mlockall(int how); } :-153 MNOPROTO { int munlockall(void); } :+ struct l_timeval *timeout); } AUE_NULL :+143 NOPROTO { int flock(int fd, int how); } AUE_NULL :+144 STD { int linux_msync(l_ulong addr, \ :+ l_size_t len, l_int fl); } AUE_NULL :+145 NOPROTO { int readv(int fd, struct iovec *iovp, \ :+ u_int iovcnt); } AUE_NULL :+146 NOPROTO { int writev(int fd, struct iovec *iovp, \ :+ u_int iovcnt); } AUE_NULL :+147 MSTD { int linux_getsid(l_pid_t pid); } AUE_NULL :+148 STD { int linux_fdatasync(l_uint fd); } AUE_NULL :+149 STD { int linux_sysctl(struct l___sysctl_args *args); } AUE_NULL :+150 MNOPROTO { int mlock(const void *addr, size_t len); } AUE_NULL :+151 MNOPROTO { int munlock(const void *addr, size_t len); } AUE_NULL :+152 MNOPROTO { int mlockall(int how); } AUE_NULL :+153 MNOPROTO { int munlockall(void); } AUE_NULL : 154 MNOPROTO { int sched_setparam(pid_t pid, \ :- const struct sched_param *param); } :+ const struct sched_param *param); } AUE_NULL : 155 MNOPROTO { int sched_getparam(pid_t pid, \ :- struct sched_param *param); } :+ struct sched_param *param); } AUE_NULL : 156 MSTD { int linux_sched_setscheduler(l_pid_t pid, \ :- l_int policy, struct l_sched_param *param); } :-157 MSTD { int linux_sched_getscheduler(l_pid_t pid); } :-158 NOPROTO { int sched_yield(void); } :-159 MSTD { int linux_sched_get_priority_max(l_int policy); } :-160 MSTD { int linux_sched_get_priority_min(l_int policy); } :+ l_int policy, \ :+ struct l_sched_param *param); } AUE_NULL :+157 MSTD { int linux_sched_getscheduler(l_pid_t pid); } AUE_NULL :+158 NOPROTO { int sched_yield(void); } AUE_NULL :+159 MSTD { int linux_sched_get_priority_max(l_int policy); } AUE_NULL :+160 MSTD { int linux_sched_get_priority_min(l_int policy); } AUE_NULL : 161 MNOPROTO { int sched_rr_get_interval(l_pid_t pid, \ :- struct l_timespec *interval); } :+ struct l_timespec *interval); } AUE_NULL : 162 MNOPROTO { int nanosleep(const struct timespec *rqtp, \ :- struct timespec *rmtp); } :+ struct timespec *rmtp); } AUE_NULL : 163 STD { int linux_mremap(l_ulong addr, l_ulong old_len, \ : l_ulong new_len, l_ulong flags, \ :- l_ulong new_addr); } :+ l_ulong new_addr); } AUE_NULL : 164 MSTD { int linux_setresuid16(l_uid16_t ruid, \ :- l_uid16_t euid, l_uid16_t suid); } :+ l_uid16_t euid, l_uid16_t suid); } AUE_NULL : 165 MSTD { int linux_getresuid16(l_uid16_t *ruid, \ :- l_uid16_t *euid, l_uid16_t *suid); } :-166 STD { int linux_vm86(void); } :-167 STD { int linux_query_module(void); } :-168 NOPROTO { int poll(struct pollfd*, unsigned int nfds, long timeout); } :-169 STD { int linux_nfsservctl(void); } :+ l_uid16_t *euid, l_uid16_t *suid); } AUE_NULL :+166 STD { int linux_vm86(void); } AUE_NULL :+167 STD { int linux_query_module(void); } AUE_NULL :+168 NOPROTO { int poll(struct pollfd*, unsigned int nfds, \ :+ long timeout); } AUE_NULL :+169 STD { int linux_nfsservctl(void); } AUE_NULL : 170 MSTD { int linux_setresgid16(l_gid16_t rgid, \ :- l_gid16_t egid, l_gid16_t sgid); } :+ l_gid16_t egid, l_gid16_t sgid); } AUE_NULL : 171 MSTD { int linux_getresgid16(l_gid16_t *rgid, \ :- l_gid16_t *egid, l_gid16_t *sgid); } :-172 STD { int linux_prctl(void); } :-173 STD { int linux_rt_sigreturn(struct l_ucontext *ucp); } :+ l_gid16_t *egid, l_gid16_t *sgid); } AUE_NULL :+172 STD { int linux_prctl(void); } AUE_NULL :+173 STD { int linux_rt_sigreturn(struct l_ucontext *ucp); } AUE_NULL : 174 MSTD { int linux_rt_sigaction(l_int sig, \ : l_sigaction_t *act, l_sigaction_t *oact, \ :- l_size_t sigsetsize); } :+ l_size_t sigsetsize); } AUE_NULL : 175 MSTD { int linux_rt_sigprocmask(l_int how, \ : l_sigset_t *mask, l_sigset_t *omask, \ :- l_size_t sigsetsize); } :-176 STD { int linux_rt_sigpending(void); } :-177 STD { int linux_rt_sigtimedwait(void); } :-178 STD { int linux_rt_sigqueueinfo(void); } :+ l_size_t sigsetsize); } AUE_NULL :+176 STD { int linux_rt_sigpending(void); } AUE_NULL :+177 STD { int linux_rt_sigtimedwait(void); } AUE_NULL :+178 STD { int linux_rt_sigqueueinfo(void); } AUE_NULL : 179 MSTD { int linux_rt_sigsuspend(l_sigset_t *newset, \ :- l_size_t sigsetsize); } :+ l_size_t sigsetsize); } AUE_NULL : 180 STD { int linux_pread(l_uint fd, char *buf, \ :- l_size_t nbyte, l_loff_t offset); } :+ l_size_t nbyte, l_loff_t offset); } AUE_NULL : 181 STD { int linux_pwrite(l_uint fd, char *buf, \ :- l_size_t nbyte, l_loff_t offset); } :-182 STD { int linux_chown16(char *path, l_uid16_t uid, l_gid16_t gid); } :-183 STD { int linux_getcwd(char *buf, l_ulong bufsize); } :-184 STD { int linux_capget(void); } :-185 STD { int linux_capset(void); } :-186 STD { int linux_sigaltstack(l_stack_t *uss, l_stack_t *uoss); } :-187 STD { int linux_sendfile(void); } :+ l_size_t nbyte, l_loff_t offset); } AUE_NULL :+182 STD { int linux_chown16(char *path, l_uid16_t uid, \ :+ l_gid16_t gid); } AUE_NULL :+183 STD { int linux_getcwd(char *buf, l_ulong bufsize); } AUE_NULL :+184 STD { int linux_capget(void); } AUE_NULL :+185 STD { int linux_capset(void); } AUE_NULL :+186 STD { int linux_sigaltstack(l_stack_t *uss, \ :+ l_stack_t *uoss); } AUE_NULL :+187 STD { int linux_sendfile(void); } AUE_NULL : 188 UNIMPL getpmsg : 189 UNIMPL putpmsg :-190 MSTD { int linux_vfork(void); } :-191 MSTD { int linux_getrlimit(l_uint resource, struct l_rlimit *rlim); } :+190 MSTD { int linux_vfork(void); } AUE_NULL :+191 MSTD { int linux_getrlimit(l_uint resource, \ :+ struct l_rlimit *rlim); } AUE_NULL : 192 STD { int linux_mmap2(l_ulong addr, l_ulong len, \ : l_ulong prot, l_ulong flags, l_ulong fd, \ :- l_ulong pgoff); } :-193 STD { int linux_truncate64(char *path, l_loff_t length); } :-194 STD { int linux_ftruncate64(l_uint fd, l_loff_t length); } :+ l_ulong pgoff); } AUE_NULL :+193 STD { int linux_truncate64(char *path, l_loff_t length); } AUE_NULL :+194 STD { int linux_ftruncate64(l_uint fd, l_loff_t length); } AUE_NULL : 195 STD { int linux_stat64(char *filename, \ :- struct l_stat64 *statbuf, l_long flags); } :+ struct l_stat64 *statbuf, \ :+ l_long flags); } AUE_NULL : 196 STD { int linux_lstat64(char *filename, \ :- struct l_stat64 *statbuf, l_long flags); } :+ struct l_stat64 *statbuf, \ :+ l_long flags); } AUE_NULL : 197 STD { int linux_fstat64(l_ulong fd, \ :- struct l_stat64 *statbuf, l_long flags); } :+ struct l_stat64 *statbuf, \ :+ l_long flags); } AUE_NULL : 198 STD { int linux_lchown(char *path, l_uid_t uid, \ :- l_gid_t gid); } :-199 MSTD { int linux_getuid(void); } :-200 MSTD { int linux_getgid(void); } :-201 MNOPROTO { int geteuid(void); } :-202 MNOPROTO { int getegid(void); } :-203 MNOPROTO { int setreuid(uid_t ruid, uid_t euid); } :-204 MNOPROTO { int setregid(gid_t rgid, gid_t egid); } :-205 MSTD { int linux_getgroups(l_int gidsetsize, l_gid_t *grouplist); } :-206 MSTD { int linux_setgroups(l_int gidsetsize, l_gid_t *grouplist); } :+ l_gid_t gid); } AUE_NULL :+199 MSTD { int linux_getuid(void); } AUE_NULL :+200 MSTD { int linux_getgid(void); } AUE_NULL :+201 MNOPROTO { int geteuid(void); } AUE_NULL :+202 MNOPROTO { int getegid(void); } AUE_NULL :+203 MNOPROTO { int setreuid(uid_t ruid, uid_t euid); } AUE_NULL :+204 MNOPROTO { int setregid(gid_t rgid, gid_t egid); } AUE_NULL :+205 MSTD { int linux_getgroups(l_int gidsetsize, \ :+ l_gid_t *grouplist); } AUE_NULL :+206 MSTD { int linux_setgroups(l_int gidsetsize, \ :+ l_gid_t *grouplist); } AUE_NULL : 207 NODEF fchown fchown fchown_args int :-208 MNOPROTO { int setresuid(uid_t ruid, uid_t euid, uid_t suid); } :-209 MNOPROTO { int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid); } :-210 MNOPROTO { int setresgid(gid_t rgid, gid_t egid, gid_t sgid); } :-211 MNOPROTO { int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid); } :-212 STD { int linux_chown(char *path, l_uid_t uid, l_gid_t gid); } :-213 MNOPROTO { int setuid(uid_t uid); } :-214 MNOPROTO { int setgid(gid_t gid); } :-215 STD { int linux_setfsuid(l_uid_t uid); } :-216 STD { int linux_setfsgid(l_gid_t gid); } :-217 STD { int linux_pivot_root(char *new_root, char *put_old); } :-218 STD { int linux_mincore(l_ulong start, l_size_t len, u_char *vec); } :-219 MNOPROTO { int madvise(void *addr, size_t len, int behav); } :-220 STD { int linux_getdents64(l_uint fd, void *dirent, l_uint count); } :-221 MSTD { int linux_fcntl64(l_uint fd, l_uint cmd, l_ulong arg); } :+208 MNOPROTO { int setresuid(uid_t ruid, uid_t euid, \ :+ uid_t suid); } AUE_NULL :+209 MNOPROTO { int getresuid(uid_t *ruid, uid_t *euid, \ :+ uid_t *suid); } AUE_NULL :+210 MNOPROTO { int setresgid(gid_t rgid, gid_t egid, \ :+ gid_t sgid); } AUE_NULL :+211 MNOPROTO { int getresgid(gid_t *rgid, gid_t *egid, \ :+ gid_t *sgid); } AUE_NULL :+212 STD { int linux_chown(char *path, l_uid_t uid, \ :+ l_gid_t gid); } AUE_NULL :+213 MNOPROTO { int setuid(uid_t uid); } AUE_NULL :+214 MNOPROTO { int setgid(gid_t gid); } AUE_NULL :+215 STD { int linux_setfsuid(l_uid_t uid); } AUE_NULL :+216 STD { int linux_setfsgid(l_gid_t gid); } AUE_NULL :+217 STD { int linux_pivot_root(char *new_root, \ :+ char *put_old); } AUE_NULL :+218 STD { int linux_mincore(l_ulong start, l_size_t len, \ :+ u_char *vec); } AUE_NULL :+219 MNOPROTO { int madvise(void *addr, size_t len, \ :+ int behav); } AUE_NULL :+220 STD { int linux_getdents64(l_uint fd, void *dirent, \ :+ l_uint count); } AUE_NULL :+221 MSTD { int linux_fcntl64(l_uint fd, l_uint cmd, \ :+ l_ulong arg); } AUE_NULL : 222 UNIMPL : 223 UNIMPL :-224 STD { long linux_gettid(void); } :+224 STD { long linux_gettid(void); } AUE_NULL : 225 UNIMPL linux_readahead :-226 STD { int linux_setxattr(void); } :-227 STD { int linux_lsetxattr(void); } :-228 STD { int linux_fsetxattr(void); } :-229 STD { int linux_getxattr(void); } :-230 STD { int linux_lgetxattr(void); } :-231 STD { int linux_fgetxattr(void); } :-232 STD { int linux_listxattr(void); } :-233 STD { int linux_llistxattr(void); } :-234 STD { int linux_flistxattr(void); } :-235 STD { int linux_removexattr(void); } :-236 STD { int linux_lremovexattr(void); } :-237 STD { int linux_fremovexattr(void); } :-238 STD { int linux_tkill(int tid, int sig); } :+226 STD { int linux_setxattr(void); } AUE_NULL :+227 STD { int linux_lsetxattr(void); } AUE_NULL :+228 STD { int linux_fsetxattr(void); } AUE_NULL :+229 STD { int linux_getxattr(void); } AUE_NULL :+230 STD { int linux_lgetxattr(void); } AUE_NULL :+231 STD { int linux_fgetxattr(void); } AUE_NULL :+232 STD { int linux_listxattr(void); } AUE_NULL :+233 STD { int linux_llistxattr(void); } AUE_NULL :+234 STD { int linux_flistxattr(void); } AUE_NULL :+235 STD { int linux_removexattr(void); } AUE_NULL :+236 STD { int linux_lremovexattr(void); } AUE_NULL :+237 STD { int linux_fremovexattr(void); } AUE_NULL :+238 STD { int linux_tkill(int tid, int sig); } AUE_NULL : 239 UNIMPL linux_sendfile64 : 240 UNIMPL linux_futex : 241 UNIMPL linux_sched_setaffinity : 242 UNIMPL linux_sched_getaffinity :-243 STD { int linux_set_thread_area(void *entry); } :+243 STD { int linux_set_thread_area(void *entry); } AUE_NULL : 244 UNIMPL linux_get_thread_area : 245 UNIMPL linux_io_setup : 246 UNIMPL linux_io_destroy : 247 UNIMPL linux_io_getevents : 248 UNIMPL linux_io_submit : 249 UNIMPL linux_io_cancel :-250 STD { int linux_fadvise64(void); } :+250 STD { int linux_fadvise64(void); } AUE_NULL : 251 UNIMPL :-252 MNOPROTO { void sys_exit(int rval); } exit_group sys_exit_args void :+252 MNOPROTO { void sys_exit(int rval); } AUE_NULL \ :+ exit_group sys_exit_args void : 253 UNIMPL linux_lookup_dcookie : 254 UNIMPL linux_epoll_create : 255 UNIMPL linux_epoll_ctl : : -- Andrew R. Reiter arr@watson.org arr@FreeBSD.org From owner-p4-projects@FreeBSD.ORG Mon Nov 15 21:29:26 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5E99716A4CE; Mon, 15 Nov 2004 21:29:26 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2447816A4CE for ; Mon, 15 Nov 2004 21:29:26 +0000 (GMT) Received: from out005.verizon.net (out005pub.verizon.net [206.46.170.143]) by mx1.FreeBSD.org (Postfix) with ESMTP id A12FA43D49 for ; Mon, 15 Nov 2004 21:29:25 +0000 (GMT) (envelope-from wsalamon@computer.org) Received: from [192.168.1.9] ([70.16.167.161]) by out005.verizon.net (InterMail vM.5.01.06.06 201-253-122-130-106-20030910) with ESMTP id <20041115212925.TIMZ20108.out005.verizon.net@[192.168.1.9]>; Mon, 15 Nov 2004 15:29:25 -0600 In-Reply-To: <20041115155716.C28699@fledge.watson.org> References: <200411152057.iAFKvLYu013067@repoman.freebsd.org> <20041115155716.C28699@fledge.watson.org> Mime-Version: 1.0 (Apple Message framework v619) Message-Id: <6BB8D529-374D-11D9-B0DF-00306540DC16@computer.org> From: Wayne Salamon Date: Mon, 15 Nov 2004 16:29:24 -0500 To: "Andrew R. Reiter" X-Mailer: Apple Mail (2.619) X-Authentication-Info: Submitted using SMTP AUTH at out005.verizon.net from [70.16.167.161] at Mon, 15 Nov 2004 15:29:24 -0600 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit X-Content-Filtered-By: Mailman/MimeDel 2.1.1 cc: Perforce Change Reviews Subject: Re: PERFORCE change 65203 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 21:29:27 -0000 On Nov 15, 2004, at 3:58 PM, Andrew R. Reiter wrote: > Curious since I'll probably hack on this a bit later today: > > Are you dealing with the freebsd32 syscall masters as well? > I was going to do that next. > I am going to also investigate if pecoff support is actually used or is > rotting to hell... so may want to stay away from that piece if theres > anything that requires modification there. > OK. After freebsd32 changes are made, I need to figure out how to test this. Thanks, ------- Wayne Salamon wsalamon@computer.org From owner-p4-projects@FreeBSD.ORG Mon Nov 15 21:36:34 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3D2D116A4D1; Mon, 15 Nov 2004 21:36:34 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1A2D116A4CE for ; Mon, 15 Nov 2004 21:36:34 +0000 (GMT) Received: from fledge.watson.org (fledge.watson.org [204.156.12.50]) by mx1.FreeBSD.org (Postfix) with ESMTP id BAC5C43D2F for ; Mon, 15 Nov 2004 21:36:33 +0000 (GMT) (envelope-from arr@watson.org) Received: from fledge.watson.org (localhost [127.0.0.1]) by fledge.watson.org (8.13.1/8.13.1) with ESMTP id iAFLZ3qe030234; Mon, 15 Nov 2004 16:35:03 -0500 (EST) (envelope-from arr@watson.org) Received: from localhost (arr@localhost)iAFLZ3Si030231; Mon, 15 Nov 2004 16:35:03 -0500 (EST) (envelope-from arr@watson.org) X-Authentication-Warning: fledge.watson.org: arr owned process doing -bs Date: Mon, 15 Nov 2004 16:35:03 -0500 (EST) From: "Andrew R. Reiter" To: Wayne Salamon In-Reply-To: <6BB8D529-374D-11D9-B0DF-00306540DC16@computer.org> Message-ID: <20041115163220.F29225@fledge.watson.org> References: <200411152057.iAFKvLYu013067@repoman.freebsd.org> <6BB8D529-374D-11D9-B0DF-00306540DC16@computer.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII cc: Perforce Change Reviews Subject: Re: PERFORCE change 65203 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 21:36:34 -0000 On Mon, 15 Nov 2004, Wayne Salamon wrote: : :On Nov 15, 2004, at 3:58 PM, Andrew R. Reiter wrote: : :> Curious since I'll probably hack on this a bit later today: :> :> Are you dealing with the freebsd32 syscall masters as well? :> : : I was going to do that next. : Cool. :> I am going to also investigate if pecoff support is actually used or is :> rotting to hell... so may want to stay away from that piece if theres :> anything that requires modification there. :> : : OK. : : After freebsd32 changes are made, I need to figure out how to test :this. Couple ideas come to mind (not sure how good / bad they are): 1) we write a module that can be loaded and calls the syscalls from within the kernel with data formated properly. 2) we write a module that can force the setting of which syscall vector to be used... ie, setup a sysctl value that can be toggled to the various vectors and then have a set of *.c files to setup data properly and test? hmm.. perhaps PEter wemm has a good thought or two -- Andrew R. Reiter arr@watson.org arr@FreeBSD.org From owner-p4-projects@FreeBSD.ORG Mon Nov 15 22:00:45 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id AAD2D16A4D2; Mon, 15 Nov 2004 22:00:44 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6C26C16A4D0 for ; Mon, 15 Nov 2004 22:00:44 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 313EF43D39 for ; Mon, 15 Nov 2004 22:00:44 +0000 (GMT) (envelope-from wsalamon@computer.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAFM0i2s015728 for ; Mon, 15 Nov 2004 22:00:44 GMT (envelope-from wsalamon@computer.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAFM0h7O015723 for perforce@freebsd.org; Mon, 15 Nov 2004 22:00:43 GMT (envelope-from wsalamon@computer.org) Date: Mon, 15 Nov 2004 22:00:43 GMT Message-Id: <200411152200.iAFM0h7O015723@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to wsalamon@computer.org using -f From: Wayne Salamon To: Perforce Change Reviews Subject: PERFORCE change 65214 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 22:00:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=65214 Change 65214 by wsalamon@rickenbacker on 2004/11/15 21:59:55 Add the aydit events to the freebsd32 compat syscalls. Most are AUE_NULL, for now. Affected files ... .. //depot/projects/trustedbsd/audit3/sys/compat/freebsd32/freebsd32_proto.h#4 edit .. //depot/projects/trustedbsd/audit3/sys/compat/freebsd32/freebsd32_syscall.h#4 edit .. //depot/projects/trustedbsd/audit3/sys/compat/freebsd32/freebsd32_syscalls.c#4 edit .. //depot/projects/trustedbsd/audit3/sys/compat/freebsd32/freebsd32_sysent.c#4 edit .. //depot/projects/trustedbsd/audit3/sys/compat/freebsd32/syscalls.master#4 edit Differences ... ==== //depot/projects/trustedbsd/audit3/sys/compat/freebsd32/freebsd32_proto.h#4 (text+ko) ==== @@ -2,7 +2,7 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.30 2004/10/23 20:05:42 rwatson Exp $ + * $FreeBSD$ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.42 2004/10/23 20:04:56 rwatson Exp */ ==== //depot/projects/trustedbsd/audit3/sys/compat/freebsd32/freebsd32_syscall.h#4 (text+ko) ==== @@ -2,7 +2,7 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.30 2004/10/23 20:05:42 rwatson Exp $ + * $FreeBSD$ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.42 2004/10/23 20:04:56 rwatson Exp */ ==== //depot/projects/trustedbsd/audit3/sys/compat/freebsd32/freebsd32_syscalls.c#4 (text+ko) ==== @@ -2,7 +2,7 @@ * System call names. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.21 2004/10/23 20:05:42 rwatson Exp $ + * $FreeBSD$ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.42 2004/10/23 20:04:56 rwatson Exp */ ==== //depot/projects/trustedbsd/audit3/sys/compat/freebsd32/freebsd32_sysent.c#4 (text+ko) ==== @@ -2,12 +2,13 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.31 2004/10/23 20:05:42 rwatson Exp $ + * $FreeBSD$ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.42 2004/10/23 20:04:56 rwatson Exp */ #include "opt_compat.h" +#include #include #include #include @@ -25,458 +26,458 @@ /* The casts are bogus but will do for now. */ struct sysent freebsd32_sysent[] = { - { SYF_MPSAFE | 0, (sy_call_t *)nosys }, /* 0 = syscall */ - { SYF_MPSAFE | AS(sys_exit_args), (sy_call_t *)sys_exit }, /* 1 = exit */ - { SYF_MPSAFE | 0, (sy_call_t *)fork }, /* 2 = fork */ - { SYF_MPSAFE | AS(read_args), (sy_call_t *)read }, /* 3 = read */ - { SYF_MPSAFE | AS(write_args), (sy_call_t *)write }, /* 4 = write */ - { AS(open_args), (sy_call_t *)open }, /* 5 = open */ - { SYF_MPSAFE | AS(close_args), (sy_call_t *)close }, /* 6 = close */ - { SYF_MPSAFE | AS(freebsd32_wait4_args), (sy_call_t *)freebsd32_wait4 }, /* 7 = freebsd32_wait4 */ - { 0, (sy_call_t *)nosys }, /* 8 = obsolete old creat */ - { AS(link_args), (sy_call_t *)link }, /* 9 = link */ - { AS(unlink_args), (sy_call_t *)unlink }, /* 10 = unlink */ - { 0, (sy_call_t *)nosys }, /* 11 = obsolete execv */ - { AS(chdir_args), (sy_call_t *)chdir }, /* 12 = chdir */ - { AS(fchdir_args), (sy_call_t *)fchdir }, /* 13 = fchdir */ - { AS(mknod_args), (sy_call_t *)mknod }, /* 14 = mknod */ - { AS(chmod_args), (sy_call_t *)chmod }, /* 15 = chmod */ - { AS(chown_args), (sy_call_t *)chown }, /* 16 = chown */ - { SYF_MPSAFE | AS(obreak_args), (sy_call_t *)obreak }, /* 17 = break */ + { SYF_MPSAFE | 0, (sy_call_t *)nosys, AUE_NULL }, /* 0 = syscall */ + { SYF_MPSAFE | AS(sys_exit_args), (sy_call_t *)sys_exit, AUE_EXIT }, /* 1 = exit */ + { SYF_MPSAFE | 0, (sy_call_t *)fork, AUE_FORK }, /* 2 = fork */ + { SYF_MPSAFE | AS(read_args), (sy_call_t *)read, AUE_NULL }, /* 3 = read */ + { SYF_MPSAFE | AS(write_args), (sy_call_t *)write, AUE_NULL }, /* 4 = write */ + { AS(open_args), (sy_call_t *)open, AUE_OPEN }, /* 5 = open */ + { SYF_MPSAFE | AS(close_args), (sy_call_t *)close, AUE_CLOSE }, /* 6 = close */ + { SYF_MPSAFE | AS(freebsd32_wait4_args), (sy_call_t *)freebsd32_wait4, AUE_NULL }, /* 7 = freebsd32_wait4 */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 8 = obsolete old creat */ + { AS(link_args), (sy_call_t *)link, AUE_NULL }, /* 9 = link */ + { AS(unlink_args), (sy_call_t *)unlink, AUE_NULL }, /* 10 = unlink */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 11 = obsolete execv */ + { AS(chdir_args), (sy_call_t *)chdir, AUE_NULL }, /* 12 = chdir */ + { AS(fchdir_args), (sy_call_t *)fchdir, AUE_NULL }, /* 13 = fchdir */ + { AS(mknod_args), (sy_call_t *)mknod, AUE_NULL }, /* 14 = mknod */ + { AS(chmod_args), (sy_call_t *)chmod, AUE_NULL }, /* 15 = chmod */ + { AS(chown_args), (sy_call_t *)chown, AUE_NULL }, /* 16 = chown */ + { SYF_MPSAFE | AS(obreak_args), (sy_call_t *)obreak, AUE_NULL }, /* 17 = break */ { compat4(AS(freebsd4_freebsd32_getfsstat_args),freebsd32_getfsstat) }, /* 18 = old freebsd32_getfsstat */ - { 0, (sy_call_t *)nosys }, /* 19 = obsolete olseek */ - { SYF_MPSAFE | 0, (sy_call_t *)getpid }, /* 20 = getpid */ - { AS(mount_args), (sy_call_t *)mount }, /* 21 = mount */ - { AS(unmount_args), (sy_call_t *)unmount }, /* 22 = unmount */ - { SYF_MPSAFE | AS(setuid_args), (sy_call_t *)setuid }, /* 23 = setuid */ - { SYF_MPSAFE | 0, (sy_call_t *)getuid }, /* 24 = getuid */ - { SYF_MPSAFE | 0, (sy_call_t *)geteuid }, /* 25 = geteuid */ - { SYF_MPSAFE | AS(ptrace_args), (sy_call_t *)ptrace }, /* 26 = ptrace */ - { 0, (sy_call_t *)nosys }, /* 27 = recvmsg */ - { SYF_MPSAFE | AS(sendmsg_args), (sy_call_t *)sendmsg }, /* 28 = sendmsg */ - { SYF_MPSAFE | AS(recvfrom_args), (sy_call_t *)recvfrom }, /* 29 = recvfrom */ - { SYF_MPSAFE | AS(accept_args), (sy_call_t *)accept }, /* 30 = accept */ - { SYF_MPSAFE | AS(getpeername_args), (sy_call_t *)getpeername }, /* 31 = getpeername */ - { SYF_MPSAFE | AS(getsockname_args), (sy_call_t *)getsockname }, /* 32 = getsockname */ - { AS(access_args), (sy_call_t *)access }, /* 33 = access */ - { AS(chflags_args), (sy_call_t *)chflags }, /* 34 = chflags */ - { AS(fchflags_args), (sy_call_t *)fchflags }, /* 35 = fchflags */ - { 0, (sy_call_t *)sync }, /* 36 = sync */ - { SYF_MPSAFE | AS(kill_args), (sy_call_t *)kill }, /* 37 = kill */ - { 0, (sy_call_t *)nosys }, /* 38 = ostat */ - { SYF_MPSAFE | 0, (sy_call_t *)getppid }, /* 39 = getppid */ - { 0, (sy_call_t *)nosys }, /* 40 = olstat */ - { SYF_MPSAFE | AS(dup_args), (sy_call_t *)dup }, /* 41 = dup */ - { SYF_MPSAFE | 0, (sy_call_t *)pipe }, /* 42 = pipe */ - { SYF_MPSAFE | 0, (sy_call_t *)getegid }, /* 43 = getegid */ - { SYF_MPSAFE | AS(profil_args), (sy_call_t *)profil }, /* 44 = profil */ - { SYF_MPSAFE | AS(ktrace_args), (sy_call_t *)ktrace }, /* 45 = ktrace */ - { 0, (sy_call_t *)nosys }, /* 46 = osigaction */ - { SYF_MPSAFE | 0, (sy_call_t *)getgid }, /* 47 = getgid */ - { 0, (sy_call_t *)nosys }, /* 48 = osigprocmask */ - { SYF_MPSAFE | AS(getlogin_args), (sy_call_t *)getlogin }, /* 49 = getlogin */ - { SYF_MPSAFE | AS(setlogin_args), (sy_call_t *)setlogin }, /* 50 = setlogin */ - { SYF_MPSAFE | AS(acct_args), (sy_call_t *)acct }, /* 51 = acct */ - { 0, (sy_call_t *)nosys }, /* 52 = obsolete osigpending */ - { SYF_MPSAFE | AS(freebsd32_sigaltstack_args), (sy_call_t *)freebsd32_sigaltstack }, /* 53 = freebsd32_sigaltstack */ - { SYF_MPSAFE | AS(ioctl_args), (sy_call_t *)ioctl }, /* 54 = ioctl */ - { SYF_MPSAFE | AS(reboot_args), (sy_call_t *)reboot }, /* 55 = reboot */ - { AS(revoke_args), (sy_call_t *)revoke }, /* 56 = revoke */ - { AS(symlink_args), (sy_call_t *)symlink }, /* 57 = symlink */ - { AS(readlink_args), (sy_call_t *)readlink }, /* 58 = readlink */ - { AS(freebsd32_execve_args), (sy_call_t *)freebsd32_execve }, /* 59 = freebsd32_execve */ - { SYF_MPSAFE | AS(umask_args), (sy_call_t *)umask }, /* 60 = umask */ - { AS(chroot_args), (sy_call_t *)chroot }, /* 61 = chroot */ - { 0, (sy_call_t *)nosys }, /* 62 = obsolete ofstat */ - { 0, (sy_call_t *)nosys }, /* 63 = obsolete ogetkerninfo */ - { 0, (sy_call_t *)nosys }, /* 64 = obsolete ogetpagesize */ - { 0, (sy_call_t *)nosys }, /* 65 = obsolete omsync */ - { SYF_MPSAFE | 0, (sy_call_t *)vfork }, /* 66 = vfork */ - { 0, (sy_call_t *)nosys }, /* 67 = obsolete vread */ - { 0, (sy_call_t *)nosys }, /* 68 = obsolete vwrite */ - { SYF_MPSAFE | AS(sbrk_args), (sy_call_t *)sbrk }, /* 69 = sbrk */ - { SYF_MPSAFE | AS(sstk_args), (sy_call_t *)sstk }, /* 70 = sstk */ - { 0, (sy_call_t *)nosys }, /* 71 = obsolete ommap */ - { SYF_MPSAFE | AS(ovadvise_args), (sy_call_t *)ovadvise }, /* 72 = vadvise */ - { SYF_MPSAFE | AS(munmap_args), (sy_call_t *)munmap }, /* 73 = munmap */ - { SYF_MPSAFE | AS(mprotect_args), (sy_call_t *)mprotect }, /* 74 = mprotect */ - { SYF_MPSAFE | AS(madvise_args), (sy_call_t *)madvise }, /* 75 = madvise */ - { 0, (sy_call_t *)nosys }, /* 76 = obsolete vhangup */ - { 0, (sy_call_t *)nosys }, /* 77 = obsolete vlimit */ - { SYF_MPSAFE | AS(mincore_args), (sy_call_t *)mincore }, /* 78 = mincore */ - { SYF_MPSAFE | AS(getgroups_args), (sy_call_t *)getgroups }, /* 79 = getgroups */ - { SYF_MPSAFE | AS(setgroups_args), (sy_call_t *)setgroups }, /* 80 = setgroups */ - { SYF_MPSAFE | 0, (sy_call_t *)getpgrp }, /* 81 = getpgrp */ - { SYF_MPSAFE | AS(setpgid_args), (sy_call_t *)setpgid }, /* 82 = setpgid */ - { AS(freebsd32_setitimer_args), (sy_call_t *)freebsd32_setitimer }, /* 83 = freebsd32_setitimer */ - { 0, (sy_call_t *)nosys }, /* 84 = obsolete owait */ - { 0, (sy_call_t *)nosys }, /* 85 = obsolete oswapon */ - { AS(freebsd32_getitimer_args), (sy_call_t *)freebsd32_getitimer }, /* 86 = freebsd32_getitimer */ - { 0, (sy_call_t *)nosys }, /* 87 = obsolete ogethostname */ - { 0, (sy_call_t *)nosys }, /* 88 = obsolete osethostname */ - { SYF_MPSAFE | 0, (sy_call_t *)getdtablesize }, /* 89 = getdtablesize */ - { SYF_MPSAFE | AS(dup2_args), (sy_call_t *)dup2 }, /* 90 = dup2 */ - { 0, (sy_call_t *)nosys }, /* 91 = getdopt */ - { SYF_MPSAFE | AS(fcntl_args), (sy_call_t *)fcntl }, /* 92 = fcntl */ - { AS(freebsd32_select_args), (sy_call_t *)freebsd32_select }, /* 93 = freebsd32_select */ - { 0, (sy_call_t *)nosys }, /* 94 = setdopt */ - { AS(fsync_args), (sy_call_t *)fsync }, /* 95 = fsync */ - { SYF_MPSAFE | AS(setpriority_args), (sy_call_t *)setpriority }, /* 96 = setpriority */ - { SYF_MPSAFE | AS(socket_args), (sy_call_t *)socket }, /* 97 = socket */ - { SYF_MPSAFE | AS(connect_args), (sy_call_t *)connect }, /* 98 = connect */ - { 0, (sy_call_t *)nosys }, /* 99 = obsolete oaccept */ - { SYF_MPSAFE | AS(getpriority_args), (sy_call_t *)getpriority }, /* 100 = getpriority */ - { 0, (sy_call_t *)nosys }, /* 101 = obsolete osend */ - { 0, (sy_call_t *)nosys }, /* 102 = obsolete orecv */ - { 0, (sy_call_t *)nosys }, /* 103 = obsolete osigreturn */ - { SYF_MPSAFE | AS(bind_args), (sy_call_t *)bind }, /* 104 = bind */ - { SYF_MPSAFE | AS(setsockopt_args), (sy_call_t *)setsockopt }, /* 105 = setsockopt */ - { SYF_MPSAFE | AS(listen_args), (sy_call_t *)listen }, /* 106 = listen */ - { 0, (sy_call_t *)nosys }, /* 107 = obsolete vtimes */ - { 0, (sy_call_t *)nosys }, /* 108 = obsolete osigvec */ - { 0, (sy_call_t *)nosys }, /* 109 = obsolete osigblock */ - { 0, (sy_call_t *)nosys }, /* 110 = obsolete osigsetmask */ - { 0, (sy_call_t *)nosys }, /* 111 = obsolete osigsuspend */ - { 0, (sy_call_t *)nosys }, /* 112 = obsolete osigstack */ - { 0, (sy_call_t *)nosys }, /* 113 = obsolete orecvmsg */ - { 0, (sy_call_t *)nosys }, /* 114 = obsolete osendmsg */ - { 0, (sy_call_t *)nosys }, /* 115 = obsolete vtrace */ - { SYF_MPSAFE | AS(freebsd32_gettimeofday_args), (sy_call_t *)freebsd32_gettimeofday }, /* 116 = freebsd32_gettimeofday */ - { AS(freebsd32_getrusage_args), (sy_call_t *)freebsd32_getrusage }, /* 117 = freebsd32_getrusage */ - { SYF_MPSAFE | AS(getsockopt_args), (sy_call_t *)getsockopt }, /* 118 = getsockopt */ - { 0, (sy_call_t *)nosys }, /* 119 = resuba */ - { AS(freebsd32_readv_args), (sy_call_t *)freebsd32_readv }, /* 120 = freebsd32_readv */ - { AS(freebsd32_writev_args), (sy_call_t *)freebsd32_writev }, /* 121 = freebsd32_writev */ - { AS(freebsd32_settimeofday_args), (sy_call_t *)freebsd32_settimeofday }, /* 122 = freebsd32_settimeofday */ - { AS(fchown_args), (sy_call_t *)fchown }, /* 123 = fchown */ - { AS(fchmod_args), (sy_call_t *)fchmod }, /* 124 = fchmod */ - { 0, (sy_call_t *)nosys }, /* 125 = obsolete orecvfrom */ - { SYF_MPSAFE | AS(setreuid_args), (sy_call_t *)setreuid }, /* 126 = setreuid */ - { SYF_MPSAFE | AS(setregid_args), (sy_call_t *)setregid }, /* 127 = setregid */ - { AS(rename_args), (sy_call_t *)rename }, /* 128 = rename */ - { 0, (sy_call_t *)nosys }, /* 129 = obsolete otruncate */ - { 0, (sy_call_t *)nosys }, /* 130 = obsolete ftruncate */ - { SYF_MPSAFE | AS(flock_args), (sy_call_t *)flock }, /* 131 = flock */ - { AS(mkfifo_args), (sy_call_t *)mkfifo }, /* 132 = mkfifo */ - { SYF_MPSAFE | AS(sendto_args), (sy_call_t *)sendto }, /* 133 = sendto */ - { SYF_MPSAFE | AS(shutdown_args), (sy_call_t *)shutdown }, /* 134 = shutdown */ - { SYF_MPSAFE | AS(socketpair_args), (sy_call_t *)socketpair }, /* 135 = socketpair */ - { AS(mkdir_args), (sy_call_t *)mkdir }, /* 136 = mkdir */ - { AS(rmdir_args), (sy_call_t *)rmdir }, /* 137 = rmdir */ - { AS(freebsd32_utimes_args), (sy_call_t *)freebsd32_utimes }, /* 138 = freebsd32_utimes */ - { 0, (sy_call_t *)nosys }, /* 139 = obsolete 4.2 sigreturn */ - { AS(freebsd32_adjtime_args), (sy_call_t *)freebsd32_adjtime }, /* 140 = freebsd32_adjtime */ - { 0, (sy_call_t *)nosys }, /* 141 = obsolete ogetpeername */ - { 0, (sy_call_t *)nosys }, /* 142 = obsolete ogethostid */ - { 0, (sy_call_t *)nosys }, /* 143 = obsolete sethostid */ - { 0, (sy_call_t *)nosys }, /* 144 = obsolete getrlimit */ - { 0, (sy_call_t *)nosys }, /* 145 = obsolete setrlimit */ - { 0, (sy_call_t *)nosys }, /* 146 = obsolete killpg */ - { SYF_MPSAFE | 0, (sy_call_t *)setsid }, /* 147 = setsid */ - { AS(quotactl_args), (sy_call_t *)quotactl }, /* 148 = quotactl */ - { 0, (sy_call_t *)nosys }, /* 149 = obsolete oquota */ - { 0, (sy_call_t *)nosys }, /* 150 = obsolete ogetsockname */ - { 0, (sy_call_t *)nosys }, /* 151 = sem_lock */ - { 0, (sy_call_t *)nosys }, /* 152 = sem_wakeup */ - { 0, (sy_call_t *)nosys }, /* 153 = asyncdaemon */ - { 0, (sy_call_t *)nosys }, /* 154 = nosys */ - { 0, (sy_call_t *)nosys }, /* 155 = nfssvc */ - { 0, (sy_call_t *)nosys }, /* 156 = obsolete ogetdirentries */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 19 = obsolete olseek */ + { SYF_MPSAFE | 0, (sy_call_t *)getpid, AUE_NULL }, /* 20 = getpid */ + { AS(mount_args), (sy_call_t *)mount, AUE_NULL }, /* 21 = mount */ + { AS(unmount_args), (sy_call_t *)unmount, AUE_NULL }, /* 22 = unmount */ + { SYF_MPSAFE | AS(setuid_args), (sy_call_t *)setuid, AUE_NULL }, /* 23 = setuid */ + { SYF_MPSAFE | 0, (sy_call_t *)getuid, AUE_NULL }, /* 24 = getuid */ + { SYF_MPSAFE | 0, (sy_call_t *)geteuid, AUE_NULL }, /* 25 = geteuid */ + { SYF_MPSAFE | AS(ptrace_args), (sy_call_t *)ptrace, AUE_NULL }, /* 26 = ptrace */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 27 = recvmsg */ + { SYF_MPSAFE | AS(sendmsg_args), (sy_call_t *)sendmsg, AUE_NULL }, /* 28 = sendmsg */ + { SYF_MPSAFE | AS(recvfrom_args), (sy_call_t *)recvfrom, AUE_NULL }, /* 29 = recvfrom */ + { SYF_MPSAFE | AS(accept_args), (sy_call_t *)accept, AUE_NULL }, /* 30 = accept */ + { SYF_MPSAFE | AS(getpeername_args), (sy_call_t *)getpeername, AUE_NULL }, /* 31 = getpeername */ + { SYF_MPSAFE | AS(getsockname_args), (sy_call_t *)getsockname, AUE_NULL }, /* 32 = getsockname */ + { AS(access_args), (sy_call_t *)access, AUE_NULL }, /* 33 = access */ + { AS(chflags_args), (sy_call_t *)chflags, AUE_NULL }, /* 34 = chflags */ + { AS(fchflags_args), (sy_call_t *)fchflags, AUE_NULL }, /* 35 = fchflags */ + { 0, (sy_call_t *)sync, AUE_NULL }, /* 36 = sync */ + { SYF_MPSAFE | AS(kill_args), (sy_call_t *)kill, AUE_NULL }, /* 37 = kill */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 38 = ostat */ + { SYF_MPSAFE | 0, (sy_call_t *)getppid, AUE_NULL }, /* 39 = getppid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 40 = olstat */ + { SYF_MPSAFE | AS(dup_args), (sy_call_t *)dup, AUE_NULL }, /* 41 = dup */ + { SYF_MPSAFE | 0, (sy_call_t *)pipe, AUE_NULL }, /* 42 = pipe */ + { SYF_MPSAFE | 0, (sy_call_t *)getegid, AUE_NULL }, /* 43 = getegid */ + { SYF_MPSAFE | AS(profil_args), (sy_call_t *)profil, AUE_NULL }, /* 44 = profil */ + { SYF_MPSAFE | AS(ktrace_args), (sy_call_t *)ktrace, AUE_NULL }, /* 45 = ktrace */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 46 = osigaction */ + { SYF_MPSAFE | 0, (sy_call_t *)getgid, AUE_NULL }, /* 47 = getgid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 48 = osigprocmask */ + { SYF_MPSAFE | AS(getlogin_args), (sy_call_t *)getlogin, AUE_NULL }, /* 49 = getlogin */ + { SYF_MPSAFE | AS(setlogin_args), (sy_call_t *)setlogin, AUE_NULL }, /* 50 = setlogin */ + { SYF_MPSAFE | AS(acct_args), (sy_call_t *)acct, AUE_NULL }, /* 51 = acct */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 52 = obsolete osigpending */ + { SYF_MPSAFE | AS(freebsd32_sigaltstack_args), (sy_call_t *)freebsd32_sigaltstack, AUE_NULL }, /* 53 = freebsd32_sigaltstack */ + { SYF_MPSAFE | AS(ioctl_args), (sy_call_t *)ioctl, AUE_NULL }, /* 54 = ioctl */ + { SYF_MPSAFE | AS(reboot_args), (sy_call_t *)reboot, AUE_NULL }, /* 55 = reboot */ + { AS(revoke_args), (sy_call_t *)revoke, AUE_NULL }, /* 56 = revoke */ + { AS(symlink_args), (sy_call_t *)symlink, AUE_NULL }, /* 57 = symlink */ + { AS(readlink_args), (sy_call_t *)readlink, AUE_NULL }, /* 58 = readlink */ + { AS(freebsd32_execve_args), (sy_call_t *)freebsd32_execve, AUE_NULL }, /* 59 = freebsd32_execve */ + { SYF_MPSAFE | AS(umask_args), (sy_call_t *)umask, AUE_NULL }, /* 60 = umask */ + { AS(chroot_args), (sy_call_t *)chroot, AUE_NULL }, /* 61 = chroot */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 62 = obsolete ofstat */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 63 = obsolete ogetkerninfo */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 64 = obsolete ogetpagesize */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 65 = obsolete omsync */ + { SYF_MPSAFE | 0, (sy_call_t *)vfork, AUE_NULL }, /* 66 = vfork */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 67 = obsolete vread */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 68 = obsolete vwrite */ + { SYF_MPSAFE | AS(sbrk_args), (sy_call_t *)sbrk, AUE_NULL }, /* 69 = sbrk */ + { SYF_MPSAFE | AS(sstk_args), (sy_call_t *)sstk, AUE_NULL }, /* 70 = sstk */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 71 = obsolete ommap */ + { SYF_MPSAFE | AS(ovadvise_args), (sy_call_t *)ovadvise, AUE_NULL }, /* 72 = vadvise */ + { SYF_MPSAFE | AS(munmap_args), (sy_call_t *)munmap, AUE_NULL }, /* 73 = munmap */ + { SYF_MPSAFE | AS(mprotect_args), (sy_call_t *)mprotect, AUE_NULL }, /* 74 = mprotect */ + { SYF_MPSAFE | AS(madvise_args), (sy_call_t *)madvise, AUE_NULL }, /* 75 = madvise */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 76 = obsolete vhangup */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 77 = obsolete vlimit */ + { SYF_MPSAFE | AS(mincore_args), (sy_call_t *)mincore, AUE_NULL }, /* 78 = mincore */ + { SYF_MPSAFE | AS(getgroups_args), (sy_call_t *)getgroups, AUE_NULL }, /* 79 = getgroups */ + { SYF_MPSAFE | AS(setgroups_args), (sy_call_t *)setgroups, AUE_NULL }, /* 80 = setgroups */ + { SYF_MPSAFE | 0, (sy_call_t *)getpgrp, AUE_NULL }, /* 81 = getpgrp */ + { SYF_MPSAFE | AS(setpgid_args), (sy_call_t *)setpgid, AUE_NULL }, /* 82 = setpgid */ + { AS(freebsd32_setitimer_args), (sy_call_t *)freebsd32_setitimer, AUE_NULL }, /* 83 = freebsd32_setitimer */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 84 = obsolete owait */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 85 = obsolete oswapon */ + { AS(freebsd32_getitimer_args), (sy_call_t *)freebsd32_getitimer, AUE_NULL }, /* 86 = freebsd32_getitimer */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 87 = obsolete ogethostname */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 88 = obsolete osethostname */ + { SYF_MPSAFE | 0, (sy_call_t *)getdtablesize, AUE_NULL }, /* 89 = getdtablesize */ + { SYF_MPSAFE | AS(dup2_args), (sy_call_t *)dup2, AUE_NULL }, /* 90 = dup2 */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 91 = getdopt */ + { SYF_MPSAFE | AS(fcntl_args), (sy_call_t *)fcntl, AUE_NULL }, /* 92 = fcntl */ + { AS(freebsd32_select_args), (sy_call_t *)freebsd32_select, AUE_NULL }, /* 93 = freebsd32_select */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 94 = setdopt */ + { AS(fsync_args), (sy_call_t *)fsync, AUE_NULL }, /* 95 = fsync */ + { SYF_MPSAFE | AS(setpriority_args), (sy_call_t *)setpriority, AUE_NULL }, /* 96 = setpriority */ + { SYF_MPSAFE | AS(socket_args), (sy_call_t *)socket, AUE_NULL }, /* 97 = socket */ + { SYF_MPSAFE | AS(connect_args), (sy_call_t *)connect, AUE_NULL }, /* 98 = connect */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 99 = obsolete oaccept */ + { SYF_MPSAFE | AS(getpriority_args), (sy_call_t *)getpriority, AUE_NULL }, /* 100 = getpriority */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 101 = obsolete osend */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 102 = obsolete orecv */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 103 = obsolete osigreturn */ + { SYF_MPSAFE | AS(bind_args), (sy_call_t *)bind, AUE_NULL }, /* 104 = bind */ + { SYF_MPSAFE | AS(setsockopt_args), (sy_call_t *)setsockopt, AUE_NULL }, /* 105 = setsockopt */ + { SYF_MPSAFE | AS(listen_args), (sy_call_t *)listen, AUE_NULL }, /* 106 = listen */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 107 = obsolete vtimes */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 108 = obsolete osigvec */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 109 = obsolete osigblock */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 110 = obsolete osigsetmask */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 111 = obsolete osigsuspend */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 112 = obsolete osigstack */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 113 = obsolete orecvmsg */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 114 = obsolete osendmsg */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 115 = obsolete vtrace */ + { SYF_MPSAFE | AS(freebsd32_gettimeofday_args), (sy_call_t *)freebsd32_gettimeofday, AUE_NULL }, /* 116 = freebsd32_gettimeofday */ + { AS(freebsd32_getrusage_args), (sy_call_t *)freebsd32_getrusage, AUE_NULL }, /* 117 = freebsd32_getrusage */ + { SYF_MPSAFE | AS(getsockopt_args), (sy_call_t *)getsockopt, AUE_NULL }, /* 118 = getsockopt */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 119 = resuba */ + { AS(freebsd32_readv_args), (sy_call_t *)freebsd32_readv, AUE_NULL }, /* 120 = freebsd32_readv */ + { AS(freebsd32_writev_args), (sy_call_t *)freebsd32_writev, AUE_NULL }, /* 121 = freebsd32_writev */ + { AS(freebsd32_settimeofday_args), (sy_call_t *)freebsd32_settimeofday, AUE_NULL }, /* 122 = freebsd32_settimeofday */ + { AS(fchown_args), (sy_call_t *)fchown, AUE_NULL }, /* 123 = fchown */ + { AS(fchmod_args), (sy_call_t *)fchmod, AUE_NULL }, /* 124 = fchmod */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 125 = obsolete orecvfrom */ + { SYF_MPSAFE | AS(setreuid_args), (sy_call_t *)setreuid, AUE_NULL }, /* 126 = setreuid */ + { SYF_MPSAFE | AS(setregid_args), (sy_call_t *)setregid, AUE_NULL }, /* 127 = setregid */ + { AS(rename_args), (sy_call_t *)rename, AUE_NULL }, /* 128 = rename */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 129 = obsolete otruncate */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 130 = obsolete ftruncate */ + { SYF_MPSAFE | AS(flock_args), (sy_call_t *)flock, AUE_NULL }, /* 131 = flock */ + { AS(mkfifo_args), (sy_call_t *)mkfifo, AUE_NULL }, /* 132 = mkfifo */ + { SYF_MPSAFE | AS(sendto_args), (sy_call_t *)sendto, AUE_NULL }, /* 133 = sendto */ + { SYF_MPSAFE | AS(shutdown_args), (sy_call_t *)shutdown, AUE_NULL }, /* 134 = shutdown */ + { SYF_MPSAFE | AS(socketpair_args), (sy_call_t *)socketpair, AUE_NULL }, /* 135 = socketpair */ + { AS(mkdir_args), (sy_call_t *)mkdir, AUE_NULL }, /* 136 = mkdir */ + { AS(rmdir_args), (sy_call_t *)rmdir, AUE_NULL }, /* 137 = rmdir */ + { AS(freebsd32_utimes_args), (sy_call_t *)freebsd32_utimes, AUE_NULL }, /* 138 = freebsd32_utimes */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 139 = obsolete 4.2 sigreturn */ + { AS(freebsd32_adjtime_args), (sy_call_t *)freebsd32_adjtime, AUE_NULL }, /* 140 = freebsd32_adjtime */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 141 = obsolete ogetpeername */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 142 = obsolete ogethostid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 143 = obsolete sethostid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 144 = obsolete getrlimit */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 145 = obsolete setrlimit */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 146 = obsolete killpg */ + { SYF_MPSAFE | 0, (sy_call_t *)setsid, AUE_NULL }, /* 147 = setsid */ + { AS(quotactl_args), (sy_call_t *)quotactl, AUE_NULL }, /* 148 = quotactl */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 149 = obsolete oquota */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 150 = obsolete ogetsockname */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 151 = sem_lock */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 152 = sem_wakeup */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 153 = asyncdaemon */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 154 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 155 = nfssvc */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 156 = obsolete ogetdirentries */ { compat4(AS(freebsd4_freebsd32_statfs_args),freebsd32_statfs) }, /* 157 = old freebsd32_statfs */ { compat4(AS(freebsd4_freebsd32_fstatfs_args),freebsd32_fstatfs) }, /* 158 = old freebsd32_fstatfs */ - { 0, (sy_call_t *)nosys }, /* 159 = nosys */ - { 0, (sy_call_t *)nosys }, /* 160 = nosys */ - { AS(getfh_args), (sy_call_t *)getfh }, /* 161 = getfh */ - { SYF_MPSAFE | AS(getdomainname_args), (sy_call_t *)getdomainname }, /* 162 = getdomainname */ - { SYF_MPSAFE | AS(setdomainname_args), (sy_call_t *)setdomainname }, /* 163 = setdomainname */ - { SYF_MPSAFE | AS(uname_args), (sy_call_t *)uname }, /* 164 = uname */ - { SYF_MPSAFE | AS(sysarch_args), (sy_call_t *)sysarch }, /* 165 = sysarch */ - { SYF_MPSAFE | AS(rtprio_args), (sy_call_t *)rtprio }, /* 166 = rtprio */ - { 0, (sy_call_t *)nosys }, /* 167 = nosys */ - { 0, (sy_call_t *)nosys }, /* 168 = nosys */ - { AS(freebsd32_semsys_args), (sy_call_t *)freebsd32_semsys }, /* 169 = freebsd32_semsys */ - { AS(freebsd32_msgsys_args), (sy_call_t *)freebsd32_msgsys }, /* 170 = freebsd32_msgsys */ - { AS(freebsd32_shmsys_args), (sy_call_t *)freebsd32_shmsys }, /* 171 = freebsd32_shmsys */ - { 0, (sy_call_t *)nosys }, /* 172 = nosys */ - { AS(freebsd32_pread_args), (sy_call_t *)freebsd32_pread }, /* 173 = freebsd32_pread */ - { AS(freebsd32_pwrite_args), (sy_call_t *)freebsd32_pwrite }, /* 174 = freebsd32_pwrite */ - { 0, (sy_call_t *)nosys }, /* 175 = nosys */ - { SYF_MPSAFE | AS(ntp_adjtime_args), (sy_call_t *)ntp_adjtime }, /* 176 = ntp_adjtime */ - { 0, (sy_call_t *)nosys }, /* 177 = sfork */ - { 0, (sy_call_t *)nosys }, /* 178 = getdescriptor */ - { 0, (sy_call_t *)nosys }, /* 179 = setdescriptor */ - { 0, (sy_call_t *)nosys }, /* 180 = nosys */ - { SYF_MPSAFE | AS(setgid_args), (sy_call_t *)setgid }, /* 181 = setgid */ - { SYF_MPSAFE | AS(setegid_args), (sy_call_t *)setegid }, /* 182 = setegid */ - { SYF_MPSAFE | AS(seteuid_args), (sy_call_t *)seteuid }, /* 183 = seteuid */ - { 0, (sy_call_t *)nosys }, /* 184 = lfs_bmapv */ - { 0, (sy_call_t *)nosys }, /* 185 = lfs_markv */ - { 0, (sy_call_t *)nosys }, /* 186 = lfs_segclean */ - { 0, (sy_call_t *)nosys }, /* 187 = lfs_segwait */ - { AS(freebsd32_stat_args), (sy_call_t *)freebsd32_stat }, /* 188 = freebsd32_stat */ - { SYF_MPSAFE | AS(freebsd32_fstat_args), (sy_call_t *)freebsd32_fstat }, /* 189 = freebsd32_fstat */ - { AS(freebsd32_lstat_args), (sy_call_t *)freebsd32_lstat }, /* 190 = freebsd32_lstat */ - { AS(pathconf_args), (sy_call_t *)pathconf }, /* 191 = pathconf */ - { SYF_MPSAFE | AS(fpathconf_args), (sy_call_t *)fpathconf }, /* 192 = fpathconf */ - { 0, (sy_call_t *)nosys }, /* 193 = nosys */ - { SYF_MPSAFE | AS(__getrlimit_args), (sy_call_t *)getrlimit }, /* 194 = getrlimit */ - { SYF_MPSAFE | AS(__setrlimit_args), (sy_call_t *)setrlimit }, /* 195 = setrlimit */ - { AS(getdirentries_args), (sy_call_t *)getdirentries }, /* 196 = getdirentries */ - { AS(freebsd32_mmap_args), (sy_call_t *)freebsd32_mmap }, /* 197 = freebsd32_mmap */ - { 0, (sy_call_t *)nosys }, /* 198 = __syscall */ - { AS(freebsd32_lseek_args), (sy_call_t *)freebsd32_lseek }, /* 199 = freebsd32_lseek */ - { AS(freebsd32_truncate_args), (sy_call_t *)freebsd32_truncate }, /* 200 = freebsd32_truncate */ - { AS(freebsd32_ftruncate_args), (sy_call_t *)freebsd32_ftruncate }, /* 201 = freebsd32_ftruncate */ - { SYF_MPSAFE | AS(freebsd32_sysctl_args), (sy_call_t *)freebsd32_sysctl }, /* 202 = freebsd32_sysctl */ - { SYF_MPSAFE | AS(mlock_args), (sy_call_t *)mlock }, /* 203 = mlock */ - { SYF_MPSAFE | AS(munlock_args), (sy_call_t *)munlock }, /* 204 = munlock */ - { AS(undelete_args), (sy_call_t *)undelete }, /* 205 = undelete */ - { AS(futimes_args), (sy_call_t *)futimes }, /* 206 = futimes */ - { SYF_MPSAFE | AS(getpgid_args), (sy_call_t *)getpgid }, /* 207 = getpgid */ - { 0, (sy_call_t *)nosys }, /* 208 = newreboot */ - { SYF_MPSAFE | AS(poll_args), (sy_call_t *)poll }, /* 209 = poll */ - { 0, (sy_call_t *)nosys }, /* 210 = */ - { 0, (sy_call_t *)nosys }, /* 211 = */ - { 0, (sy_call_t *)nosys }, /* 212 = */ - { 0, (sy_call_t *)nosys }, /* 213 = */ - { 0, (sy_call_t *)nosys }, /* 214 = */ - { 0, (sy_call_t *)nosys }, /* 215 = */ - { 0, (sy_call_t *)nosys }, /* 216 = */ - { 0, (sy_call_t *)nosys }, /* 217 = */ - { 0, (sy_call_t *)nosys }, /* 218 = */ - { 0, (sy_call_t *)nosys }, /* 219 = */ - { SYF_MPSAFE | AS(__semctl_args), (sy_call_t *)__semctl }, /* 220 = __semctl */ - { SYF_MPSAFE | AS(semget_args), (sy_call_t *)semget }, /* 221 = semget */ - { SYF_MPSAFE | AS(semop_args), (sy_call_t *)semop }, /* 222 = semop */ - { 0, (sy_call_t *)nosys }, /* 223 = semconfig */ - { SYF_MPSAFE | AS(msgctl_args), (sy_call_t *)msgctl }, /* 224 = msgctl */ - { SYF_MPSAFE | AS(msgget_args), (sy_call_t *)msgget }, /* 225 = msgget */ - { SYF_MPSAFE | AS(msgsnd_args), (sy_call_t *)msgsnd }, /* 226 = msgsnd */ - { SYF_MPSAFE | AS(msgrcv_args), (sy_call_t *)msgrcv }, /* 227 = msgrcv */ - { SYF_MPSAFE | AS(shmat_args), (sy_call_t *)shmat }, /* 228 = shmat */ - { SYF_MPSAFE | AS(shmctl_args), (sy_call_t *)shmctl }, /* 229 = shmctl */ - { SYF_MPSAFE | AS(shmdt_args), (sy_call_t *)shmdt }, /* 230 = shmdt */ - { SYF_MPSAFE | AS(shmget_args), (sy_call_t *)shmget }, /* 231 = shmget */ - { SYF_MPSAFE | AS(clock_gettime_args), (sy_call_t *)clock_gettime }, /* 232 = clock_gettime */ - { SYF_MPSAFE | AS(clock_settime_args), (sy_call_t *)clock_settime }, /* 233 = clock_settime */ - { SYF_MPSAFE | AS(clock_getres_args), (sy_call_t *)clock_getres }, /* 234 = clock_getres */ - { 0, (sy_call_t *)nosys }, /* 235 = timer_create */ - { 0, (sy_call_t *)nosys }, /* 236 = timer_delete */ - { 0, (sy_call_t *)nosys }, /* 237 = timer_settime */ - { 0, (sy_call_t *)nosys }, /* 238 = timer_gettime */ - { 0, (sy_call_t *)nosys }, /* 239 = timer_getoverrun */ - { SYF_MPSAFE | AS(nanosleep_args), (sy_call_t *)nanosleep }, /* 240 = nanosleep */ - { 0, (sy_call_t *)nosys }, /* 241 = nosys */ - { 0, (sy_call_t *)nosys }, /* 242 = nosys */ - { 0, (sy_call_t *)nosys }, /* 243 = nosys */ - { 0, (sy_call_t *)nosys }, /* 244 = nosys */ - { 0, (sy_call_t *)nosys }, /* 245 = nosys */ - { 0, (sy_call_t *)nosys }, /* 246 = nosys */ - { 0, (sy_call_t *)nosys }, /* 247 = nosys */ - { 0, (sy_call_t *)nosys }, /* 248 = nosys */ - { 0, (sy_call_t *)nosys }, /* 249 = nosys */ - { SYF_MPSAFE | AS(minherit_args), (sy_call_t *)minherit }, /* 250 = minherit */ - { SYF_MPSAFE | AS(rfork_args), (sy_call_t *)rfork }, /* 251 = rfork */ - { SYF_MPSAFE | AS(openbsd_poll_args), (sy_call_t *)openbsd_poll }, /* 252 = openbsd_poll */ - { SYF_MPSAFE | 0, (sy_call_t *)issetugid }, /* 253 = issetugid */ - { AS(lchown_args), (sy_call_t *)lchown }, /* 254 = lchown */ - { 0, (sy_call_t *)nosys }, /* 255 = nosys */ - { 0, (sy_call_t *)nosys }, /* 256 = nosys */ - { 0, (sy_call_t *)nosys }, /* 257 = nosys */ - { 0, (sy_call_t *)nosys }, /* 258 = nosys */ - { 0, (sy_call_t *)nosys }, /* 259 = nosys */ - { 0, (sy_call_t *)nosys }, /* 260 = nosys */ - { 0, (sy_call_t *)nosys }, /* 261 = nosys */ - { 0, (sy_call_t *)nosys }, /* 262 = nosys */ - { 0, (sy_call_t *)nosys }, /* 263 = nosys */ - { 0, (sy_call_t *)nosys }, /* 264 = nosys */ - { 0, (sy_call_t *)nosys }, /* 265 = nosys */ - { 0, (sy_call_t *)nosys }, /* 266 = nosys */ - { 0, (sy_call_t *)nosys }, /* 267 = nosys */ - { 0, (sy_call_t *)nosys }, /* 268 = nosys */ - { 0, (sy_call_t *)nosys }, /* 269 = nosys */ - { 0, (sy_call_t *)nosys }, /* 270 = nosys */ - { 0, (sy_call_t *)nosys }, /* 271 = nosys */ - { AS(getdents_args), (sy_call_t *)getdents }, /* 272 = getdents */ - { 0, (sy_call_t *)nosys }, /* 273 = nosys */ - { AS(lchmod_args), (sy_call_t *)lchmod }, /* 274 = lchmod */ - { AS(lchown_args), (sy_call_t *)lchown }, /* 275 = netbsd_lchown */ - { AS(lutimes_args), (sy_call_t *)lutimes }, /* 276 = lutimes */ - { SYF_MPSAFE | AS(msync_args), (sy_call_t *)msync }, /* 277 = netbsd_msync */ - { AS(nstat_args), (sy_call_t *)nstat }, /* 278 = nstat */ - { SYF_MPSAFE | AS(nfstat_args), (sy_call_t *)nfstat }, /* 279 = nfstat */ - { AS(nlstat_args), (sy_call_t *)nlstat }, /* 280 = nlstat */ - { 0, (sy_call_t *)nosys }, /* 281 = nosys */ - { 0, (sy_call_t *)nosys }, /* 282 = nosys */ - { 0, (sy_call_t *)nosys }, /* 283 = nosys */ - { 0, (sy_call_t *)nosys }, /* 284 = nosys */ - { 0, (sy_call_t *)nosys }, /* 285 = nosys */ - { 0, (sy_call_t *)nosys }, /* 286 = nosys */ - { 0, (sy_call_t *)nosys }, /* 287 = nosys */ - { 0, (sy_call_t *)nosys }, /* 288 = nosys */ - { 0, (sy_call_t *)nosys }, /* 289 = nosys */ - { 0, (sy_call_t *)nosys }, /* 290 = nosys */ - { 0, (sy_call_t *)nosys }, /* 291 = nosys */ - { 0, (sy_call_t *)nosys }, /* 292 = nosys */ - { 0, (sy_call_t *)nosys }, /* 293 = nosys */ - { 0, (sy_call_t *)nosys }, /* 294 = nosys */ - { 0, (sy_call_t *)nosys }, /* 295 = nosys */ - { 0, (sy_call_t *)nosys }, /* 296 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 159 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 160 = nosys */ + { AS(getfh_args), (sy_call_t *)getfh, AUE_NULL }, /* 161 = getfh */ + { SYF_MPSAFE | AS(getdomainname_args), (sy_call_t *)getdomainname, AUE_NULL }, /* 162 = getdomainname */ + { SYF_MPSAFE | AS(setdomainname_args), (sy_call_t *)setdomainname, AUE_NULL }, /* 163 = setdomainname */ + { SYF_MPSAFE | AS(uname_args), (sy_call_t *)uname, AUE_NULL }, /* 164 = uname */ + { SYF_MPSAFE | AS(sysarch_args), (sy_call_t *)sysarch, AUE_NULL }, /* 165 = sysarch */ + { SYF_MPSAFE | AS(rtprio_args), (sy_call_t *)rtprio, AUE_NULL }, /* 166 = rtprio */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 167 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 168 = nosys */ + { AS(freebsd32_semsys_args), (sy_call_t *)freebsd32_semsys, AUE_NULL }, /* 169 = freebsd32_semsys */ + { AS(freebsd32_msgsys_args), (sy_call_t *)freebsd32_msgsys, AUE_NULL }, /* 170 = freebsd32_msgsys */ + { AS(freebsd32_shmsys_args), (sy_call_t *)freebsd32_shmsys, AUE_NULL }, /* 171 = freebsd32_shmsys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 172 = nosys */ + { AS(freebsd32_pread_args), (sy_call_t *)freebsd32_pread, AUE_NULL }, /* 173 = freebsd32_pread */ + { AS(freebsd32_pwrite_args), (sy_call_t *)freebsd32_pwrite, AUE_NULL }, /* 174 = freebsd32_pwrite */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 175 = nosys */ + { SYF_MPSAFE | AS(ntp_adjtime_args), (sy_call_t *)ntp_adjtime, AUE_NULL }, /* 176 = ntp_adjtime */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 177 = sfork */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 178 = getdescriptor */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 179 = setdescriptor */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 180 = nosys */ + { SYF_MPSAFE | AS(setgid_args), (sy_call_t *)setgid, AUE_NULL }, /* 181 = setgid */ + { SYF_MPSAFE | AS(setegid_args), (sy_call_t *)setegid, AUE_NULL }, /* 182 = setegid */ + { SYF_MPSAFE | AS(seteuid_args), (sy_call_t *)seteuid, AUE_NULL }, /* 183 = seteuid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 184 = lfs_bmapv */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 185 = lfs_markv */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 186 = lfs_segclean */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 187 = lfs_segwait */ + { AS(freebsd32_stat_args), (sy_call_t *)freebsd32_stat, AUE_NULL }, /* 188 = freebsd32_stat */ + { SYF_MPSAFE | AS(freebsd32_fstat_args), (sy_call_t *)freebsd32_fstat, AUE_NULL }, /* 189 = freebsd32_fstat */ + { AS(freebsd32_lstat_args), (sy_call_t *)freebsd32_lstat, AUE_NULL }, /* 190 = freebsd32_lstat */ + { AS(pathconf_args), (sy_call_t *)pathconf, AUE_NULL }, /* 191 = pathconf */ + { SYF_MPSAFE | AS(fpathconf_args), (sy_call_t *)fpathconf, AUE_NULL }, /* 192 = fpathconf */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 193 = nosys */ + { SYF_MPSAFE | AS(__getrlimit_args), (sy_call_t *)getrlimit, AUE_NULL }, /* 194 = getrlimit */ + { SYF_MPSAFE | AS(__setrlimit_args), (sy_call_t *)setrlimit, AUE_NULL }, /* 195 = setrlimit */ + { AS(getdirentries_args), (sy_call_t *)getdirentries, AUE_NULL }, /* 196 = getdirentries */ + { AS(freebsd32_mmap_args), (sy_call_t *)freebsd32_mmap, AUE_NULL }, /* 197 = freebsd32_mmap */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 198 = __syscall */ + { AS(freebsd32_lseek_args), (sy_call_t *)freebsd32_lseek, AUE_NULL }, /* 199 = freebsd32_lseek */ + { AS(freebsd32_truncate_args), (sy_call_t *)freebsd32_truncate, AUE_NULL }, /* 200 = freebsd32_truncate */ + { AS(freebsd32_ftruncate_args), (sy_call_t *)freebsd32_ftruncate, AUE_NULL }, /* 201 = freebsd32_ftruncate */ + { SYF_MPSAFE | AS(freebsd32_sysctl_args), (sy_call_t *)freebsd32_sysctl, AUE_NULL }, /* 202 = freebsd32_sysctl */ + { SYF_MPSAFE | AS(mlock_args), (sy_call_t *)mlock, AUE_NULL }, /* 203 = mlock */ + { SYF_MPSAFE | AS(munlock_args), (sy_call_t *)munlock, AUE_NULL }, /* 204 = munlock */ + { AS(undelete_args), (sy_call_t *)undelete, AUE_NULL }, /* 205 = undelete */ + { AS(futimes_args), (sy_call_t *)futimes, AUE_NULL }, /* 206 = futimes */ + { SYF_MPSAFE | AS(getpgid_args), (sy_call_t *)getpgid, AUE_NULL }, /* 207 = getpgid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 208 = newreboot */ + { SYF_MPSAFE | AS(poll_args), (sy_call_t *)poll, AUE_NULL }, /* 209 = poll */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 210 = */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 211 = */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 212 = */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 213 = */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 214 = */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 215 = */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 216 = */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 217 = */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 218 = */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 219 = */ + { SYF_MPSAFE | AS(__semctl_args), (sy_call_t *)__semctl, AUE_NULL }, /* 220 = __semctl */ + { SYF_MPSAFE | AS(semget_args), (sy_call_t *)semget, AUE_NULL }, /* 221 = semget */ + { SYF_MPSAFE | AS(semop_args), (sy_call_t *)semop, AUE_NULL }, /* 222 = semop */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 223 = semconfig */ + { SYF_MPSAFE | AS(msgctl_args), (sy_call_t *)msgctl, AUE_NULL }, /* 224 = msgctl */ + { SYF_MPSAFE | AS(msgget_args), (sy_call_t *)msgget, AUE_NULL }, /* 225 = msgget */ + { SYF_MPSAFE | AS(msgsnd_args), (sy_call_t *)msgsnd, AUE_NULL }, /* 226 = msgsnd */ + { SYF_MPSAFE | AS(msgrcv_args), (sy_call_t *)msgrcv, AUE_NULL }, /* 227 = msgrcv */ + { SYF_MPSAFE | AS(shmat_args), (sy_call_t *)shmat, AUE_NULL }, /* 228 = shmat */ + { SYF_MPSAFE | AS(shmctl_args), (sy_call_t *)shmctl, AUE_NULL }, /* 229 = shmctl */ + { SYF_MPSAFE | AS(shmdt_args), (sy_call_t *)shmdt, AUE_NULL }, /* 230 = shmdt */ + { SYF_MPSAFE | AS(shmget_args), (sy_call_t *)shmget, AUE_NULL }, /* 231 = shmget */ + { SYF_MPSAFE | AS(clock_gettime_args), (sy_call_t *)clock_gettime, AUE_NULL }, /* 232 = clock_gettime */ + { SYF_MPSAFE | AS(clock_settime_args), (sy_call_t *)clock_settime, AUE_NULL }, /* 233 = clock_settime */ + { SYF_MPSAFE | AS(clock_getres_args), (sy_call_t *)clock_getres, AUE_NULL }, /* 234 = clock_getres */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 235 = timer_create */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 236 = timer_delete */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 237 = timer_settime */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 238 = timer_gettime */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 239 = timer_getoverrun */ + { SYF_MPSAFE | AS(nanosleep_args), (sy_call_t *)nanosleep, AUE_NULL }, /* 240 = nanosleep */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 241 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 242 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 243 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 244 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 245 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 246 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 247 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 248 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 249 = nosys */ + { SYF_MPSAFE | AS(minherit_args), (sy_call_t *)minherit, AUE_NULL }, /* 250 = minherit */ + { SYF_MPSAFE | AS(rfork_args), (sy_call_t *)rfork, AUE_NULL }, /* 251 = rfork */ + { SYF_MPSAFE | AS(openbsd_poll_args), (sy_call_t *)openbsd_poll, AUE_NULL }, /* 252 = openbsd_poll */ + { SYF_MPSAFE | 0, (sy_call_t *)issetugid, AUE_NULL }, /* 253 = issetugid */ + { AS(lchown_args), (sy_call_t *)lchown, AUE_NULL }, /* 254 = lchown */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 255 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 256 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 257 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 258 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 259 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 260 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 261 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 262 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 263 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 264 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 265 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 266 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 267 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 268 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 269 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 270 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 271 = nosys */ + { AS(getdents_args), (sy_call_t *)getdents, AUE_NULL }, /* 272 = getdents */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 273 = nosys */ + { AS(lchmod_args), (sy_call_t *)lchmod, AUE_NULL }, /* 274 = lchmod */ + { AS(lchown_args), (sy_call_t *)lchown, AUE_NULL }, /* 275 = netbsd_lchown */ + { AS(lutimes_args), (sy_call_t *)lutimes, AUE_NULL }, /* 276 = lutimes */ + { SYF_MPSAFE | AS(msync_args), (sy_call_t *)msync, AUE_NULL }, /* 277 = netbsd_msync */ + { AS(nstat_args), (sy_call_t *)nstat, AUE_NULL }, /* 278 = nstat */ + { SYF_MPSAFE | AS(nfstat_args), (sy_call_t *)nfstat, AUE_NULL }, /* 279 = nfstat */ + { AS(nlstat_args), (sy_call_t *)nlstat, AUE_NULL }, /* 280 = nlstat */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 281 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 282 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 283 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 284 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 285 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 286 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 287 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 288 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 289 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 290 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 291 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 292 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 293 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 294 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 295 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 296 = nosys */ { compat4(AS(freebsd4_freebsd32_fhstatfs_args),freebsd32_fhstatfs) }, /* 297 = old freebsd32_fhstatfs */ - { AS(fhopen_args), (sy_call_t *)fhopen }, /* 298 = fhopen */ - { AS(fhstat_args), (sy_call_t *)fhstat }, /* 299 = fhstat */ - { SYF_MPSAFE | AS(modnext_args), (sy_call_t *)modnext }, /* 300 = modnext */ - { SYF_MPSAFE | AS(modstat_args), (sy_call_t *)modstat }, /* 301 = modstat */ - { SYF_MPSAFE | AS(modfnext_args), (sy_call_t *)modfnext }, /* 302 = modfnext */ - { SYF_MPSAFE | AS(modfind_args), (sy_call_t *)modfind }, /* 303 = modfind */ - { SYF_MPSAFE | AS(kldload_args), (sy_call_t *)kldload }, /* 304 = kldload */ - { SYF_MPSAFE | AS(kldunload_args), (sy_call_t *)kldunload }, /* 305 = kldunload */ - { SYF_MPSAFE | AS(kldfind_args), (sy_call_t *)kldfind }, /* 306 = kldfind */ - { SYF_MPSAFE | AS(kldnext_args), (sy_call_t *)kldnext }, /* 307 = kldnext */ - { SYF_MPSAFE | AS(kldstat_args), (sy_call_t *)kldstat }, /* 308 = kldstat */ - { SYF_MPSAFE | AS(kldfirstmod_args), (sy_call_t *)kldfirstmod }, /* 309 = kldfirstmod */ - { SYF_MPSAFE | AS(getsid_args), (sy_call_t *)getsid }, /* 310 = getsid */ - { SYF_MPSAFE | AS(setresuid_args), (sy_call_t *)setresuid }, /* 311 = setresuid */ - { SYF_MPSAFE | AS(setresgid_args), (sy_call_t *)setresgid }, /* 312 = setresgid */ - { 0, (sy_call_t *)nosys }, /* 313 = obsolete signanosleep */ - { 0, (sy_call_t *)nosys }, /* 314 = aio_return */ - { 0, (sy_call_t *)nosys }, /* 315 = aio_suspend */ - { 0, (sy_call_t *)nosys }, /* 316 = aio_cancel */ - { 0, (sy_call_t *)nosys }, /* 317 = aio_error */ - { 0, (sy_call_t *)nosys }, /* 318 = aio_read */ - { 0, (sy_call_t *)nosys }, /* 319 = aio_write */ - { 0, (sy_call_t *)nosys }, /* 320 = lio_listio */ - { SYF_MPSAFE | 0, (sy_call_t *)yield }, /* 321 = yield */ - { 0, (sy_call_t *)nosys }, /* 322 = obsolete thr_sleep */ - { 0, (sy_call_t *)nosys }, /* 323 = obsolete thr_wakeup */ - { SYF_MPSAFE | AS(mlockall_args), (sy_call_t *)mlockall }, /* 324 = mlockall */ - { SYF_MPSAFE | 0, (sy_call_t *)munlockall }, /* 325 = munlockall */ - { AS(__getcwd_args), (sy_call_t *)__getcwd }, /* 326 = __getcwd */ - { SYF_MPSAFE | AS(sched_setparam_args), (sy_call_t *)sched_setparam }, /* 327 = sched_setparam */ - { SYF_MPSAFE | AS(sched_getparam_args), (sy_call_t *)sched_getparam }, /* 328 = sched_getparam */ - { SYF_MPSAFE | AS(sched_setscheduler_args), (sy_call_t *)sched_setscheduler }, /* 329 = sched_setscheduler */ - { SYF_MPSAFE | AS(sched_getscheduler_args), (sy_call_t *)sched_getscheduler }, /* 330 = sched_getscheduler */ - { SYF_MPSAFE | 0, (sy_call_t *)sched_yield }, /* 331 = sched_yield */ - { SYF_MPSAFE | AS(sched_get_priority_max_args), (sy_call_t *)sched_get_priority_max }, /* 332 = sched_get_priority_max */ - { SYF_MPSAFE | AS(sched_get_priority_min_args), (sy_call_t *)sched_get_priority_min }, /* 333 = sched_get_priority_min */ - { SYF_MPSAFE | AS(sched_rr_get_interval_args), (sy_call_t *)sched_rr_get_interval }, /* 334 = sched_rr_get_interval */ - { SYF_MPSAFE | AS(utrace_args), (sy_call_t *)utrace }, /* 335 = utrace */ + { AS(fhopen_args), (sy_call_t *)fhopen, AUE_NULL }, /* 298 = fhopen */ + { AS(fhstat_args), (sy_call_t *)fhstat, AUE_NULL }, /* 299 = fhstat */ + { SYF_MPSAFE | AS(modnext_args), (sy_call_t *)modnext, AUE_NULL }, /* 300 = modnext */ + { SYF_MPSAFE | AS(modstat_args), (sy_call_t *)modstat, AUE_NULL }, /* 301 = modstat */ + { SYF_MPSAFE | AS(modfnext_args), (sy_call_t *)modfnext, AUE_NULL }, /* 302 = modfnext */ + { SYF_MPSAFE | AS(modfind_args), (sy_call_t *)modfind, AUE_NULL }, /* 303 = modfind */ + { SYF_MPSAFE | AS(kldload_args), (sy_call_t *)kldload, AUE_NULL }, /* 304 = kldload */ + { SYF_MPSAFE | AS(kldunload_args), (sy_call_t *)kldunload, AUE_NULL }, /* 305 = kldunload */ + { SYF_MPSAFE | AS(kldfind_args), (sy_call_t *)kldfind, AUE_NULL }, /* 306 = kldfind */ + { SYF_MPSAFE | AS(kldnext_args), (sy_call_t *)kldnext, AUE_NULL }, /* 307 = kldnext */ + { SYF_MPSAFE | AS(kldstat_args), (sy_call_t *)kldstat, AUE_NULL }, /* 308 = kldstat */ + { SYF_MPSAFE | AS(kldfirstmod_args), (sy_call_t *)kldfirstmod, AUE_NULL }, /* 309 = kldfirstmod */ + { SYF_MPSAFE | AS(getsid_args), (sy_call_t *)getsid, AUE_NULL }, /* 310 = getsid */ + { SYF_MPSAFE | AS(setresuid_args), (sy_call_t *)setresuid, AUE_NULL }, /* 311 = setresuid */ + { SYF_MPSAFE | AS(setresgid_args), (sy_call_t *)setresgid, AUE_NULL }, /* 312 = setresgid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 313 = obsolete signanosleep */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 314 = aio_return */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 315 = aio_suspend */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 316 = aio_cancel */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 317 = aio_error */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 318 = aio_read */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 319 = aio_write */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 320 = lio_listio */ + { SYF_MPSAFE | 0, (sy_call_t *)yield, AUE_NULL }, /* 321 = yield */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 322 = obsolete thr_sleep */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 323 = obsolete thr_wakeup */ + { SYF_MPSAFE | AS(mlockall_args), (sy_call_t *)mlockall, AUE_NULL }, /* 324 = mlockall */ + { SYF_MPSAFE | 0, (sy_call_t *)munlockall, AUE_NULL }, /* 325 = munlockall */ + { AS(__getcwd_args), (sy_call_t *)__getcwd, AUE_NULL }, /* 326 = __getcwd */ + { SYF_MPSAFE | AS(sched_setparam_args), (sy_call_t *)sched_setparam, AUE_NULL }, /* 327 = sched_setparam */ + { SYF_MPSAFE | AS(sched_getparam_args), (sy_call_t *)sched_getparam, AUE_NULL }, /* 328 = sched_getparam */ + { SYF_MPSAFE | AS(sched_setscheduler_args), (sy_call_t *)sched_setscheduler, AUE_NULL }, /* 329 = sched_setscheduler */ + { SYF_MPSAFE | AS(sched_getscheduler_args), (sy_call_t *)sched_getscheduler, AUE_NULL }, /* 330 = sched_getscheduler */ + { SYF_MPSAFE | 0, (sy_call_t *)sched_yield, AUE_NULL }, /* 331 = sched_yield */ + { SYF_MPSAFE | AS(sched_get_priority_max_args), (sy_call_t *)sched_get_priority_max, AUE_NULL }, /* 332 = sched_get_priority_max */ + { SYF_MPSAFE | AS(sched_get_priority_min_args), (sy_call_t *)sched_get_priority_min, AUE_NULL }, /* 333 = sched_get_priority_min */ + { SYF_MPSAFE | AS(sched_rr_get_interval_args), (sy_call_t *)sched_rr_get_interval, AUE_NULL }, /* 334 = sched_rr_get_interval */ + { SYF_MPSAFE | AS(utrace_args), (sy_call_t *)utrace, AUE_NULL }, /* 335 = utrace */ { compat4(SYF_MPSAFE | AS(freebsd4_freebsd32_sendfile_args),freebsd32_sendfile) }, /* 336 = old freebsd32_sendfile */ - { AS(kldsym_args), (sy_call_t *)kldsym }, /* 337 = kldsym */ - { SYF_MPSAFE | AS(jail_args), (sy_call_t *)jail }, /* 338 = jail */ - { 0, (sy_call_t *)nosys }, /* 339 = pioctl */ - { SYF_MPSAFE | AS(sigprocmask_args), (sy_call_t *)sigprocmask }, /* 340 = sigprocmask */ - { SYF_MPSAFE | AS(sigsuspend_args), (sy_call_t *)sigsuspend }, /* 341 = sigsuspend */ + { AS(kldsym_args), (sy_call_t *)kldsym, AUE_NULL }, /* 337 = kldsym */ + { SYF_MPSAFE | AS(jail_args), (sy_call_t *)jail, AUE_NULL }, /* 338 = jail */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 339 = pioctl */ + { SYF_MPSAFE | AS(sigprocmask_args), (sy_call_t *)sigprocmask, AUE_NULL }, /* 340 = sigprocmask */ + { SYF_MPSAFE | AS(sigsuspend_args), (sy_call_t *)sigsuspend, AUE_NULL }, /* 341 = sigsuspend */ { compat4(SYF_MPSAFE | AS(freebsd4_freebsd32_sigaction_args),freebsd32_sigaction) }, /* 342 = old freebsd32_sigaction */ - { SYF_MPSAFE | AS(sigpending_args), (sy_call_t *)sigpending }, /* 343 = sigpending */ + { SYF_MPSAFE | AS(sigpending_args), (sy_call_t *)sigpending, AUE_NULL }, /* 343 = sigpending */ { compat4(SYF_MPSAFE | AS(freebsd4_freebsd32_sigreturn_args),freebsd32_sigreturn) }, /* 344 = old freebsd32_sigreturn */ - { 0, (sy_call_t *)nosys }, /* 345 = sigtimedwait */ - { 0, (sy_call_t *)nosys }, /* 346 = sigwaitinfo */ - { SYF_MPSAFE | AS(__acl_get_file_args), (sy_call_t *)__acl_get_file }, /* 347 = __acl_get_file */ - { SYF_MPSAFE | AS(__acl_set_file_args), (sy_call_t *)__acl_set_file }, /* 348 = __acl_set_file */ - { SYF_MPSAFE | AS(__acl_get_fd_args), (sy_call_t *)__acl_get_fd }, /* 349 = __acl_get_fd */ - { SYF_MPSAFE | AS(__acl_set_fd_args), (sy_call_t *)__acl_set_fd }, /* 350 = __acl_set_fd */ - { SYF_MPSAFE | AS(__acl_delete_file_args), (sy_call_t *)__acl_delete_file }, /* 351 = __acl_delete_file */ - { SYF_MPSAFE | AS(__acl_delete_fd_args), (sy_call_t *)__acl_delete_fd }, /* 352 = __acl_delete_fd */ - { SYF_MPSAFE | AS(__acl_aclcheck_file_args), (sy_call_t *)__acl_aclcheck_file }, /* 353 = __acl_aclcheck_file */ - { SYF_MPSAFE | AS(__acl_aclcheck_fd_args), (sy_call_t *)__acl_aclcheck_fd }, /* 354 = __acl_aclcheck_fd */ - { AS(extattrctl_args), (sy_call_t *)extattrctl }, /* 355 = extattrctl */ - { AS(extattr_set_file_args), (sy_call_t *)extattr_set_file }, /* 356 = extattr_set_file */ - { AS(extattr_get_file_args), (sy_call_t *)extattr_get_file }, /* 357 = extattr_get_file */ - { AS(extattr_delete_file_args), (sy_call_t *)extattr_delete_file }, /* 358 = extattr_delete_file */ - { 0, (sy_call_t *)nosys }, /* 359 = aio_waitcomplete */ - { SYF_MPSAFE | AS(getresuid_args), (sy_call_t *)getresuid }, /* 360 = getresuid */ - { SYF_MPSAFE | AS(getresgid_args), (sy_call_t *)getresgid }, /* 361 = getresgid */ - { SYF_MPSAFE | 0, (sy_call_t *)kqueue }, /* 362 = kqueue */ - { SYF_MPSAFE | AS(freebsd32_kevent_args), (sy_call_t *)freebsd32_kevent }, /* 363 = freebsd32_kevent */ - { 0, (sy_call_t *)nosys }, /* 364 = __cap_get_proc */ - { 0, (sy_call_t *)nosys }, /* 365 = __cap_set_proc */ - { 0, (sy_call_t *)nosys }, /* 366 = __cap_get_fd */ - { 0, (sy_call_t *)nosys }, /* 367 = __cap_get_file */ - { 0, (sy_call_t *)nosys }, /* 368 = __cap_set_fd */ - { 0, (sy_call_t *)nosys }, /* 369 = __cap_set_file */ - { 0, (sy_call_t *)nosys }, /* 370 = lkmressys */ - { AS(extattr_set_fd_args), (sy_call_t *)extattr_set_fd }, /* 371 = extattr_set_fd */ - { AS(extattr_get_fd_args), (sy_call_t *)extattr_get_fd }, /* 372 = extattr_get_fd */ - { AS(extattr_delete_fd_args), (sy_call_t *)extattr_delete_fd }, /* 373 = extattr_delete_fd */ - { SYF_MPSAFE | AS(__setugid_args), (sy_call_t *)__setugid }, /* 374 = __setugid */ - { 0, (sy_call_t *)nosys }, /* 375 = nfsclnt */ - { AS(eaccess_args), (sy_call_t *)eaccess }, /* 376 = eaccess */ - { 0, (sy_call_t *)nosys }, /* 377 = afs_syscall */ - { AS(nmount_args), (sy_call_t *)nmount }, /* 378 = nmount */ - { 0, (sy_call_t *)kse_exit }, /* 379 = kse_exit */ - { AS(kse_wakeup_args), (sy_call_t *)kse_wakeup }, /* 380 = kse_wakeup */ - { AS(kse_create_args), (sy_call_t *)kse_create }, /* 381 = kse_create */ - { AS(kse_thr_interrupt_args), (sy_call_t *)kse_thr_interrupt }, /* 382 = kse_thr_interrupt */ - { 0, (sy_call_t *)kse_release }, /* 383 = kse_release */ - { 0, (sy_call_t *)nosys }, /* 384 = __mac_get_proc */ - { 0, (sy_call_t *)nosys }, /* 385 = __mac_set_proc */ - { 0, (sy_call_t *)nosys }, /* 386 = __mac_get_fd */ - { 0, (sy_call_t *)nosys }, /* 387 = __mac_get_file */ - { 0, (sy_call_t *)nosys }, /* 388 = __mac_set_fd */ - { 0, (sy_call_t *)nosys }, /* 389 = __mac_set_file */ - { AS(kenv_args), (sy_call_t *)kenv }, /* 390 = kenv */ - { AS(lchflags_args), (sy_call_t *)lchflags }, /* 391 = lchflags */ - { AS(uuidgen_args), (sy_call_t *)uuidgen }, /* 392 = uuidgen */ - { SYF_MPSAFE | AS(freebsd32_sendfile_args), (sy_call_t *)freebsd32_sendfile }, /* 393 = freebsd32_sendfile */ - { 0, (sy_call_t *)nosys }, /* 394 = mac_syscall */ - { AS(getfsstat_args), (sy_call_t *)getfsstat }, /* 395 = getfsstat */ - { AS(statfs_args), (sy_call_t *)statfs }, /* 396 = statfs */ - { AS(fstatfs_args), (sy_call_t *)fstatfs }, /* 397 = fstatfs */ - { AS(fhstatfs_args), (sy_call_t *)fhstatfs }, /* 398 = fhstatfs */ - { 0, (sy_call_t *)nosys }, /* 399 = nosys */ - { 0, (sy_call_t *)nosys }, /* 400 = ksem_close */ - { 0, (sy_call_t *)nosys }, /* 401 = ksem_post */ - { 0, (sy_call_t *)nosys }, /* 402 = ksem_wait */ - { 0, (sy_call_t *)nosys }, /* 403 = ksem_trywait */ - { 0, (sy_call_t *)nosys }, /* 404 = ksem_init */ - { 0, (sy_call_t *)nosys }, /* 405 = ksem_open */ - { 0, (sy_call_t *)nosys }, /* 406 = ksem_unlink */ - { 0, (sy_call_t *)nosys }, /* 407 = ksem_getvalue */ - { 0, (sy_call_t *)nosys }, /* 408 = ksem_destroy */ - { 0, (sy_call_t *)nosys }, /* 409 = __mac_get_pid */ - { 0, (sy_call_t *)nosys }, /* 410 = __mac_get_link */ - { 0, (sy_call_t *)nosys }, /* 411 = __mac_set_link */ - { 0, (sy_call_t *)nosys }, /* 412 = extattr_set_link */ - { 0, (sy_call_t *)nosys }, /* 413 = extattr_get_link */ - { 0, (sy_call_t *)nosys }, /* 414 = extattr_delete_link */ - { 0, (sy_call_t *)nosys }, /* 415 = __mac_execve */ - { AS(freebsd32_sigaction_args), (sy_call_t *)freebsd32_sigaction }, /* 416 = freebsd32_sigaction */ - { SYF_MPSAFE | AS(freebsd32_sigreturn_args), (sy_call_t *)freebsd32_sigreturn }, /* 417 = freebsd32_sigreturn */ - { 0, (sy_call_t *)nosys }, /* 418 = __xstat */ - { 0, (sy_call_t *)nosys }, /* 419 = __xfstat */ - { 0, (sy_call_t *)nosys }, /* 420 = __xlstat */ - { 0, (sy_call_t *)nosys }, /* 421 = getcontext */ - { 0, (sy_call_t *)nosys }, /* 422 = setcontext */ - { 0, (sy_call_t *)nosys }, /* 423 = swapcontext */ - { 0, (sy_call_t *)nosys }, /* 424 = swapoff */ - { 0, (sy_call_t *)nosys }, /* 425 = __acl_get_link */ - { 0, (sy_call_t *)nosys }, /* 426 = __acl_set_link */ - { 0, (sy_call_t *)nosys }, /* 427 = __acl_delete_link */ - { 0, (sy_call_t *)nosys }, /* 428 = __acl_aclcheck_link */ - { 0, (sy_call_t *)nosys }, /* 429 = sigwait */ - { SYF_MPSAFE | AS(thr_create_args), (sy_call_t *)thr_create }, /* 430 = thr_create */ - { SYF_MPSAFE | AS(thr_exit_args), (sy_call_t *)thr_exit }, /* 431 = thr_exit */ - { SYF_MPSAFE | AS(thr_self_args), (sy_call_t *)thr_self }, /* 432 = thr_self */ - { SYF_MPSAFE | AS(thr_kill_args), (sy_call_t *)thr_kill }, /* 433 = thr_kill */ - { SYF_MPSAFE | AS(_umtx_lock_args), (sy_call_t *)_umtx_lock }, /* 434 = _umtx_lock */ - { SYF_MPSAFE | AS(_umtx_unlock_args), (sy_call_t *)_umtx_unlock }, /* 435 = _umtx_unlock */ - { SYF_MPSAFE | AS(jail_attach_args), (sy_call_t *)jail_attach }, /* 436 = jail_attach */ - { 0, (sy_call_t *)nosys }, /* 437 = extattr_list_fd */ - { 0, (sy_call_t *)nosys }, /* 438 = extattr_list_file */ - { 0, (sy_call_t *)nosys }, /* 439 = extattr_list_link */ - { 0, (sy_call_t *)nosys }, /* 440 = kse_switchin */ - { 0, (sy_call_t *)nosys }, /* 441 = ksem_timedwait */ - { SYF_MPSAFE | AS(thr_suspend_args), (sy_call_t *)thr_suspend }, /* 442 = thr_suspend */ - { SYF_MPSAFE | AS(thr_wake_args), (sy_call_t *)thr_wake }, /* 443 = thr_wake */ - { SYF_MPSAFE | AS(kldunloadf_args), (sy_call_t *)kldunloadf }, /* 444 = kldunloadf */ - { 0, (sy_call_t *)nosys }, /* 445 = audit */ - { 0, (sy_call_t *)nosys }, /* 446 = auditon */ - { 0, (sy_call_t *)nosys }, /* 447 = getauid */ - { 0, (sy_call_t *)nosys }, /* 448 = setauid */ - { 0, (sy_call_t *)nosys }, /* 449 = getaudit */ - { 0, (sy_call_t *)nosys }, /* 450 = setaudit */ - { 0, (sy_call_t *)nosys }, /* 451 = getaudit_addr */ - { 0, (sy_call_t *)nosys }, /* 452 = setaudit_addr */ - { 0, (sy_call_t *)nosys }, /* 453 = auditctl */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 345 = sigtimedwait */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 346 = sigwaitinfo */ + { SYF_MPSAFE | AS(__acl_get_file_args), (sy_call_t *)__acl_get_file, AUE_NULL }, /* 347 = __acl_get_file */ + { SYF_MPSAFE | AS(__acl_set_file_args), (sy_call_t *)__acl_set_file, AUE_NULL }, /* 348 = __acl_set_file */ + { SYF_MPSAFE | AS(__acl_get_fd_args), (sy_call_t *)__acl_get_fd, AUE_NULL }, /* 349 = __acl_get_fd */ + { SYF_MPSAFE | AS(__acl_set_fd_args), (sy_call_t *)__acl_set_fd, AUE_NULL }, /* 350 = __acl_set_fd */ + { SYF_MPSAFE | AS(__acl_delete_file_args), (sy_call_t *)__acl_delete_file, AUE_NULL }, /* 351 = __acl_delete_file */ + { SYF_MPSAFE | AS(__acl_delete_fd_args), (sy_call_t *)__acl_delete_fd, AUE_NULL }, /* 352 = __acl_delete_fd */ + { SYF_MPSAFE | AS(__acl_aclcheck_file_args), (sy_call_t *)__acl_aclcheck_file, AUE_NULL }, /* 353 = __acl_aclcheck_file */ + { SYF_MPSAFE | AS(__acl_aclcheck_fd_args), (sy_call_t *)__acl_aclcheck_fd, AUE_NULL }, /* 354 = __acl_aclcheck_fd */ + { AS(extattrctl_args), (sy_call_t *)extattrctl, AUE_NULL }, /* 355 = extattrctl */ + { AS(extattr_set_file_args), (sy_call_t *)extattr_set_file, AUE_NULL }, /* 356 = extattr_set_file */ + { AS(extattr_get_file_args), (sy_call_t *)extattr_get_file, AUE_NULL }, /* 357 = extattr_get_file */ + { AS(extattr_delete_file_args), (sy_call_t *)extattr_delete_file, AUE_NULL }, /* 358 = extattr_delete_file */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 359 = aio_waitcomplete */ + { SYF_MPSAFE | AS(getresuid_args), (sy_call_t *)getresuid, AUE_NULL }, /* 360 = getresuid */ + { SYF_MPSAFE | AS(getresgid_args), (sy_call_t *)getresgid, AUE_NULL }, /* 361 = getresgid */ + { SYF_MPSAFE | 0, (sy_call_t *)kqueue, AUE_NULL }, /* 362 = kqueue */ + { SYF_MPSAFE | AS(freebsd32_kevent_args), (sy_call_t *)freebsd32_kevent, AUE_NULL }, /* 363 = freebsd32_kevent */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 364 = __cap_get_proc */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 365 = __cap_set_proc */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 366 = __cap_get_fd */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 367 = __cap_get_file */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 368 = __cap_set_fd */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 369 = __cap_set_file */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 370 = lkmressys */ + { AS(extattr_set_fd_args), (sy_call_t *)extattr_set_fd, AUE_NULL }, /* 371 = extattr_set_fd */ + { AS(extattr_get_fd_args), (sy_call_t *)extattr_get_fd, AUE_NULL }, /* 372 = extattr_get_fd */ + { AS(extattr_delete_fd_args), (sy_call_t *)extattr_delete_fd, AUE_NULL }, /* 373 = extattr_delete_fd */ + { SYF_MPSAFE | AS(__setugid_args), (sy_call_t *)__setugid, AUE_NULL }, /* 374 = __setugid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 375 = nfsclnt */ + { AS(eaccess_args), (sy_call_t *)eaccess, AUE_NULL }, /* 376 = eaccess */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 377 = afs_syscall */ + { AS(nmount_args), (sy_call_t *)nmount, AUE_NULL }, /* 378 = nmount */ + { 0, (sy_call_t *)kse_exit, AUE_NULL }, /* 379 = kse_exit */ + { AS(kse_wakeup_args), (sy_call_t *)kse_wakeup, AUE_NULL }, /* 380 = kse_wakeup */ + { AS(kse_create_args), (sy_call_t *)kse_create, AUE_NULL }, /* 381 = kse_create */ + { AS(kse_thr_interrupt_args), (sy_call_t *)kse_thr_interrupt, AUE_NULL }, /* 382 = kse_thr_interrupt */ + { 0, (sy_call_t *)kse_release, AUE_NULL }, /* 383 = kse_release */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 384 = __mac_get_proc */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 385 = __mac_set_proc */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 386 = __mac_get_fd */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 387 = __mac_get_file */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 388 = __mac_set_fd */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 389 = __mac_set_file */ + { AS(kenv_args), (sy_call_t *)kenv, AUE_NULL }, /* 390 = kenv */ + { AS(lchflags_args), (sy_call_t *)lchflags, AUE_NULL }, /* 391 = lchflags */ + { AS(uuidgen_args), (sy_call_t *)uuidgen, AUE_NULL }, /* 392 = uuidgen */ + { SYF_MPSAFE | AS(freebsd32_sendfile_args), (sy_call_t *)freebsd32_sendfile, AUE_NULL }, /* 393 = freebsd32_sendfile */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 394 = mac_syscall */ + { AS(getfsstat_args), (sy_call_t *)getfsstat, AUE_NULL }, /* 395 = getfsstat */ + { AS(statfs_args), (sy_call_t *)statfs, AUE_NULL }, /* 396 = statfs */ + { AS(fstatfs_args), (sy_call_t *)fstatfs, AUE_NULL }, /* 397 = fstatfs */ + { AS(fhstatfs_args), (sy_call_t *)fhstatfs, AUE_NULL }, /* 398 = fhstatfs */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 399 = nosys */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 400 = ksem_close */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 401 = ksem_post */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 402 = ksem_wait */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 403 = ksem_trywait */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 404 = ksem_init */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 405 = ksem_open */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 406 = ksem_unlink */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 407 = ksem_getvalue */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 408 = ksem_destroy */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 409 = __mac_get_pid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 410 = __mac_get_link */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 411 = __mac_set_link */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 412 = extattr_set_link */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 413 = extattr_get_link */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 414 = extattr_delete_link */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 415 = __mac_execve */ + { AS(freebsd32_sigaction_args), (sy_call_t *)freebsd32_sigaction, AUE_NULL }, /* 416 = freebsd32_sigaction */ + { SYF_MPSAFE | AS(freebsd32_sigreturn_args), (sy_call_t *)freebsd32_sigreturn, AUE_NULL }, /* 417 = freebsd32_sigreturn */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 418 = __xstat */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 419 = __xfstat */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 420 = __xlstat */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 421 = getcontext */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 422 = setcontext */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 423 = swapcontext */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 424 = swapoff */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 425 = __acl_get_link */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 426 = __acl_set_link */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 427 = __acl_delete_link */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 428 = __acl_aclcheck_link */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 429 = sigwait */ + { SYF_MPSAFE | AS(thr_create_args), (sy_call_t *)thr_create, AUE_NULL }, /* 430 = thr_create */ + { SYF_MPSAFE | AS(thr_exit_args), (sy_call_t *)thr_exit, AUE_NULL }, /* 431 = thr_exit */ + { SYF_MPSAFE | AS(thr_self_args), (sy_call_t *)thr_self, AUE_NULL }, /* 432 = thr_self */ + { SYF_MPSAFE | AS(thr_kill_args), (sy_call_t *)thr_kill, AUE_NULL }, /* 433 = thr_kill */ + { SYF_MPSAFE | AS(_umtx_lock_args), (sy_call_t *)_umtx_lock, AUE_NULL }, /* 434 = _umtx_lock */ + { SYF_MPSAFE | AS(_umtx_unlock_args), (sy_call_t *)_umtx_unlock, AUE_NULL }, /* 435 = _umtx_unlock */ + { SYF_MPSAFE | AS(jail_attach_args), (sy_call_t *)jail_attach, AUE_NULL }, /* 436 = jail_attach */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 437 = extattr_list_fd */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 438 = extattr_list_file */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 439 = extattr_list_link */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 440 = kse_switchin */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 441 = ksem_timedwait */ + { SYF_MPSAFE | AS(thr_suspend_args), (sy_call_t *)thr_suspend, AUE_NULL }, /* 442 = thr_suspend */ + { SYF_MPSAFE | AS(thr_wake_args), (sy_call_t *)thr_wake, AUE_NULL }, /* 443 = thr_wake */ + { SYF_MPSAFE | AS(kldunloadf_args), (sy_call_t *)kldunloadf, AUE_NULL }, /* 444 = kldunloadf */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 445 = audit */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 446 = auditon */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 447 = getauid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 448 = setauid */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 449 = getaudit */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 450 = setaudit */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 451 = getaudit_addr */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 452 = setaudit_addr */ + { 0, (sy_call_t *)nosys, AUE_NULL }, /* 453 = auditctl */ }; ==== //depot/projects/trustedbsd/audit3/sys/compat/freebsd32/syscalls.master#4 (text+ko) ==== @@ -11,6 +11,12 @@ ; [M]LIBCOMPAT, [M]NODEF, [M]NOARGS, [M]NOPROTO, [M]NOIMPL, ; [M]NOSTD ; name psuedo-prototype of syscall routine +; audit the audit event associated with the system call +; A value of AUE_NULL means no auditing, but it also means that +; there is no audit event for the call at this time. For the +; case where the event exists, but we don't want auditing, the +; event should be #defined to AUE_NULL in audit_kevents.h. +; ; If one of the following alts is different, then all appear: ; altname name of system call if different ; alttag name of args struct tag if different from [o]`name'"_args" @@ -45,128 +51,134 @@ ; redistributions should be placed in the reserved range at the end ; of the current calls. -0 MNOPROTO { int nosys(void); } syscall nosys_args int -1 MNOPROTO { void sys_exit(int rval); } exit sys_exit_args void -2 MNOPROTO { int fork(void); } -3 MNOPROTO { ssize_t read(int fd, void *buf, size_t nbyte); } -4 MNOPROTO { ssize_t write(int fd, const void *buf, size_t nbyte); } -5 NOPROTO { int open(char *path, int flags, int mode); } >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Mon Nov 15 23:30:44 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3352B16A4D1; Mon, 15 Nov 2004 23:30:44 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id D373D16A4CE; Mon, 15 Nov 2004 23:30:43 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id C1CC143D1D; Mon, 15 Nov 2004 23:30:43 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from [127.0.0.1] (davidxu@localhost [127.0.0.1]) iAFNUgEt075673; Mon, 15 Nov 2004 23:30:43 GMT (envelope-from davidxu@freebsd.org) Message-ID: <41993C22.2060309@freebsd.org> Date: Tue, 16 Nov 2004 07:30:42 +0800 From: David Xu User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.2) Gecko/20040921 X-Accept-Language: en-us, en MIME-Version: 1.0 To: John Baldwin References: <200411140513.iAE5DOTv056478@repoman.freebsd.org> <200411151318.49415.jhb@FreeBSD.org> In-Reply-To: <200411151318.49415.jhb@FreeBSD.org> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: Perforce Change Reviews Subject: Re: PERFORCE change 65074 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 23:30:45 -0000 John Baldwin wrote: >On Sunday 14 November 2004 12:13 am, David Xu wrote: > > >>http://perforce.freebsd.org/chv.cgi?CH=65074 >> >>Change 65074 by davidxu@davidxu_alona on 2004/11/14 05:12:40 >> >> 1. Fix a race between signal and umtx_unlock. a waiter >> may be resumed by signal and left or exited, heavily >> loaded test causes kernel to crash. >> 2. Use distributed queue locks instead of single giant >> lock. >> >>Affected files ... >> >>.. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 edit >> >>Differences ... >> >>==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 (text+ko) >>==== >> >>@@ -49,25 +49,48 @@ >> pid_t uq_pid; /* Pid key component. */ >> }; >> >> #define UMTX_QUEUES 128 >> #define UMTX_HASH(pid, umtx) \ >>- (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES) >>+ ((((uintptr_t)pid << 16) + ((uintptr_t)umtx & 65535)) % UMTX_QUEUES) >> >> > >I'm curious why you changed the hash macro here? Low order bits of pointers >tend to be zero due to alignment, so I think this will result in fewer >"useful" bits and more collisions and longer chains. > > > Yeah, I orignally wanted to reduce collisions but seems got an opposited result. ;-) From owner-p4-projects@FreeBSD.ORG Mon Nov 15 23:41:33 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0D55316A4D1; Mon, 15 Nov 2004 23:41:33 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DE1D216A4CE; Mon, 15 Nov 2004 23:41:32 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id CAD3C43D1D; Mon, 15 Nov 2004 23:41:32 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from [127.0.0.1] (davidxu@localhost [127.0.0.1]) iAFNfVAU076672; Mon, 15 Nov 2004 23:41:32 GMT (envelope-from davidxu@freebsd.org) Message-ID: <41993EAB.3030108@freebsd.org> Date: Tue, 16 Nov 2004 07:41:31 +0800 From: David Xu User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.2) Gecko/20040921 X-Accept-Language: en-us, en MIME-Version: 1.0 To: John Baldwin References: <200411140513.iAE5DOTv056478@repoman.freebsd.org> <200411151318.49415.jhb@FreeBSD.org> In-Reply-To: <200411151318.49415.jhb@FreeBSD.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit cc: Perforce Change Reviews Subject: Re: PERFORCE change 65074 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 15 Nov 2004 23:41:33 -0000 John Baldwin wrote: >On Sunday 14 November 2004 12:13 am, David Xu wrote: > > >>http://perforce.freebsd.org/chv.cgi?CH=65074 >> >>Change 65074 by davidxu@davidxu_alona on 2004/11/14 05:12:40 >> >> 1. Fix a race between signal and umtx_unlock. a waiter >> may be resumed by signal and left or exited, heavily >> loaded test causes kernel to crash. >> 2. Use distributed queue locks instead of single giant >> lock. >> >>Affected files ... >> >>.. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 edit >> >>Differences ... >> >>==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 (text+ko) >>==== >> >>@@ -49,25 +49,48 @@ >> pid_t uq_pid; /* Pid key component. */ >> }; >> >> #define UMTX_QUEUES 128 >> #define UMTX_HASH(pid, umtx) \ >>- (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES) >>+ ((((uintptr_t)pid << 16) + ((uintptr_t)umtx & 65535)) % UMTX_QUEUES) >> >> > >I'm curious why you changed the hash macro here? Low order bits of pointers >tend to be zero due to alignment, so I think this will result in fewer >"useful" bits and more collisions and longer chains. > > > FYI, I changed back to original hash code: I simulate it under userland: printf("thread lock: %p hash=%d\n", &thread->lock, ((getpid() + ((unsigned)(&thread->lock) & ~0xFFFF))) % 128); get result: thread lock: 0x804e014 hash=39 thread lock: 0x8053014 hash=39 thread lock: 0x8056014 hash=39 thread lock: 0x805a014 hash=39 thread lock: 0x805d014 hash=39 thread lock: 0x8060014 hash=39 thread lock: 0x8063014 hash=39 thread lock: 0x8067014 hash=39 thread lock: 0x806a014 hash=39 thread lock: 0x806d014 hash=39 thread lock: 0x8070014 hash=39 So my version put all locks on chain 0, the orignal version put all locks on chain 39. :( Both seem bad algorithm. Note it is my private version of libpthread using thr and umtx, 1:1 only. David From owner-p4-projects@FreeBSD.ORG Tue Nov 16 13:17:30 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6C3EF16A4D1; Tue, 16 Nov 2004 13:17:30 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2ED7616A4CE for ; Tue, 16 Nov 2004 13:17:30 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 04AAE43D41 for ; Tue, 16 Nov 2004 13:17:30 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAGDHTak072384 for ; Tue, 16 Nov 2004 13:17:29 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAGDHTPn072381 for perforce@freebsd.org; Tue, 16 Nov 2004 13:17:29 GMT (envelope-from davidxu@freebsd.org) Date: Tue, 16 Nov 2004 13:17:29 GMT Message-Id: <200411161317.iAGDHTPn072381@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65255 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Nov 2004 13:17:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=65255 Change 65255 by davidxu@davidxu_alona on 2004/11/16 13:16:46 Don't free memory with mutex holding. Affected files ... .. //depot/projects/davidxu_ksedbg/sys/kern/kern_umtx.c#2 edit Differences ... ==== //depot/projects/davidxu_ksedbg/sys/kern/kern_umtx.c#2 (text+ko) ==== @@ -49,25 +49,48 @@ pid_t uq_pid; /* Pid key component. */ }; +LIST_HEAD(umtx_head, umtx_q); +struct umtxq_chain { + struct umtx_head uc_queues; /* List of sleep queues. */ + struct mtx uc_lock; /* lock for this chain. */ +}; + #define UMTX_QUEUES 128 -#define UMTX_HASH(pid, umtx) \ - (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES) +#define UMTX_HASH(pid, umtx) \ + ((((uintptr_t)pid << 16) + (((uintptr_t)umtx >> 4) & 65535)) % UMTX_QUEUES) -LIST_HEAD(umtx_head, umtx_q); -static struct umtx_head queues[UMTX_QUEUES]; +static struct umtxq_chain umtxq_chains[UMTX_QUEUES]; static MALLOC_DEFINE(M_UMTX, "umtx", "UMTX queue memory"); -static struct mtx umtx_lock; -MTX_SYSINIT(umtx, &umtx_lock, "umtx", MTX_DEF); - -#define UMTX_LOCK() mtx_lock(&umtx_lock); -#define UMTX_UNLOCK() mtx_unlock(&umtx_lock); +#define UMTX_LOCK(td, umtx) \ + mtx_lock(&umtxq_chains[UMTX_HASH((td)->td_proc->p_pid, \ + (umtx))].uc_lock) +#define UMTX_UNLOCK(td, umtx) \ + mtx_unlock(&umtxq_chains[UMTX_HASH((td)->td_proc->p_pid, \ + (umtx))].uc_lock); +#define UMTX_MUTEX(td, umtx) \ + (&umtxq_chains[UMTX_HASH(td->td_proc->p_pid, umtx)].uc_lock) #define UMTX_CONTESTED LONG_MIN +static void umtx_queues_init(void *); static struct umtx_q *umtx_lookup(struct thread *, struct umtx *umtx); static struct umtx_q *umtx_insert(struct thread *, struct umtx *umtx); +SYSINIT(umtx, SI_SUB_LOCK, SI_ORDER_MIDDLE, umtx_queues_init, NULL); + +static void +umtx_queues_init(void *arg) +{ + int i; + + for (i = 0; i < UMTX_QUEUES; ++i) { + LIST_INIT(&umtxq_chains[i].uc_queues); + mtx_init(&umtxq_chains[i].uc_lock, "umtxq_lock", NULL, + MTX_DEF | MTX_DUPOK); + } +} + static struct umtx_q * umtx_lookup(struct thread *td, struct umtx *umtx) { @@ -75,9 +98,11 @@ struct umtx_q *uq; pid_t pid; + mtx_assert(UMTXQ_MUTEX(td, umtx), MA_OWNED); + pid = td->td_proc->p_pid; - head = &queues[UMTX_HASH(td->td_proc->p_pid, umtx)]; + head = &umtxq_chains[UMTX_HASH(td->td_proc->p_pid, umtx)].uc_queues; LIST_FOREACH(uq, head, uq_next) { if (uq->uq_pid == pid && uq->uq_umtx == umtx) @@ -102,16 +127,16 @@ if ((uq = umtx_lookup(td, umtx)) == NULL) { struct umtx_q *ins; - UMTX_UNLOCK(); + UMTX_UNLOCK(td, umtx); ins = malloc(sizeof(*uq), M_UMTX, M_ZERO | M_WAITOK); - UMTX_LOCK(); + UMTX_LOCK(td, umtx); /* * Some one else could have succeeded while we were blocked * waiting on memory. */ if ((uq = umtx_lookup(td, umtx)) == NULL) { - head = &queues[UMTX_HASH(pid, umtx)]; + head = &umtxq_chains[UMTX_HASH(pid, umtx)].uc_queues; uq = ins; uq->uq_pid = pid; uq->uq_umtx = umtx; @@ -130,14 +155,16 @@ } static void -umtx_remove(struct umtx_q *uq, struct thread *td) +umtx_remove(struct umtx_q *uq, struct thread *td, struct umtx *umtx) { TAILQ_REMOVE(&uq->uq_tdq, td, td_umtx); if (TAILQ_EMPTY(&uq->uq_tdq)) { LIST_REMOVE(uq, uq_next); + UMTX_UNLOCK(td, umtx); free(uq, M_UMTX); - } + } else + UMTX_UNLOCK(td, umtx); } int @@ -148,7 +175,7 @@ struct umtx *umtx; intptr_t owner; intptr_t old; - int error; + int error = 0; uq = NULL; @@ -165,34 +192,40 @@ owner = casuptr((intptr_t *)&umtx->u_owner, UMTX_UNOWNED, td->td_tid); + /* The acquire succeeded. */ + if (owner == UMTX_UNOWNED) + return (0); + /* The address was invalid. */ if (owner == -1) return (EFAULT); - /* The acquire succeeded. */ - if (owner == UMTX_UNOWNED) - return (0); - /* If no one owns it but it is contested try to acquire it. */ if (owner == UMTX_CONTESTED) { owner = casuptr((intptr_t *)&umtx->u_owner, UMTX_CONTESTED, td->td_tid | UMTX_CONTESTED); + if (owner == UMTX_CONTESTED) + return (0); + /* The address was invalid. */ if (owner == -1) return (EFAULT); - if (owner == UMTX_CONTESTED) - return (0); - /* If this failed the lock has changed, restart. */ continue; } + /* + * If we caught a signal, we have retried and now + * exit immediately. + */ + if (error) + return (error); - UMTX_LOCK(); + UMTX_LOCK(td, umtx); uq = umtx_insert(td, umtx); - UMTX_UNLOCK(); + UMTX_UNLOCK(td, umtx); /* * Set the contested bit so that a release in user space @@ -205,9 +238,8 @@ /* The address was invalid. */ if (old == -1) { - UMTX_LOCK(); - umtx_remove(uq, td); - UMTX_UNLOCK(); + UMTX_LOCK(td, umtx); + umtx_remove(uq, td, umtx); return (EFAULT); } @@ -216,24 +248,28 @@ * and we need to retry or we lost a race to the thread * unlocking the umtx. */ - PROC_LOCK(td->td_proc); + UMTX_LOCK(td, umtx); if (old == owner && (td->td_flags & TDF_UMTXWAKEUP) == 0) - error = msleep(td, &td->td_proc->p_mtx, + error = msleep(td, UMTX_MUTEX(td, umtx), td->td_priority | PCATCH, "umtx", 0); else error = 0; - mtx_lock_spin(&sched_lock); - td->td_flags &= ~TDF_UMTXWAKEUP; - mtx_unlock_spin(&sched_lock); - PROC_UNLOCK(td->td_proc); + umtx_remove(uq, td, umtx); - UMTX_LOCK(); - umtx_remove(uq, td); - UMTX_UNLOCK(); + if (td->td_flags & TDF_UMTXWAKEUP) { + /* + * if we were resumed by umtx_unlock, we should retry + * to avoid a race. + */ + mtx_lock_spin(&sched_lock); + td->td_flags &= ~TDF_UMTXWAKEUP; + mtx_unlock_spin(&sched_lock); + continue; + } /* - * If we caught a signal we might have to retry or exit - * immediately. + * If we caught a signal without resumed by umtx_unlock, + * exit immediately. */ if (error) return (error); @@ -246,7 +282,7 @@ _umtx_unlock(struct thread *td, struct _umtx_unlock_args *uap) /* struct umtx *umtx */ { - struct thread *blocked; + struct thread *blocked, *blocked2; struct umtx *umtx; struct umtx_q *uq; intptr_t owner; @@ -269,63 +305,69 @@ /* We should only ever be in here for contested locks */ if ((owner & UMTX_CONTESTED) == 0) return (EINVAL); - blocked = NULL; /* * When unlocking the umtx, it must be marked as unowned if * there is zero or one thread only waiting for it. * Otherwise, it must be marked as contested. */ - UMTX_LOCK(); + old = casuptr((intptr_t *)&umtx->u_owner, owner, UMTX_UNOWNED); + if (old == -1) + return (EFAULT); + if (old != owner) + return (EINVAL); + /* + * At the point, a new thread can lock the umtx before we + * reach here, so contested bit will not be set, if there + * are two or more threads on wait queue, we should set + * contensted bit for them. + */ + blocked = NULL; + UMTX_LOCK(td, umtx); uq = umtx_lookup(td, umtx); - if (uq == NULL || - (uq != NULL && (blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL && - TAILQ_NEXT(blocked, td_umtx) == NULL)) { - UMTX_UNLOCK(); - old = casuptr((intptr_t *)&umtx->u_owner, owner, - UMTX_UNOWNED); - if (old == -1) - return (EFAULT); - if (old != owner) - return (EINVAL); + if (uq == NULL) { + UMTX_UNLOCK(td, umtx); + return (0); + } + blocked2 = NULL; + if ((blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL) { + mtx_lock_spin(&sched_lock); + blocked->td_flags |= TDF_UMTXWAKEUP; + mtx_unlock_spin(&sched_lock); + blocked2 = TAILQ_NEXT(blocked, td_umtx); + } + UMTX_UNLOCK(td, umtx); + /* + * If there is second thread waiting on umtx, set contested bit, + * if they are resumed before we reach here, it is harmless, + * just a bit nonefficient. + */ + if (blocked2 != NULL) { + owner = UMTX_UNOWNED; + for (;;) { + old = casuptr((intptr_t *)&umtx->u_owner, owner, + owner | UMTX_CONTESTED); + if (old == -1) + return (EFAULT); + if (old == owner) + break; + owner = old; + } /* - * Recheck the umtx queue to make sure another thread - * didn't put itself on it after it was unlocked. + * Another thread locked the umtx before us, so don't bother + * to wake more threads, that thread will do it when it unlocks + * the umtx. */ - UMTX_LOCK(); - uq = umtx_lookup(td, umtx); - if (uq != NULL && - ((blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL && - TAILQ_NEXT(blocked, td_umtx) != NULL)) { - UMTX_UNLOCK(); - old = casuptr((intptr_t *)&umtx->u_owner, - UMTX_UNOWNED, UMTX_CONTESTED); - } else { - UMTX_UNLOCK(); - } - } else { - UMTX_UNLOCK(); - old = casuptr((intptr_t *)&umtx->u_owner, - owner, UMTX_CONTESTED); - if (old != -1 && old != owner) - return (EINVAL); + if ((owner & ~UMTX_CONTESTED) != 0) + return (0); } - if (old == -1) - return (EFAULT); - /* * If there is a thread waiting on the umtx, wake it up. */ - if (blocked != NULL) { - PROC_LOCK(blocked->td_proc); - mtx_lock_spin(&sched_lock); - blocked->td_flags |= TDF_UMTXWAKEUP; - mtx_unlock_spin(&sched_lock); - PROC_UNLOCK(blocked->td_proc); + if (blocked != NULL) wakeup(blocked); - } return (0); } From owner-p4-projects@FreeBSD.ORG Tue Nov 16 13:28:15 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E58C216A4D2; Tue, 16 Nov 2004 13:28:14 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BF19A16A4CE; Tue, 16 Nov 2004 13:28:14 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8F4ED43D39; Tue, 16 Nov 2004 13:28:14 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from [127.0.0.1] (davidxu@localhost [127.0.0.1]) iAGDSA8B002596; Tue, 16 Nov 2004 13:28:12 GMT (envelope-from davidxu@freebsd.org) Message-ID: <419A006B.4030604@freebsd.org> Date: Tue, 16 Nov 2004 21:28:11 +0800 From: David Xu User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.2) Gecko/20040921 X-Accept-Language: en-us, en MIME-Version: 1.0 To: David Xu References: <200411161317.iAGDHTPn072381@repoman.freebsd.org> In-Reply-To: <200411161317.iAGDHTPn072381@repoman.freebsd.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit cc: Perforce Change Reviews Subject: Re: PERFORCE change 65255 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Nov 2004 13:28:15 -0000 Ouch, so big diff, why ? it really should be : @@ -155,14 +155,16 @@ } static void -umtx_remove(struct umtx_q *uq, struct thread *td) +umtx_remove(struct umtx_q *uq, struct thread *td, struct umtx *umtx) { TAILQ_REMOVE(&uq->uq_tdq, td, td_umtx); if (TAILQ_EMPTY(&uq->uq_tdq)) { LIST_REMOVE(uq, uq_next); + UMTX_UNLOCK(td, umtx); free(uq, M_UMTX); - } + } else + UMTX_UNLOCK(td, umtx); } int @@ -237,8 +239,7 @@ /* The address was invalid. */ if (old == -1) { UMTX_LOCK(td, umtx); - umtx_remove(uq, td); - UMTX_UNLOCK(td, umtx); + umtx_remove(uq, td, umtx); return (EFAULT); } @@ -253,8 +254,7 @@ td->td_priority | PCATCH, "umtx", 0); else error = 0; - umtx_remove(uq, td); - UMTX_UNLOCK(td, umtx); + umtx_remove(uq, td, umtx); if (td->td_flags & TDF_UMTXWAKEUP) { /* David Xu wrote: >http://perforce.freebsd.org/chv.cgi?CH=65255 > >Change 65255 by davidxu@davidxu_alona on 2004/11/16 13:16:46 > > Don't free memory with mutex holding. > >Affected files ... > >.. //depot/projects/davidxu_ksedbg/sys/kern/kern_umtx.c#2 edit > >Differences ... > >==== //depot/projects/davidxu_ksedbg/sys/kern/kern_umtx.c#2 (text+ko) ==== > >@@ -49,25 +49,48 @@ > pid_t uq_pid; /* Pid key component. */ > }; > >+LIST_HEAD(umtx_head, umtx_q); >+struct umtxq_chain { >+ struct umtx_head uc_queues; /* List of sleep queues. */ >+ struct mtx uc_lock; /* lock for this chain. */ >+}; >+ > #define UMTX_QUEUES 128 >-#define UMTX_HASH(pid, umtx) \ >- (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES) >+#define UMTX_HASH(pid, umtx) \ >+ ((((uintptr_t)pid << 16) + (((uintptr_t)umtx >> 4) & 65535)) % UMTX_QUEUES) > >-LIST_HEAD(umtx_head, umtx_q); >-static struct umtx_head queues[UMTX_QUEUES]; >+static struct umtxq_chain umtxq_chains[UMTX_QUEUES]; > static MALLOC_DEFINE(M_UMTX, "umtx", "UMTX queue memory"); > >-static struct mtx umtx_lock; >-MTX_SYSINIT(umtx, &umtx_lock, "umtx", MTX_DEF); >- >-#define UMTX_LOCK() mtx_lock(&umtx_lock); >-#define UMTX_UNLOCK() mtx_unlock(&umtx_lock); >+#define UMTX_LOCK(td, umtx) \ >+ mtx_lock(&umtxq_chains[UMTX_HASH((td)->td_proc->p_pid, \ >+ (umtx))].uc_lock) >+#define UMTX_UNLOCK(td, umtx) \ >+ mtx_unlock(&umtxq_chains[UMTX_HASH((td)->td_proc->p_pid, \ >+ (umtx))].uc_lock); >+#define UMTX_MUTEX(td, umtx) \ >+ (&umtxq_chains[UMTX_HASH(td->td_proc->p_pid, umtx)].uc_lock) > > #define UMTX_CONTESTED LONG_MIN > >+static void umtx_queues_init(void *); > static struct umtx_q *umtx_lookup(struct thread *, struct umtx *umtx); > static struct umtx_q *umtx_insert(struct thread *, struct umtx *umtx); > >+SYSINIT(umtx, SI_SUB_LOCK, SI_ORDER_MIDDLE, umtx_queues_init, NULL); >+ >+static void >+umtx_queues_init(void *arg) >+{ >+ int i; >+ >+ for (i = 0; i < UMTX_QUEUES; ++i) { >+ LIST_INIT(&umtxq_chains[i].uc_queues); >+ mtx_init(&umtxq_chains[i].uc_lock, "umtxq_lock", NULL, >+ MTX_DEF | MTX_DUPOK); >+ } >+} >+ > static struct umtx_q * > umtx_lookup(struct thread *td, struct umtx *umtx) > { >@@ -75,9 +98,11 @@ > struct umtx_q *uq; > pid_t pid; > >+ mtx_assert(UMTXQ_MUTEX(td, umtx), MA_OWNED); >+ > pid = td->td_proc->p_pid; > >- head = &queues[UMTX_HASH(td->td_proc->p_pid, umtx)]; >+ head = &umtxq_chains[UMTX_HASH(td->td_proc->p_pid, umtx)].uc_queues; > > LIST_FOREACH(uq, head, uq_next) { > if (uq->uq_pid == pid && uq->uq_umtx == umtx) >@@ -102,16 +127,16 @@ > if ((uq = umtx_lookup(td, umtx)) == NULL) { > struct umtx_q *ins; > >- UMTX_UNLOCK(); >+ UMTX_UNLOCK(td, umtx); > ins = malloc(sizeof(*uq), M_UMTX, M_ZERO | M_WAITOK); >- UMTX_LOCK(); >+ UMTX_LOCK(td, umtx); > > /* > * Some one else could have succeeded while we were blocked > * waiting on memory. > */ > if ((uq = umtx_lookup(td, umtx)) == NULL) { >- head = &queues[UMTX_HASH(pid, umtx)]; >+ head = &umtxq_chains[UMTX_HASH(pid, umtx)].uc_queues; > uq = ins; > uq->uq_pid = pid; > uq->uq_umtx = umtx; >@@ -130,14 +155,16 @@ > } > > static void >-umtx_remove(struct umtx_q *uq, struct thread *td) >+umtx_remove(struct umtx_q *uq, struct thread *td, struct umtx *umtx) > { > TAILQ_REMOVE(&uq->uq_tdq, td, td_umtx); > > if (TAILQ_EMPTY(&uq->uq_tdq)) { > LIST_REMOVE(uq, uq_next); >+ UMTX_UNLOCK(td, umtx); > free(uq, M_UMTX); >- } >+ } else >+ UMTX_UNLOCK(td, umtx); > } > > int >@@ -148,7 +175,7 @@ > struct umtx *umtx; > intptr_t owner; > intptr_t old; >- int error; >+ int error = 0; > > uq = NULL; > >@@ -165,34 +192,40 @@ > owner = casuptr((intptr_t *)&umtx->u_owner, > UMTX_UNOWNED, td->td_tid); > >+ /* The acquire succeeded. */ >+ if (owner == UMTX_UNOWNED) >+ return (0); >+ > /* The address was invalid. */ > if (owner == -1) > return (EFAULT); > >- /* The acquire succeeded. */ >- if (owner == UMTX_UNOWNED) >- return (0); >- > /* If no one owns it but it is contested try to acquire it. */ > if (owner == UMTX_CONTESTED) { > owner = casuptr((intptr_t *)&umtx->u_owner, > UMTX_CONTESTED, td->td_tid | UMTX_CONTESTED); > >+ if (owner == UMTX_CONTESTED) >+ return (0); >+ > /* The address was invalid. */ > if (owner == -1) > return (EFAULT); > >- if (owner == UMTX_CONTESTED) >- return (0); >- > /* If this failed the lock has changed, restart. */ > continue; > } > >+ /* >+ * If we caught a signal, we have retried and now >+ * exit immediately. >+ */ >+ if (error) >+ return (error); > >- UMTX_LOCK(); >+ UMTX_LOCK(td, umtx); > uq = umtx_insert(td, umtx); >- UMTX_UNLOCK(); >+ UMTX_UNLOCK(td, umtx); > > /* > * Set the contested bit so that a release in user space >@@ -205,9 +238,8 @@ > > /* The address was invalid. */ > if (old == -1) { >- UMTX_LOCK(); >- umtx_remove(uq, td); >- UMTX_UNLOCK(); >+ UMTX_LOCK(td, umtx); >+ umtx_remove(uq, td, umtx); > return (EFAULT); > } > >@@ -216,24 +248,28 @@ > * and we need to retry or we lost a race to the thread > * unlocking the umtx. > */ >- PROC_LOCK(td->td_proc); >+ UMTX_LOCK(td, umtx); > if (old == owner && (td->td_flags & TDF_UMTXWAKEUP) == 0) >- error = msleep(td, &td->td_proc->p_mtx, >+ error = msleep(td, UMTX_MUTEX(td, umtx), > td->td_priority | PCATCH, "umtx", 0); > else > error = 0; >- mtx_lock_spin(&sched_lock); >- td->td_flags &= ~TDF_UMTXWAKEUP; >- mtx_unlock_spin(&sched_lock); >- PROC_UNLOCK(td->td_proc); >+ umtx_remove(uq, td, umtx); > >- UMTX_LOCK(); >- umtx_remove(uq, td); >- UMTX_UNLOCK(); >+ if (td->td_flags & TDF_UMTXWAKEUP) { >+ /* >+ * if we were resumed by umtx_unlock, we should retry >+ * to avoid a race. >+ */ >+ mtx_lock_spin(&sched_lock); >+ td->td_flags &= ~TDF_UMTXWAKEUP; >+ mtx_unlock_spin(&sched_lock); >+ continue; >+ } > > /* >- * If we caught a signal we might have to retry or exit >- * immediately. >+ * If we caught a signal without resumed by umtx_unlock, >+ * exit immediately. > */ > if (error) > return (error); >@@ -246,7 +282,7 @@ > _umtx_unlock(struct thread *td, struct _umtx_unlock_args *uap) > /* struct umtx *umtx */ > { >- struct thread *blocked; >+ struct thread *blocked, *blocked2; > struct umtx *umtx; > struct umtx_q *uq; > intptr_t owner; >@@ -269,63 +305,69 @@ > /* We should only ever be in here for contested locks */ > if ((owner & UMTX_CONTESTED) == 0) > return (EINVAL); >- blocked = NULL; > > /* > * When unlocking the umtx, it must be marked as unowned if > * there is zero or one thread only waiting for it. > * Otherwise, it must be marked as contested. > */ >- UMTX_LOCK(); >+ old = casuptr((intptr_t *)&umtx->u_owner, owner, UMTX_UNOWNED); >+ if (old == -1) >+ return (EFAULT); >+ if (old != owner) >+ return (EINVAL); >+ /* >+ * At the point, a new thread can lock the umtx before we >+ * reach here, so contested bit will not be set, if there >+ * are two or more threads on wait queue, we should set >+ * contensted bit for them. >+ */ >+ blocked = NULL; >+ UMTX_LOCK(td, umtx); > uq = umtx_lookup(td, umtx); >- if (uq == NULL || >- (uq != NULL && (blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL && >- TAILQ_NEXT(blocked, td_umtx) == NULL)) { >- UMTX_UNLOCK(); >- old = casuptr((intptr_t *)&umtx->u_owner, owner, >- UMTX_UNOWNED); >- if (old == -1) >- return (EFAULT); >- if (old != owner) >- return (EINVAL); >+ if (uq == NULL) { >+ UMTX_UNLOCK(td, umtx); >+ return (0); >+ } >+ blocked2 = NULL; >+ if ((blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL) { >+ mtx_lock_spin(&sched_lock); >+ blocked->td_flags |= TDF_UMTXWAKEUP; >+ mtx_unlock_spin(&sched_lock); >+ blocked2 = TAILQ_NEXT(blocked, td_umtx); >+ } >+ UMTX_UNLOCK(td, umtx); > >+ /* >+ * If there is second thread waiting on umtx, set contested bit, >+ * if they are resumed before we reach here, it is harmless, >+ * just a bit nonefficient. >+ */ >+ if (blocked2 != NULL) { >+ owner = UMTX_UNOWNED; >+ for (;;) { >+ old = casuptr((intptr_t *)&umtx->u_owner, owner, >+ owner | UMTX_CONTESTED); >+ if (old == -1) >+ return (EFAULT); >+ if (old == owner) >+ break; >+ owner = old; >+ } > /* >- * Recheck the umtx queue to make sure another thread >- * didn't put itself on it after it was unlocked. >+ * Another thread locked the umtx before us, so don't bother >+ * to wake more threads, that thread will do it when it unlocks >+ * the umtx. > */ >- UMTX_LOCK(); >- uq = umtx_lookup(td, umtx); >- if (uq != NULL && >- ((blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL && >- TAILQ_NEXT(blocked, td_umtx) != NULL)) { >- UMTX_UNLOCK(); >- old = casuptr((intptr_t *)&umtx->u_owner, >- UMTX_UNOWNED, UMTX_CONTESTED); >- } else { >- UMTX_UNLOCK(); >- } >- } else { >- UMTX_UNLOCK(); >- old = casuptr((intptr_t *)&umtx->u_owner, >- owner, UMTX_CONTESTED); >- if (old != -1 && old != owner) >- return (EINVAL); >+ if ((owner & ~UMTX_CONTESTED) != 0) >+ return (0); > } > >- if (old == -1) >- return (EFAULT); >- > /* > * If there is a thread waiting on the umtx, wake it up. > */ >- if (blocked != NULL) { >- PROC_LOCK(blocked->td_proc); >- mtx_lock_spin(&sched_lock); >- blocked->td_flags |= TDF_UMTXWAKEUP; >- mtx_unlock_spin(&sched_lock); >- PROC_UNLOCK(blocked->td_proc); >+ if (blocked != NULL) > wakeup(blocked); >- } > > return (0); > } > > > > From owner-p4-projects@FreeBSD.ORG Tue Nov 16 17:17:26 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DC5EF16A4D2; Tue, 16 Nov 2004 17:17:25 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AD0C416A4D0 for ; Tue, 16 Nov 2004 17:17:25 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8DA7143D31 for ; Tue, 16 Nov 2004 17:17:25 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAGHHPto088112 for ; Tue, 16 Nov 2004 17:17:25 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAGHHPfA088109 for perforce@freebsd.org; Tue, 16 Nov 2004 17:17:25 GMT (envelope-from sam@freebsd.org) Date: Tue, 16 Nov 2004 17:17:25 GMT Message-Id: <200411161717.iAGHHPfA088109@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65265 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Nov 2004 17:17:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=65265 Change 65265 by sam@sam_ebb on 2004/11/16 17:16:53 split turbo mode into TURBO_A and TURBO_G for forthcoming SuperG support Affected files ... .. //depot/projects/wifi/sys/dev/ath/if_ath.c#22 edit .. //depot/projects/wifi/sys/net80211/_ieee80211.h#2 edit .. //depot/projects/wifi/sys/net80211/ieee80211.c#8 edit Differences ... ==== //depot/projects/wifi/sys/dev/ath/if_ath.c#22 (text+ko) ==== @@ -338,7 +338,8 @@ ath_rate_setup(sc, IEEE80211_MODE_11A); ath_rate_setup(sc, IEEE80211_MODE_11B); ath_rate_setup(sc, IEEE80211_MODE_11G); - ath_rate_setup(sc, IEEE80211_MODE_TURBO); + ath_rate_setup(sc, IEEE80211_MODE_TURBO_A); + ath_rate_setup(sc, IEEE80211_MODE_TURBO_G); /* NB: setup here so ath_rate_update is happy */ ath_setcurmode(sc, IEEE80211_MODE_11A); @@ -775,7 +776,8 @@ CHANNEL_B, /* IEEE80211_MODE_11B */ CHANNEL_PUREG, /* IEEE80211_MODE_11G */ 0, /* IEEE80211_MODE_FH */ - CHANNEL_T /* IEEE80211_MODE_TURBO */ + CHANNEL_T, /* IEEE80211_MODE_TURBO_A */ + CHANNEL_108G /* IEEE80211_MODE_TURBO_G */ }; enum ieee80211_phymode mode = ieee80211_chan2mode(ic, chan); @@ -3672,9 +3674,12 @@ case IEEE80211_MODE_11G: sc->sc_rates[mode] = ath_hal_getratetable(ah, HAL_MODE_11G); break; - case IEEE80211_MODE_TURBO: + case IEEE80211_MODE_TURBO_A: sc->sc_rates[mode] = ath_hal_getratetable(ah, HAL_MODE_TURBO); break; + case IEEE80211_MODE_TURBO_G: + sc->sc_rates[mode] = ath_hal_getratetable(ah, HAL_MODE_108G); + break; default: DPRINTF(sc, ATH_DEBUG_ANY, "%s: invalid mode %u\n", __func__, mode); ==== //depot/projects/wifi/sys/net80211/_ieee80211.h#2 (text+ko) ==== @@ -49,9 +49,10 @@ IEEE80211_MODE_11B = 2, /* 2GHz, CCK */ IEEE80211_MODE_11G = 3, /* 2GHz, OFDM */ IEEE80211_MODE_FH = 4, /* 2GHz, GFSK */ - IEEE80211_MODE_TURBO = 5, /* 5GHz, OFDM, 2x clock */ + IEEE80211_MODE_TURBO_A = 5, /* 5GHz, OFDM, 2x clock */ + IEEE80211_MODE_TURBO_G = 6, /* 2GHz, OFDM, 2x clock */ }; -#define IEEE80211_MODE_MAX (IEEE80211_MODE_TURBO+1) +#define IEEE80211_MODE_MAX (IEEE80211_MODE_TURBO_G+1) enum ieee80211_opmode { IEEE80211_M_STA = 1, /* infrastructure station */ @@ -138,6 +139,8 @@ (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_DYN) #define IEEE80211_CHAN_T \ (IEEE80211_CHAN_5GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO) +#define IEEE80211_CHAN_108G \ + (IEEE80211_CHAN_2GHZ | IEEE80211_CHAN_OFDM | IEEE80211_CHAN_TURBO) #define IEEE80211_IS_CHAN_FHSS(_c) \ (((_c)->ic_flags & IEEE80211_CHAN_FHSS) == IEEE80211_CHAN_FHSS) @@ -151,6 +154,8 @@ (((_c)->ic_flags & IEEE80211_CHAN_G) == IEEE80211_CHAN_G) #define IEEE80211_IS_CHAN_T(_c) \ (((_c)->ic_flags & IEEE80211_CHAN_T) == IEEE80211_CHAN_T) +#define IEEE80211_IS_CHAN_108G(_c) \ + (((_c)->ic_flags & IEEE80211_CHAN_108G) == IEEE80211_CHAN_108G) #define IEEE80211_IS_CHAN_2GHZ(_c) \ (((_c)->ic_flags & IEEE80211_CHAN_2GHZ) != 0) ==== //depot/projects/wifi/sys/net80211/ieee80211.c#8 (text+ko) ==== @@ -57,7 +57,8 @@ "11b", /* IEEE80211_MODE_11B */ "11g", /* IEEE80211_MODE_11G */ "FH", /* IEEE80211_MODE_FH */ - "turbo", /* IEEE80211_MODE_TURBO */ + "turboA", /* IEEE80211_MODE_TURBO_A */ + "turboG", /* IEEE80211_MODE_TURBO_G */ }; /* list of all instances */ @@ -114,7 +115,9 @@ if (IEEE80211_IS_CHAN_FHSS(c)) ic->ic_modecaps |= 1<ic_modecaps |= 1<ic_modecaps |= 1<ic_modecaps |= 1<ic_curmode */ @@ -446,13 +449,16 @@ return EINVAL; } /* - * Turbo mode is an ``option''. Eventually it - * needs to be applied to 11g too. + * Turbo mode is an ``option''. + * XXX does not apply to AUTO */ if (ime->ifm_media & IFM_IEEE80211_TURBO) { - if (newphymode != IEEE80211_MODE_11A) + if (newphymode == IEEE80211_MODE_11A) + newphymode = IEEE80211_MODE_TURBO_A; + else if (newphymode == IEEE80211_MODE_11G) + newphymode = IEEE80211_MODE_TURBO_G; + else return EINVAL; - newphymode = IEEE80211_MODE_TURBO; } /* * Validate requested mode is available. @@ -639,10 +645,14 @@ case IEEE80211_MODE_FH: imr->ifm_active |= IFM_IEEE80211_FH; break; - case IEEE80211_MODE_TURBO: + case IEEE80211_MODE_TURBO_A: imr->ifm_active |= IFM_IEEE80211_11A | IFM_IEEE80211_TURBO; break; + case IEEE80211_MODE_TURBO_G: + imr->ifm_active |= IFM_IEEE80211_11G + | IFM_IEEE80211_TURBO; + break; } } @@ -688,7 +698,8 @@ IEEE80211_CHAN_B, /* IEEE80211_MODE_11B */ IEEE80211_CHAN_PUREG, /* IEEE80211_MODE_11G */ IEEE80211_CHAN_FHSS, /* IEEE80211_MODE_FH */ - IEEE80211_CHAN_T, /* IEEE80211_MODE_TURBO */ + IEEE80211_CHAN_T, /* IEEE80211_MODE_TURBO_A */ + IEEE80211_CHAN_108G, /* IEEE80211_MODE_TURBO_G */ }; struct ieee80211_channel *c; u_int modeflags; @@ -812,8 +823,8 @@ * This assumes all 11a turbo channels are also * usable withut turbo, which is currently true. */ - if (ic->ic_curmode == IEEE80211_MODE_TURBO) - return IEEE80211_MODE_TURBO; + if (ic->ic_curmode == IEEE80211_MODE_TURBO_A) + return IEEE80211_MODE_TURBO_A; return IEEE80211_MODE_11A; } else if (IEEE80211_IS_CHAN_FHSS(chan)) return IEEE80211_MODE_FH; @@ -822,6 +833,8 @@ * This assumes all 11g channels are also usable * for 11b, which is currently true. */ + if (ic->ic_curmode == IEEE80211_MODE_TURBO_G) + return IEEE80211_MODE_TURBO_G; if (ic->ic_curmode == IEEE80211_MODE_11B) return IEEE80211_MODE_11B; return IEEE80211_MODE_11G; @@ -875,7 +888,7 @@ mask = rate & IEEE80211_RATE_VAL; switch (mode) { case IEEE80211_MODE_11A: - case IEEE80211_MODE_TURBO: + case IEEE80211_MODE_TURBO_A: mask |= IFM_IEEE80211_11A; break; case IEEE80211_MODE_11B: @@ -893,6 +906,7 @@ /* NB: hack, 11g matches both 11b+11a rates */ /* fall thru... */ case IEEE80211_MODE_11G: + case IEEE80211_MODE_TURBO_G: mask |= IFM_IEEE80211_11G; break; } From owner-p4-projects@FreeBSD.ORG Tue Nov 16 17:19:29 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E037916A4D1; Tue, 16 Nov 2004 17:19:28 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B92D616A4CE for ; Tue, 16 Nov 2004 17:19:28 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9AAB643D45 for ; Tue, 16 Nov 2004 17:19:28 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAGHJSKG088244 for ; Tue, 16 Nov 2004 17:19:28 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAGHJS2h088241 for perforce@freebsd.org; Tue, 16 Nov 2004 17:19:28 GMT (envelope-from sam@freebsd.org) Date: Tue, 16 Nov 2004 17:19:28 GMT Message-Id: <200411161719.iAGHJS2h088241@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65266 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Nov 2004 17:19:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=65266 Change 65266 by sam@sam_ebb on 2004/11/16 17:19:25 o restore power-save mode capability o import revised false bssid support from netbsd o reduce max aid per netbsd o minor changes to bring code slightly more in line with netbsd Affected files ... .. //depot/projects/wifi/sys/dev/wi/if_wi.c#5 edit .. //depot/projects/wifi/sys/dev/wi/if_wivar.h#3 edit Differences ... ==== //depot/projects/wifi/sys/dev/wi/if_wi.c#5 (text+ko) ==== @@ -310,9 +310,11 @@ ic->ic_ifp = ifp; ic->ic_phytype = IEEE80211_T_DS; ic->ic_opmode = IEEE80211_M_STA; - ic->ic_caps = IEEE80211_C_PMGT | IEEE80211_C_AHDEMO; ic->ic_state = IEEE80211_S_INIT; - ic->ic_caps = IEEE80211_C_WEP; /* everyone supports WEP */ + ic->ic_caps = IEEE80211_C_PMGT + | IEEE80211_C_WEP /* everyone supports WEP */ + ; + ic->ic_max_aid = WI_MAX_AID; /* * Query the card for available channels and setup the @@ -705,8 +707,9 @@ IEEE80211_ADDR_COPY(ic->ic_myaddr, LLADDR(sdl)); wi_write_rid(sc, WI_RID_MAC_NODE, ic->ic_myaddr, IEEE80211_ADDR_LEN); - wi_write_val(sc, WI_RID_PM_ENABLED, - (ic->ic_flags & IEEE80211_F_PMGTON) ? 1 : 0); + if (ic->ic_caps & IEEE80211_C_PMGT) + wi_write_val(sc, WI_RID_PM_ENABLED, + (ic->ic_flags & IEEE80211_F_PMGTON) ? 1 : 0); /* not yet common 802.11 configuration */ wi_write_val(sc, WI_RID_MAX_DATALEN, sc->sc_max_datalen); @@ -848,7 +851,6 @@ sc->sc_tx_timer = 0; sc->sc_scan_timer = 0; - sc->sc_syn_timer = 0; sc->sc_false_syns = 0; sc->sc_naps = 0; ifp->if_flags &= ~(IFF_OACTIVE | IFF_RUNNING); @@ -1057,18 +1059,6 @@ ifp->if_timer = 1; } - if (sc->sc_syn_timer) { - if (--sc->sc_syn_timer == 0) { - struct ieee80211com *ic = (struct ieee80211com *) ifp; - DPRINTF2(("wi_watchdog: %d false syns\n", - sc->sc_false_syns)); - sc->sc_false_syns = 0; - ieee80211_new_state(ic, IEEE80211_S_RUN, -1); - sc->sc_syn_timer = 5; - } - ifp->if_timer = 1; - } - /* TODO: rate control */ ieee80211_watchdog(&sc->sc_ic); } @@ -1253,23 +1243,22 @@ (sc->sc_flags & WI_FLAGS_OUTRANGE) == 0) imr->ifm_status |= IFM_ACTIVE; len = sizeof(val); - if (wi_read_rid(sc, WI_RID_CUR_TX_RATE, &val, &len) != 0) - rate = 0; - else { + if (wi_read_rid(sc, WI_RID_CUR_TX_RATE, &val, &len) == 0 && + len == sizeof(val)) { /* convert to 802.11 rate */ + val = le16toh(val); rate = val * 2; if (sc->sc_firmware_type == WI_LUCENT) { - if (rate == 4 * 2) + if (rate == 10) rate = 11; /* 5.5Mbps */ - else if (rate == 5 * 2) - rate = 22; /* 11Mbps */ } else { if (rate == 4*2) rate = 11; /* 5.5Mbps */ else if (rate == 8*2) rate = 22; /* 11Mbps */ } - } + } else + rate = 0; imr->ifm_active |= ieee80211_rate2media(ic, rate, IEEE80211_MODE_11B); switch (ic->ic_opmode) { case IEEE80211_M_STA: @@ -1307,7 +1296,8 @@ * change-of-BSSID indications. */ if ((ifp->if_flags & IFF_PROMISC) != 0 && - sc->sc_false_syns >= WI_MAX_FALSE_SYNS) + !ppsratecheck(&sc->sc_last_syn, &sc->sc_false_syns, + WI_MAX_FALSE_SYNS)) return; ieee80211_new_state(ic, IEEE80211_S_RUN, -1); @@ -1515,7 +1505,7 @@ * then pass this node (referenced) up to the 802.11 * layer for its use. */ - ni = ieee80211_find_rxnode(ic, wh); + ni = ieee80211_find_rxnode(ic, (struct ieee80211_frame_min *) wh); /* * Send frame up for processing. */ @@ -2687,6 +2677,7 @@ case IEEE80211_S_RUN: sc->sc_flags &= ~WI_FLAGS_OUTRANGE; buflen = IEEE80211_ADDR_LEN; + IEEE80211_ADDR_COPY(old_bssid, ni->ni_bssid); wi_read_rid(sc, WI_RID_CURRENT_BSSID, ni->ni_bssid, &buflen); IEEE80211_ADDR_COPY(ni->ni_macaddr, ni->ni_bssid); buflen = sizeof(val); @@ -2700,10 +2691,9 @@ htole16(ni->ni_chan->ic_flags); #endif - if (IEEE80211_ADDR_EQ(old_bssid, ni->ni_bssid)) - sc->sc_false_syns++; - else - sc->sc_false_syns = 0; + /* If not equal, then discount a false synchronization. */ + if (!IEEE80211_ADDR_EQ(old_bssid, ni->ni_bssid)) + sc->sc_false_syns = MAX(0, sc->sc_false_syns - 1); if (ic->ic_opmode == IEEE80211_M_HOSTAP) { ni->ni_esslen = ic->ic_des_esslen; @@ -2740,8 +2730,8 @@ (void)wi_cmd(sc, WI_CMD_INQUIRE, WI_INFO_SCAN_RESULTS, 0, 0); break; case WI_INTERSIL: - val[0] = chanmask; /* channel */ - val[1] = txrate; /* tx rate */ + val[0] = htole16(chanmask); /* channel */ + val[1] = htole16(txrate); /* tx rate */ error = wi_write_rid(sc, WI_RID_SCAN_REQ, val, sizeof(val)); break; case WI_SYMBOL: ==== //depot/projects/wifi/sys/dev/wi/if_wivar.h#3 (text+ko) ==== @@ -59,6 +59,8 @@ #define WI_RID_ROAMING_MODE 0xFC2D #define WI_RID_CUR_TX_RATE 0xFD44 /* current TX rate */ +#define WI_MAX_AID 256 /* max stations for ap operation */ + struct wi_softc { struct arpcom sc_arp; struct ieee80211com sc_ic; @@ -135,7 +137,6 @@ int sc_txcur; /* index of current TX*/ int sc_tx_timer; int sc_scan_timer; - int sc_syn_timer; struct wi_counters sc_stats; u_int16_t sc_ibss_port; @@ -161,6 +162,7 @@ u_int16_t wi_confbits_param0; } wi_debug; + struct timeval sc_last_syn; int sc_false_syns; u_int16_t sc_txbuf[IEEE80211_MAX_LEN/2]; From owner-p4-projects@FreeBSD.ORG Tue Nov 16 17:21:32 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 598C516A4DA; Tue, 16 Nov 2004 17:21:32 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1B74816A4D7 for ; Tue, 16 Nov 2004 17:21:32 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E4B5343D49 for ; Tue, 16 Nov 2004 17:21:31 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAGHLVA6088365 for ; Tue, 16 Nov 2004 17:21:31 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAGHLVvK088361 for perforce@freebsd.org; Tue, 16 Nov 2004 17:21:31 GMT (envelope-from sam@freebsd.org) Date: Tue, 16 Nov 2004 17:21:31 GMT Message-Id: <200411161721.iAGHLVvK088361@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65268 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Nov 2004 17:21:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=65268 Change 65268 by sam@sam_ebb on 2004/11/16 17:21:01 remove requirement that get chaninfo requests must supply a full-sized data buffer Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#15 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#15 (text+ko) ==== @@ -871,8 +871,6 @@ struct ieee80211req_chaninfo chans; /* XXX off stack? */ int i, space; - if (ireq->i_len != sizeof(chans)) - return EINVAL; /* * Since channel 0 is not available for DS, channel 1 * is assigned to LSB on WaveLAN. From owner-p4-projects@FreeBSD.ORG Tue Nov 16 20:27:19 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 30F0816A4D1; Tue, 16 Nov 2004 20:27:19 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0550416A4CE for ; Tue, 16 Nov 2004 20:27:19 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id AB89443D48 for ; Tue, 16 Nov 2004 20:27:18 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAGKRIQR094387 for ; Tue, 16 Nov 2004 20:27:18 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAGKRINd094384 for perforce@freebsd.org; Tue, 16 Nov 2004 20:27:18 GMT (envelope-from jhb@freebsd.org) Date: Tue, 16 Nov 2004 20:27:18 GMT Message-Id: <200411162027.iAGKRINd094384@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65274 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Nov 2004 20:27:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=65274 Change 65274 by jhb@jhb_slimer on 2004/11/16 20:26:37 IFC @65271. Affected files ... .. //depot/projects/power/sys/dev/acpica/acpi_video.c#5 edit .. //depot/user/jhb/no386/lib/libc/Makefile#3 integrate .. //depot/user/jhb/no386/lib/libc/gen/getnetgrent.c#2 integrate .. //depot/user/jhb/no386/lib/libc/net/rcmd.c#2 integrate .. //depot/user/jhb/no386/lib/libc/rpc/netnamer.c#2 integrate .. //depot/user/jhb/no386/lib/libc/sys/read.2#3 integrate .. //depot/user/jhb/no386/lib/libc/sys/stat.2#2 integrate .. //depot/user/jhb/no386/libexec/rtld-elf/Makefile#3 integrate .. //depot/user/jhb/no386/share/mk/bsd.libnames.mk#2 integrate .. //depot/user/jhb/no386/sys/arm/arm/busdma_machdep.c#3 integrate .. //depot/user/jhb/no386/sys/arm/arm/genassym.c#2 integrate .. //depot/user/jhb/no386/sys/arm/arm/intr.c#2 integrate .. //depot/user/jhb/no386/sys/arm/arm/irq_dispatch.S#2 integrate .. //depot/user/jhb/no386/sys/arm/arm/pmap.c#4 integrate .. //depot/user/jhb/no386/sys/arm/xscale/i80321/i80321.c#2 integrate .. //depot/user/jhb/no386/sys/boot/common/commands.c#3 integrate .. //depot/user/jhb/no386/sys/coda/coda_vnops.c#2 integrate .. //depot/user/jhb/no386/sys/compat/svr4/svr4_filio.c#3 integrate .. //depot/user/jhb/no386/sys/compat/svr4/svr4_misc.c#2 integrate .. //depot/user/jhb/no386/sys/conf/NOTES#3 integrate .. //depot/user/jhb/no386/sys/conf/files#4 integrate .. //depot/user/jhb/no386/sys/conf/files.i386#4 integrate .. //depot/user/jhb/no386/sys/conf/kern.post.mk#3 integrate .. //depot/user/jhb/no386/sys/conf/options#3 integrate .. //depot/user/jhb/no386/sys/dev/acpi_support/acpi_asus.c#1 branch .. //depot/user/jhb/no386/sys/dev/acpi_support/acpi_panasonic.c#1 branch .. //depot/user/jhb/no386/sys/dev/acpi_support/acpi_sony.c#1 branch .. //depot/user/jhb/no386/sys/dev/acpi_support/acpi_toshiba.c#1 branch .. //depot/user/jhb/no386/sys/dev/acpica/acpi_cpu.c#2 integrate .. //depot/user/jhb/no386/sys/dev/acpica/acpi_snc.c#2 delete .. //depot/user/jhb/no386/sys/dev/em/if_em.c#5 integrate .. //depot/user/jhb/no386/sys/dev/mc146818/mc146818reg.h#1 branch .. //depot/user/jhb/no386/sys/dev/md/md.c#3 integrate .. //depot/user/jhb/no386/sys/dev/puc/puc_sbus.c#2 integrate .. //depot/user/jhb/no386/sys/dev/streams/streams.c#2 integrate .. //depot/user/jhb/no386/sys/dev/uart/uart_bus.h#2 integrate .. //depot/user/jhb/no386/sys/dev/uart/uart_core.c#2 integrate .. //depot/user/jhb/no386/sys/dev/uart/uart_dev_ns8250.c#2 integrate .. //depot/user/jhb/no386/sys/dev/uart/uart_subr.c#2 integrate .. //depot/user/jhb/no386/sys/dev/usb/ehci.c#4 integrate .. //depot/user/jhb/no386/sys/dev/usb/ohci.c#3 integrate .. //depot/user/jhb/no386/sys/dev/usb/uhci.c#4 integrate .. //depot/user/jhb/no386/sys/dev/vkbd/vkbd.c#1 branch .. //depot/user/jhb/no386/sys/dev/vkbd/vkbd_var.h#1 branch .. //depot/user/jhb/no386/sys/fs/deadfs/dead_vnops.c#2 integrate .. //depot/user/jhb/no386/sys/fs/devfs/devfs_vnops.c#3 integrate .. //depot/user/jhb/no386/sys/fs/fdescfs/fdesc_vfsops.c#3 integrate .. //depot/user/jhb/no386/sys/fs/fdescfs/fdesc_vnops.c#2 integrate .. //depot/user/jhb/no386/sys/fs/fifofs/fifo_vnops.c#3 integrate .. //depot/user/jhb/no386/sys/fs/hpfs/hpfs_vnops.c#3 integrate .. //depot/user/jhb/no386/sys/fs/msdosfs/msdosfs_vnops.c#3 integrate .. //depot/user/jhb/no386/sys/fs/ntfs/ntfs_vnops.c#3 integrate .. //depot/user/jhb/no386/sys/fs/udf/udf_vnops.c#3 integrate .. //depot/user/jhb/no386/sys/fs/unionfs/union_subr.c#2 integrate .. //depot/user/jhb/no386/sys/fs/unionfs/union_vfsops.c#3 integrate .. //depot/user/jhb/no386/sys/fs/unionfs/union_vnops.c#3 integrate .. //depot/user/jhb/no386/sys/geom/vinum/geom_vinum.h#2 integrate .. //depot/user/jhb/no386/sys/geom/vinum/geom_vinum_raid5.c#2 integrate .. //depot/user/jhb/no386/sys/geom/vinum/geom_vinum_share.c#2 integrate .. //depot/user/jhb/no386/sys/geom/vinum/geom_vinum_share.h#2 integrate .. //depot/user/jhb/no386/sys/geom/vinum/geom_vinum_subr.c#2 integrate .. //depot/user/jhb/no386/sys/gnu/ext2fs/ext2_bmap.c#3 integrate .. //depot/user/jhb/no386/sys/i386/acpica/acpi_asus.c#3 delete .. //depot/user/jhb/no386/sys/i386/acpica/acpi_panasonic.c#3 delete .. //depot/user/jhb/no386/sys/i386/acpica/acpi_toshiba.c#2 delete .. //depot/user/jhb/no386/sys/i386/conf/NOTES#4 integrate .. //depot/user/jhb/no386/sys/ia64/conf/GENERIC.hints#2 integrate .. //depot/user/jhb/no386/sys/isofs/cd9660/cd9660_bmap.c#3 integrate .. //depot/user/jhb/no386/sys/kern/kern_descrip.c#3 integrate .. //depot/user/jhb/no386/sys/kern/kern_event.c#2 integrate .. //depot/user/jhb/no386/sys/kern/kern_exec.c#3 integrate .. //depot/user/jhb/no386/sys/kern/kern_fork.c#3 integrate .. //depot/user/jhb/no386/sys/kern/kern_intr.c#3 integrate .. //depot/user/jhb/no386/sys/kern/kern_sig.c#3 integrate .. //depot/user/jhb/no386/sys/kern/sys_generic.c#2 integrate .. //depot/user/jhb/no386/sys/kern/sys_pipe.c#3 integrate .. //depot/user/jhb/no386/sys/kern/sys_socket.c#2 integrate .. //depot/user/jhb/no386/sys/kern/sysv_sem.c#3 integrate .. //depot/user/jhb/no386/sys/kern/tty.c#4 integrate .. //depot/user/jhb/no386/sys/kern/uipc_syscalls.c#3 integrate .. //depot/user/jhb/no386/sys/kern/vfs_cluster.c#3 integrate .. //depot/user/jhb/no386/sys/kern/vfs_default.c#3 integrate .. //depot/user/jhb/no386/sys/kern/vfs_subr.c#4 integrate .. //depot/user/jhb/no386/sys/kern/vfs_syscalls.c#3 integrate .. //depot/user/jhb/no386/sys/kern/vfs_vnops.c#4 integrate .. //depot/user/jhb/no386/sys/kern/vnode_if.src#3 integrate .. //depot/user/jhb/no386/sys/modules/Makefile#4 integrate .. //depot/user/jhb/no386/sys/modules/acpi/Makefile#3 integrate .. //depot/user/jhb/no386/sys/modules/acpi/acpi_asus/Makefile#2 integrate .. //depot/user/jhb/no386/sys/modules/acpi/acpi_panasonic/Makefile#2 integrate .. //depot/user/jhb/no386/sys/modules/acpi/acpi_sony/Makefile#1 branch .. //depot/user/jhb/no386/sys/modules/acpi/acpi_toshiba/Makefile#2 integrate .. //depot/user/jhb/no386/sys/modules/vkbd/Makefile#1 branch .. //depot/user/jhb/no386/sys/netinet/in.c#2 integrate .. //depot/user/jhb/no386/sys/netinet/ip_divert.c#4 integrate .. //depot/user/jhb/no386/sys/pci/if_sk.c#3 integrate .. //depot/user/jhb/no386/sys/pci/if_skreg.h#3 integrate .. //depot/user/jhb/no386/sys/sys/buf.h#3 integrate .. //depot/user/jhb/no386/sys/sys/filedesc.h#3 integrate .. //depot/user/jhb/no386/sys/sys/vnode.h#4 integrate .. //depot/user/jhb/no386/sys/ufs/ffs/ffs_vfsops.c#4 integrate .. //depot/user/jhb/no386/sys/ufs/ufs/ufs_bmap.c#3 integrate .. //depot/user/jhb/no386/sys/vm/vm_pager.c#3 integrate .. //depot/user/jhb/no386/sys/vm/vnode_pager.c#3 integrate Differences ... ==== //depot/projects/power/sys/dev/acpica/acpi_video.c#5 (text+ko) ==== @@ -1,5 +1,6 @@ /*- * Copyright (c) 2002-2003 Taku YAMAMOTO + * Copyright (c) 2004 Benjamin Close * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,10 +35,33 @@ #include #include #include +#ifdef __i386__ +#include +#endif #include "acpi.h" #include +#ifdef __i386__ +#define USE_DPMS + +/* + * VESA DPMS States + */ +#define DPMS_ON 0x00 +#define DPMS_STANDBY 0x01 +#define DPMS_SUSPEND 0x02 +#define DPMS_OFF 0x04 +#define DPMS_REDUCEDON 0x08 + +#define VBE_DPMS_FUNCTION 0x4F10 +#define VBE_DPMS_GET_SUPPORTED_STATES 0x00 +#define VBE_DPMS_GET_STATE 0x02 +#define VBE_DPMS_SET_STATE 0x01 +#define VBE_MAJORVERSION_MASK 0x0F +#define VBE_MINORVERSION_MASK 0xF0 +#endif + /* ACPI video extension driver. */ struct acpi_video_output { ACPI_HANDLE handle; @@ -63,6 +87,10 @@ ACPI_HANDLE handle; STAILQ_HEAD(, acpi_video_output) vid_outputs; eventhandler_tag vid_pwr_evh; +#ifdef USE_DPMS + int vid_dpms_supported_states; + int vid_dpms_initial_state; +#endif }; /* interfaces */ @@ -71,6 +99,8 @@ static int acpi_video_attach(device_t); static int acpi_video_detach(device_t); static int acpi_video_shutdown(device_t); +static int acpi_video_suspend(device_t); +static int acpi_video_resume(device_t); static void acpi_video_notify_handler(ACPI_HANDLE, UINT32, void *); static void acpi_video_power_profile(void *); static void acpi_video_bind_outputs(struct acpi_video_softc *); @@ -94,6 +124,11 @@ static UINT32 vo_get_device_status(ACPI_HANDLE); static UINT32 vo_query_graphics_state(ACPI_HANDLE); static void vo_set_device_state(ACPI_HANDLE, UINT32); +#ifdef USE_DPMS +static int dpms_get_supported_states(int *); +static int dpms_get_current_state(int *); +static int dpms_set_state(int); +#endif /* events */ #define VID_NOTIFY_SWITCHED 0x80 @@ -141,6 +176,8 @@ DEVMETHOD(device_attach, acpi_video_attach), DEVMETHOD(device_detach, acpi_video_detach), DEVMETHOD(device_shutdown, acpi_video_shutdown), + DEVMETHOD(device_resume, acpi_video_resume), + DEVMETHOD(device_suspend, acpi_video_suspend), { 0, 0 } }; @@ -242,6 +279,13 @@ ACPI_UNLOCK; acpi_video_power_profile(sc); +#ifdef USE_DPMS + if (dpms_get_supported_states(&sc->vid_dpms_supported_states) == 0) + dpms_get_current_state(&sc->vid_dpms_initial_state); + else + sc->vid_dpms_supported_states = -1; +#endif + return (0); } @@ -283,6 +327,32 @@ return (0); } +static int +acpi_video_suspend(device_t dev) +{ + struct acpi_video_softc *sc; + + sc = device_get_softc(dev); +#ifdef USE_DPMS + if (sc->vid_dpms_supported_states != -1) + dpms_set_state(DPMS_OFF); +#endif + return (0); +} + +static int +acpi_video_resume(device_t dev) +{ + struct acpi_video_softc *sc; + + sc = device_get_softc(dev); +#ifdef USE_DPMS + if (sc->vid_dpms_supported_states != -1) + dpms_set_state(sc->vid_dpms_initial_state); +#endif + return (0); +} + static void acpi_video_notify_handler(ACPI_HANDLE handle __unused, UINT32 notify, void *context) { @@ -929,3 +999,48 @@ printf("can't evaluate %s._DSS - %s\n", acpi_name(handle), AcpiFormatException(status)); } + +#ifdef USE_DPMS +static int +dpms_call_bios(int subfunction, int *bh) +{ + struct vm86frame vmf; + int error; + + bzero(&vmf, sizeof(vmf)); + vmf.vmf_ax = VBE_DPMS_FUNCTION; + vmf.vmf_bl = subfunction; + vmf.vmf_bh = *bh; + vmf.vmf_es = 0; + vmf.vmf_di = 0; + error = vm86_intcall(0x10, &vmf); + if (error == 0 && (vmf.vmf_eax & 0xffff) != 0x004f) + error = ENXIO; + if (error == 0) + *bh = vmf.vmf_bh; + return (error); +} + +static int +dpms_get_supported_states(int *states) +{ + + *states = 0; + return (dpms_call_bios(VBE_DPMS_GET_SUPPORTED_STATES, states)); +} + +static int +dpms_get_current_state(int *state) +{ + + *state = 0; + return (dpms_call_bios(VBE_DPMS_GET_STATE, state)); +} + +static int +dpms_set_state(int state) +{ + + return (dpms_call_bios(VBE_DPMS_SET_STATE, &state)); +} +#endif ==== //depot/user/jhb/no386/lib/libc/Makefile#3 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.2 (Berkeley) 2/3/94 -# $FreeBSD: src/lib/libc/Makefile,v 1.54 2004/10/24 15:32:30 ru Exp $ +# $FreeBSD: src/lib/libc/Makefile,v 1.55 2004/11/13 20:40:28 bz Exp $ # # All library objects contain FreeBSD revision strings by default; they may be # excluded as a space-saving measure. To produce a library that does @@ -60,7 +60,7 @@ .if ${MACHINE_ARCH} == "arm" .include "${.CURDIR}/softfloat/Makefile.inc" .endif -.if !defined(NO_YP_LIBC) +.if !defined(NO_NIS) CFLAGS+= -DYP .include "${.CURDIR}/yp/Makefile.inc" .endif ==== //depot/user/jhb/no386/lib/libc/gen/getnetgrent.c#2 (text+ko) ==== @@ -38,7 +38,7 @@ static char sccsid[] = "@(#)getnetgrent.c 8.2 (Berkeley) 4/27/95"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/gen/getnetgrent.c,v 1.31 2004/07/28 11:56:03 des Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/gen/getnetgrent.c,v 1.32 2004/11/13 20:40:28 bz Exp $"); #include #include @@ -202,7 +202,7 @@ return; } #else - if (netf = fopen(_PATH_NETGROUP, "r")) { + if ((netf = fopen(_PATH_NETGROUP, "r"))) { #endif if (parse_netgrp(group)) endnetgrent(); ==== //depot/user/jhb/no386/lib/libc/net/rcmd.c#2 (text+ko) ==== @@ -35,7 +35,7 @@ static char sccsid[] = "@(#)rcmd.c 8.3 (Berkeley) 3/26/94"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/net/rcmd.c,v 1.38 2003/02/18 13:39:52 nectar Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/net/rcmd.c,v 1.39 2004/11/13 20:40:28 bz Exp $"); #include "namespace.h" #include @@ -55,8 +55,8 @@ #include #include #include +#include #ifdef YP -#include #include #include #endif ==== //depot/user/jhb/no386/lib/libc/rpc/netnamer.c#2 (text+ko) ==== @@ -32,7 +32,7 @@ static char sccsid[] = "@(#)netnamer.c 1.13 91/03/11 Copyr 1986 Sun Micro"; #endif #include -__FBSDID("$FreeBSD: src/lib/libc/rpc/netnamer.c,v 1.10 2004/10/16 06:11:35 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/rpc/netnamer.c,v 1.11 2004/11/13 20:40:28 bz Exp $"); /* * netname utility routines convert from unix names to network names and @@ -58,7 +58,9 @@ #include "un-namespace.h" static char *OPSYS = "unix"; +#ifdef YP static char *NETID = "netid.byname"; +#endif static char *NETIDFILE = "/etc/netid"; static int getnetid( char *, char * ); ==== //depot/user/jhb/no386/lib/libc/sys/read.2#3 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)read.2 8.4 (Berkeley) 2/26/94 -.\" $FreeBSD: src/lib/libc/sys/read.2,v 1.27 2004/10/25 13:35:03 yar Exp $ +.\" $FreeBSD: src/lib/libc/sys/read.2,v 1.28 2004/11/15 13:55:33 yar Exp $ .\" .Dd October 16, 2004 .Dt READ 2 @@ -207,7 +207,7 @@ .It Bq Er EFAULT Part of the .Fa iov -points outside the process's allocated address space. +array points outside the process's allocated address space. .El .Pp The ==== //depot/user/jhb/no386/lib/libc/sys/stat.2#2 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)stat.2 8.4 (Berkeley) 5/1/95 -.\" $FreeBSD: src/lib/libc/sys/stat.2,v 1.36 2003/12/10 15:08:41 dds Exp $ +.\" $FreeBSD: src/lib/libc/sys/stat.2,v 1.40 2004/11/15 14:16:31 yar Exp $ .\" -.Dd February 15, 2002 +.Dd November 15, 2004 .Dt STAT 2 .Os .Sh NAME @@ -87,8 +87,26 @@ .In sys/stat.h and into which information is placed concerning the file. .Pp +The fields of +.Vt "struct stat" +related to the file system are as follows: +.Bl -tag -width ".Va st_nlink" +.It Va st_dev +The numeric ID of the device containing the file. +.It Va st_ino +The file's inode number. +.It Va st_nlink +The number of hard links to the file. +.El +.Pp +The +.Va st_dev +and +.Va st_ino +fields together identify the file uniquely within the system. +.Pp The time-related fields of -.Fa struct stat +.Vt "struct stat" are as follows: .Bl -tag -width ".Va st_birthtime" .It Va st_atime @@ -150,15 +168,29 @@ The size-related fields of the .Vt "struct stat" are as follows: -.Bl -tag -width XXXst_blksize -.It st_blksize +.Bl -tag -width ".Va st_blksize" +.It Va st_size +The file size in bytes. +.It Va st_blksize The optimal I/O block size for the file. -.It st_blocks +.It Va st_blocks The actual number of blocks allocated for the file in 512-byte units. As short symbolic links are stored in the inode, this number may be zero. .El .Pp +The access-related fields of +.Vt "struct stat" +are as follows: +.Bl -tag -width ".Va st_mode" +.It Va st_uid +The user ID of the file's owner. +.It Va st_gid +The group ID of the file. +.It Va st_mode +Status of the file (see below). +.El +.Pp The status information word .Fa st_mode has the following bits: @@ -185,18 +217,44 @@ .Xr access 2 and .Xr chmod 2 . +The following macros are available to test whether a +.Va st_mode +value passed in the +.Ar m +argument corresponds to a file of the specified type: +.Bl -tag -width ".Fn S_ISFIFO m" +.It Fn S_ISBLK m +Test for a block special file. +.It Fn S_ISCHR m +Test for a character special file. +.It Fn S_ISDIR m +Test for a directory. +.It Fn S_ISFIFO m +Test for a pipe or FIFO special file. +.It Fn S_ISLNK m +Test for a symbolic link. +.It Fn S_ISREG m +Test for a regular file. +.It Fn S_ISSOCK m +Test for a socket. +.It Fn S_ISWHT m +Test for a whiteout. +.El +.Pp +The macros evaluate to a non-zero value if the test is true +or to the value 0 if the test is false. .Sh RETURN VALUES .Rv -std .Sh COMPATIBILITY Previous versions of the system used different types for the -.Li st_dev , -.Li st_uid , -.Li st_gid , -.Li st_rdev , -.Li st_size , -.Li st_blksize +.Va st_dev , +.Va st_uid , +.Va st_gid , +.Va st_rdev , +.Va st_size , +.Va st_blksize and -.Li st_blocks +.Va st_blocks fields. .Sh ERRORS The ==== //depot/user/jhb/no386/libexec/rtld-elf/Makefile#3 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/libexec/rtld-elf/Makefile,v 1.33 2004/11/03 18:01:19 ru Exp $ +# $FreeBSD: src/libexec/rtld-elf/Makefile,v 1.36 2004/11/14 22:18:31 ru Exp $ PROG?= ld-elf.so.1 SRCS= rtld_start.S \ @@ -48,7 +48,9 @@ # Since moving rtld-elf to /libexec, we need to create a symlink. # Fixup the existing binary that's there so we can symlink over it. beforeinstall: +.if exists(${DESTDIR}/usr/libexec/${PROG}) -chflags noschg ${DESTDIR}/usr/libexec/${PROG} +.endif .PATH: ${.CURDIR}/${MACHINE_ARCH} ==== //depot/user/jhb/no386/share/mk/bsd.libnames.mk#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/share/mk/bsd.libnames.mk,v 1.90 2004/09/24 22:10:34 trhodes Exp $ +# $FreeBSD: src/share/mk/bsd.libnames.mk,v 1.91 2004/11/13 20:40:32 bz Exp $ # The include file define library names. # Other include files (e.g. bsd.prog.mk, bsd.lib.mk) include this @@ -97,13 +97,17 @@ MINUSLPAM+= -lkrb5 -lasn1 -lcrypto -lcrypt -lroken -lcom_err .endif LIBPAM+= ${LIBRADIUS} ${LIBTACPLUS} ${LIBCRYPT} \ - ${LIBUTIL} ${LIBOPIE} ${LIBMD} ${LIBYPCLNT} + ${LIBUTIL} ${LIBOPIE} ${LIBMD} MINUSLPAM+= -lradius -ltacplus -lcrypt \ - -lutil -lopie -lmd -lypclnt + -lutil -lopie -lmd .if !defined(NO_OPENSSH) && !defined(NOCRYPT) && !defined(NO_OPENSSL) LIBPAM+= ${LIBSSH} ${LIBCRYPTO} ${LIBCRYPT} MINUSLPAM+= -lssh -lcrypto -lcrypt .endif +.if !defined(NO_NIS) +LIBPAM+= ${LIBYPCLNT} +MINUSLPAM+= -lypclnt +.endif .endif LIBPANEL?= ${DESTDIR}${LIBDIR}/libpanel.a ==== //depot/user/jhb/no386/sys/arm/arm/busdma_machdep.c#3 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.5 2004/10/21 11:59:33 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.7 2004/11/16 00:57:44 cognet Exp $"); /* * MacPPC bus dma support routines @@ -97,11 +97,10 @@ * Check to see if the specified page is in an allowed DMA range. */ -static int +static __inline int bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dma_segment_t segs[], - bus_dmamap_t map, void *buf, bus_size_t buflen, struct thread *td, - int flags, vm_offset_t *lastaddrp, int *segp, - int first); + bus_dmamap_t map, void *buf, bus_size_t buflen, struct pmap *pmap, + int flags, vm_offset_t *lastaddrp, int *segp); static __inline struct arm32_dma_range * _bus_dma_inrange(struct arm32_dma_range *ranges, int nranges, @@ -367,7 +366,7 @@ void *callback_arg, int flags) { vm_offset_t lastaddr = 0; - int error, nsegs = 0; + int error, nsegs = -1; #ifdef __GNUC__ bus_dma_segment_t dm_segments[dmat->nsegments]; #else @@ -379,8 +378,8 @@ map->buffer = buf; map->len = buflen; error = bus_dmamap_load_buffer(dmat, - dm_segments, map, buf, buflen, NULL, - flags, &lastaddr, &nsegs, 1); + dm_segments, map, buf, buflen, kernel_pmap, + flags, &lastaddr, &nsegs); if (error) (*callback)(callback_arg, NULL, 0, error); else @@ -395,27 +394,20 @@ * the starting segment on entrance, and the ending segment on exit. * first indicates if this is the first invocation of this function. */ -static int +static int __inline bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dma_segment_t segs[], - bus_dmamap_t map, void *buf, bus_size_t buflen, struct thread *td, - int flags, vm_offset_t *lastaddrp, int *segp, - int first) + bus_dmamap_t map, void *buf, bus_size_t buflen, struct pmap *pmap, + int flags, vm_offset_t *lastaddrp, int *segp) { bus_size_t sgsize; bus_addr_t curaddr, lastaddr, baddr, bmask; vm_offset_t vaddr = (vm_offset_t)buf; int seg; int error = 0; - pmap_t pmap; pd_entry_t *pde; pt_entry_t pte; pt_entry_t *ptep; - if (td != NULL) - pmap = vmspace_pmap(td->td_proc->p_vmspace); - else - pmap = pmap_kernel(); - lastaddr = *lastaddrp; bmask = ~(dmat->boundary - 1); @@ -496,27 +488,19 @@ * Insert chunk into a segment, coalescing with * the previous segment if possible. */ - if (first) { + if (seg >= 0 && curaddr == lastaddr && + (segs[seg].ds_len + sgsize) <= dmat->maxsegsz && + (dmat->boundary == 0 || + (segs[seg].ds_addr & bmask) == + (curaddr & bmask))) { + segs[seg].ds_len += sgsize; + goto segdone; + } else { + if (++seg >= dmat->nsegments) + break; segs[seg].ds_addr = curaddr; segs[seg].ds_len = sgsize; - first = 0; - } else { - if (curaddr == lastaddr && - (segs[seg].ds_len + sgsize) <= dmat->maxsegsz && - (dmat->boundary == 0 || - (segs[seg].ds_addr & bmask) == - (curaddr & bmask))) { - segs[seg].ds_len += sgsize; - goto segdone; - } - else { - if (++seg >= dmat->nsegments) - break; - segs[seg].ds_addr = curaddr; - segs[seg].ds_len = sgsize; - } } - if (error) break; segdone: @@ -549,7 +533,7 @@ #else bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS]; #endif - int nsegs = 0, error = 0; + int nsegs = -1, error = 0; M_ASSERTPKTHDR(m0); @@ -557,17 +541,14 @@ map->flags |= DMAMAP_MBUF | DMAMAP_COHERENT; map->buffer = m0; if (m0->m_pkthdr.len <= dmat->maxsize) { - int first = 1; vm_offset_t lastaddr = 0; struct mbuf *m; for (m = m0; m != NULL && error == 0; m = m->m_next) { - if (m->m_len > 0) { + if (m->m_len > 0) error = bus_dmamap_load_buffer(dmat, - dm_segments, map, m->m_data, m->m_len, NULL, - flags, &lastaddr, &nsegs, first); - first = 0; - } + dm_segments, map, m->m_data, m->m_len, + pmap_kernel(), flags, &lastaddr, &nsegs); } } else { error = EINVAL; @@ -599,10 +580,10 @@ #else bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS]; #endif - int nsegs, i, error, first; + int nsegs, i, error; bus_size_t resid; struct iovec *iov; - struct thread *td = NULL; + struct pmap *pmap; resid = uio->uio_resid; iov = uio->uio_iov; @@ -611,13 +592,14 @@ map->buffer = uio; if (uio->uio_segflg == UIO_USERSPACE) { - td = uio->uio_td; + pmap = vmspace_pmap(uio->uio_td->td_proc->p_vmspace); KASSERT(td != NULL, ("bus_dmamap_load_uio: USERSPACE but no proc")); - } + } else + pmap = kernel_pmap; - first = 1; - nsegs = error = 0; + error = 0; + nsegs = -1; for (i = 0; i < uio->uio_iovcnt && resid != 0 && !error; i++) { /* * Now at the first iovec to load. Load each iovec @@ -629,9 +611,7 @@ if (minlen > 0) { error = bus_dmamap_load_buffer(dmat, dm_segments, map, - addr, minlen, td, flags, &lastaddr, &nsegs, first); - - first = 0; + addr, minlen, pmap, flags, &lastaddr, &nsegs); resid -= minlen; } ==== //depot/user/jhb/no386/sys/arm/arm/genassym.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/genassym.c,v 1.2 2004/09/23 22:11:06 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/genassym.c,v 1.3 2004/11/12 21:49:05 cognet Exp $"); #include #include #include @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -109,3 +110,6 @@ ASSYM(P_SIGEVENT, P_SIGEVENT); ASSYM(P_PROFIL, P_PROFIL); ASSYM(TRAPFRAMESIZE, sizeof(struct trapframe)); + +ASSYM(MAXCOMLEN, MAXCOMLEN); +ASSYM(NIRQ, NIRQ); ==== //depot/user/jhb/no386/sys/arm/arm/intr.c#2 (text+ko) ==== @@ -37,7 +37,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.3 2004/09/23 22:09:57 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/intr.c,v 1.4 2004/11/12 21:49:05 cognet Exp $"); #include #include #include @@ -50,7 +50,10 @@ #include #include -struct ithd *ithreads[NIRQ]; +static struct ithd *ithreads[NIRQ]; +static int intrcnt_tab[NIRQ]; +static int intrcnt_index = 0; +static int last_printed = 0; struct arm_intr { driver_intr_t *handler; void *arg; @@ -69,7 +72,8 @@ void arm_handler_execute(void *, int); -void arm_setup_irqhandler(const char *name, void (*hand)(void*), void *arg, +void +arm_setup_irqhandler(const char *name, void (*hand)(void*), void *arg, int irq, int flags, void **cookiep) { struct ithd *cur_ith; @@ -87,6 +91,14 @@ if (error) return; ithreads[irq] = cur_ith; + last_printed += + snprintf(intrnames + last_printed, + MAXCOMLEN + 1, + "irq%d: %s", irq, name); + last_printed++; + intrcnt_tab[irq] = intrcnt_index; + intrcnt_index++; + } if (!(flags & INTR_FAST)) { intr->handler = hand; @@ -120,6 +132,7 @@ arm_mask_irqs(irqnb); while (irqnb != 0) { i = ffs(irqnb) - 1; + intrcnt[intrcnt_tab[i]]++; irqnb &= ~(1U << i); ithd = ithreads[i]; if (!ithd) ==== //depot/user/jhb/no386/sys/arm/arm/irq_dispatch.S#2 (text+ko) ==== @@ -72,7 +72,7 @@ #include #include #include -__FBSDID("$FreeBSD: src/sys/arm/arm/irq_dispatch.S,v 1.2 2004/09/23 22:09:57 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/irq_dispatch.S,v 1.3 2004/11/12 21:49:05 cognet Exp $"); /* * irq_entry: @@ -102,18 +102,13 @@ .align 0 - /* - * XXX Provide intrnames/intrcnt for legacy code, but - * don't actually use them. - */ - .global _C_LABEL(intrnames), _C_LABEL(eintrnames) .global _C_LABEL(intrcnt), _C_LABEL(eintrcnt) _C_LABEL(intrnames): + .space NIRQ * (MAXCOMLEN + 1) _C_LABEL(eintrnames): - - .global _C_LABEL(intrcnt), _C_LABEL(sintrcnt), _C_LABEL(eintrcnt) _C_LABEL(intrcnt): + .space NIRQ * 4 _C_LABEL(eintrcnt): .global _C_LABEL(current_intr_depth) ==== //depot/user/jhb/no386/sys/arm/arm/pmap.c#4 (text+ko) ==== @@ -147,7 +147,7 @@ #include "opt_vm.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.17 2004/11/10 22:11:08 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/pmap.c,v 1.19 2004/11/13 14:54:31 cognet Exp $"); #include #include #include @@ -1668,6 +1668,8 @@ simple_unlock(&pg->mdpage.pvh_slock); PMAP_HEAD_TO_MAP_UNLOCK(); #endif + if (maskbits & PVF_WRITE) + vm_page_flag_clear(pg, PG_WRITEABLE); return (count); } @@ -1789,6 +1791,8 @@ pg->md.urw_mappings--; else pg->md.uro_mappings--; + if (TAILQ_FIRST(&pg->md.pv_list) == NULL) + vm_page_flag_clear(pg, PG_WRITEABLE); } static struct pv_entry * @@ -1921,9 +1925,6 @@ pvzone = uma_zcreate("PV ENTRY", sizeof (struct pv_entry), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); uma_prealloc(pvzone, MINPV); - l2table_zone = uma_zcreate("L2 Table", sizeof(struct l2_dtable), - NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, - UMA_ZONE_VM | UMA_ZONE_NOFREE); /* * Now it is safe to enable pv_table recording. */ @@ -2173,6 +2174,11 @@ l2zone = uma_zcreate("L2 Table", L2_TABLE_SIZE_REAL, pmap_l2ptp_ctor, NULL, NULL, NULL, UMA_ALIGN_PTR, UMA_ZONE_VM | UMA_ZONE_NOFREE); uma_prealloc(l2zone, 4096); + l2table_zone = uma_zcreate("L2 Table", sizeof(struct l2_dtable), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, + UMA_ZONE_VM | UMA_ZONE_NOFREE); + uma_prealloc(l2table_zone, 1024); + uma_zone_set_obj(pvzone, &pvzone_obj, pv_entry_max); uma_zone_set_obj(l2zone, &l2zone_obj, pv_entry_max); @@ -3689,6 +3695,7 @@ pmap_acquire_pmap_lock(pm); #endif + vm_page_lock_queues(); pmap_update(pm); if (!pmap_is_current(pm)) { cleanlist_idx = PMAP_REMOVE_CLEAN_LIST_SIZE + 1; @@ -3845,6 +3852,7 @@ pmap_free_l2_bucket(pm, l2b, mappings); } + vm_page_unlock_queues(); if (flushall) cpu_tlb_flushID(); #if 0 ==== //depot/user/jhb/no386/sys/arm/xscale/i80321/i80321.c#2 (text+ko) ==== @@ -40,7 +40,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321.c,v 1.1 2004/09/23 22:45:36 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/i80321.c,v 1.2 2004/11/13 15:12:26 cognet Exp $"); #include #include @@ -146,7 +146,6 @@ bus_space_write_4(sc->sc_st, sc->sc_atu_sh, ATU_IALR2, (0xffffffff - (sc->sc_iwin[2].iwin_size - 1)) & 0xffffffc0); - printf("size : %d\n", (sc->sc_iwin[2].iwin_size - 1) / (1024 * 1024)); bus_space_write_4(sc->sc_st, sc->sc_atu_sh, ATU_IATVR2, sc->sc_iwin[2].iwin_xlate); ==== //depot/user/jhb/no386/sys/boot/common/commands.c#3 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/boot/common/commands.c,v 1.21 2004/11/12 13:27:49 ru Exp $"); +__FBSDID("$FreeBSD: src/sys/boot/common/commands.c,v 1.22 2004/11/13 17:04:55 ru Exp $"); #include #include @@ -312,7 +312,7 @@ return(CMD_OK); } -COMMAND_SET(echo, "echo", NULL, command_echo); +COMMAND_SET(echo, "echo", "echo arguments", command_echo); static int command_echo(int argc, char *argv[]) @@ -351,7 +351,7 @@ * A passable emulation of the sh(1) command of the same name. */ -COMMAND_SET(read, "read", NULL, command_read); +COMMAND_SET(read, "read", "read input from the terminal", command_read); static int command_read(int argc, char *argv[]) ==== //depot/user/jhb/no386/sys/coda/coda_vnops.c#2 (text+ko) ==== >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Tue Nov 16 21:41:21 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 48DD916A4D1; Tue, 16 Nov 2004 21:41:21 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0BC4316A4CE for ; Tue, 16 Nov 2004 21:41:21 +0000 (GMT) Received: from mail6.speakeasy.net (mail6.speakeasy.net [216.254.0.206]) by mx1.FreeBSD.org (Postfix) with ESMTP id C3F5643D1F for ; Tue, 16 Nov 2004 21:41:20 +0000 (GMT) (envelope-from jhb@FreeBSD.org) Received: (qmail 14635 invoked from network); 16 Nov 2004 21:41:20 -0000 Received: from dsl027-160-063.atl1.dsl.speakeasy.net (HELO server.baldwin.cx) ([216.27.160.63]) (envelope-sender ) encrypted SMTP for ; 16 Nov 2004 21:41:19 -0000 Received: from [10.50.41.235] (gw1.twc.weather.com [216.133.140.1]) (authenticated bits=0) by server.baldwin.cx (8.12.11/8.12.11) with ESMTP id iAGLfGwt084724; Tue, 16 Nov 2004 16:41:16 -0500 (EST) (envelope-from jhb@FreeBSD.org) From: John Baldwin To: David Xu Date: Tue, 16 Nov 2004 16:00:33 -0500 User-Agent: KMail/1.6.2 References: <200411140513.iAE5DOTv056478@repoman.freebsd.org> <200411151318.49415.jhb@FreeBSD.org> <41993EAB.3030108@freebsd.org> In-Reply-To: <41993EAB.3030108@freebsd.org> MIME-Version: 1.0 Content-Disposition: inline Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <200411161600.33252.jhb@FreeBSD.org> X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on server.baldwin.cx cc: Perforce Change Reviews Subject: Re: PERFORCE change 65074 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Nov 2004 21:41:22 -0000 On Monday 15 November 2004 06:41 pm, David Xu wrote: > John Baldwin wrote: > >On Sunday 14 November 2004 12:13 am, David Xu wrote: > >>http://perforce.freebsd.org/chv.cgi?CH=65074 > >> > >>Change 65074 by davidxu@davidxu_alona on 2004/11/14 05:12:40 > >> > >> 1. Fix a race between signal and umtx_unlock. a waiter > >> may be resumed by signal and left or exited, heavily > >> loaded test causes kernel to crash. > >> 2. Use distributed queue locks instead of single giant > >> lock. > >> > >>Affected files ... > >> > >>.. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 edit > >> > >>Differences ... > >> > >>==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 (text+ko) > >>==== > >> > >>@@ -49,25 +49,48 @@ > >> pid_t uq_pid; /* Pid key component. */ > >> }; > >> > >> #define UMTX_QUEUES 128 > >> #define UMTX_HASH(pid, umtx) \ > >>- (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES) > >>+ ((((uintptr_t)pid << 16) + ((uintptr_t)umtx & 65535)) % UMTX_QUEUES) > > > >I'm curious why you changed the hash macro here? Low order bits of > > pointers tend to be zero due to alignment, so I think this will result in > > fewer "useful" bits and more collisions and longer chains. > > FYI, I changed back to original hash code: > I simulate it under userland: > > printf("thread lock: %p hash=%d\n", &thread->lock, > ((getpid() + ((unsigned)(&thread->lock) & ~0xFFFF))) % 128); > > get result: > > thread lock: 0x804e014 hash=39 > thread lock: 0x8053014 hash=39 > thread lock: 0x8056014 hash=39 > thread lock: 0x805a014 hash=39 > thread lock: 0x805d014 hash=39 > thread lock: 0x8060014 hash=39 > thread lock: 0x8063014 hash=39 > thread lock: 0x8067014 hash=39 > thread lock: 0x806a014 hash=39 > thread lock: 0x806d014 hash=39 > thread lock: 0x8070014 hash=39 > > So my version put all locks on chain 0, the orignal version put all > locks on chain 39. :( Both seem bad algorithm. > Note it is my private version of libpthread using thr and umtx, > 1:1 only. Humm, try changing the hash to not mask off bits from the umtx pointer. The pid is useful because if locks are allocated at the same address in different processes (e.g. if you run the same program N times) it will keep them from all colliding, but if you mask off all the bits with only 128 queues it will currently stick all locks from a process on the same queue. Maybe use something similar to the 4BSD sleep queue hash (still used in subr_sleepqueue.c) that looks like: /* * Constants for the hash table of sleep queue chains. These constants are * the same ones that 4BSD (and possibly earlier versions of BSD) used. * Basically, we ignore the lower 8 bits of the address since most wait * channel pointers are aligned and only look at the next 7 bits for the * hash. SC_TABLESIZE must be a power of two for SC_MASK to work properly. */ #define SC_TABLESIZE 128 /* Must be power of 2. */ #define SC_MASK (SC_TABLESIZE - 1) #define SC_SHIFT 8 #define SC_HASH(wc) (((uintptr_t)(wc) >> SC_SHIFT) & SC_MASK) #define SC_LOOKUP(wc) &sleepq_chains[SC_HASH(wc)] So maybe use something like: #define UMTX_HASH(pid, umtx) \ (((uintptr_t)(umtx) >> 8 + (uintptr_t)pid) % UMTX_QUEUES) -- John Baldwin <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org From owner-p4-projects@FreeBSD.ORG Wed Nov 17 00:01:46 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1971816A4FB; Wed, 17 Nov 2004 00:01:46 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A979516A4F0; Wed, 17 Nov 2004 00:01:45 +0000 (GMT) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8CA8543D41; Wed, 17 Nov 2004 00:01:45 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from [127.0.0.1] (davidxu@localhost [127.0.0.1]) iAH01hOO084838; Wed, 17 Nov 2004 00:01:44 GMT (envelope-from davidxu@freebsd.org) Message-ID: <419A94E7.1080908@freebsd.org> Date: Wed, 17 Nov 2004 08:01:43 +0800 From: David Xu User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.7.2) Gecko/20040921 X-Accept-Language: en-us, en MIME-Version: 1.0 To: John Baldwin References: <200411140513.iAE5DOTv056478@repoman.freebsd.org> <200411151318.49415.jhb@FreeBSD.org> <41993EAB.3030108@freebsd.org> <200411161600.33252.jhb@FreeBSD.org> In-Reply-To: <200411161600.33252.jhb@FreeBSD.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit cc: Perforce Change Reviews Subject: Re: PERFORCE change 65074 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 00:01:46 -0000 John Baldwin wrote: >On Monday 15 November 2004 06:41 pm, David Xu wrote: > > >>John Baldwin wrote: >> >> >>>On Sunday 14 November 2004 12:13 am, David Xu wrote: >>> >>> >>>>http://perforce.freebsd.org/chv.cgi?CH=65074 >>>> >>>>Change 65074 by davidxu@davidxu_alona on 2004/11/14 05:12:40 >>>> >>>> 1. Fix a race between signal and umtx_unlock. a waiter >>>> may be resumed by signal and left or exited, heavily >>>> loaded test causes kernel to crash. >>>> 2. Use distributed queue locks instead of single giant >>>> lock. >>>> >>>>Affected files ... >>>> >>>>.. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 edit >>>> >>>>Differences ... >>>> >>>>==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#4 (text+ko) >>>>==== >>>> >>>>@@ -49,25 +49,48 @@ >>>> pid_t uq_pid; /* Pid key component. */ >>>>}; >>>> >>>>#define UMTX_QUEUES 128 >>>>#define UMTX_HASH(pid, umtx) \ >>>>- (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES) >>>>+ ((((uintptr_t)pid << 16) + ((uintptr_t)umtx & 65535)) % UMTX_QUEUES) >>>> >>>> >>>I'm curious why you changed the hash macro here? Low order bits of >>>pointers tend to be zero due to alignment, so I think this will result in >>>fewer "useful" bits and more collisions and longer chains. >>> >>> >>FYI, I changed back to original hash code: >>I simulate it under userland: >> >>printf("thread lock: %p hash=%d\n", &thread->lock, >> ((getpid() + ((unsigned)(&thread->lock) & ~0xFFFF))) % 128); >> >>get result: >> >>thread lock: 0x804e014 hash=39 >>thread lock: 0x8053014 hash=39 >>thread lock: 0x8056014 hash=39 >>thread lock: 0x805a014 hash=39 >>thread lock: 0x805d014 hash=39 >>thread lock: 0x8060014 hash=39 >>thread lock: 0x8063014 hash=39 >>thread lock: 0x8067014 hash=39 >>thread lock: 0x806a014 hash=39 >>thread lock: 0x806d014 hash=39 >>thread lock: 0x8070014 hash=39 >> >>So my version put all locks on chain 0, the orignal version put all >>locks on chain 39. :( Both seem bad algorithm. >>Note it is my private version of libpthread using thr and umtx, >>1:1 only. >> >> > >Humm, try changing the hash to not mask off bits from the umtx pointer. The >pid is useful because if locks are allocated at the same address in different >processes (e.g. if you run the same program N times) it will keep them from >all colliding, but if you mask off all the bits with only 128 queues it will >currently stick all locks from a process on the same queue. Maybe use >something similar to the 4BSD sleep queue hash (still used in >subr_sleepqueue.c) that looks like: > >/* > * Constants for the hash table of sleep queue chains. These constants are > * the same ones that 4BSD (and possibly earlier versions of BSD) used. > * Basically, we ignore the lower 8 bits of the address since most wait > * channel pointers are aligned and only look at the next 7 bits for the > * hash. SC_TABLESIZE must be a power of two for SC_MASK to work properly. > */ >#define SC_TABLESIZE 128 /* Must be power of 2. */ >#define SC_MASK (SC_TABLESIZE - 1) >#define SC_SHIFT 8 >#define SC_HASH(wc) (((uintptr_t)(wc) >> SC_SHIFT) & SC_MASK) >#define SC_LOOKUP(wc) &sleepq_chains[SC_HASH(wc)] > >So maybe use something like: > >#define UMTX_HASH(pid, umtx) \ > (((uintptr_t)(umtx) >> 8 + (uintptr_t)pid) % UMTX_QUEUES) > > > I t looks better, but I found with few locks, it still has two or more locks on same chain. I am thinking that we can use some code like this: char *p = &(umtx_p); unsigned k = 0; k = ((k << 2) + k) + p[0]; k = ((k << 2) + k) + p[1]; k = ((k << 2) + k) + p[2]; k = ((k << 2) + k) + p[3]; The above code multiplicates k by 5 (prime number), and add one byte from umtx pointer. I found all umtxes are now well distributed in hash table. I only calculate the hash number once in umtx_lock or umtx_unlock, not like current it repeatly calculates it in loop. David From owner-p4-projects@FreeBSD.ORG Wed Nov 17 00:56:49 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4DC8816A4D1; Wed, 17 Nov 2004 00:56:49 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 09F3516A4CE for ; Wed, 17 Nov 2004 00:56:49 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C603A43D1D for ; Wed, 17 Nov 2004 00:56:48 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAH0umo1017320 for ; Wed, 17 Nov 2004 00:56:48 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAH0umjZ017317 for perforce@freebsd.org; Wed, 17 Nov 2004 00:56:48 GMT (envelope-from sam@freebsd.org) Date: Wed, 17 Nov 2004 00:56:48 GMT Message-Id: <200411170056.iAH0umjZ017317@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65287 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 00:56:49 -0000 http://perforce.freebsd.org/chv.cgi?CH=65287 Change 65287 by sam@sam_ebb on 2004/11/17 00:56:44 ap-side power save support; still needs some tweaking in the handling of multicast frames and cleanup for devices that aren't capable Affected files ... .. //depot/projects/wifi/sys/dev/ath/if_ath.c#23 edit .. //depot/projects/wifi/sys/dev/ath/if_athvar.h#7 edit .. //depot/projects/wifi/sys/net80211/ieee80211_freebsd.h#5 edit .. //depot/projects/wifi/sys/net80211/ieee80211_input.c#14 edit .. //depot/projects/wifi/sys/net80211/ieee80211_ioctl.h#9 edit .. //depot/projects/wifi/sys/net80211/ieee80211_node.c#16 edit .. //depot/projects/wifi/sys/net80211/ieee80211_output.c#9 edit .. //depot/projects/wifi/sys/net80211/ieee80211_proto.h#6 edit .. //depot/projects/wifi/sys/net80211/ieee80211_var.h#11 edit Differences ... ==== //depot/projects/wifi/sys/dev/ath/if_ath.c#23 (text+ko) ==== @@ -132,6 +132,8 @@ struct ieee80211_node *ni, int subtype, int rssi, u_int32_t rstamp); static void ath_rx_proc(void *, int); +static struct ath_txq *ath_txq_setup(struct ath_softc *, int qtype, + int subtype, const char *typename); static int ath_tx_setup(struct ath_softc *, int, int); static int ath_tx_start(struct ath_softc *, struct ieee80211_node *, struct ath_buf *, struct mbuf *); @@ -375,6 +377,12 @@ error = EIO; goto bad2; } + sc->sc_cabq = ath_txq_setup(sc, HAL_TX_QUEUE_CAB, 0, "CAB"); + if (sc->sc_cabq == NULL) { + if_printf(ifp, "unable to setup CAB xmit queue!\n"); + error = EIO; + goto bad2; + } (void) ath_hal_getnumtxqueues(ah, &numqs); if (numqs < 5) { int qnum; @@ -405,9 +413,11 @@ } /* - * Special case certain configurations. + * Special case certain configurations. Note the + * CAB queue is handled by these specially so don't + * include them when checking the txq setup mask. */ - switch (sc->sc_txqsetup) { + switch (sc->sc_txqsetup &~ (1<sc_cabq->axq_qnum)) { case 0x01: TASK_INIT(&sc->sc_txtask, 0, ath_tx_proc_q0, sc); break; @@ -997,6 +1007,7 @@ struct ath_buf *bf; struct mbuf *m; struct ieee80211_frame *wh; + struct ether_header *eh; if ((ifp->if_flags & IFF_RUNNING) == 0 || sc->sc_invalid) return; @@ -1042,12 +1053,38 @@ ATH_TXBUF_UNLOCK(sc); break; } + /* + * Find the node for the destination so we can do + * things like power save and fast frames aggregation. + */ + if (m->m_len < sizeof(struct ether_header) && + (m = m_pullup(m, sizeof(struct ether_header))) == NULL) { + ic->ic_stats.is_tx_nobuf++; /* XXX */ + ni = NULL; + goto bad; + } + eh = mtod(m, struct ether_header *); + ni = ieee80211_find_txnode(ic, eh->ether_dhost); + if (ni == NULL) { + /* NB: ieee80211_find_txnode does stat+msg */ + goto bad; + } + if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) && + (m->m_flags & M_PWR_SAV) == 0) { + /* + * Station in power save mode; pass the frame + * to the 802.11 layer and continue. We'll get + * the frame back when the time is right. + */ + ieee80211_pwrsave(ic, ni, m); + goto reclaim; + } ifp->if_opackets++; BPF_MTAP(ifp, m); /* * Encapsulate the packet in prep for transmission. */ - m = ieee80211_encap(ic, m, &ni); + m = ieee80211_encap(ic, m, ni); if (m == NULL) { DPRINTF(sc, ATH_DEBUG_ANY, "%s: encapsulation failure\n", @@ -1066,6 +1103,12 @@ * to pass it along. */ ni = (struct ieee80211_node *) m->m_pkthdr.rcvif; + if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) && + (m->m_flags & M_PWR_SAV) == 0) { + ieee80211_pwrsave(ic, ni, m); + ni = NULL; /* keep reference */ + goto reclaim; + } m->m_pkthdr.rcvif = NULL; wh = mtod(m, struct ieee80211_frame *); @@ -1087,10 +1130,11 @@ if (ath_tx_start(sc, ni, bf, m)) { bad: + ifp->if_oerrors++; + reclaim: ATH_TXBUF_LOCK(sc); STAILQ_INSERT_TAIL(&sc->sc_txbuf, bf, bf_list); ATH_TXBUF_UNLOCK(sc); - ifp->if_oerrors++; if (ni != NULL) ieee80211_free_node(ni); continue; @@ -1734,6 +1778,7 @@ struct ath_buf *bf = sc->sc_bcbuf; struct ath_hal *ah = sc->sc_ah; struct mbuf *m; + int ncabq; DPRINTF(sc, ATH_DEBUG_BEACON_PROC, "%s: pending %u\n", __func__, pending); @@ -1747,21 +1792,19 @@ } /* - * Update dynamic beacon contents. If this returns non-zero - * then we need to update the descriptor state because the - * beacon frame changed size and/or was re-allocated. + * Update dynamic beacon contents. If this returns + * non-zero then we need to update the descriptor + * state because the beacon frame changed size + * (probably because of the TIM bitmap). */ m = bf->bf_m; - if (ieee80211_beacon_update(ic, bf->bf_node, &sc->sc_boff, &m)) { - /* NB: the old mbuf is free'd */ + ncabq = sc->sc_cabq->axq_depth; /* XXX check h/w queue */ + if (ieee80211_beacon_update(ic, bf->bf_node, &sc->sc_boff, m, ncabq)) { bus_dmamap_unload(sc->sc_dmat, bf->bf_dmamap); - bf->bf_m = NULL; if (ath_beacon_setup(sc, bf, m) != 0) { - m_freem(m); /* XXX statistic */ - return; /* XXX??? */ + return; /* XXX help??? */ } - bf->bf_m = m; } /* @@ -1788,10 +1831,16 @@ } bus_dmamap_sync(sc->sc_dmat, bf->bf_dmamap, BUS_DMASYNC_PREWRITE); + /* + * Enable the CAB queue before the beacon queue to + * insure cab frames are triggered by this beacon. + */ + if (ncabq) + ath_hal_txstart(ah, sc->sc_cabq->axq_qnum); ath_hal_puttxbuf(ah, sc->sc_bhalq, bf->bf_daddr); ath_hal_txstart(ah, sc->sc_bhalq); DPRINTF(sc, ATH_DEBUG_BEACON_PROC, - "%s: TXDP%u = %p (%p)\n", __func__, + "%s: TXDP[%u] = %p (%p)\n", __func__, sc->sc_bhalq, (caddr_t)bf->bf_daddr, bf->bf_desc); } @@ -2528,29 +2577,18 @@ } /* - * Setup a hardware data transmit queue for the specified - * access control. The hal may not support all requested - * queues in which case it will return a reference to a - * previously setup queue. We record the mapping from ac's - * to h/w queues for use by ath_tx_start and also track - * the set of h/w queues being used to optimize work in the - * transmit interrupt handler and related routines. + * Setup a h/w transmit queue. */ -static int -ath_tx_setup(struct ath_softc *sc, int ac, int haltype) +static struct ath_txq * +ath_txq_setup(struct ath_softc *sc, int qtype, int subtype, const char *typename) { #define N(a) (sizeof(a)/sizeof(a[0])) struct ath_hal *ah = sc->sc_ah; HAL_TXQ_INFO qi; int qnum; - if (ac >= N(sc->sc_ac2q)) { - device_printf(sc->sc_dev, "AC %u out of range, max %u!\n", - ac, N(sc->sc_ac2q)); - return 0; - } memset(&qi, 0, sizeof(qi)); - qi.tqi_subtype = haltype; + qi.tqi_subtype = subtype; qi.tqi_aifs = HAL_TXQ_USEDEFAULT; qi.tqi_cwmin = HAL_TXQ_USEDEFAULT; qi.tqi_cwmax = HAL_TXQ_USEDEFAULT; @@ -2567,17 +2605,18 @@ * due to a lack of tx descriptors. */ qi.tqi_qflags = TXQ_FLAG_TXEOLINT_ENABLE | TXQ_FLAG_TXDESCINT_ENABLE; - qnum = ath_hal_setuptxqueue(ah, HAL_TX_QUEUE_DATA, &qi); + qnum = ath_hal_setuptxqueue(ah, qtype, &qi); if (qnum == -1) { device_printf(sc->sc_dev, "Unable to setup hardware queue for %s traffic!\n", - acnames[ac]); - return 0; + typename); + return NULL; } if (qnum >= N(sc->sc_txq)) { device_printf(sc->sc_dev, "hal qnum %u out of range, max %u!\n", qnum, N(sc->sc_txq)); - return 0; + ath_hal_releasetxqueue(ah, qnum); + return NULL; } if (!ATH_TXQ_SETUP(sc, qnum)) { struct ath_txq *txq = &sc->sc_txq[qnum]; @@ -2590,8 +2629,36 @@ ATH_TXQ_LOCK_INIT(sc, txq); sc->sc_txqsetup |= 1<sc_ac2q[ac] = &sc->sc_txq[qnum]; - return 1; + return &sc->sc_txq[qnum]; +#undef N +} + +/* + * Setup a hardware data transmit queue for the specified + * access control. The hal may not support all requested + * queues in which case it will return a reference to a + * previously setup queue. We record the mapping from ac's + * to h/w queues for use by ath_tx_start and also track + * the set of h/w queues being used to optimize work in the + * transmit interrupt handler and related routines. + */ +static int +ath_tx_setup(struct ath_softc *sc, int ac, int haltype) +{ +#define N(a) (sizeof(a)/sizeof(a[0])) + struct ath_txq *txq; + + if (ac >= N(sc->sc_ac2q)) { + device_printf(sc->sc_dev, "AC %u out of range, max %u!\n", + ac, N(sc->sc_ac2q)); + return 0; + } + txq = ath_txq_setup(sc, HAL_TX_QUEUE_DATA, haltype, acnames[ac]); + if (txq != NULL) { + sc->sc_ac2q[ac] = txq; + return 1; + } else + return 0; #undef N } @@ -2802,6 +2869,16 @@ } /* + * When servicing one or more stations in power-save mode + * multicast frames must be buffered until after the beacon. + * We use the CAB queue for that. + */ + if (ismcast && ic->ic_ps_sta) { + txq = sc->sc_cabq; + /* XXX? more bit in 802.11 frame header */ + } + + /* * Calculate miscellaneous flags. */ flags = HAL_TXDESC_CLRDMASK; /* XXX needed for crypto errs */ @@ -3007,7 +3084,12 @@ if (sc->sc_softled) ath_update_led(sc); - ath_hal_txstart(ah, txq->axq_qnum); + /* + * The CAB queue is started from the SWBA handler since + * frames only go out on DTIM and to avoid possible races. + */ + if (txq != sc->sc_cabq) + ath_hal_txstart(ah, txq->axq_qnum); return 0; } @@ -3112,6 +3194,7 @@ struct ifnet *ifp = &sc->sc_if; ath_tx_processq(sc, &sc->sc_txq[0]); + ath_tx_processq(sc, sc->sc_cabq); ifp->if_flags &= ~IFF_OACTIVE; sc->sc_tx_timer = 0; @@ -3135,6 +3218,7 @@ ath_tx_processq(sc, &sc->sc_txq[1]); ath_tx_processq(sc, &sc->sc_txq[2]); ath_tx_processq(sc, &sc->sc_txq[3]); + ath_tx_processq(sc, sc->sc_cabq); ifp->if_flags &= ~IFF_OACTIVE; sc->sc_tx_timer = 0; @@ -4146,6 +4230,9 @@ if_printf(ifp, "Use hw queue %u for %s traffic\n", txq->axq_qnum, acnames[i]); } + if_printf(ifp, "Use hw queue %u for CAB traffic\n", + sc->sc_cabq->axq_qnum); + if_printf(ifp, "Use hw queue %u for beacons\n", sc->sc_bhalq); } #undef HAL_MODE_DUALBAND } ==== //depot/projects/wifi/sys/dev/ath/if_athvar.h#7 (text+ko) ==== @@ -207,10 +207,11 @@ u_int sc_txqsetup; /* h/w queues setup */ u_int sc_txintrperiod;/* tx interrupt batching */ struct ath_txq sc_txq[HAL_NUM_TX_QUEUES]; - struct ath_txq *sc_ac2q[5]; /* WME AC -> h/w qnum */ + struct ath_txq *sc_ac2q[5]; /* WME AC -> h/w q map */ struct task sc_txtask; /* tx int processing */ u_int sc_bhalq; /* HAL q for outgoing beacons */ + struct ath_txq *sc_cabq; /* tx q for cab frames */ struct ath_buf *sc_bcbuf; /* beacon buffer */ struct ath_buf *sc_bufptr; /* allocated buffer ptr */ struct ieee80211_beacon_offsets sc_boff;/* dynamic update state */ ==== //depot/projects/wifi/sys/net80211/ieee80211_freebsd.h#5 (text+ko) ==== @@ -77,6 +77,7 @@ extern struct mbuf *ieee80211_getmgtframe(u_int8_t **frm, u_int pktlen); #define M_LINK0 M_PROTO1 /* WEP requested */ +#define M_PWR_SAV M_PROTO4 /* bypass PS handling */ /* * Encode WME access control bits in the PROTO flags. * This is safe since it's passed directly in to the ==== //depot/projects/wifi/sys/net80211/ieee80211_input.c#14 (text+ko) ==== @@ -54,6 +54,7 @@ static struct mbuf *ieee80211_defrag(struct ieee80211com *, struct ieee80211_node *, struct mbuf *); static struct mbuf *ieee80211_decap(struct ieee80211com *, struct mbuf *); +static void ieee80211_node_pwrsave(struct ieee80211_node *, int enable); static void ieee80211_recv_pspoll(struct ieee80211com *, struct ieee80211_node *, struct mbuf *); @@ -252,36 +253,6 @@ } } - /* - * Check for ps-poll state change for the station. - * XXX is there a response when pspoll is not supported? - */ - if (ic->ic_opmode == IEEE80211_M_HOSTAP && - ic->ic_set_tim != NULL && - ((wh->i_fc[1] & IEEE80211_FC1_PWR_MGT) ^ - (ni->ni_flags & IEEE80211_NODE_PWR_MGT))) { - /* XXX statistics? */ - IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER, - "[%s] power save mode %s\n", - ether_sprintf(wh->i_addr2), - (wh->i_fc[1] & IEEE80211_FC1_PWR_MGT ? "on" : "off")); - if ((wh->i_fc[1] & IEEE80211_FC1_PWR_MGT) == 0) { - /* turn off power save mode, dequeue stored packets */ - ni->ni_flags &= ~IEEE80211_NODE_PWR_MGT; - ic->ic_set_tim(ic, ni->ni_associd, 0); - while (_IF_QLEN(&ni->ni_savedq) != 0) { - struct mbuf *m0; - _IF_DEQUEUE(&ni->ni_savedq, m0); - /* XXX need different driver interface */ - /* XXX handoff or enqueue? */ - IF_ENQUEUE(&ifp->if_snd, m0); - } - } else { - /* turn on power save mode */ - ni->ni_flags |= IEEE80211_NODE_PWR_MGT; - } - } - switch (type) { case IEEE80211_FC0_TYPE_DATA: hdrsize = ieee80211_hdrsize(wh); @@ -361,6 +332,7 @@ ic->ic_stats.is_rx_wrongdir++; goto out; } + /* XXX no power-save support */ break; case IEEE80211_M_HOSTAP: if (dir != IEEE80211_FC1_DIR_TODS) { @@ -393,6 +365,14 @@ ic->ic_stats.is_rx_notassoc++; goto err; } + + /* + * Check for power save state change. + */ + if (((wh->i_fc[1] & IEEE80211_FC1_PWR_MGT) ^ + (ni->ni_flags & IEEE80211_NODE_PWR_MGT))) + ieee80211_node_pwrsave(ni, + wh->i_fc[1] & IEEE80211_FC1_PWR_MGT); break; default: /* XXX here to keep compiler happy */ @@ -461,6 +441,9 @@ */ m = ieee80211_decap(ic, m); if (m == NULL) { + /* don't count Null data frames as errors */ + if (subtype == IEEE80211_FC0_SUBTYPE_NODATA) + goto out; IEEE80211_DPRINTF(ic, IEEE80211_MSG_INPUT, "%s: decapsulation error\n", __func__); ic->ic_stats.is_rx_decap++; @@ -616,17 +599,19 @@ case IEEE80211_FC0_TYPE_CTL: IEEE80211_NODE_STAT(ni, rx_ctrl); ic->ic_stats.is_rx_ctl++; - if (ic->ic_opmode != IEEE80211_M_HOSTAP) - goto out; - switch (subtype) { - case IEEE80211_FC0_SUBTYPE_PS_POLL: - /* XXX statistic */ - /* Dump out a single packet from the host */ - IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER, - "got power save probe from %s\n", - ether_sprintf(wh->i_addr2)); - ieee80211_recv_pspoll(ic, ni, m); - break; + if (ic->ic_opmode == IEEE80211_M_HOSTAP) { + /* + * Check for power save state change. + */ + if (((wh->i_fc[1] & IEEE80211_FC1_PWR_MGT) ^ + (ni->ni_flags & IEEE80211_NODE_PWR_MGT))) + ieee80211_node_pwrsave(ni, + wh->i_fc[1] & IEEE80211_FC1_PWR_MGT); + switch (subtype) { + case IEEE80211_FC0_SUBTYPE_PS_POLL: + ieee80211_recv_pspoll(ic, ni, m); + break; + } } goto out; default: @@ -2447,6 +2432,65 @@ #undef IEEE80211_VERIFY_LENGTH #undef IEEE80211_VERIFY_ELEMENT +/* + * Handle station power-save state change. + */ +static void +ieee80211_node_pwrsave(struct ieee80211_node *ni, int enable) +{ + struct ieee80211com *ic = ni->ni_ic; + struct mbuf *m; + + if (enable) { + if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) == 0) + ic->ic_ps_sta++; + ni->ni_flags |= IEEE80211_NODE_PWR_MGT; + IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER, + "[%s] power save mode on, %u sta's in ps mode\n", + ether_sprintf(ni->ni_macaddr), ic->ic_ps_sta); + return; + } + + if (ni->ni_flags & IEEE80211_NODE_PWR_MGT) + ic->ic_ps_sta--; + ni->ni_flags &= ~IEEE80211_NODE_PWR_MGT; + IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER, + "[%s] power save mode off, %u sta's in ps mode\n", + ether_sprintf(ni->ni_macaddr), ic->ic_ps_sta); + /* XXX if no stations in ps mode, flush mc frames */ + + /* + * Flush queued unicast frames. + */ + if (_IF_QLEN(&ni->ni_savedq) == 0) { + ic->ic_set_tim(ic, ni, 0); /* just in case */ + return; + } + IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER, + "[%s] flush ps queue, %u packets queued\n", + ether_sprintf(ni->ni_macaddr), _IF_QLEN(&ni->ni_savedq)); + for (;;) { + _IF_DEQUEUE(&ni->ni_savedq, m); + if (m == NULL) + break; + /* + * If this is the last packet, turn off the TIM bit. + * If there are more packets, set the more packets bit + * in the packet dispatched to the station. + */ + if (_IF_QLEN(&ni->ni_savedq) != 0) { + struct ieee80211_frame_min *wh = + mtod(m, struct ieee80211_frame_min *); + wh->i_fc[1] |= IEEE80211_FC1_MORE_DATA; + } + /* XXX need different driver interface */ + IF_ENQUEUE(&ic->ic_ifp->if_snd, m); + } +} + +/* + * Process a received ps-poll frame. + */ static void ieee80211_recv_pspoll(struct ieee80211com *ic, struct ieee80211_node *ni, struct mbuf *m0) @@ -2455,30 +2499,25 @@ struct mbuf *m; u_int16_t aid; - if (ic->ic_set_tim == NULL) /* No powersaving functionality */ - return; - if (ni == ic->ic_bss) { - wh = mtod(m0, struct ieee80211_frame_min *); + wh = mtod(m0, struct ieee80211_frame_min *); + if (ni->ni_associd == 0) { IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER | IEEE80211_MSG_DEBUG, - "station %s sent bogus power save poll\n", + "[%s] ps-poll for unassociated station\n", ether_sprintf(wh->i_addr2)); + ic->ic_stats.is_ps_unassoc++; + IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_DEAUTH, + IEEE80211_REASON_NOT_ASSOCED); return; } - wh = mtod(m0, struct ieee80211_frame_min *); - memcpy(&aid, wh->i_dur, sizeof(wh->i_dur)); - if ((aid & 0xc000) != 0xc000) { - IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER | IEEE80211_MSG_DEBUG, - "station %s sent bogus aid %x\n", - ether_sprintf(wh->i_addr2), aid); - /* XXX statistic */ - return; - } + aid = le16toh(*(u_int16_t *)wh->i_dur); if (aid != ni->ni_associd) { IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER | IEEE80211_MSG_DEBUG, - "station %s aid %x doesn't match pspoll aid %x\n", - ether_sprintf(wh->i_addr2), ni->ni_associd, aid); - /* XXX statistic */ + "[%s] sta aid 0x%x does not match ps-poll aid 0x%x\n", + ether_sprintf(wh->i_addr2), ni->ni_associd, aid); + ic->ic_stats.is_ps_badaid++; + IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_DEAUTH, + IEEE80211_REASON_NOT_ASSOCED); return; } ni->ni_inact = ic->ic_inact_run; @@ -2487,25 +2526,26 @@ _IF_DEQUEUE(&ni->ni_savedq, m); if (m == NULL) { IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER, - "station %s sent pspoll, but no packets are saved\n", + "[%s] got ps-poll, but queue empty\n", ether_sprintf(wh->i_addr2)); - /* XXX statistic */ + ieee80211_send_nulldata(ic, ni); + ic->ic_stats.is_ps_qempty++; /* XXX node stat */ + ic->ic_set_tim(ic, ni, 0); /* just in case */ return; } /* - * If this is the last packet, turn off the TIM fields. - * If there are more packets, set the more packets bit. + * If there are more packets, set the more packets bit + * in the packet dispatched to the station; otherwise + * turn off the TIM bit. */ - if (_IF_QLEN(&ni->ni_savedq) == 0) { - if (ic->ic_set_tim) - ic->ic_set_tim(ic, ni->ni_associd, 0); - } else { + IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER, + "[%s] got ps-poll, send packet, %u still queued\n", + ether_sprintf(ni->ni_macaddr), _IF_QLEN(&ni->ni_savedq)); + if (_IF_QLEN(&ni->ni_savedq) != 0) { wh = mtod(m, struct ieee80211_frame_min *); wh->i_fc[1] |= IEEE80211_FC1_MORE_DATA; - } - IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER, - "enqueued power saving packet for station %s\n", - ether_sprintf(ni->ni_macaddr)); - /* XXX need different driver interface */ + } else + ic->ic_set_tim(ic, ni, 0); + m->m_flags |= M_PWR_SAV; /* bypass PS handling */ IF_ENQUEUE(&ic->ic_ifp->if_snd, m); } ==== //depot/projects/wifi/sys/net80211/ieee80211_ioctl.h#9 (text+ko) ==== @@ -167,6 +167,9 @@ u_int32_t is_crypto_keyfail; /* driver key alloc failed */ u_int32_t is_ibss_capmismatch; /* merge failed-cap mismatch */ u_int32_t is_ibss_norate; /* merge failed-rate mismatch */ + u_int32_t is_ps_unassoc; /* ps-poll for unassoc. sta */ + u_int32_t is_ps_badaid; /* ps-poll w/ incorrect aid */ + u_int32_t is_ps_qempty; /* ps-poll w/ nothing to send */ }; /* ==== //depot/projects/wifi/sys/net80211/ieee80211_node.c#16 (text+ko) ==== @@ -62,6 +62,9 @@ static void ieee80211_timeout_scan_candidates(struct ieee80211_node_table *); static void ieee80211_timeout_stations(struct ieee80211_node_table *); +static void ieee80211_set_tim(struct ieee80211com *, + struct ieee80211_node *, int set); + static void ieee80211_node_table_init(struct ieee80211com *ic, struct ieee80211_node_table *nt, const char *name, int inact, void (*timeout)(struct ieee80211_node_table *)); @@ -103,6 +106,16 @@ printf("%s: no memory for AID bitmap!\n", __func__); ic->ic_max_aid = 0; } + + /* XXX defer until using hostap/ibss mode */ + ic->ic_tim_len = howmany(ic->ic_max_aid, 8) * sizeof(u_int8_t); + MALLOC(ic->ic_tim_bitmap, u_int8_t *, ic->ic_tim_len, + M_DEVBUF, M_NOWAIT | M_ZERO); + if (ic->ic_tim_bitmap == NULL) { + /* XXX no way to recover */ + printf("%s: no memory for TIM bitmap!\n", __func__); + } + ic->ic_set_tim = ieee80211_set_tim; /* NB: driver should override */ } void @@ -171,8 +184,14 @@ ieee80211_node_table_free(ic->ic_sta); ic->ic_sta = NULL; } - if (ic->ic_aid_bitmap != NULL) + if (ic->ic_aid_bitmap != NULL) { FREE(ic->ic_aid_bitmap, M_DEVBUF); + ic->ic_aid_bitmap = NULL; + } + if (ic->ic_tim_bitmap != NULL) { + FREE(ic->ic_tim_bitmap, M_DEVBUF); + ic->ic_tim_bitmap = NULL; + } } /* @@ -789,9 +808,25 @@ node_cleanup(struct ieee80211_node *ni) { #define N(a) (sizeof(a)/sizeof(a[0])) + struct ieee80211com *ic = ni->ni_ic; int i; /* NB: preserve ni_table */ + if (ni->ni_flags & IEEE80211_NODE_PWR_MGT) { + ic->ic_ps_sta--; + ni->ni_flags &= ~IEEE80211_NODE_PWR_MGT; + IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER, + "[%s] power save mode off, %u sta's in ps mode\n", + ether_sprintf(ni->ni_macaddr), ic->ic_ps_sta); + } + if (_IF_QLEN(&ni->ni_savedq) != 0) { + /* + * Drain power save queue. + */ + _IF_DRAIN(&ni->ni_savedq); + if (ic->ic_set_tim != NULL) + ic->ic_set_tim(ic, ni, 0); + } ni->ni_associd = 0; if (ni->ni_challenge != NULL) { FREE(ni->ni_challenge, M_DEVBUF); @@ -814,7 +849,7 @@ m_freem(ni->ni_rxfrag[i]); ni->ni_rxfrag[i] = NULL; } - ieee80211_crypto_delkey(ni->ni_ic, &ni->ni_ucastkey); + ieee80211_crypto_delkey(ic, &ni->ni_ucastkey); #undef N } @@ -994,6 +1029,8 @@ { #define IS_CTL(wh) \ ((wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_CTL) +#define IS_PSPOLL(wh) \ + ((wh->i_fc[0] & IEEE80211_FC0_SUBTYPE_MASK) == IEEE80211_FC0_SUBTYPE_PS_POLL) struct ieee80211_node_table *nt; struct ieee80211_node *ni; @@ -1007,13 +1044,14 @@ /* XXX check ic_bss first in station mode */ /* XXX 4-address frames? */ IEEE80211_NODE_LOCK(nt); - if (IS_CTL(wh)) + if (IS_CTL(wh) && !IS_PSPOLL(wh) /*&& !IS_RTS(ah)*/) ni = _ieee80211_find_node(nt, wh->i_addr1); else ni = _ieee80211_find_node(nt, wh->i_addr2); IEEE80211_NODE_UNLOCK(nt); return (ni != NULL ? ni : ieee80211_ref_node(ic->ic_bss)); +#undef IS_PSPOLL #undef IS_CTL } @@ -1045,10 +1083,17 @@ ni = _ieee80211_find_node(nt, macaddr); IEEE80211_NODE_UNLOCK(nt); - if (ni == NULL && - (ic->ic_opmode == IEEE80211_M_IBSS || - ic->ic_opmode == IEEE80211_M_AHDEMO)) - ni = ieee80211_fakeup_adhoc_node(nt, macaddr); + if (ni == NULL) { + if (ic->ic_opmode == IEEE80211_M_IBSS || + ic->ic_opmode == IEEE80211_M_AHDEMO) + ni = ieee80211_fakeup_adhoc_node(nt, macaddr); + else { + IEEE80211_DPRINTF(ic, IEEE80211_MSG_OUTPUT, + "[%s] no node, discard frame (%s)\n", + ether_sprintf(macaddr), __func__); + ic->ic_stats.is_tx_nonode++; + } + } return ni; } @@ -1144,14 +1189,6 @@ TAILQ_REMOVE(&nt->nt_node, ni, ni_list); LIST_REMOVE(ni, ni_hash); } - if (_IF_QLEN(&ni->ni_savedq) != 0) { /* XXX */ - /* - * Drain power save queue. - */ - _IF_DRAIN(&ni->ni_savedq); - if (ic->ic_set_tim) - ic->ic_set_tim(ic, ni->ni_associd, 0); - } ic->ic_node_free(ni); } @@ -1649,6 +1686,38 @@ } /* + * Indicate whether there are frames queued for a station in power-save mode. + */ +static void +ieee80211_set_tim(struct ieee80211com *ic, struct ieee80211_node *ni, int set) +{ + u_int16_t aid; + + KASSERT(ic->ic_opmode == IEEE80211_M_HOSTAP || + ic->ic_opmode == IEEE80211_M_IBSS, + ("operating mode %u", ic->ic_opmode)); + + aid = IEEE80211_AID(ni->ni_associd); + KASSERT(aid < ic->ic_max_aid, + ("bogus aid %u, max %u", aid, ic->ic_max_aid)); + + /* XXX locking */ + if (set != (isset(ic->ic_tim_bitmap, aid) != 0)) { + if (set) { + setbit(ic->ic_tim_bitmap, aid); + ic->ic_ps_pending++; + } else { + clrbit(ic->ic_tim_bitmap, aid); + ic->ic_ps_pending--; + } + IEEE80211_DPRINTF(ic, IEEE80211_MSG_POWER, + "[%s] aid %u has %sframes\n", + ether_sprintf(ni->ni_macaddr), aid, set ? "" : "no "); + ic->ic_flags |= IEEE80211_F_TIMUPDATE; + } +} + +/* * Node table support. */ ==== //depot/projects/wifi/sys/net80211/ieee80211_output.c#9 (text+ko) ==== @@ -164,6 +164,48 @@ } /* + * Send a null data frame to the specified node. + */ +int +ieee80211_send_nulldata(struct ieee80211com *ic, struct ieee80211_node *ni) +{ + struct ifnet *ifp = ic->ic_ifp; + struct mbuf *m; + struct ieee80211_frame *wh; + + MGETHDR(m, M_NOWAIT, MT_HEADER); + if (m == NULL) { + /* XXX debug msg */ + ic->ic_stats.is_tx_nobuf++; + return ENOMEM; + } + m->m_pkthdr.rcvif = (void *) ieee80211_ref_node(ni); + + wh = mtod(m, struct ieee80211_frame *); + wh->i_fc[0] = IEEE80211_FC0_VERSION_0 | IEEE80211_FC0_TYPE_DATA | + IEEE80211_FC0_SUBTYPE_NODATA; + *(u_int16_t *)wh->i_dur = 0; + *(u_int16_t *)wh->i_seq = + htole16(ni->ni_txseq << IEEE80211_SEQ_SEQ_SHIFT); + ni->ni_txseq++; + + /* XXX WDS */ + wh->i_fc[1] = IEEE80211_FC1_DIR_FROMDS; + IEEE80211_ADDR_COPY(wh->i_addr1, ni->ni_macaddr); + IEEE80211_ADDR_COPY(wh->i_addr2, ni->ni_bssid); + IEEE80211_ADDR_COPY(wh->i_addr3, ic->ic_myaddr); + m->m_len = m->m_pkthdr.len = sizeof(struct ieee80211_frame); + + ni->ni_inact = ic->ic_inact_auth; + IEEE80211_NODE_STAT(ni, tx_data); + + IF_ENQUEUE(&ic->ic_mgtq, m); /* cheat */ + if_start(ifp); + + return 0; +} + +/* * Insure there is sufficient contiguous space to encapsulate the * 802.11 data frame. If room isn't already there, arrange for it. * Drivers and cipher modules assume we have done the necessary work @@ -262,41 +304,21 @@ } /* - * Encapsulate an outbound data frame. The mbuf chain is updated and - * a reference to the destination node is returned. If an error is - * encountered NULL is returned and the node reference will also be NULL. - * - * NB: The caller is responsible for free'ing a returned node reference. - * The convention is ic_bss is not reference counted; the caller must - * maintain that. + * Encapsulate an outbound data frame. The mbuf chain is updated. + * If an error is encountered NULL is returned. The caller is required + * to provide a node reference and pullup the ethernet header in the + * first mbuf. */ struct mbuf * ieee80211_encap(struct ieee80211com *ic, struct mbuf *m, - struct ieee80211_node **pni) + struct ieee80211_node *ni) { struct ether_header eh; struct ieee80211_frame *wh; - struct ieee80211_node *ni = NULL; struct ieee80211_key *key; struct llc *llc; int hdrsize, datalen; - if (m->m_len < sizeof(struct ether_header) && - (m = m_pullup(m, sizeof(struct ether_header))) == NULL) { - ic->ic_stats.is_tx_nobuf++; - goto bad; - } - memcpy(&eh, mtod(m, caddr_t), sizeof(struct ether_header)); - - ni = ieee80211_find_txnode(ic, eh.ether_dhost); - if (ni == NULL) { - IEEE80211_DPRINTF(ic, IEEE80211_MSG_OUTPUT, - "%s: no node for dst %s, discard frame\n", - __func__, ether_sprintf(eh.ether_dhost)); - ic->ic_stats.is_tx_nonode++; - goto bad; - } - /* * If node has a vlan tag then all traffic * to it must have a matching tag. @@ -313,6 +335,9 @@ } } + KASSERT(m->m_len >= sizeof(eh), ("no ethernet header!")); + memcpy(&eh, mtod(m, caddr_t), sizeof(struct ether_header)); + /* * Insure space for additional headers. First identify * transmit key to use in calculating any buffer adjustments @@ -473,14 +498,10 @@ IEEE80211_NODE_STAT(ni, tx_data); IEEE80211_NODE_STAT_ADD(ni, tx_bytes, datalen); - *pni = ni; return m; bad: if (m != NULL) m_freem(m); - if (ni != NULL) - ieee80211_free_node(ni); - *pni = NULL; return NULL; } @@ -988,6 +1009,15 @@ IEEE80211_NODE_STAT_SET(ni, tx_deauth_code, arg); ieee80211_node_unauthorize(ic, ni); /* port closed */ + /* + * If station is in power-save state mark the frame + * so it goes out immediately. The station is likely + * to ignore it but the alternative is to defer reclaiming + * station state until it wakes up and polls for the + * frame which leads to possible DOS. + */ + if (ni->ni_flags & IEEE80211_NODE_PWR_MGT) + m->m_flags |= M_PWR_SAV; break; case IEEE80211_FC0_SUBTYPE_ASSOC_REQ: @@ -1166,16 +1196,16 @@ * [tlv] WPA/RSN parameters * XXX WME, etc. * XXX Vendor-specific OIDs (e.g. Atheros) + * NB: we allocate the max space required for the TIM bitmap. */ rs = &ni->ni_rates; - /* XXX may be better to just allocate a max-sized buffer */ pktlen = 8 /* time stamp */ + sizeof(u_int16_t) /* beacon interval */ + sizeof(u_int16_t) /* capabilities */ + 2 + ni->ni_esslen /* ssid */ + 2 + IEEE80211_RATE_SIZE /* supported rates */ + 2 + 1 /* DS parameters */ - + 2 + 4 /* DTIM/IBSSPARMS */ + + 2 + 4 + ic->ic_tim_len /* DTIM/IBSSPARMS */ + 2 + 1 /* ERP */ + 2 + (IEEE80211_RATE_MAXSIZE - IEEE80211_RATE_SIZE) + 2*sizeof(struct ieee80211_ie_wpa) /* WPA 1+2 */ @@ -1224,16 +1254,15 @@ *frm++ = IEEE80211_ELEMID_IBSSPARMS; *frm++ = 2; *frm++ = 0; *frm++ = 0; /* TODO: ATIM window */ - bo->bo_tim_len = 4; + bo->bo_tim_len = 0; } else { - /* TODO: TIM */ *frm++ = IEEE80211_ELEMID_TIM; *frm++ = 4; /* length */ *frm++ = 0; /* DTIM count */ *frm++ = 1; /* DTIM period */ *frm++ = 0; /* bitmap control */ *frm++ = 0; /* Partial Virtual Bitmap (variable length) */ - bo->bo_tim_len = 6; + bo->bo_tim_len = 1; } bo->bo_trailer = frm; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed Nov 17 01:27:27 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 019F716A4D1; Wed, 17 Nov 2004 01:27:27 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C15C116A4CE for ; Wed, 17 Nov 2004 01:27:26 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id B2F6A43D1D for ; Wed, 17 Nov 2004 01:27:26 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAH1RQJF018214 for ; Wed, 17 Nov 2004 01:27:26 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAH1RQ3K018211 for perforce@freebsd.org; Wed, 17 Nov 2004 01:27:26 GMT (envelope-from sam@freebsd.org) Date: Wed, 17 Nov 2004 01:27:26 GMT Message-Id: <200411170127.iAH1RQ3K018211@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65289 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 01:27:28 -0000 http://perforce.freebsd.org/chv.cgi?CH=65289 Change 65289 by sam@sam_ebb on 2004/11/17 01:27:05 didn't mean to keep this... Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211_input.c#15 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211_input.c#15 (text+ko) ==== @@ -600,13 +600,6 @@ IEEE80211_NODE_STAT(ni, rx_ctrl); ic->ic_stats.is_rx_ctl++; if (ic->ic_opmode == IEEE80211_M_HOSTAP) { - /* - * Check for power save state change. - */ - if (((wh->i_fc[1] & IEEE80211_FC1_PWR_MGT) ^ - (ni->ni_flags & IEEE80211_NODE_PWR_MGT))) - ieee80211_node_pwrsave(ni, - wh->i_fc[1] & IEEE80211_FC1_PWR_MGT); switch (subtype) { case IEEE80211_FC0_SUBTYPE_PS_POLL: ieee80211_recv_pspoll(ic, ni, m); From owner-p4-projects@FreeBSD.ORG Wed Nov 17 01:55:03 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0A27F16A4D1; Wed, 17 Nov 2004 01:55:02 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A7E1E16A4CE for ; Wed, 17 Nov 2004 01:55:01 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 454CB43D3F for ; Wed, 17 Nov 2004 01:55:01 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAH1t1ox019020 for ; Wed, 17 Nov 2004 01:55:01 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAH1t08G019007 for perforce@freebsd.org; Wed, 17 Nov 2004 01:55:00 GMT (envelope-from sam@freebsd.org) Date: Wed, 17 Nov 2004 01:55:00 GMT Message-Id: <200411170155.iAH1t08G019007@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65290 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 01:55:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=65290 Change 65290 by sam@sam_ebb on 2004/11/17 01:54:04 IFC @ 65289 Affected files ... .. //depot/projects/wifi/Makefile.inc1#4 integrate .. //depot/projects/wifi/UPDATING#3 integrate .. //depot/projects/wifi/bin/pax/tar.c#2 integrate .. //depot/projects/wifi/bin/ps/Makefile#2 integrate .. //depot/projects/wifi/bin/ps/ps.c#2 integrate .. //depot/projects/wifi/bin/rm/rm.c#3 integrate .. //depot/projects/wifi/contrib/gcc/gcc.1#2 integrate .. //depot/projects/wifi/contrib/pf/man/pf.conf.5#2 integrate .. //depot/projects/wifi/etc/defaults/rc.conf#4 integrate .. //depot/projects/wifi/etc/rc.d/Makefile#4 integrate .. //depot/projects/wifi/etc/rc.d/ramdisk-own#2 integrate .. //depot/projects/wifi/etc/rc.d/serial#2 integrate .. //depot/projects/wifi/games/fortune/datfiles/fortunes2#2 integrate .. //depot/projects/wifi/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#2 integrate .. //depot/projects/wifi/include/Makefile#2 integrate .. //depot/projects/wifi/lib/Makefile#2 integrate .. //depot/projects/wifi/lib/libarchive/archive_write_set_format_pax.c#3 integrate .. //depot/projects/wifi/lib/libc/Makefile#3 integrate .. //depot/projects/wifi/lib/libc/gen/getnetgrent.c#2 integrate .. //depot/projects/wifi/lib/libc/i386/net/htonl.S#2 integrate .. //depot/projects/wifi/lib/libc/i386/net/ntohl.S#2 integrate .. //depot/projects/wifi/lib/libc/net/rcmd.c#2 integrate .. //depot/projects/wifi/lib/libc/rpc/netnamer.c#2 integrate .. //depot/projects/wifi/lib/libc/stdlib/rand.3#2 integrate .. //depot/projects/wifi/lib/libc/sys/read.2#3 integrate .. //depot/projects/wifi/lib/libc/sys/stat.2#2 integrate .. //depot/projects/wifi/lib/libdisk/disk.c#2 integrate .. //depot/projects/wifi/lib/libkvm/kvm_getprocs.3#2 integrate .. //depot/projects/wifi/lib/libkvm/kvm_proc.c#2 integrate .. //depot/projects/wifi/lib/libpam/modules/pam_unix/Makefile#2 integrate .. //depot/projects/wifi/lib/librpcsvc/Makefile#3 integrate .. //depot/projects/wifi/lib/libwrap/Makefile#2 integrate .. //depot/projects/wifi/lib/libxpg4/Makefile#3 delete .. //depot/projects/wifi/lib/libxpg4/fakelib.c#2 delete .. //depot/projects/wifi/libexec/Makefile#2 integrate .. //depot/projects/wifi/libexec/ftpd/ftpcmd.y#2 integrate .. //depot/projects/wifi/libexec/ftpd/ftpd.c#5 integrate .. //depot/projects/wifi/libexec/ftpd/popen.c#2 integrate .. //depot/projects/wifi/libexec/rtld-elf/Makefile#4 integrate .. //depot/projects/wifi/libexec/rtld-elf/alpha/lockdflt.c#2 delete .. //depot/projects/wifi/libexec/rtld-elf/amd64/lockdflt.c#2 delete .. //depot/projects/wifi/libexec/rtld-elf/arm/lockdflt.c#2 delete .. //depot/projects/wifi/libexec/rtld-elf/i386/lockdflt.c#2 delete .. //depot/projects/wifi/libexec/rtld-elf/ia64/lockdflt.c#2 delete .. //depot/projects/wifi/libexec/rtld-elf/powerpc/lockdflt.c#2 delete .. //depot/projects/wifi/libexec/rtld-elf/rtld_lock.c#2 integrate .. //depot/projects/wifi/libexec/rtld-elf/sparc64/lockdflt.c#2 delete .. //depot/projects/wifi/release/doc/en_US.ISO8859-1/hardware/alpha/proc-alpha.sgml#2 integrate .. //depot/projects/wifi/release/picobsd/bridge/PICOBSD#2 integrate .. //depot/projects/wifi/rescue/librescue/Makefile#3 integrate .. //depot/projects/wifi/sbin/Makefile#4 integrate .. //depot/projects/wifi/sbin/comcontrol/comcontrol.8#2 integrate .. //depot/projects/wifi/sbin/fdisk/fdisk.c#2 integrate .. //depot/projects/wifi/sbin/gpt/create.c#3 integrate .. //depot/projects/wifi/sbin/gpt/gpt.8#3 integrate .. //depot/projects/wifi/sbin/gpt/migrate.c#4 integrate .. //depot/projects/wifi/sbin/mdconfig/mdconfig.c#3 integrate .. //depot/projects/wifi/sbin/mount_cd9660/mount_cd9660.8#2 integrate .. //depot/projects/wifi/sbin/mount_cd9660/mount_cd9660.c#2 integrate .. //depot/projects/wifi/sbin/slattach/slattach.8#2 integrate .. //depot/projects/wifi/share/examples/etc/make.conf#4 integrate .. //depot/projects/wifi/share/man/man4/Makefile#4 integrate .. //depot/projects/wifi/share/man/man4/altq.4#3 integrate .. //depot/projects/wifi/share/man/man4/gdb.4#3 integrate .. //depot/projects/wifi/share/man/man4/mouse.4#2 integrate .. //depot/projects/wifi/share/man/man4/polling.4#2 integrate .. //depot/projects/wifi/share/man/man4/vkbd.4#1 branch .. //depot/projects/wifi/share/man/man4/vlan.4#3 integrate .. //depot/projects/wifi/share/man/man5/make.conf.5#3 integrate .. //depot/projects/wifi/share/man/man5/rc.conf.5#4 integrate .. //depot/projects/wifi/share/man/man5/remote.5#2 integrate .. //depot/projects/wifi/share/man/man7/tuning.7#3 integrate .. //depot/projects/wifi/share/man/man9/get_cyclecount.9#2 integrate .. //depot/projects/wifi/share/mk/bsd.cpu.mk#2 integrate .. //depot/projects/wifi/share/mk/bsd.libnames.mk#2 integrate .. //depot/projects/wifi/share/mk/bsd.prog.mk#3 integrate .. //depot/projects/wifi/share/mk/sys.mk#3 integrate .. //depot/projects/wifi/share/numericdef/eu_ES.ISO8859-1.src#2 integrate .. //depot/projects/wifi/sys/alpha/conf/GENERIC#3 integrate .. //depot/projects/wifi/sys/alpha/conf/NOTES#2 integrate .. //depot/projects/wifi/sys/amd64/amd64/busdma_machdep.c#3 integrate .. //depot/projects/wifi/sys/arm/arm/busdma_machdep.c#2 integrate .. //depot/projects/wifi/sys/arm/arm/cpufunc.c#3 integrate .. //depot/projects/wifi/sys/arm/arm/genassym.c#2 integrate .. //depot/projects/wifi/sys/arm/arm/intr.c#2 integrate .. //depot/projects/wifi/sys/arm/arm/irq_dispatch.S#2 integrate .. //depot/projects/wifi/sys/arm/arm/pmap.c#3 integrate .. //depot/projects/wifi/sys/arm/conf/IQ31244#4 integrate .. //depot/projects/wifi/sys/arm/xscale/i80321/i80321.c#2 integrate .. //depot/projects/wifi/sys/arm/xscale/i80321/iq31244_machdep.c#3 integrate .. //depot/projects/wifi/sys/boot/common/commands.c#2 integrate .. //depot/projects/wifi/sys/coda/coda_vnops.c#2 integrate .. //depot/projects/wifi/sys/compat/linprocfs/linprocfs.c#2 integrate .. //depot/projects/wifi/sys/compat/svr4/svr4_filio.c#3 integrate .. //depot/projects/wifi/sys/compat/svr4/svr4_misc.c#2 integrate .. //depot/projects/wifi/sys/conf/NOTES#5 integrate .. //depot/projects/wifi/sys/conf/files#6 integrate .. //depot/projects/wifi/sys/conf/files.i386#3 integrate .. //depot/projects/wifi/sys/conf/files.sparc64#3 integrate .. //depot/projects/wifi/sys/conf/kern.post.mk#2 integrate .. //depot/projects/wifi/sys/conf/options#3 integrate .. //depot/projects/wifi/sys/conf/options.arm#2 integrate .. //depot/projects/wifi/sys/conf/options.i386#2 integrate .. //depot/projects/wifi/sys/conf/options.pc98#2 integrate .. //depot/projects/wifi/sys/crypto/blowfish/arch/i386/bf_enc.S#2 integrate .. //depot/projects/wifi/sys/dev/acpi_support/acpi_asus.c#1 branch .. //depot/projects/wifi/sys/dev/acpi_support/acpi_panasonic.c#1 branch .. //depot/projects/wifi/sys/dev/acpi_support/acpi_sony.c#1 branch .. //depot/projects/wifi/sys/dev/acpi_support/acpi_toshiba.c#1 branch .. //depot/projects/wifi/sys/dev/acpica/acpi_cpu.c#2 integrate .. //depot/projects/wifi/sys/dev/acpica/acpi_pcib.c#2 integrate .. //depot/projects/wifi/sys/dev/aha/aha_isa.c#2 integrate .. //depot/projects/wifi/sys/dev/ata/ata-card.c#2 integrate .. //depot/projects/wifi/sys/dev/ed/if_ed.c#2 integrate .. //depot/projects/wifi/sys/dev/ed/if_ed_cbus.c#2 integrate .. //depot/projects/wifi/sys/dev/em/if_em.c#3 integrate .. //depot/projects/wifi/sys/dev/em/if_em.h#2 integrate .. //depot/projects/wifi/sys/dev/esp/esp_sbus.c#2 integrate .. //depot/projects/wifi/sys/dev/esp/lsi64854.c#2 delete .. //depot/projects/wifi/sys/dev/esp/lsi64854reg.h#2 delete .. //depot/projects/wifi/sys/dev/esp/lsi64854var.h#2 delete .. //depot/projects/wifi/sys/dev/firewire/fwmem.c#2 integrate .. //depot/projects/wifi/sys/dev/mc146818/mc146818reg.h#1 branch .. //depot/projects/wifi/sys/dev/md/md.c#3 integrate .. //depot/projects/wifi/sys/dev/pbio/pbio.c#2 integrate .. //depot/projects/wifi/sys/dev/pci/pci.c#3 integrate .. //depot/projects/wifi/sys/dev/puc/puc_sbus.c#2 integrate .. //depot/projects/wifi/sys/dev/sound/pci/maestro.c#2 integrate .. //depot/projects/wifi/sys/dev/sound/pci/maestro_reg.h#2 integrate .. //depot/projects/wifi/sys/dev/streams/streams.c#2 integrate .. //depot/projects/wifi/sys/dev/uart/uart_bus.h#2 integrate .. //depot/projects/wifi/sys/dev/uart/uart_core.c#2 integrate .. //depot/projects/wifi/sys/dev/uart/uart_dev_ns8250.c#2 integrate .. //depot/projects/wifi/sys/dev/uart/uart_subr.c#2 integrate .. //depot/projects/wifi/sys/dev/usb/ehci.c#4 integrate .. //depot/projects/wifi/sys/dev/usb/ohci.c#2 integrate .. //depot/projects/wifi/sys/dev/usb/uhci.c#3 integrate .. //depot/projects/wifi/sys/dev/usb/umass.c#2 integrate .. //depot/projects/wifi/sys/dev/usb/usb_port.h#2 integrate .. //depot/projects/wifi/sys/dev/vkbd/vkbd.c#1 branch .. //depot/projects/wifi/sys/dev/vkbd/vkbd_var.h#1 branch .. //depot/projects/wifi/sys/fs/autofs/autofs.h#2 delete .. //depot/projects/wifi/sys/fs/autofs/autofs_util.c#2 delete .. //depot/projects/wifi/sys/fs/autofs/autofs_vfsops.c#2 delete .. //depot/projects/wifi/sys/fs/autofs/autofs_vnops.c#2 delete .. //depot/projects/wifi/sys/fs/deadfs/dead_vnops.c#2 integrate .. //depot/projects/wifi/sys/fs/devfs/devfs_vfsops.c#3 integrate .. //depot/projects/wifi/sys/fs/devfs/devfs_vnops.c#5 integrate .. //depot/projects/wifi/sys/fs/fdescfs/fdesc_vfsops.c#2 integrate .. //depot/projects/wifi/sys/fs/fdescfs/fdesc_vnops.c#2 integrate .. //depot/projects/wifi/sys/fs/fifofs/fifo_vnops.c#3 integrate .. //depot/projects/wifi/sys/fs/hpfs/hpfs_vfsops.c#3 integrate .. //depot/projects/wifi/sys/fs/hpfs/hpfs_vnops.c#3 integrate .. //depot/projects/wifi/sys/fs/msdosfs/msdosfs_vfsops.c#4 integrate .. //depot/projects/wifi/sys/fs/msdosfs/msdosfs_vnops.c#3 integrate .. //depot/projects/wifi/sys/fs/ntfs/ntfs_vfsops.c#4 integrate .. //depot/projects/wifi/sys/fs/ntfs/ntfs_vnops.c#3 integrate .. //depot/projects/wifi/sys/fs/nullfs/null_vfsops.c#2 integrate .. //depot/projects/wifi/sys/fs/nwfs/nwfs_vfsops.c#2 integrate .. //depot/projects/wifi/sys/fs/portalfs/portal_vfsops.c#2 integrate .. //depot/projects/wifi/sys/fs/smbfs/smbfs_vfsops.c#2 integrate .. //depot/projects/wifi/sys/fs/udf/udf_vnops.c#3 integrate .. //depot/projects/wifi/sys/fs/umapfs/umap_vfsops.c#2 integrate .. //depot/projects/wifi/sys/fs/unionfs/union_subr.c#2 integrate .. //depot/projects/wifi/sys/fs/unionfs/union_vfsops.c#2 integrate .. //depot/projects/wifi/sys/fs/unionfs/union_vnops.c#3 integrate .. //depot/projects/wifi/sys/geom/geom.h#3 integrate .. //depot/projects/wifi/sys/geom/geom_event.c#2 integrate .. //depot/projects/wifi/sys/geom/mirror/g_mirror.c#3 integrate .. //depot/projects/wifi/sys/geom/raid3/g_raid3.c#3 integrate .. //depot/projects/wifi/sys/geom/vinum/geom_vinum.h#2 integrate .. //depot/projects/wifi/sys/geom/vinum/geom_vinum_raid5.c#2 integrate .. //depot/projects/wifi/sys/geom/vinum/geom_vinum_share.c#2 integrate .. //depot/projects/wifi/sys/geom/vinum/geom_vinum_share.h#2 integrate .. //depot/projects/wifi/sys/geom/vinum/geom_vinum_subr.c#2 integrate .. //depot/projects/wifi/sys/gnu/ext2fs/ext2_bmap.c#4 integrate .. //depot/projects/wifi/sys/i386/acpica/acpi_asus.c#4 delete .. //depot/projects/wifi/sys/i386/acpica/acpi_panasonic.c#3 delete .. //depot/projects/wifi/sys/i386/acpica/acpi_toshiba.c#2 delete .. //depot/projects/wifi/sys/i386/conf/NOTES#3 integrate .. //depot/projects/wifi/sys/i386/i386/autoconf.c#2 integrate .. //depot/projects/wifi/sys/i386/i386/identcpu.c#2 integrate .. //depot/projects/wifi/sys/i386/i386/machdep.c#4 integrate .. //depot/projects/wifi/sys/i386/i386/mp_machdep.c#3 integrate .. //depot/projects/wifi/sys/i386/i386/pmap.c#3 integrate .. //depot/projects/wifi/sys/i386/i386/support.s#2 integrate .. //depot/projects/wifi/sys/i386/i386/trap.c#2 integrate .. //depot/projects/wifi/sys/i386/include/atomic.h#2 integrate .. //depot/projects/wifi/sys/i386/include/cpu.h#2 integrate .. //depot/projects/wifi/sys/i386/include/endian.h#2 integrate .. //depot/projects/wifi/sys/i386/isa/pbio.c#2 delete .. //depot/projects/wifi/sys/ia64/conf/GENERIC.hints#2 integrate .. //depot/projects/wifi/sys/isofs/cd9660/cd9660_bmap.c#3 integrate .. //depot/projects/wifi/sys/isofs/cd9660/cd9660_vfsops.c#3 integrate .. //depot/projects/wifi/sys/kern/kern_descrip.c#3 integrate .. //depot/projects/wifi/sys/kern/kern_event.c#2 integrate .. //depot/projects/wifi/sys/kern/kern_exec.c#3 integrate .. //depot/projects/wifi/sys/kern/kern_fork.c#3 integrate .. //depot/projects/wifi/sys/kern/kern_intr.c#4 integrate .. //depot/projects/wifi/sys/kern/kern_sig.c#3 integrate .. //depot/projects/wifi/sys/kern/sched_ule.c#3 integrate .. //depot/projects/wifi/sys/kern/sys_generic.c#2 integrate .. //depot/projects/wifi/sys/kern/sys_pipe.c#3 integrate .. //depot/projects/wifi/sys/kern/sys_socket.c#2 integrate .. //depot/projects/wifi/sys/kern/sysv_msg.c#2 integrate .. //depot/projects/wifi/sys/kern/sysv_sem.c#2 integrate .. //depot/projects/wifi/sys/kern/sysv_shm.c#2 integrate .. //depot/projects/wifi/sys/kern/tty.c#3 integrate .. //depot/projects/wifi/sys/kern/uipc_domain.c#3 integrate .. //depot/projects/wifi/sys/kern/uipc_syscalls.c#4 integrate .. //depot/projects/wifi/sys/kern/vfs_cluster.c#5 integrate .. //depot/projects/wifi/sys/kern/vfs_default.c#5 integrate .. //depot/projects/wifi/sys/kern/vfs_mount.c#2 integrate .. //depot/projects/wifi/sys/kern/vfs_subr.c#5 integrate .. //depot/projects/wifi/sys/kern/vfs_syscalls.c#3 integrate .. //depot/projects/wifi/sys/kern/vfs_vnops.c#3 integrate .. //depot/projects/wifi/sys/kern/vnode_if.src#3 integrate .. //depot/projects/wifi/sys/modules/Makefile#5 integrate .. //depot/projects/wifi/sys/modules/acpi/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/acpi/acpi_asus/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/acpi/acpi_panasonic/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/acpi/acpi_snc/Makefile#1 branch .. //depot/projects/wifi/sys/modules/acpi/acpi_sony/Makefile#1 branch .. //depot/projects/wifi/sys/modules/acpi/acpi_toshiba/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/autofs/Makefile#2 delete .. //depot/projects/wifi/sys/modules/esp/Makefile#2 integrate .. //depot/projects/wifi/sys/modules/vkbd/Makefile#1 branch .. //depot/projects/wifi/sys/net/if_var.h#5 integrate .. //depot/projects/wifi/sys/netgraph/ng_device.c#3 integrate .. //depot/projects/wifi/sys/netinet/in.c#2 integrate .. //depot/projects/wifi/sys/netinet/ip_divert.c#4 integrate .. //depot/projects/wifi/sys/netsmb/smb_dev.c#2 integrate .. //depot/projects/wifi/sys/nfs4client/nfs4_vfsops.c#4 integrate .. //depot/projects/wifi/sys/nfsclient/nfs_vfsops.c#2 integrate .. //depot/projects/wifi/sys/nfsserver/nfs_serv.c#2 integrate .. //depot/projects/wifi/sys/pc98/conf/GENERIC#3 integrate .. //depot/projects/wifi/sys/pc98/conf/NOTES#2 integrate .. //depot/projects/wifi/sys/pc98/i386/machdep.c#3 integrate .. //depot/projects/wifi/sys/pci/if_sf.c#2 integrate .. //depot/projects/wifi/sys/pci/if_sfreg.h#2 integrate .. //depot/projects/wifi/sys/pci/if_sk.c#3 integrate .. //depot/projects/wifi/sys/pci/if_skreg.h#3 integrate .. //depot/projects/wifi/sys/sparc64/sbus/lsi64854.c#2 integrate .. //depot/projects/wifi/sys/sys/buf.h#5 integrate .. //depot/projects/wifi/sys/sys/conf.h#4 integrate .. //depot/projects/wifi/sys/sys/filedesc.h#3 integrate .. //depot/projects/wifi/sys/sys/msg.h#2 integrate .. //depot/projects/wifi/sys/sys/pbioio.h#2 delete .. //depot/projects/wifi/sys/sys/rman.h#2 integrate .. //depot/projects/wifi/sys/sys/sem.h#2 integrate .. //depot/projects/wifi/sys/sys/shm.h#2 integrate .. //depot/projects/wifi/sys/sys/vnode.h#4 integrate .. //depot/projects/wifi/sys/ufs/ffs/ffs_vfsops.c#5 integrate .. //depot/projects/wifi/sys/ufs/ufs/ufs_bmap.c#3 integrate .. //depot/projects/wifi/sys/vm/vm_pager.c#4 integrate .. //depot/projects/wifi/sys/vm/vnode_pager.c#5 integrate .. //depot/projects/wifi/tools/regression/README#2 integrate .. //depot/projects/wifi/tools/regression/TODO#1 branch .. //depot/projects/wifi/tools/regression/geom/RunTest.t#1 branch .. //depot/projects/wifi/tools/regression/geom_concat/test-1.t#1 branch .. //depot/projects/wifi/tools/regression/geom_concat/test-2.t#1 branch .. //depot/projects/wifi/tools/regression/geom_gate/test-1.t#1 branch .. //depot/projects/wifi/tools/regression/geom_gate/test-2.t#1 branch .. //depot/projects/wifi/tools/regression/geom_gate/test-3.t#1 branch .. //depot/projects/wifi/tools/regression/include/tgmath/tgmath.c#2 integrate .. //depot/projects/wifi/tools/regression/include/tgmath/tgmath.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-btowc.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-btowc.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-iswctype.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-iswctype.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mblen.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mblen.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbrlen.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbrlen.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbrtowc.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbrtowc.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbsnrtowcs.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbsnrtowcs.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbsrtowcs.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbsrtowcs.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbstowcs.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbstowcs.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbtowc.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-mbtowc.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-sgetrune.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-sgetrune.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-sputrune.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-sputrune.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-towctrans.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-towctrans.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-wcrtomb.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-wcrtomb.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-wcsnrtombs.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-wcsnrtombs.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-wcsrtombs.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-wcsrtombs.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-wcstombs.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-wcstombs.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-wctomb.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/locale/test-wctomb.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/net/test-eui64_aton.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/net/test-eui64_aton.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/net/test-eui64_line.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/net/test-eui64_line.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/net/test-eui64_ntoa.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/net/test-eui64_ntoa.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/stdio/test-perror.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/stdio/test-perror.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/stdio/test-printfloat.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/stdio/test-printfloat.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/stdio/test-scanfloat.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/stdio/test-scanfloat.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/stdlib/test-heapsort.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/stdlib/test-heapsort.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/stdlib/test-mergesort.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/stdlib/test-mergesort.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/stdlib/test-qsort.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/stdlib/test-qsort.t#1 branch .. //depot/projects/wifi/tools/regression/lib/libc/string/test-strerror.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/libc/string/test-strerror.t#1 branch .. //depot/projects/wifi/tools/regression/lib/msun/test-fenv.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/msun/test-fenv.t#1 branch .. //depot/projects/wifi/tools/regression/lib/msun/test-ilogb.c#2 integrate .. //depot/projects/wifi/tools/regression/lib/msun/test-ilogb.t#1 branch .. //depot/projects/wifi/tools/regression/netinet/ipsockopt/ipsockopt.c#2 integrate .. //depot/projects/wifi/tools/regression/netinet/ipsockopt/ipsockopt.t#1 branch .. //depot/projects/wifi/tools/regression/pipe/bigpipetest.c#2 integrate .. //depot/projects/wifi/tools/regression/pipe/bigpipetest.t#1 branch .. //depot/projects/wifi/tools/regression/sockets/accept_fd_leak/accept_fd_leak.c#2 integrate .. //depot/projects/wifi/tools/regression/sockets/accept_fd_leak/accept_fd_leak.t#1 branch .. //depot/projects/wifi/tools/regression/sockets/accf_data_attach/accf_data_attach.c#2 integrate .. //depot/projects/wifi/tools/regression/sockets/accf_data_attach/accf_data_attach.t#1 branch .. //depot/projects/wifi/tools/regression/sockets/kqueue/kqueue.c#2 integrate .. //depot/projects/wifi/tools/regression/sockets/kqueue/kqueue.t#1 branch .. //depot/projects/wifi/tools/regression/usr.bin/file2c/regress.sh#2 integrate .. //depot/projects/wifi/tools/regression/usr.bin/file2c/regress.t#1 branch .. //depot/projects/wifi/tools/regression/usr.bin/join/regress.sh#2 integrate .. //depot/projects/wifi/tools/regression/usr.bin/join/regress.t#1 branch .. //depot/projects/wifi/tools/regression/usr.bin/jot/regress.sh#2 integrate .. //depot/projects/wifi/tools/regression/usr.bin/jot/regress.t#1 branch .. //depot/projects/wifi/tools/regression/usr.bin/m4/regress.sh#2 integrate .. //depot/projects/wifi/tools/regression/usr.bin/m4/regress.t#1 branch .. //depot/projects/wifi/tools/regression/usr.bin/make/Makefile#2 integrate .. //depot/projects/wifi/tools/regression/usr.bin/make/regress.t#1 branch .. //depot/projects/wifi/tools/regression/usr.bin/regress.m4#2 integrate .. //depot/projects/wifi/tools/regression/usr.bin/sed/regress.sh#2 integrate .. //depot/projects/wifi/tools/regression/usr.bin/sed/regress.t#1 branch .. //depot/projects/wifi/tools/regression/usr.bin/uudecode/regress.sh#2 integrate .. //depot/projects/wifi/tools/regression/usr.bin/uudecode/regress.t#1 branch .. //depot/projects/wifi/tools/regression/usr.bin/uuencode/regress.sh#2 integrate .. //depot/projects/wifi/tools/regression/usr.bin/uuencode/regress.t#1 branch .. //depot/projects/wifi/tools/regression/usr.bin/xargs/regress.sh#2 integrate .. //depot/projects/wifi/tools/regression/usr.bin/xargs/regress.t#1 branch .. //depot/projects/wifi/tools/tools/nanobsd/make.conf#4 integrate .. //depot/projects/wifi/tools/tools/tinderbox/etc/releng_5.rc#2 integrate .. //depot/projects/wifi/tools/tools/tinderbox/etc/update_releng_5.rc#2 integrate .. //depot/projects/wifi/usr.bin/Makefile#2 integrate .. //depot/projects/wifi/usr.bin/chkey/Makefile#2 integrate .. //depot/projects/wifi/usr.bin/chpass/Makefile#2 integrate .. //depot/projects/wifi/usr.bin/ipcs/ipcs.c#2 integrate .. //depot/projects/wifi/usr.bin/make/compat.c#2 integrate .. //depot/projects/wifi/usr.bin/make/config.h#3 integrate .. //depot/projects/wifi/usr.bin/make/job.c#3 integrate .. //depot/projects/wifi/usr.bin/make/job.h#3 integrate .. //depot/projects/wifi/usr.bin/make/main.c#3 integrate .. //depot/projects/wifi/usr.bin/make/make.c#2 integrate .. //depot/projects/wifi/usr.bin/newkey/Makefile#2 integrate .. //depot/projects/wifi/usr.bin/pkill/Makefile#2 integrate .. //depot/projects/wifi/usr.bin/pkill/pkill.c#2 integrate .. //depot/projects/wifi/usr.bin/tar/Makefile#3 integrate .. //depot/projects/wifi/usr.bin/tr/str.c#2 integrate .. //depot/projects/wifi/usr.sbin/Makefile#2 integrate .. //depot/projects/wifi/usr.sbin/acpi/acpiconf/Makefile#2 integrate .. //depot/projects/wifi/usr.sbin/acpi/acpiconf/acpiconf.c#2 integrate .. //depot/projects/wifi/usr.sbin/acpi/acpidb/Makefile#2 integrate .. //depot/projects/wifi/usr.sbin/acpi/acpidb/acpidb.c#2 integrate .. //depot/projects/wifi/usr.sbin/amd/Makefile.inc#2 integrate .. //depot/projects/wifi/usr.sbin/amd/amd/Makefile#2 integrate .. //depot/projects/wifi/usr.sbin/amd/include/Makefile#2 integrate .. //depot/projects/wifi/usr.sbin/bootparamd/bootparamd/Makefile#2 integrate .. //depot/projects/wifi/usr.sbin/bootparamd/bootparamd/bootparamd.c#2 integrate .. //depot/projects/wifi/usr.sbin/moused/moused.8#2 integrate .. //depot/projects/wifi/usr.sbin/pppd/cbcp.c#2 integrate .. //depot/projects/wifi/usr.sbin/pstat/pstat.8#2 integrate .. //depot/projects/wifi/usr.sbin/sendmail/Makefile#2 integrate .. //depot/projects/wifi/usr.sbin/sysinstall/Makefile#2 integrate .. //depot/projects/wifi/usr.sbin/sysinstall/anonFTP.c#2 integrate .. //depot/projects/wifi/usr.sbin/sysinstall/config.c#4 integrate .. //depot/projects/wifi/usr.sbin/syslogd/syslogd.c#3 integrate Differences ... ==== //depot/projects/wifi/Makefile.inc1#4 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.451 2004/11/06 03:14:26 peter Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.456 2004/11/15 05:59:10 peter Exp $ # # Make command line options: # -DNO_DYNAMICROOT do not link /bin and /sbin dynamically @@ -83,7 +83,7 @@ .endif CVS?= cvs -CVSFLAGS?= -A -P -d +CVSFLAGS?= -A -P -d -I! SUP?= /usr/local/bin/cvsup SUPFLAGS?= -g -L 2 -P - .if defined(SUPHOST) @@ -201,7 +201,7 @@ PATH=${TMPPATH} WMAKE= ${WMAKEENV} ${MAKE} -f Makefile.inc1 DESTDIR=${WORLDTMP} -.if ${MACHINE_ARCH} == amd64 +.if ${MACHINE_ARCH} == "amd64" # 32 bit world LIB32TMP= ${OBJTREE}${.CURDIR}/lib32 @@ -378,7 +378,7 @@ @echo ">>> stage 4.4: building everything" @echo "--------------------------------------------------------------" ${_+_}cd ${.CURDIR}; ${WMAKE} par-all -.if ${MACHINE_ARCH} == amd64 +.if ${MACHINE_ARCH} == "amd64" build32: @echo @echo "--------------------------------------------------------------" @@ -404,11 +404,21 @@ cd ${.CURDIR}/secure/lib; \ ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} .endif +.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) + cd ${.CURDIR}/kerberos5/lib; \ + ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} +.endif .endfor .for _dir in lib/libncurses lib/libmagic cd ${.CURDIR}/${_dir}; \ MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} build-tools .endfor +.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) +.for _t in obj depend all + cd ${.CURDIR}/kerberos5/tools; \ + MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} ${_t} +.endfor +.endif cd ${.CURDIR}; \ ${LIB32MAKE} -f Makefile.inc1 DESTDIR=${LIB32TMP} libraries .for _t in obj depend all @@ -436,7 +446,7 @@ WMAKE_TGTS+= _cross-tools .endif WMAKE_TGTS+= _includes _libraries _depend everything -.if ${MACHINE_ARCH} == amd64 && defined(WANT_LIB32) +.if ${MACHINE_ARCH} == "amd64" && defined(WITH_LIB32) WMAKE_TGTS+= build32 .endif @@ -569,7 +579,7 @@ @echo ">>> Installing everything" @echo "--------------------------------------------------------------" ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install -.if ${MACHINE_ARCH} == amd64 && defined(WANT_LIB32) +.if ${MACHINE_ARCH} == "amd64" && defined(WITH_LIB32) ${_+_}cd ${.CURDIR}; ${MAKE} -f Makefile.inc1 install32 .endif @@ -992,7 +1002,7 @@ lib/libkvm lib/libmd \ lib/libncurses lib/libnetgraph lib/libopie lib/libpam \ lib/libradius \ - lib/libsbuf lib/libtacplus lib/libutil lib/libypclnt \ + lib/libsbuf lib/libtacplus lib/libutil \ lib/libz lib/msun lib/libopie__L lib/libtacplus__L: lib/libmd__L @@ -1029,6 +1039,10 @@ lib/libradius__L: lib/libmd__L .endif +.if !defined(NO_NIS) +_prebuild_libs+= lib/libypclnt +.endif + _generic_libs+= usr.bin/lex/lib .if ${MACHINE_ARCH} == "i386" ==== //depot/projects/wifi/UPDATING#3 (text+ko) ==== @@ -23,6 +23,18 @@ developers choose to disable these features on build machines to maximize performance. +20041116: + Support for systems with an 80386 CPU has been removed. Please + use FreeBSD 5.x or earlier on systems with an 80386. + +20041110: + We have had a hack which would mount the root filesystem + R/W if the device were named 'md*'. As part of the vnode + work I'm doing I have had to remove this hack. People + building systems which use preloaded MD root filesystems + may need to insert a "/sbin/mount -u -o rw /dev/md0 /" in + their /etc/rc scripts. + 20041102: The size of struct tcpcb has changed again due to the removal of RFC1644 T/TCP. You have to recompile userland programs that @@ -1961,4 +1973,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.377 2004/11/02 22:22:22 andre Exp $ +$FreeBSD: src/UPDATING,v 1.379 2004/11/16 21:18:41 jhb Exp $ ==== //depot/projects/wifi/bin/pax/tar.c#2 (text+ko) ==== @@ -37,7 +37,7 @@ #endif #endif /* not lint */ #include -__FBSDID("$FreeBSD: src/bin/pax/tar.c,v 1.23 2004/04/06 20:06:48 markm Exp $"); +__FBSDID("$FreeBSD: src/bin/pax/tar.c,v 1.24 2004/11/13 10:56:35 yar Exp $"); #include #include @@ -387,7 +387,13 @@ * copy out the name and values in the stat buffer */ hd = (HD_TAR *)buf; - arcn->nlen = l_strncpy(arcn->name, hd->name, sizeof(arcn->name) - 1); + /* + * old tar format specifies the name always be null-terminated, + * but let's be robust to broken archives. + * the same applies to handling links below. + */ + arcn->nlen = l_strncpy(arcn->name, hd->name, + MIN(sizeof(hd->name), sizeof(arcn->name)) - 1); arcn->name[arcn->nlen] = '\0'; arcn->sb.st_mode = (mode_t)(asc_ul(hd->mode,sizeof(hd->mode),OCT) & 0xfff); @@ -417,7 +423,7 @@ */ arcn->type = PAX_SLK; arcn->ln_nlen = l_strncpy(arcn->ln_name, hd->linkname, - sizeof(arcn->ln_name) - 1); + MIN(sizeof(hd->linkname), sizeof(arcn->ln_name)) - 1); arcn->ln_name[arcn->ln_nlen] = '\0'; arcn->sb.st_mode |= S_IFLNK; break; @@ -429,7 +435,7 @@ arcn->type = PAX_HLK; arcn->sb.st_nlink = 2; arcn->ln_nlen = l_strncpy(arcn->ln_name, hd->linkname, - sizeof(arcn->ln_name) - 1); + MIN(sizeof(hd->linkname), sizeof(arcn->ln_name)) - 1); arcn->ln_name[arcn->ln_nlen] = '\0'; /* @@ -533,7 +539,7 @@ case PAX_SLK: case PAX_HLK: case PAX_HRG: - if (arcn->ln_nlen > (int)sizeof(hd->linkname)) { + if (arcn->ln_nlen >= (int)sizeof(hd->linkname)) { paxwarn(1,"Link name too long for tar %s", arcn->ln_name); return(1); } @@ -749,12 +755,19 @@ */ dest = arcn->name; if (*(hd->prefix) != '\0') { - cnt = l_strncpy(dest, hd->prefix, sizeof(arcn->name) - 2); + cnt = l_strncpy(dest, hd->prefix, + MIN(sizeof(hd->prefix), sizeof(arcn->name) - 2)); dest += cnt; *dest++ = '/'; cnt++; } - arcn->nlen = cnt + l_strncpy(dest, hd->name, sizeof(arcn->name) - cnt); + /* + * ustar format specifies the name may be unterminated + * if it fills the entire field. this also applies to + * the prefix and the linkname. + */ + arcn->nlen = cnt + l_strncpy(dest, hd->name, + MIN(sizeof(hd->name), sizeof(arcn->name) - cnt - 1)); arcn->name[arcn->nlen] = '\0'; /* @@ -848,7 +861,7 @@ * copy the link name */ arcn->ln_nlen = l_strncpy(arcn->ln_name, hd->linkname, - sizeof(arcn->ln_name) - 1); + MIN(sizeof(hd->linkname), sizeof(arcn->ln_name) - 1)); arcn->ln_name[arcn->ln_nlen] = '\0'; break; case CONTTYPE: @@ -900,7 +913,7 @@ */ if (((arcn->type == PAX_SLK) || (arcn->type == PAX_HLK) || (arcn->type == PAX_HRG)) && - (arcn->ln_nlen >= (int)sizeof(hd->linkname))) { + (arcn->ln_nlen > (int)sizeof(hd->linkname))) { paxwarn(1, "Link name too long for ustar %s", arcn->ln_name); return(1); } @@ -925,17 +938,16 @@ * occur, we remove the / and copy the first part to the prefix */ *pt = '\0'; - l_strncpy(hd->prefix, arcn->name, sizeof(hd->prefix) - 1); + l_strncpy(hd->prefix, arcn->name, sizeof(hd->prefix)); *pt++ = '/'; } else memset(hd->prefix, 0, sizeof(hd->prefix)); /* * copy the name part. this may be the whole path or the part after - * the prefix + * the prefix. both the name and prefix may fill the entire field. */ - l_strncpy(hd->name, pt, sizeof(hd->name) - 1); - hd->name[sizeof(hd->name) - 1] = '\0'; + l_strncpy(hd->name, pt, sizeof(hd->name)); /* * set the fields in the header that are type dependent @@ -978,8 +990,8 @@ hd->typeflag = SYMTYPE; else hd->typeflag = LNKTYPE; - l_strncpy(hd->linkname,arcn->ln_name, sizeof(hd->linkname) - 1); - hd->linkname[sizeof(hd->linkname) - 1] = '\0'; + /* the link name may occupy the entire field in ustar */ + l_strncpy(hd->linkname,arcn->ln_name, sizeof(hd->linkname)); memset(hd->devmajor, 0, sizeof(hd->devmajor)); memset(hd->devminor, 0, sizeof(hd->devminor)); if (ul_oct((u_long)0L, hd->size, sizeof(hd->size), 3)) @@ -1072,9 +1084,9 @@ * check to see if the file name is small enough to fit in the name * field. if so just return a pointer to the name. */ - if (len < TNMSZ) + if (len <= TNMSZ) return(name); - if (len > (TPFSZ + TNMSZ)) + if (len > (TPFSZ + TNMSZ + 1)) return(NULL); /* @@ -1083,7 +1095,7 @@ * to find the biggest piece to fit in the name field (or the smallest * prefix we can find) */ - start = name + len - TNMSZ; + start = name + len - TNMSZ - 1; while ((*start != '\0') && (*start != '/')) ++start; @@ -1101,7 +1113,7 @@ * the file would then expand on extract to //str. The len == 0 below * makes this special case follow the spec to the letter. */ - if ((len >= TPFSZ) || (len == 0)) + if ((len > TPFSZ) || (len == 0)) return(NULL); /* ==== //depot/projects/wifi/bin/ps/Makefile#2 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/bin/ps/Makefile,v 1.25 2004/02/23 20:05:14 johan Exp $ +# $FreeBSD: src/bin/ps/Makefile,v 1.26 2004/11/13 17:12:22 ru Exp $ # @(#)Makefile 8.1 (Berkeley) 6/2/93 PROG= ps @@ -13,7 +13,5 @@ CFLAGS+=-DLAZY_PS DPADD= ${LIBM} ${LIBKVM} LDADD= -lm -lkvm -#BINGRP= kmem -#BINMODE=2555 .include ==== //depot/projects/wifi/bin/ps/ps.c#2 (text+ko) ==== @@ -47,7 +47,7 @@ #endif #include -__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.106 2004/06/27 22:56:58 gad Exp $"); +__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.108 2004/11/14 19:30:02 csjp Exp $"); #include #include @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -128,6 +129,7 @@ } l; }; +static int check_procfs(void); static int addelem_gid(struct listinfo *, const char *); static int addelem_pid(struct listinfo *, const char *); static int addelem_tty(struct listinfo *, const char *); @@ -171,7 +173,7 @@ struct winsize ws; const char *nlistf, *memf; char *cols; - int all, ch, dropgid, elem, flag, _fmt, i, lineno; + int all, ch, elem, flag, _fmt, i, lineno; int nentries, nkept, nselectors; int prtheader, showthreads, wflag, what, xkeep, xkeep_implied; char errbuf[_POSIX2_LINE_MAX]; @@ -196,7 +198,7 @@ if (argc > 1) argv[1] = kludge_oldps_options(PS_ARGS, argv[1], argv[2]); - all = dropgid = _fmt = nselectors = optfatal = 0; + all = _fmt = nselectors = optfatal = 0; prtheader = showthreads = wflag = xkeep_implied = 0; xkeep = -1; /* Neither -x nor -X. */ init_list(&gidlist, addelem_gid, sizeof(gid_t), "group"); @@ -278,14 +280,12 @@ break; case 'M': memf = optarg; - dropgid = 1; break; case 'm': sortby = SORTMEM; break; case 'N': nlistf = optarg; - dropgid = 1; break; case 'O': parsefmt(o1, 1); @@ -404,6 +404,14 @@ argv += optind; /* + * If the user specified ps -e then they want a copy of the process + * environment kvm_getenvv(3) attempts to open /proc//mem. + * Check to make sure that procfs is mounted on /proc, otherwise + * print a warning informing the user that output will be incomplete. + */ + if (needenv == 1 && check_procfs() == 0) + warnx("Process environment requires procfs(5)"); + /* * If there arguments after processing all the options, attempt * to treat them as a list of process ids. */ @@ -423,14 +431,6 @@ if (xkeep < 0) /* Neither -X nor -x was specified. */ xkeep = xkeep_implied; - - /* - * Discard setgid privileges if not the running kernel so that bad - * guys can't print interesting stuff from kernel memory. - */ - if (dropgid) - setgid(getgid()); - kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, errbuf); if (kd == 0) errx(1, "%s", errbuf); @@ -1176,6 +1176,21 @@ return (newopts); } +static int +check_procfs(void) +{ + struct statfs *mntbuf; + size_t mntsize, i; + + mntsize = getmntinfo(&mntbuf, MNT_NOWAIT); + for (i = 0; i < mntsize; i++) + if (strcmp(mntbuf[i].f_mntonname, "/proc") == 0 && + strcmp(mntbuf[i].f_fstypename, "procfs") == 0) { + return (1); + } + return (0); +} + static void usage(void) { ==== //depot/projects/wifi/bin/rm/rm.c#3 (text+ko) ==== @@ -39,7 +39,7 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/bin/rm/rm.c,v 1.51 2004/10/28 08:25:30 delphij Exp $"); +__FBSDID("$FreeBSD: src/bin/rm/rm.c,v 1.52 2004/11/13 04:07:01 jkh Exp $"); #include #include @@ -192,8 +192,11 @@ flags |= FTS_NOSTAT; if (Wflag) flags |= FTS_WHITEOUT; - if (!(fts = fts_open(argv, flags, NULL))) + if (!(fts = fts_open(argv, flags, NULL))) { + if (fflag && errno == ENOENT) + return; err(1, "fts_open"); + } while ((p = fts_read(fts)) != NULL) { switch (p->fts_info) { case FTS_DNR: ==== //depot/projects/wifi/contrib/gcc/gcc.1#2 (text+ko) ==== @@ -1,4 +1,4 @@ -.\" $FreeBSD: src/contrib/gcc/gcc.1,v 1.19 2003/06/25 16:12:05 obrien Exp $ +.\" $FreeBSD: src/contrib/gcc/gcc.1,v 1.21 2004/11/11 07:50:09 obrien Exp $ .\" Copyright (c) 1991, 1992, 1993, 1994 Free Software Foundation -*-Text-*- .\" See section COPYING for conditions for redistribution .\" @@ -24,7 +24,7 @@ .Id $Id: gcc.1,v 1.9 1998/12/16 20:55:57 law Exp $ .TH GCC 1 "\*(Dt" "GNU Tools" "GNU Tools" .SH NAME -gcc, g++ \- GNU project C and C++ Compiler (gcc-3.2.1) +gcc, g++ \- GNU project C and C++ Compiler .SH SYNOPSIS .B gcc .RI "[ " option " | " filename " ].\|.\|." @@ -2461,10 +2461,11 @@ .B \-finline\-functions. .TP .B \-Os -Optimize for size. This enables all +Optimize for size. +This enables all .B \-O2 -optimizations that do not typically increase code size. It also performs -further optimizations designed to reduce code size. +optimizations that do not typically increase code size. +It also performs further optimizations designed to reduce code size. .TP .B \-O0 Do not optimize. @@ -3628,17 +3629,19 @@ (pentium), .B pentium, .B i686 -(pentiumpro), and +(pentiumpro), +and .B pentiumpro. While picking a specific CPU TYPE will schedule things appropriately for that -particular chip, the compiler will not generate any code that does not run on -the i386 without the +particular chip, +the compiler will not generate any code that does not run on the i386 without +the .B \-march=\fIcpu type\fP option being used. .TP .B \-march=\fIcpu type\fP -Generate instructions for the machine type CPU TYPE. The choices for CPU TYPE -are: +Generate instructions for the machine type CPU TYPE. +The choices for CPU TYPE are: .B i386, .B i486, .B pentium, ==== //depot/projects/wifi/contrib/pf/man/pf.conf.5#2 (text+ko) ==== @@ -1,4 +1,4 @@ -.\" $FreeBSD: src/contrib/pf/man/pf.conf.5,v 1.4 2004/10/07 15:39:02 mlaier Exp $ +.\" $FreeBSD: src/contrib/pf/man/pf.conf.5,v 1.5 2004/11/14 17:05:54 mlaier Exp $ .\" $OpenBSD: pf.conf.5,v 1.292 2004/02/24 05:44:48 mcbride Exp $ .\" .\" Copyright (c) 2002, Daniel Hartmeier @@ -349,7 +349,7 @@ .It Ar set limit Sets hard limits on the memory pools used by the packet filter. See -.Xr pool 9 +.Xr zone 9 for an explanation of memory pools. .Pp For example, ==== //depot/projects/wifi/etc/defaults/rc.conf#4 (text+ko) ==== @@ -13,7 +13,7 @@ # # All arguments must be in double or single quotes. # -# $FreeBSD: src/etc/defaults/rc.conf,v 1.230 2004/11/09 10:03:17 keramida Exp $ +# $FreeBSD: src/etc/defaults/rc.conf,v 1.231 2004/11/09 21:33:18 keramida Exp $ ############################################################## ### Important initial Boot-time options #################### @@ -40,7 +40,7 @@ removable_interfaces="" # Removable network interfaces for /etc/pccard_ether. tmpmfs="AUTO" # Set to YES to always create an mfs /tmp, NO to never tmpsize="20m" # Size of mfs /tmp if created -tmpmfs_flags="-S -o noexec,nosuid,nodev" # Extra mdmfs options for the mfs /tmp +tmpmfs_flags="-S" # Extra mdmfs options for the mfs /tmp varmfs="AUTO" # Set to YES to always create an mfs /var, NO to never varsize="32m" # Size of mfs /var if created varmfs_flags="-S" # Extra mount options for the mfs /var ==== //depot/projects/wifi/etc/rc.d/Makefile#4 (text+ko) ==== @@ -1,5 +1,5 @@ # $NetBSD: Makefile,v 1.16 2001/01/14 15:37:22 minoura Exp $ -# $FreeBSD: src/etc/rc.d/Makefile,v 1.46 2004/11/04 12:59:16 phk Exp $ +# $FreeBSD: src/etc/rc.d/Makefile,v 1.47 2004/11/16 04:20:09 wes Exp $ FILES= DAEMON LOGIN NETWORKING SERVERS \ abi accounting addswap adjkerntz amd \ @@ -28,7 +28,7 @@ pccard pcvt pf pflog \ power_profile ppp-user pppoed preseedrandom pwcheck \ quota \ - random rarpd rcconf.sh resolv root \ + ramdisk ramdisk-own random rarpd rcconf.sh resolv root \ route6d routed routing rpcbind rtadvd rwho \ savecore securelevel sendmail \ serial sppp sshd swap1 \ ==== //depot/projects/wifi/etc/rc.d/ramdisk-own#2 (text+ko) ==== @@ -24,7 +24,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/rc.d/ramdisk-own,v 1.3 2004/10/07 13:55:26 mtm Exp $ +# $FreeBSD: src/etc/rc.d/ramdisk-own,v 1.4 2004/11/16 04:14:28 wes Exp $ # # PROVIDE: ramdisk-own @@ -39,7 +39,6 @@ ramdisk_own_start() { -set -x for unit in $ramdisk_units; do device="/dev/md$unit" dir=`mount | grep $device | cut -d' ' -f3` ==== //depot/projects/wifi/etc/rc.d/serial#2 (text+ko) ==== @@ -24,7 +24,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/rc.d/serial,v 1.22 2004/10/07 13:55:26 mtm Exp $ +# $FreeBSD: src/etc/rc.d/serial,v 1.24 2004/11/14 19:51:34 obrien Exp $ # # PROVIDE: serial @@ -45,73 +45,69 @@ default() { # Reset everything changed by the other functions to initial defaults. - ci=$1; shift # call in device identifier - co=$1; shift # call out device identifier + dc=$1; shift # device name character drainwait=`sysctl -n kern.drainwait` for i in $* do - comcontrol /dev/tty${ci}${i} dtrwait 300 drainwait $drainwait - stty < /dev/ttyi${ci}${i} -clocal crtscts hupcl 9600 reprint ^R - stty < /dev/ttyl${ci}${i} -clocal -crtscts -hupcl 0 - stty < /dev/cuai${co}${i} -clocal crtscts hupcl 9600 reprint ^R - stty < /dev/cual${co}${i} -clocal -crtscts -hupcl 0 + comcontrol /dev/tty${dc}${i} dtrwait 300 drainwait $drainwait + stty < /dev/tty${dc}${i}.init -clocal crtscts hupcl 9600 reprint ^R + stty < /dev/tty${dc}${i}.lock -clocal -crtscts -hupcl 0 >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed Nov 17 03:11:34 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B802116A4D1; Wed, 17 Nov 2004 03:11:33 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 73CF716A4CE for ; Wed, 17 Nov 2004 03:11:33 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5ED4C43D55 for ; Wed, 17 Nov 2004 03:11:33 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAH3BXhZ022225 for ; Wed, 17 Nov 2004 03:11:33 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAH3BXY8022222 for perforce@freebsd.org; Wed, 17 Nov 2004 03:11:33 GMT (envelope-from sam@freebsd.org) Date: Wed, 17 Nov 2004 03:11:33 GMT Message-Id: <200411170311.iAH3BXY8022222@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65291 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 03:11:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=65291 Change 65291 by sam@sam_ebb on 2004/11/17 03:10:59 correct decl to reflect code Affected files ... .. //depot/projects/wifi/sys/net/if_var.h#6 edit Differences ... ==== //depot/projects/wifi/sys/net/if_var.h#6 (text+ko) ==== @@ -629,7 +629,7 @@ void if_detach(struct ifnet *); void if_down(struct ifnet *); void if_initname(struct ifnet *, const char *, int); -void if_link_state_change(struct ifnet *, int, int); +void if_link_state_change(struct ifnet *, int); int if_printf(struct ifnet *, const char *, ...) __printflike(2, 3); int if_setlladdr(struct ifnet *, const u_char *, int); void if_up(struct ifnet *); From owner-p4-projects@FreeBSD.ORG Wed Nov 17 04:39:20 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 00DFD16A4D1; Wed, 17 Nov 2004 04:39:19 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C71AB16A4CE for ; Wed, 17 Nov 2004 04:39:19 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id A3C9D43D1F for ; Wed, 17 Nov 2004 04:39:19 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAH4dJkk024792 for ; Wed, 17 Nov 2004 04:39:19 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAH4dJNO024789 for perforce@freebsd.org; Wed, 17 Nov 2004 04:39:19 GMT (envelope-from sam@freebsd.org) Date: Wed, 17 Nov 2004 04:39:19 GMT Message-Id: <200411170439.iAH4dJNO024789@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65294 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 04:39:20 -0000 http://perforce.freebsd.org/chv.cgi?CH=65294 Change 65294 by sam@sam_ebb on 2004/11/17 04:38:20 add amrr rate control module Affected files ... .. //depot/projects/wifi/sys/modules/Makefile#6 edit .. //depot/projects/wifi/sys/modules/ath_rate_amrr/Makefile#1 add Differences ... ==== //depot/projects/wifi/sys/modules/Makefile#6 (text+ko) ==== @@ -26,6 +26,7 @@ ${_asr} \ ath \ ${_ath_hal} \ + ath_rate_amrr \ ath_rate_onoe \ aue \ ${_auxio} \ From owner-p4-projects@FreeBSD.ORG Wed Nov 17 04:39:21 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C246716A4D8; Wed, 17 Nov 2004 04:39:20 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 21CE416A4E2 for ; Wed, 17 Nov 2004 04:39:20 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id F263B43D1F for ; Wed, 17 Nov 2004 04:39:19 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAH4dJlw024799 for ; Wed, 17 Nov 2004 04:39:19 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAH4dJlw024795 for perforce@freebsd.org; Wed, 17 Nov 2004 04:39:19 GMT (envelope-from sam@freebsd.org) Date: Wed, 17 Nov 2004 04:39:19 GMT Message-Id: <200411170439.iAH4dJlw024795@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65295 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 04:39:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=65295 Change 65295 by sam@sam_ebb on 2004/11/17 04:38:55 fix make LINT Affected files ... .. //depot/projects/wifi/sys/i386/conf/NOTES#4 edit Differences ... ==== //depot/projects/wifi/sys/i386/conf/NOTES#4 (text+ko) ==== @@ -579,6 +579,8 @@ device ath device ath_hal # Atheros HAL (includes binary component) +device ath_rate_onoe # Onoe rate control for ath driver +#device ath_rate_amrr # AMRR rate control for ath driver #device wlan # 802.11 layer # From owner-p4-projects@FreeBSD.ORG Wed Nov 17 06:54:04 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9D28616A4D1; Wed, 17 Nov 2004 06:54:04 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 774BB16A4CE for ; Wed, 17 Nov 2004 06:54:04 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4525143D2D for ; Wed, 17 Nov 2004 06:54:04 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAH6s4O1039154 for ; Wed, 17 Nov 2004 06:54:04 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAH6s3XO039151 for perforce@freebsd.org; Wed, 17 Nov 2004 06:54:03 GMT (envelope-from marcel@freebsd.org) Date: Wed, 17 Nov 2004 06:54:03 GMT Message-Id: <200411170654.iAH6s3XO039151@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65299 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 06:54:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=65299 Change 65299 by marcel@marcel_nfs on 2004/11/17 06:53:18 Remove UART_IPEND_* from dev/uart/uart_bus.h and have them reincarnated as SER_INT_* in sys/serial.h. Adjust current consumers of these defines. The purpose of globalizing these defines this way is that there's a handshake between different drivers WRT pending interrupt sources and all drivers need to agree. For example, puc(4) could in the near future query uart(4) for any pending interrupts and have them handled in priority order. Likewise, scc(4) can query the hardware to determine which channel has what pending interrupts and call the inferior driver to handle it. The inferior driver can be uart(4), hdlc(4) or bsc(4). Affected files ... .. //depot/projects/uart/dev/uart/uart_bus.h#34 edit .. //depot/projects/uart/dev/uart/uart_core.c#38 edit .. //depot/projects/uart/dev/uart/uart_dev_i8251.c#4 edit .. //depot/projects/uart/dev/uart/uart_dev_ns8250.c#32 edit .. //depot/projects/uart/dev/uart/uart_dev_sab82532.c#33 edit .. //depot/projects/uart/dev/uart/uart_dev_z8530.c#19 edit .. //depot/projects/uart/dev/uart/uart_kbd_sun.c#2 edit .. //depot/projects/uart/dev/uart/uart_tty.c#20 edit .. //depot/projects/uart/sys/serial.h#2 edit Differences ... ==== //depot/projects/uart/dev/uart/uart_bus.h#34 (text+ko) ==== @@ -42,21 +42,6 @@ #define UART_FLUSH_RECEIVER UART_DRAIN_RECEIVER #define UART_FLUSH_TRANSMITTER UART_DRAIN_TRANSMITTER -/* - * Interrupt sources (in priority order). See also uart_core.c - * Note that the low order 16 bits are used to pass modem signals - * from the hardware interrupt handler to the software interrupt - * handler. - */ -#define UART_IPEND_OVERRUN 0x010000 -#define UART_IPEND_BREAK 0x020000 -#define UART_IPEND_RXREADY 0x040000 -#define UART_IPEND_SIGCHG 0x080000 -#define UART_IPEND_TXIDLE 0x100000 - -#define UART_IPEND_MASK 0x1f0000 -#define UART_IPEND_SIGMASK 0x00ffff - /* Received character status bits. */ #define UART_STAT_BREAK 0x0100 #define UART_STAT_FRAMERR 0x0200 ==== //depot/projects/uart/dev/uart/uart_core.c#38 (text+ko) ==== @@ -91,7 +91,7 @@ } #endif if (sc->sc_opened) { - atomic_set_32(&sc->sc_ttypend, UART_IPEND_BREAK); + atomic_set_32(&sc->sc_ttypend, SER_INT_BREAK); swi_sched(sc->sc_softih, 0); } } @@ -120,7 +120,7 @@ UART_RECEIVE(sc); if (uart_rx_put(sc, UART_STAT_OVERRUN)) sc->sc_rxbuf[sc->sc_rxput] = UART_STAT_OVERRUN; - atomic_set_32(&sc->sc_ttypend, UART_IPEND_RXREADY); + atomic_set_32(&sc->sc_ttypend, SER_INT_RXREADY); swi_sched(sc->sc_softih, 0); } UART_FLUSH(sc, UART_FLUSH_RECEIVER); @@ -148,7 +148,7 @@ } #endif if (sc->sc_opened) { - atomic_set_32(&sc->sc_ttypend, UART_IPEND_RXREADY); + atomic_set_32(&sc->sc_ttypend, SER_INT_RXREADY); swi_sched(sc->sc_softih, 0); } else sc->sc_rxput = sc->sc_rxget; /* Ignore received data. */ @@ -187,8 +187,8 @@ do { old = sc->sc_ttypend; new = old & ~UART_SIGMASK_STATE; - new |= sig & UART_IPEND_SIGMASK; - new |= UART_IPEND_SIGCHG; + new |= sig & SER_INT_SIGMASK; + new |= SER_INT_SIGCHG; } while (!atomic_cmpset_32(&sc->sc_ttypend, old, new)); if (sc->sc_opened) swi_sched(sc->sc_softih, 0); @@ -205,7 +205,7 @@ if (sc->sc_txbusy) { sc->sc_txbusy = 0; if (sc->sc_opened) { - atomic_set_32(&sc->sc_ttypend, UART_IPEND_TXIDLE); + atomic_set_32(&sc->sc_ttypend, SER_INT_TXIDLE); swi_sched(sc->sc_softih, 0); } } @@ -218,15 +218,15 @@ int ipend; while (!sc->sc_leaving && (ipend = UART_IPEND(sc)) != 0) { - if (ipend & UART_IPEND_OVERRUN) + if (ipend & SER_INT_OVERRUN) uart_intr_overrun(sc); - if (ipend & UART_IPEND_BREAK) + if (ipend & SER_INT_BREAK) uart_intr_break(sc); - if (ipend & UART_IPEND_RXREADY) + if (ipend & SER_INT_RXREADY) uart_intr_rxready(sc); - if (ipend & UART_IPEND_SIGCHG) + if (ipend & SER_INT_SIGCHG) uart_intr_sigchg(sc); - if (ipend & UART_IPEND_TXIDLE) + if (ipend & SER_INT_TXIDLE) uart_intr_txidle(sc); } } ==== //depot/projects/uart/dev/uart/uart_dev_i8251.c#4 (text+ko) ==== @@ -510,17 +510,17 @@ lsr = uart_getreg(bas, REG_LSR); mtx_unlock_spin(&sc->sc_hwmtx); if (lsr & LSR_OE) - ipend |= UART_IPEND_OVERRUN; + ipend |= SER_INT_OVERRUN; if (lsr & LSR_BI) - ipend |= UART_IPEND_BREAK; + ipend |= SER_INT_BREAK; if (lsr & LSR_RXRDY) - ipend |= UART_IPEND_RXREADY; + ipend |= SER_INT_RXREADY; } else { mtx_unlock_spin(&sc->sc_hwmtx); if (iir & IIR_TXRDY) - ipend |= UART_IPEND_TXIDLE; + ipend |= SER_INT_TXIDLE; else - ipend |= UART_IPEND_SIGCHG; + ipend |= SER_INT_SIGCHG; } return ((sc->sc_leaving) ? 0 : ipend); } ==== //depot/projects/uart/dev/uart/uart_dev_ns8250.c#32 (text+ko) ==== @@ -555,17 +555,17 @@ lsr = uart_getreg(bas, REG_LSR); mtx_unlock_spin(&sc->sc_hwmtx); if (lsr & LSR_OE) - ipend |= UART_IPEND_OVERRUN; + ipend |= SER_INT_OVERRUN; if (lsr & LSR_BI) - ipend |= UART_IPEND_BREAK; + ipend |= SER_INT_BREAK; if (lsr & LSR_RXRDY) - ipend |= UART_IPEND_RXREADY; + ipend |= SER_INT_RXREADY; } else { mtx_unlock_spin(&sc->sc_hwmtx); if (iir & IIR_TXRDY) - ipend |= UART_IPEND_TXIDLE; + ipend |= SER_INT_TXIDLE; else - ipend |= UART_IPEND_SIGCHG; + ipend |= SER_INT_SIGCHG; } return ((sc->sc_leaving) ? 0 : ipend); } ==== //depot/projects/uart/dev/uart/uart_dev_sab82532.c#33 (text+ko) ==== @@ -545,15 +545,15 @@ ipend = 0; if (isr1 & SAB_ISR1_BRKT) - ipend |= UART_IPEND_BREAK; + ipend |= SER_INT_BREAK; if (isr0 & SAB_ISR0_RFO) - ipend |= UART_IPEND_OVERRUN; + ipend |= SER_INT_OVERRUN; if (isr0 & (SAB_ISR0_TCD|SAB_ISR0_RPF)) - ipend |= UART_IPEND_RXREADY; + ipend |= SER_INT_RXREADY; if ((isr0 & SAB_ISR0_CDSC) || (isr1 & SAB_ISR1_CSC)) - ipend |= UART_IPEND_SIGCHG; + ipend |= SER_INT_SIGCHG; if (isr1 & SAB_ISR1_ALLS) - ipend |= UART_IPEND_TXIDLE; + ipend |= SER_INT_TXIDLE; return (ipend); } ==== //depot/projects/uart/dev/uart/uart_dev_z8530.c#19 (text+ko) ==== @@ -306,7 +306,7 @@ z8530->tpc = z8530_setup(bas, 9600, 8, 1, UART_PARITY_NONE); z8530->tpc &= ~(TPC_DTR|TPC_RTS); } - z8530->txidle = 1; /* Report UART_IPEND_TXIDLE. */ + z8530->txidle = 1; /* Report SER_INT_TXIDLE. */ sc->sc_rxfifosz = 3; sc->sc_txfifosz = 1; @@ -401,24 +401,24 @@ bes = uart_getmreg(bas, RR_BES); if (bes & BES_BRK) { uart_setreg(bas, REG_CTRL, CR_RSTXSI); - ipend |= UART_IPEND_BREAK; + ipend |= SER_INT_BREAK; } if (bes & BES_TXE && z8530->txidle) { uart_setreg(bas, REG_CTRL, CR_RSTTXI); - ipend |= UART_IPEND_TXIDLE; - z8530->txidle = 0; /* Suppress UART_IPEND_TXIDLE. */ + ipend |= SER_INT_TXIDLE; + z8530->txidle = 0; /* Suppress SER_INT_TXIDLE. */ } if (bes & BES_RXA) - ipend |= UART_IPEND_RXREADY; + ipend |= SER_INT_RXREADY; sig = sc->sc_hwsig; SIGCHG(bes & BES_CTS, sig, SER_CTS, SER_DCTS); SIGCHG(bes & BES_DCD, sig, SER_DCD, SER_DDCD); if (sig & UART_SIGMASK_DELTA) - ipend |= UART_IPEND_SIGCHG; + ipend |= SER_INT_SIGCHG; src = uart_getmreg(bas, RR_SRC); if (src & SRC_OVR) { uart_setreg(bas, REG_CTRL, CR_RSTERR); - ipend |= UART_IPEND_OVERRUN; + ipend |= SER_INT_OVERRUN; } mtx_unlock_spin(&sc->sc_hwmtx); return (ipend); @@ -547,7 +547,7 @@ uart_setreg(bas, REG_DATA, sc->sc_txbuf[0]); uart_barrier(bas); sc->sc_txbusy = 1; - z8530->txidle = 1; /* Report UART_IPEND_TXIDLE again. */ + z8530->txidle = 1; /* Report SER_INT_TXIDLE again. */ mtx_unlock_spin(&sc->sc_hwmtx); return (0); } ==== //depot/projects/uart/dev/uart/uart_kbd_sun.c#2 (text+ko) ==== @@ -248,10 +248,10 @@ return; pend = atomic_readandclear_32(&sc->sc_uart->sc_ttypend); - if (!(pend & UART_IPEND_MASK)) + if (!(pend & SER_INT_MASK)) return; - if (pend & UART_IPEND_RXREADY) { + if (pend & SER_INT_RXREADY) { if (KBD_IS_ACTIVE(&sc->sc_kbd) && KBD_IS_BUSY(&sc->sc_kbd)) { sc->sc_kbd.kb_callback.kc_func(&sc->sc_kbd, KBDIO_KEYINPUT, sc->sc_kbd.kb_callback.kc_arg); ==== //depot/projects/uart/dev/uart/uart_tty.c#20 (text+ko) ==== @@ -306,12 +306,12 @@ return; pend = atomic_readandclear_32(&sc->sc_ttypend); - if (!(pend & UART_IPEND_MASK)) + if (!(pend & SER_INT_MASK)) return; tp = sc->sc_u.u_tty.tp; - if (pend & UART_IPEND_RXREADY) { + if (pend & SER_INT_RXREADY) { while (!uart_rx_empty(sc) && !(tp->t_state & TS_TBLOCK)) { xc = uart_rx_get(sc); c = xc & 0xff; @@ -323,13 +323,13 @@ } } - if (pend & UART_IPEND_BREAK) { + if (pend & SER_INT_BREAK) { if (tp != NULL && !(tp->t_iflag & IGNBRK)) ttyld_rint(tp, 0); } - if (pend & UART_IPEND_SIGCHG) { - sig = pend & UART_IPEND_SIGMASK; + if (pend & SER_INT_SIGCHG) { + sig = pend & SER_INT_SIGMASK; if (sig & SER_DDCD) ttyld_modem(tp, sig & SER_DCD); if ((sig & SER_DCTS) && (tp->t_cflag & CCTS_OFLOW) && @@ -342,7 +342,7 @@ } } - if (pend & UART_IPEND_TXIDLE) { + if (pend & SER_INT_TXIDLE) { tp->t_state &= ~TS_BUSY; ttyld_start(tp); } ==== //depot/projects/uart/sys/serial.h#2 (text+ko) ==== @@ -61,4 +61,21 @@ #define SER_DRI SER_DELTA(SER_RI) #define SER_DDSR SER_DELTA(SER_DSR) +/* + * Specification of interrupt sources typical for serial ports. These are + * useful when some umbrella driver like scc(4) has enough knowledge of + * the hardware to obtain the set of pending interrupts but does not itself + * handle the interrupt. Each interrupt source can be given an interrupt + * resource for which inferior drivers can install handlers. The lower 16 + * bits are kept free for the signals above. + */ +#define SER_INT_OVERRUN 0x010000 +#define SER_INT_BREAK 0x020000 +#define SER_INT_RXREADY 0x040000 +#define SER_INT_SIGCHG 0x080000 +#define SER_INT_TXIDLE 0x100000 + +#define SER_INT_MASK 0xff0000 +#define SER_INT_SIGMASK 0x00ffff + #endif /* !_SYS_SERIAL_H_ */ From owner-p4-projects@FreeBSD.ORG Wed Nov 17 07:01:13 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8267516A4D1; Wed, 17 Nov 2004 07:01:13 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5F38016A4CE for ; Wed, 17 Nov 2004 07:01:13 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5192C43D2D for ; Wed, 17 Nov 2004 07:01:13 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAH71DmJ039478 for ; Wed, 17 Nov 2004 07:01:13 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAH71Drx039474 for perforce@freebsd.org; Wed, 17 Nov 2004 07:01:13 GMT (envelope-from marcel@freebsd.org) Date: Wed, 17 Nov 2004 07:01:13 GMT Message-Id: <200411170701.iAH71Drx039474@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65300 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 07:01:14 -0000 http://perforce.freebsd.org/chv.cgi?CH=65300 Change 65300 by marcel@marcel_nfs on 2004/11/17 07:00:55 Remove SCC_IPEND_*. They were copied from uart(4) but are now shared as SER_INT_*. Affected files ... .. //depot/projects/uart/dev/scc/scc_bfe.h#6 edit Differences ... ==== //depot/projects/uart/dev/scc/scc_bfe.h#6 (text+ko) ==== @@ -30,21 +30,6 @@ #define _DEV_SCC_BFE_H_ /* - * Interrupt sources (in priority order). See also uart_core.c - * Note that the low order 16 bits are used to pass modem signals - * from the hardware interrupt handler to the software interrupt - * handler. - */ -#define SCC_IPEND_OVERRUN 0x010000 -#define SCC_IPEND_BREAK 0x020000 -#define SCC_IPEND_RXREADY 0x040000 -#define SCC_IPEND_SIGCHG 0x080000 -#define SCC_IPEND_TXIDLE 0x100000 - -#define SCC_IPEND_MASK 0x1f0000 -#define SCC_IPEND_SIGMASK 0x00ffff - -/* * SCC mode (child) and channel control structures. */ struct scc_chan; From owner-p4-projects@FreeBSD.ORG Wed Nov 17 07:53:14 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BECBE16A4DB; Wed, 17 Nov 2004 07:53:13 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 56CC316A4D1 for ; Wed, 17 Nov 2004 07:53:13 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 460E343D1D for ; Wed, 17 Nov 2004 07:53:13 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAH7rDrH041413 for ; Wed, 17 Nov 2004 07:53:13 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAH7rCKY041410 for perforce@freebsd.org; Wed, 17 Nov 2004 07:53:12 GMT (envelope-from marcel@freebsd.org) Date: Wed, 17 Nov 2004 07:53:12 GMT Message-Id: <200411170753.iAH7rCKY041410@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65310 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 07:53:15 -0000 http://perforce.freebsd.org/chv.cgi?CH=65310 Change 65310 by marcel@marcel_nfs on 2004/11/17 07:52:15 Add bsc(4), which stands for Binary Synchronous Communication. Used by IBM 3780 terminals. The driver is skeletal, but attach and probe are sufficient to validate scc(4). Which is mostly the point. Affected files ... .. //depot/projects/uart/conf/files#35 edit .. //depot/projects/uart/dev/bsc/bsc_bus.h#1 add .. //depot/projects/uart/dev/bsc/bsc_bus_scc.c#1 add .. //depot/projects/uart/dev/bsc/bsc_core.c#1 add .. //depot/projects/uart/dev/bsc/bsc_dev_sab82532.c#1 add .. //depot/projects/uart/dev/bsc/bsc_dev_z8530.c#1 add Differences ... ==== //depot/projects/uart/conf/files#35 (text+ko) ==== @@ -374,6 +374,10 @@ dev/bktr/bktr_os.c optional bktr pci dev/bktr/bktr_tuner.c optional bktr pci dev/bktr/msp34xx.c optional bktr pci +dev/bsc/bsc_bus_scc.c optional bsc scc +dev/bsc/bsc_core.c optional bsc +dev/bsc/bsc_dev_sab82532.c optional bsc +dev/bsc/bsc_dev_z8530.c optional bsc dev/buslogic/bt.c optional bt dev/buslogic/bt_eisa.c optional bt eisa dev/buslogic/bt_isa.c optional bt isa From owner-p4-projects@FreeBSD.ORG Wed Nov 17 10:27:22 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9F52616A4D1; Wed, 17 Nov 2004 10:27:22 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5C08516A4CE for ; Wed, 17 Nov 2004 10:27:22 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3114B43D48 for ; Wed, 17 Nov 2004 10:27:22 +0000 (GMT) (envelope-from julian@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHARM5n052781 for ; Wed, 17 Nov 2004 10:27:22 GMT (envelope-from julian@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHARL6l052778 for perforce@freebsd.org; Wed, 17 Nov 2004 10:27:21 GMT (envelope-from julian@freebsd.org) Date: Wed, 17 Nov 2004 10:27:21 GMT Message-Id: <200411171027.iAHARL6l052778@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to julian@freebsd.org using -f From: Julian Elischer To: Perforce Change Reviews Subject: PERFORCE change 65317 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 10:27:23 -0000 http://perforce.freebsd.org/chv.cgi?CH=65317 Change 65317 by julian@julian_ref on 2004/11/17 10:27:14 small hack to cached fully functional threads. not tested.. some stuff is definitly out of scope (wrong word but I can't think of the right one now). KSE specific stuff is seen out of the kse file.. Affected files ... .. //depot/projects/nsched/sys/kern/kern_kse.c#35 edit .. //depot/projects/nsched/sys/kern/kern_synch.c#19 edit .. //depot/projects/nsched/sys/kern/kern_thread.c#46 edit .. //depot/projects/nsched/sys/sys/proc.h#41 edit Differences ... ==== //depot/projects/nsched/sys/kern/kern_kse.c#35 (text+ko) ==== @@ -1022,25 +1022,83 @@ * from the schedlock as it has a mutex op itself. * XXX BUG.. we need to get the cr ref after the thread has * checked and chenged its own, not 6 months before... + * + * If we have already some cached fully running threads, use them + * in preference as they need no setup. */ void thread_alloc_spare(struct thread *td) { struct thread *spare; + struct ksegrp *kg; + if (td->td_standin) return; - spare = thread_alloc(); + kg = td->td_ksegrp; + spare = TAILQ_FIRST(&kg->kg_ghostq); + if (spare) { + TAILQ_REMOVE(&kg->kg_ghostq, spare, td_runq); + kg->kg_numghosts--; + } else { + spare = thread_alloc(); + bzero(&spare->td_startzero, + (unsigned)RANGEOF(struct thread, td_startzero, td_endzero)); + spare->td_proc = td->td_proc; + spare->td_ucred = crhold(td->td_ucred); + } td->td_standin = spare; - bzero(&spare->td_startzero, - (unsigned) RANGEOF(struct thread, td_startzero, td_endzero)); - spare->td_proc = td->td_proc; - spare->td_ucred = crhold(td->td_ucred); +} + +/* + * Divert exiting threads to be held in a ksegrp cache of + * threads that are already in thread_userret(). + * if they are run, they will exit unless they have an upcall + * (see thread_userret() ) + * + * Called from: + * thread_userret() + * + */ +void +thread_hold(struct thread *td) +{ + struct ksegrp *kg = td->td_ksegrp; + + mtx_assert(&sched_lock, MA_OWNED); + TAILQ_INSERT_HEAD(&kg->kg_ghostq, td, td_runq); + kg->kg_numghosts++; + thread_unlink(td); + KASSERT((kg->kg_numthreads != 0), ("thread_hold: Cached last thread.")); + mi_switch(0, NULL); +} + +/* + * Because we are exiting the ksegrp, + * we should let all the cached threads run so that they can + * suicide. + * + * Called from: + * thread_exit() + */ +void +thread_unhold_all(struct ksegrp *kg) +{ + struct thread *td; + + mtx_assert(&sched_lock, MA_OWNED); + while ((td = TAILQ_FIRST(&kg->kg_ghostq))) { + TAILQ_REMOVE(&kg->kg_ghostq, td, td_runq); + kg->kg_numghosts--; + setrunnable(td); + thread_link(td, kg); + } } /* * Create a thread and schedule it for upcall on the KSE given. * Use our thread's standin so that we don't have to allocate one. + * If the standin is a ghost then just rescusitate it and use it. */ struct thread * thread_schedule_upcall(struct thread *td, struct kse_upcall *ku) @@ -1064,6 +1122,15 @@ CTR3(KTR_PROC, "thread_schedule_upcall: thread %p (pid %d, %s)", td2, td->td_proc->p_pid, td->td_proc->p_comm); /* + * if it's a ghost we are already all set up to run.. + * just give it the upcall and release it. + */ + if (td2->td_state == TDS_GHOST) { + td2->td_upcall = ku; + thread_link(td2, td->td_ksegrp); + return(td2); + } + /* * Bzero already done in thread_alloc_spare() because we can't * do the crhold here because we are in schedlock already. */ @@ -1315,9 +1382,12 @@ wakeup(&kg->kg_completed); mtx_lock_spin(&sched_lock); thread_stopped(p); - thread_exit(); - /* NOTREACHED */ - } + thread_hold(td); /* thread effectively stops running */ + if ((ku = td->td_upcall) == NULL) + thread_exit(); + td->td_pflags |= TDP_UPCALLING; + mtx_unlock_spin(&sched_lock); + } KASSERT(ku != NULL, ("upcall is NULL")); KASSERT(TD_CAN_UNBIND(td) == 0, ("can unbind")); ==== //depot/projects/nsched/sys/kern/kern_synch.c#19 (text+ko) ==== @@ -374,6 +374,12 @@ case TDS_RUNNING: case TDS_RUNQ: return; + case TDS_GHOST: + if (td->td_inhibitors == 0) { + td->td_state = TDS_CAN_RUN; + break; + } else + td->td_state = TDS_INHIBITED; case TDS_INHIBITED: /* * If we are only inhibited because we are swapped out ==== //depot/projects/nsched/sys/kern/kern_thread.c#46 (text+ko) ==== @@ -557,6 +557,12 @@ * takes the short path. */ if (p->p_flag & P_HADTHREADS) { + /* + * If only one thread make sure we free any cached ghosts. + * which may make numhreads >1 for a moment. + */ + if (p->p_numthreads > 1) + thread_unhold_all(kg); if (p->p_numthreads > 1) { thread_unlink(td); @@ -596,7 +602,11 @@ /* * If the thread we unlinked above was the last one, * then this ksegrp should go away too. + * but first lett any cached "ghost" threads suicide. + * This may temporarily increase the number of threads. */ + if (kg->kg_numthreads == 0) + thread_unhold_all(kg); if (kg->kg_numthreads == 0) { /* * let the scheduler know about this in case @@ -614,6 +624,7 @@ * This is probably not fair so think of * a better answer. */ + thread_unhold_all(kg); sched_exit_ksegrp(FIRST_KSEGRP_IN_PROC(p), td); sched_set_concurrency(kg, 0); /* XXX TEMP */ ksegrp_unlink(kg); @@ -687,6 +698,7 @@ * proc_linkup() * thread_schedule_upcall() * thr_create() + * thread_unhold_all() */ void thread_link(struct thread *td, struct ksegrp *kg) @@ -710,6 +722,7 @@ /* * Convert a process with one thread to an unthreaded process. + * * Called from: * thread_single(exit) (called from execve and exit) * kse_exit() XXX may need cleaning up wrt KSE stuff @@ -718,22 +731,30 @@ thread_unthread(struct thread *td) { struct proc *p = td->td_proc; + struct thread *spare; KASSERT((p->p_numthreads == 1), ("Unthreading with >1 threads")); + if (td->td_standin != NULL) { + spare = td->td_standin; + td->td_standin = NULL; + if (spare->td_state == TDS_GHOST) { + thread_link(spare, td->td_ksegrp); + mi_switch(0, spare); + } else { + thread_stash(spare); + } + } upcall_remove(td); p->p_flag &= ~(P_SA|P_HADTHREADS); td->td_mailbox = NULL; td->td_pflags &= ~(TDP_SA | TDP_CAN_UNBIND); - if (td->td_standin != NULL) { - thread_stash(td->td_standin); - td->td_standin = NULL; - } sched_set_concurrency(td->td_ksegrp, 1); } /* * Called from: * thread_exit() + * thread_hold() */ void thread_unlink(struct thread *td) ==== //depot/projects/nsched/sys/sys/proc.h#41 (text+ko) ==== @@ -304,6 +304,7 @@ struct pcb *td_pcb; /* (k) Kernel VA of pcb and kstack. */ enum { TDS_INACTIVE = 0x0, + TDS_GHOST, /* not allowed to die yet.. cached */ TDS_INHIBITED, TDS_CAN_RUN, TDS_RUNQ, @@ -327,7 +328,7 @@ * Flags kept in td_flags: * To change these you MUST have the scheduler lock. */ -#define TDF_UNUSED0 0x00000001 /* --available -- */ +#define TDF_GHOST 0x00000001 /* All set up but not alive */ #define TDF_INPANIC 0x00000002 /* Caused a panic, let it drive crashdump. */ #define TDF_SINTR 0x00000008 /* Sleep is interruptible. */ #define TDF_TIMEOUT 0x00000010 /* Timing out during sleep. */ @@ -466,6 +467,7 @@ TAILQ_HEAD(, thread) kg_threads;/* (td_kglist) All threads. */ TAILQ_HEAD(, thread) kg_runq; /* (td_runq) waiting RUNNABLE threads */ TAILQ_HEAD(, thread) kg_slpq; /* (td_runq) NONRUNNABLE threads. */ + TAILQ_HEAD(, thread) kg_ghostq; /* (td_runq) cached instead of dead. */ TAILQ_HEAD(, kse_upcall) kg_upcalls; /* All upcalls in the group. */ #define kg_startzero kg_estcpu @@ -484,6 +486,7 @@ u_char kg_user_pri; /* (j) User pri from estcpu and nice. */ #define kg_endcopy kg_numthreads int kg_numthreads; /* (j) Num threads in total. */ + int kg_numghosts; /* (j) number of threads ghosting */ struct kg_sched *kg_sched; /* (*) Scheduler-specific data. */ }; @@ -932,6 +935,8 @@ void upcall_remove(struct thread *td); void upcall_stash(struct kse_upcall *ke); +void thread_unhold_all(struct ksegrp *kg); +void thread_hold(struct thread *td); #endif /* _KERNEL */ #endif /* !_SYS_PROC_H_ */ From owner-p4-projects@FreeBSD.ORG Wed Nov 17 14:44:02 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C1A9B16A4DE; Wed, 17 Nov 2004 14:44:01 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9756216A4CE for ; Wed, 17 Nov 2004 14:44:01 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3846843D2F for ; Wed, 17 Nov 2004 14:44:01 +0000 (GMT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHEi1mq070243 for ; Wed, 17 Nov 2004 14:44:01 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHEi0iA070238 for perforce@freebsd.org; Wed, 17 Nov 2004 14:44:00 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Wed, 17 Nov 2004 14:44:00 GMT Message-Id: <200411171444.iAHEi0iA070238@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Subject: PERFORCE change 65330 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 14:44:02 -0000 http://perforce.freebsd.org/chv.cgi?CH=65330 Change 65330 by rwatson@rwatson_tislabs on 2004/11/17 14:43:43 Integrate TrustedBSD base branch from FreeBSD CVS HEAD; primarily to loop back System V IPC labels and MAC Framework entry point implementations for System V IPC. Affected files ... .. //depot/projects/trustedbsd/base/Makefile.inc1#57 integrate .. //depot/projects/trustedbsd/base/UPDATING#51 integrate .. //depot/projects/trustedbsd/base/bin/ps/Makefile#11 integrate .. //depot/projects/trustedbsd/base/bin/ps/ps.c#20 integrate .. //depot/projects/trustedbsd/base/contrib/pf/man/pf.conf.5#4 integrate .. //depot/projects/trustedbsd/base/etc/rc.d/Makefile#24 integrate .. //depot/projects/trustedbsd/base/etc/rc.d/ramdisk-own#4 integrate .. //depot/projects/trustedbsd/base/etc/rc.d/serial#7 integrate .. //depot/projects/trustedbsd/base/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#3 integrate .. //depot/projects/trustedbsd/base/lib/Makefile#33 integrate .. //depot/projects/trustedbsd/base/lib/libarchive/archive_write_set_format_pax.c#7 integrate .. //depot/projects/trustedbsd/base/lib/libc/Makefile#17 integrate .. //depot/projects/trustedbsd/base/lib/libc/gen/getnetgrent.c#6 integrate .. //depot/projects/trustedbsd/base/lib/libc/i386/net/htonl.S#5 integrate .. //depot/projects/trustedbsd/base/lib/libc/i386/net/ntohl.S#5 integrate .. //depot/projects/trustedbsd/base/lib/libc/net/rcmd.c#6 integrate .. //depot/projects/trustedbsd/base/lib/libc/rpc/netnamer.c#6 integrate .. //depot/projects/trustedbsd/base/lib/libc/sys/read.2#9 integrate .. //depot/projects/trustedbsd/base/lib/libc/sys/stat.2#9 integrate .. //depot/projects/trustedbsd/base/lib/libkvm/kvm_getprocs.3#7 integrate .. //depot/projects/trustedbsd/base/lib/libkvm/kvm_proc.c#24 integrate .. //depot/projects/trustedbsd/base/lib/libpam/modules/pam_unix/Makefile#9 integrate .. //depot/projects/trustedbsd/base/lib/librpcsvc/Makefile#5 integrate .. //depot/projects/trustedbsd/base/lib/libwrap/Makefile#7 integrate .. //depot/projects/trustedbsd/base/lib/libxpg4/Makefile#4 delete .. //depot/projects/trustedbsd/base/lib/libxpg4/fakelib.c#3 delete .. //depot/projects/trustedbsd/base/libexec/Makefile#16 integrate .. //depot/projects/trustedbsd/base/libexec/ftpd/ftpcmd.y#20 integrate .. //depot/projects/trustedbsd/base/libexec/ftpd/ftpd.c#29 integrate .. //depot/projects/trustedbsd/base/libexec/rtld-elf/Makefile#13 integrate .. //depot/projects/trustedbsd/base/libexec/rtld-elf/i386/lockdflt.c#5 delete .. //depot/projects/trustedbsd/base/libexec/rtld-elf/rtld_lock.c#3 integrate .. //depot/projects/trustedbsd/base/release/picobsd/bridge/PICOBSD#5 integrate .. //depot/projects/trustedbsd/base/rescue/librescue/Makefile#3 integrate .. //depot/projects/trustedbsd/base/sbin/mdconfig/mdconfig.c#16 integrate .. //depot/projects/trustedbsd/base/sbin/mount_cd9660/mount_cd9660.8#9 integrate .. //depot/projects/trustedbsd/base/sbin/mount_cd9660/mount_cd9660.c#10 integrate .. //depot/projects/trustedbsd/base/share/examples/etc/make.conf#32 integrate .. //depot/projects/trustedbsd/base/share/man/man4/Makefile#52 integrate .. //depot/projects/trustedbsd/base/share/man/man4/vkbd.4#1 branch .. //depot/projects/trustedbsd/base/share/man/man4/vlan.4#10 integrate .. //depot/projects/trustedbsd/base/share/man/man7/tuning.7#23 integrate .. //depot/projects/trustedbsd/base/share/man/man9/get_cyclecount.9#3 integrate .. //depot/projects/trustedbsd/base/share/mk/bsd.cpu.mk#19 integrate .. //depot/projects/trustedbsd/base/share/mk/bsd.libnames.mk#23 integrate .. //depot/projects/trustedbsd/base/share/numericdef/eu_ES.ISO8859-1.src#2 integrate .. //depot/projects/trustedbsd/base/sys/arm/arm/busdma_machdep.c#4 integrate .. //depot/projects/trustedbsd/base/sys/arm/arm/pmap.c#4 integrate .. //depot/projects/trustedbsd/base/sys/arm/xscale/i80321/i80321.c#2 integrate .. //depot/projects/trustedbsd/base/sys/boot/common/commands.c#6 integrate .. //depot/projects/trustedbsd/base/sys/coda/coda_vnops.c#13 integrate .. //depot/projects/trustedbsd/base/sys/conf/files#80 integrate .. //depot/projects/trustedbsd/base/sys/conf/files.i386#47 integrate .. //depot/projects/trustedbsd/base/sys/conf/kern.post.mk#37 integrate .. //depot/projects/trustedbsd/base/sys/conf/options.i386#24 integrate .. //depot/projects/trustedbsd/base/sys/conf/options.pc98#26 integrate .. //depot/projects/trustedbsd/base/sys/crypto/blowfish/arch/i386/bf_enc.S#2 integrate .. //depot/projects/trustedbsd/base/sys/dev/acpi_support/acpi_asus.c#1 branch .. //depot/projects/trustedbsd/base/sys/dev/acpi_support/acpi_panasonic.c#1 branch .. //depot/projects/trustedbsd/base/sys/dev/acpi_support/acpi_sony.c#1 branch .. //depot/projects/trustedbsd/base/sys/dev/acpi_support/acpi_toshiba.c#1 branch .. //depot/projects/trustedbsd/base/sys/dev/acpica/acpi_cpu.c#21 integrate .. //depot/projects/trustedbsd/base/sys/dev/acpica/acpi_snc.c#2 delete .. //depot/projects/trustedbsd/base/sys/dev/ata/ata-dma.c#32 integrate .. //depot/projects/trustedbsd/base/sys/dev/em/if_em.c#36 integrate .. //depot/projects/trustedbsd/base/sys/dev/fxp/if_fxp.c#40 integrate .. //depot/projects/trustedbsd/base/sys/dev/mc146818/mc146818reg.h#1 branch .. //depot/projects/trustedbsd/base/sys/dev/mk48txx/mk48txx.c#4 integrate .. //depot/projects/trustedbsd/base/sys/dev/mk48txx/mk48txxreg.h#3 integrate .. //depot/projects/trustedbsd/base/sys/dev/mk48txx/mk48txxvar.h#1 branch .. //depot/projects/trustedbsd/base/sys/dev/puc/puc_sbus.c#6 integrate .. //depot/projects/trustedbsd/base/sys/dev/uart/uart_bus.h#4 integrate .. //depot/projects/trustedbsd/base/sys/dev/uart/uart_core.c#4 integrate .. //depot/projects/trustedbsd/base/sys/dev/uart/uart_dev_ns8250.c#6 integrate .. //depot/projects/trustedbsd/base/sys/dev/uart/uart_subr.c#2 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/ehci.c#10 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/ohci.c#31 integrate .. //depot/projects/trustedbsd/base/sys/dev/usb/uhci.c#33 integrate .. //depot/projects/trustedbsd/base/sys/dev/vkbd/vkbd.c#1 branch .. //depot/projects/trustedbsd/base/sys/dev/vkbd/vkbd_var.h#1 branch .. //depot/projects/trustedbsd/base/sys/fs/deadfs/dead_vnops.c#11 integrate .. //depot/projects/trustedbsd/base/sys/fs/devfs/devfs_vnops.c#32 integrate .. //depot/projects/trustedbsd/base/sys/fs/fifofs/fifo_vnops.c#34 integrate .. //depot/projects/trustedbsd/base/sys/fs/hpfs/hpfs_vnops.c#22 integrate .. //depot/projects/trustedbsd/base/sys/fs/msdosfs/msdosfs_vnops.c#23 integrate .. //depot/projects/trustedbsd/base/sys/fs/ntfs/ntfs_vnops.c#17 integrate .. //depot/projects/trustedbsd/base/sys/fs/udf/udf_vnops.c#24 integrate .. //depot/projects/trustedbsd/base/sys/fs/unionfs/union_vnops.c#21 integrate .. //depot/projects/trustedbsd/base/sys/geom/vinum/geom_vinum.h#3 integrate .. //depot/projects/trustedbsd/base/sys/geom/vinum/geom_vinum_raid5.c#3 integrate .. //depot/projects/trustedbsd/base/sys/geom/vinum/geom_vinum_share.c#3 integrate .. //depot/projects/trustedbsd/base/sys/geom/vinum/geom_vinum_share.h#2 integrate .. //depot/projects/trustedbsd/base/sys/geom/vinum/geom_vinum_subr.c#3 integrate .. //depot/projects/trustedbsd/base/sys/gnu/ext2fs/ext2_bmap.c#9 integrate .. //depot/projects/trustedbsd/base/sys/i386/acpica/acpi_asus.c#7 delete .. //depot/projects/trustedbsd/base/sys/i386/acpica/acpi_panasonic.c#4 delete .. //depot/projects/trustedbsd/base/sys/i386/acpica/acpi_toshiba.c#7 delete .. //depot/projects/trustedbsd/base/sys/i386/conf/NOTES#51 integrate .. //depot/projects/trustedbsd/base/sys/i386/i386/identcpu.c#28 integrate .. //depot/projects/trustedbsd/base/sys/i386/i386/machdep.c#46 integrate .. //depot/projects/trustedbsd/base/sys/i386/i386/mp_machdep.c#37 integrate .. //depot/projects/trustedbsd/base/sys/i386/i386/pmap.c#52 integrate .. //depot/projects/trustedbsd/base/sys/i386/i386/support.s#15 integrate .. //depot/projects/trustedbsd/base/sys/i386/i386/trap.c#35 integrate .. //depot/projects/trustedbsd/base/sys/i386/include/atomic.h#10 integrate .. //depot/projects/trustedbsd/base/sys/i386/include/cpu.h#11 integrate .. //depot/projects/trustedbsd/base/sys/i386/include/endian.h#14 integrate .. //depot/projects/trustedbsd/base/sys/ia64/conf/GENERIC.hints#6 integrate .. //depot/projects/trustedbsd/base/sys/isofs/cd9660/cd9660_bmap.c#7 integrate .. //depot/projects/trustedbsd/base/sys/kern/kern_descrip.c#53 integrate .. //depot/projects/trustedbsd/base/sys/kern/kern_event.c#31 integrate .. //depot/projects/trustedbsd/base/sys/kern/kern_intr.c#35 integrate .. //depot/projects/trustedbsd/base/sys/kern/kern_sig.c#50 integrate .. //depot/projects/trustedbsd/base/sys/kern/sys_generic.c#32 integrate .. //depot/projects/trustedbsd/base/sys/kern/sys_pipe.c#43 integrate .. //depot/projects/trustedbsd/base/sys/kern/sys_socket.c#20 integrate .. //depot/projects/trustedbsd/base/sys/kern/tty.c#29 integrate .. //depot/projects/trustedbsd/base/sys/kern/vfs_cluster.c#28 integrate .. //depot/projects/trustedbsd/base/sys/kern/vfs_default.c#29 integrate .. //depot/projects/trustedbsd/base/sys/kern/vfs_subr.c#58 integrate .. //depot/projects/trustedbsd/base/sys/kern/vfs_syscalls.c#57 integrate .. //depot/projects/trustedbsd/base/sys/kern/vfs_vnops.c#49 integrate .. //depot/projects/trustedbsd/base/sys/kern/vnode_if.src#23 integrate .. //depot/projects/trustedbsd/base/sys/modules/Makefile#60 integrate .. //depot/projects/trustedbsd/base/sys/modules/acpi/Makefile#19 integrate .. //depot/projects/trustedbsd/base/sys/modules/acpi/acpi_asus/Makefile#5 integrate .. //depot/projects/trustedbsd/base/sys/modules/acpi/acpi_panasonic/Makefile#3 integrate .. //depot/projects/trustedbsd/base/sys/modules/acpi/acpi_sony/Makefile#1 branch .. //depot/projects/trustedbsd/base/sys/modules/acpi/acpi_toshiba/Makefile#4 integrate .. //depot/projects/trustedbsd/base/sys/modules/vkbd/Makefile#1 branch .. //depot/projects/trustedbsd/base/sys/netinet/in.c#17 integrate .. //depot/projects/trustedbsd/base/sys/opencrypto/cryptodev.c#16 integrate .. //depot/projects/trustedbsd/base/sys/pc98/conf/GENERIC#37 integrate .. //depot/projects/trustedbsd/base/sys/pc98/conf/NOTES#19 integrate .. //depot/projects/trustedbsd/base/sys/pc98/i386/machdep.c#45 integrate .. //depot/projects/trustedbsd/base/sys/pci/if_sk.c#25 integrate .. //depot/projects/trustedbsd/base/sys/pci/if_skreg.h#9 integrate .. //depot/projects/trustedbsd/base/sys/security/mac/mac_sysv_msg.c#1 branch .. //depot/projects/trustedbsd/base/sys/security/mac/mac_sysv_sem.c#1 branch .. //depot/projects/trustedbsd/base/sys/security/mac/mac_sysv_shm.c#1 branch .. //depot/projects/trustedbsd/base/sys/sparc64/conf/GENERIC#41 integrate .. //depot/projects/trustedbsd/base/sys/sparc64/conf/NOTES#9 integrate .. //depot/projects/trustedbsd/base/sys/sparc64/include/eeprom.h#5 integrate .. //depot/projects/trustedbsd/base/sys/sparc64/sparc64/eeprom.c#6 integrate .. //depot/projects/trustedbsd/base/sys/sparc64/sparc64/eeprom_ebus.c#8 integrate .. //depot/projects/trustedbsd/base/sys/sparc64/sparc64/eeprom_sbus.c#8 integrate .. //depot/projects/trustedbsd/base/sys/sys/buf.h#28 integrate .. //depot/projects/trustedbsd/base/sys/sys/filedesc.h#23 integrate .. //depot/projects/trustedbsd/base/sys/sys/mac.h#40 integrate .. //depot/projects/trustedbsd/base/sys/sys/mac_policy.h#38 integrate .. //depot/projects/trustedbsd/base/sys/sys/msg.h#8 integrate .. //depot/projects/trustedbsd/base/sys/sys/sem.h#6 integrate .. //depot/projects/trustedbsd/base/sys/sys/shm.h#6 integrate .. //depot/projects/trustedbsd/base/sys/sys/vnode.h#51 integrate .. //depot/projects/trustedbsd/base/sys/ufs/ufs/ufs_bmap.c#14 integrate .. //depot/projects/trustedbsd/base/sys/vm/vm_pager.c#19 integrate .. //depot/projects/trustedbsd/base/sys/vm/vnode_pager.c#38 integrate .. //depot/projects/trustedbsd/base/tools/tools/nanobsd/make.conf#6 integrate .. //depot/projects/trustedbsd/base/usr.bin/Makefile#39 integrate .. //depot/projects/trustedbsd/base/usr.bin/chkey/Makefile#6 integrate .. //depot/projects/trustedbsd/base/usr.bin/chpass/Makefile#5 integrate .. //depot/projects/trustedbsd/base/usr.bin/make/config.h#5 integrate .. //depot/projects/trustedbsd/base/usr.bin/make/main.c#24 integrate .. //depot/projects/trustedbsd/base/usr.bin/make/parse.c#17 integrate .. //depot/projects/trustedbsd/base/usr.bin/newkey/Makefile#7 integrate .. //depot/projects/trustedbsd/base/usr.bin/pkill/Makefile#3 integrate .. //depot/projects/trustedbsd/base/usr.bin/pkill/pkill.c#4 integrate .. //depot/projects/trustedbsd/base/usr.bin/tr/str.c#9 integrate .. //depot/projects/trustedbsd/base/usr.sbin/Makefile#37 integrate .. //depot/projects/trustedbsd/base/usr.sbin/acpi/acpiconf/acpiconf.c#11 integrate .. //depot/projects/trustedbsd/base/usr.sbin/amd/Makefile.inc#3 integrate .. //depot/projects/trustedbsd/base/usr.sbin/amd/amd/Makefile#3 integrate .. //depot/projects/trustedbsd/base/usr.sbin/amd/include/Makefile#3 integrate .. //depot/projects/trustedbsd/base/usr.sbin/bootparamd/bootparamd/Makefile#3 integrate .. //depot/projects/trustedbsd/base/usr.sbin/bootparamd/bootparamd/bootparamd.c#3 integrate .. //depot/projects/trustedbsd/base/usr.sbin/jail/Makefile#3 integrate .. //depot/projects/trustedbsd/base/usr.sbin/jail/jail.c#8 integrate .. //depot/projects/trustedbsd/base/usr.sbin/sendmail/Makefile#11 integrate .. //depot/projects/trustedbsd/base/usr.sbin/sysinstall/anonFTP.c#4 integrate .. //depot/projects/trustedbsd/base/usr.sbin/sysinstall/config.c#22 integrate Differences ... ==== //depot/projects/trustedbsd/base/Makefile.inc1#57 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.454 2004/11/12 13:22:22 ru Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.456 2004/11/15 05:59:10 peter Exp $ # # Make command line options: # -DNO_DYNAMICROOT do not link /bin and /sbin dynamically @@ -404,11 +404,21 @@ cd ${.CURDIR}/secure/lib; \ ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} .endif +.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) + cd ${.CURDIR}/kerberos5/lib; \ + ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} +.endif .endfor .for _dir in lib/libncurses lib/libmagic cd ${.CURDIR}/${_dir}; \ MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} build-tools .endfor +.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) +.for _t in obj depend all + cd ${.CURDIR}/kerberos5/tools; \ + MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} ${_t} +.endfor +.endif cd ${.CURDIR}; \ ${LIB32MAKE} -f Makefile.inc1 DESTDIR=${LIB32TMP} libraries .for _t in obj depend all @@ -992,7 +1002,7 @@ lib/libkvm lib/libmd \ lib/libncurses lib/libnetgraph lib/libopie lib/libpam \ lib/libradius \ - lib/libsbuf lib/libtacplus lib/libutil lib/libypclnt \ + lib/libsbuf lib/libtacplus lib/libutil \ lib/libz lib/msun lib/libopie__L lib/libtacplus__L: lib/libmd__L @@ -1029,6 +1039,10 @@ lib/libradius__L: lib/libmd__L .endif +.if !defined(NO_NIS) +_prebuild_libs+= lib/libypclnt +.endif + _generic_libs+= usr.bin/lex/lib .if ${MACHINE_ARCH} == "i386" ==== //depot/projects/trustedbsd/base/UPDATING#51 (text+ko) ==== @@ -23,6 +23,10 @@ developers choose to disable these features on build machines to maximize performance. +20041116: + Support for systems with an 80386 CPU has been removed. Please + use FreeBSD 5.x or earlier on systems with an 80386. + 20041110: We have had a hack which would mount the root filesystem R/W if the device were named 'md*'. As part of the vnode @@ -1969,4 +1973,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.378 2004/11/10 07:39:27 phk Exp $ +$FreeBSD: src/UPDATING,v 1.379 2004/11/16 21:18:41 jhb Exp $ ==== //depot/projects/trustedbsd/base/bin/ps/Makefile#11 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/bin/ps/Makefile,v 1.25 2004/02/23 20:05:14 johan Exp $ +# $FreeBSD: src/bin/ps/Makefile,v 1.26 2004/11/13 17:12:22 ru Exp $ # @(#)Makefile 8.1 (Berkeley) 6/2/93 PROG= ps @@ -13,7 +13,5 @@ CFLAGS+=-DLAZY_PS DPADD= ${LIBM} ${LIBKVM} LDADD= -lm -lkvm -#BINGRP= kmem -#BINMODE=2555 .include ==== //depot/projects/trustedbsd/base/bin/ps/ps.c#20 (text+ko) ==== @@ -47,7 +47,7 @@ #endif #include -__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.106 2004/06/27 22:56:58 gad Exp $"); +__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.108 2004/11/14 19:30:02 csjp Exp $"); #include #include @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -128,6 +129,7 @@ } l; }; +static int check_procfs(void); static int addelem_gid(struct listinfo *, const char *); static int addelem_pid(struct listinfo *, const char *); static int addelem_tty(struct listinfo *, const char *); @@ -171,7 +173,7 @@ struct winsize ws; const char *nlistf, *memf; char *cols; - int all, ch, dropgid, elem, flag, _fmt, i, lineno; + int all, ch, elem, flag, _fmt, i, lineno; int nentries, nkept, nselectors; int prtheader, showthreads, wflag, what, xkeep, xkeep_implied; char errbuf[_POSIX2_LINE_MAX]; @@ -196,7 +198,7 @@ if (argc > 1) argv[1] = kludge_oldps_options(PS_ARGS, argv[1], argv[2]); - all = dropgid = _fmt = nselectors = optfatal = 0; + all = _fmt = nselectors = optfatal = 0; prtheader = showthreads = wflag = xkeep_implied = 0; xkeep = -1; /* Neither -x nor -X. */ init_list(&gidlist, addelem_gid, sizeof(gid_t), "group"); @@ -278,14 +280,12 @@ break; case 'M': memf = optarg; - dropgid = 1; break; case 'm': sortby = SORTMEM; break; case 'N': nlistf = optarg; - dropgid = 1; break; case 'O': parsefmt(o1, 1); @@ -404,6 +404,14 @@ argv += optind; /* + * If the user specified ps -e then they want a copy of the process + * environment kvm_getenvv(3) attempts to open /proc//mem. + * Check to make sure that procfs is mounted on /proc, otherwise + * print a warning informing the user that output will be incomplete. + */ + if (needenv == 1 && check_procfs() == 0) + warnx("Process environment requires procfs(5)"); + /* * If there arguments after processing all the options, attempt * to treat them as a list of process ids. */ @@ -423,14 +431,6 @@ if (xkeep < 0) /* Neither -X nor -x was specified. */ xkeep = xkeep_implied; - - /* - * Discard setgid privileges if not the running kernel so that bad - * guys can't print interesting stuff from kernel memory. - */ - if (dropgid) - setgid(getgid()); - kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, errbuf); if (kd == 0) errx(1, "%s", errbuf); @@ -1176,6 +1176,21 @@ return (newopts); } +static int +check_procfs(void) +{ + struct statfs *mntbuf; + size_t mntsize, i; + + mntsize = getmntinfo(&mntbuf, MNT_NOWAIT); + for (i = 0; i < mntsize; i++) + if (strcmp(mntbuf[i].f_mntonname, "/proc") == 0 && + strcmp(mntbuf[i].f_fstypename, "procfs") == 0) { + return (1); + } + return (0); +} + static void usage(void) { ==== //depot/projects/trustedbsd/base/contrib/pf/man/pf.conf.5#4 (text+ko) ==== @@ -1,4 +1,4 @@ -.\" $FreeBSD: src/contrib/pf/man/pf.conf.5,v 1.4 2004/10/07 15:39:02 mlaier Exp $ +.\" $FreeBSD: src/contrib/pf/man/pf.conf.5,v 1.5 2004/11/14 17:05:54 mlaier Exp $ .\" $OpenBSD: pf.conf.5,v 1.292 2004/02/24 05:44:48 mcbride Exp $ .\" .\" Copyright (c) 2002, Daniel Hartmeier @@ -349,7 +349,7 @@ .It Ar set limit Sets hard limits on the memory pools used by the packet filter. See -.Xr pool 9 +.Xr zone 9 for an explanation of memory pools. .Pp For example, ==== //depot/projects/trustedbsd/base/etc/rc.d/Makefile#24 (text+ko) ==== @@ -1,5 +1,5 @@ # $NetBSD: Makefile,v 1.16 2001/01/14 15:37:22 minoura Exp $ -# $FreeBSD: src/etc/rc.d/Makefile,v 1.46 2004/11/04 12:59:16 phk Exp $ +# $FreeBSD: src/etc/rc.d/Makefile,v 1.47 2004/11/16 04:20:09 wes Exp $ FILES= DAEMON LOGIN NETWORKING SERVERS \ abi accounting addswap adjkerntz amd \ @@ -28,7 +28,7 @@ pccard pcvt pf pflog \ power_profile ppp-user pppoed preseedrandom pwcheck \ quota \ - random rarpd rcconf.sh resolv root \ + ramdisk ramdisk-own random rarpd rcconf.sh resolv root \ route6d routed routing rpcbind rtadvd rwho \ savecore securelevel sendmail \ serial sppp sshd swap1 \ ==== //depot/projects/trustedbsd/base/etc/rc.d/ramdisk-own#4 (text+ko) ==== @@ -24,7 +24,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/rc.d/ramdisk-own,v 1.3 2004/10/07 13:55:26 mtm Exp $ +# $FreeBSD: src/etc/rc.d/ramdisk-own,v 1.4 2004/11/16 04:14:28 wes Exp $ # # PROVIDE: ramdisk-own @@ -39,7 +39,6 @@ ramdisk_own_start() { -set -x for unit in $ramdisk_units; do device="/dev/md$unit" dir=`mount | grep $device | cut -d' ' -f3` ==== //depot/projects/trustedbsd/base/etc/rc.d/serial#7 (text+ko) ==== @@ -24,7 +24,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/rc.d/serial,v 1.22 2004/10/07 13:55:26 mtm Exp $ +# $FreeBSD: src/etc/rc.d/serial,v 1.24 2004/11/14 19:51:34 obrien Exp $ # # PROVIDE: serial @@ -45,73 +45,69 @@ default() { # Reset everything changed by the other functions to initial defaults. - ci=$1; shift # call in device identifier - co=$1; shift # call out device identifier + dc=$1; shift # device name character drainwait=`sysctl -n kern.drainwait` for i in $* do - comcontrol /dev/tty${ci}${i} dtrwait 300 drainwait $drainwait - stty < /dev/ttyi${ci}${i} -clocal crtscts hupcl 9600 reprint ^R - stty < /dev/ttyl${ci}${i} -clocal -crtscts -hupcl 0 - stty < /dev/cuai${co}${i} -clocal crtscts hupcl 9600 reprint ^R - stty < /dev/cual${co}${i} -clocal -crtscts -hupcl 0 + comcontrol /dev/tty${dc}${i} dtrwait 300 drainwait $drainwait + stty < /dev/tty${dc}${i}.init -clocal crtscts hupcl 9600 reprint ^R + stty < /dev/tty${dc}${i}.lock -clocal -crtscts -hupcl 0 + stty < /dev/cua${dc}${i}.init -clocal crtscts hupcl 9600 reprint ^R + stty < /dev/cua${dc}${i}.lock -clocal -crtscts -hupcl 0 done } maybe() { # Special settings. - ci=$1; shift - co=$1; shift + dc=$1; shift for i in $* do # Don't use ^R; it breaks bash's ^R when typed ahead. - stty < /dev/ttyi${ci}${i} reprint undef - stty < /dev/cuai${co}${i} reprint undef + stty < /dev/tty${dc}${i}.init reprint undef + stty < /dev/cua${dc}${i}.init reprint undef # Lock clocal off on dialin device for security. - stty < /dev/ttyl${ci}${i} clocal + stty < /dev/tty${dc}${i}.lock clocal # Lock the speeds to use old binaries that don't support them. # Any legal speed works to lock the initial speed. - stty < /dev/ttyl${ci}${i} 300 - stty < /dev/cual${co}${i} 300 + stty < /dev/tty${dc}${i}.lock 300 + stty < /dev/cua${dc}${i}.lock 300 done } modem() { # Modem that supports CTS and perhaps RTS handshaking. - ci=$1; shift - co=$1; shift + dc=$1; shift for i in $* do # may depend on modem - comcontrol /dev/tty${ci}${i} dtrwait 100 drainwait 180 + comcontrol /dev/tty${dc}${i} dtrwait 100 drainwait 180 # Lock crtscts on. # Speed reasonable for V42bis. - stty < /dev/ttyi${ci}${i} crtscts 115200 - stty < /dev/ttyl${ci}${i} crtscts - stty < /dev/cuai${co}${i} crtscts 115200 - stty < /dev/cual${co}${i} crtscts + stty < /dev/tty${dc}${i}.init crtscts 115200 + stty < /dev/tty${dc}${i}.lock crtscts + stty < /dev/cua${dc}${i}.init crtscts 115200 + stty < /dev/cua${dc}${i}.lock crtscts done } mouse() { # Mouse on either callin or callout port. - ci=$1; shift - co=$1; shift + dc=$1; shift for i in $* do # Lock clocal on, hupcl off. # Standard speed for Microsoft mouse. - stty < /dev/ttyi${ci}${i} clocal -hupcl 1200 - stty < /dev/ttyl${ci}${i} clocal hupcl - stty < /dev/cuai${co}${i} clocal -hupcl 1200 - stty < /dev/cual${co}${i} clocal hupcl + stty < /dev/tty${dc}${i}.init clocal -hupcl 1200 + stty < /dev/tty${dc}${i}.lock clocal hupcl + stty < /dev/cua${dc}${i}.init clocal -hupcl 1200 + stty < /dev/cua${dc}${i}.lock clocal hupcl done } @@ -123,15 +119,14 @@ # provided at most one side runs getty. # Same as modem() except we want a faster speed and no dtrwait. - ci=$1; shift - co=$1; shift + dc=$1; shift - modem ${ci} ${co} $* + modem ${dc} $* for i in $* do - comcontrol /dev/tty${ci}${i} dtrwait 0 - stty < /dev/ttyi${ci}${i} 115200 - stty < /dev/cuai${co}${i} 115200 + comcontrol /dev/tty${dc}${i} dtrwait 0 + stty < /dev/tty${dc}${i}.init 115200 + stty < /dev/cua${dc}${i}.init 115200 done } @@ -143,16 +138,16 @@ # and the remainder of the line lists the device numbers. # Initialize assorted 8250-16550 (sio) ports. -# maybe d a 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v -# mouse d a 2 -# modem d a 1 -# terminal d a 0 +# maybe d 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v +# mouse d 2 +# modem d 1 +# terminal d 0 # Initialize all ports on a Cyclades-8yo. -# modem c c 00 01 02 03 04 05 06 07 +# modem c 00 01 02 03 04 05 06 07 # Initialize all ports on a Cyclades-16ye. -# modem c c 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f +# modem c 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f # Initialize all ports on a Digiboard 8. -# modem D D 00 01 02 03 04 05 06 07 +# modem D 00 01 02 03 04 05 06 07 ==== //depot/projects/trustedbsd/base/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#3 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c,v 1.7 2004/08/22 09:05:57 davidxu Exp $ */ +/* $FreeBSD: src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c,v 1.8 2004/11/15 13:06:01 davidxu Exp $ */ /* FreeBSD libthread_db assisted debugging support. Copyright 1999, 2000, 2001 Free Software Foundation, Inc. @@ -294,8 +294,8 @@ if (!in_thread_list (ptid)) { add_thread (ptid); - inferior_ptid = ptid; } + inferior_ptid = ptid; } static void ==== //depot/projects/trustedbsd/base/lib/Makefile#33 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.1 (Berkeley) 6/4/93 -# $FreeBSD: src/lib/Makefile,v 1.195 2004/11/10 22:16:37 markm Exp $ +# $FreeBSD: src/lib/Makefile,v 1.197 2004/11/13 23:54:30 tjr Exp $ # To satisfy shared library or ELF linkage when only the libraries being # built are visible: @@ -32,7 +32,7 @@ ${_libncp} ${_libngatm} libopie libpam libpanel libpcap \ ${_libpthread} ${_libsdp} ${_libsm} ${_libsmb} ${_libsmdb} \ ${_libsmutil} libstand libtelnet ${_libthr} ${_libthread_db} libufs \ - libugidfw ${_libusbhid} ${_libvgl} libwrap libxpg4 liby libz ${_bind} + libugidfw ${_libusbhid} ${_libvgl} libwrap liby libz ${_bind} .if exists(${.CURDIR}/csu/${MACHINE_ARCH}-elf) _csu=csu/${MACHINE_ARCH}-elf @@ -107,7 +107,7 @@ _libusbhid= libusbhid .endif -.if !defined(NO_YP_LIBC) +.if !defined(NO_NIS) _libypclnt= libypclnt .endif ==== //depot/projects/trustedbsd/base/lib/libarchive/archive_write_set_format_pax.c#7 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_format_pax.c,v 1.19 2004/11/05 05:26:30 kientzle Exp $"); +__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_format_pax.c,v 1.21 2004/11/15 01:46:33 kientzle Exp $"); #include #include @@ -315,7 +315,7 @@ const char *linkname, *p; const char *hardlink; const wchar_t *wp, *wp2, *wname_start; - int need_extension, oldstate, r, ret; + int need_extension, r, ret; struct pax *pax; const struct stat *st_main, *st_original; @@ -672,17 +672,19 @@ pax->entry_bytes_remaining = archive_strlen(&(pax->pax_header)); pax->entry_padding = 0x1ff & (- pax->entry_bytes_remaining); - oldstate = a->state; - a->state = ARCHIVE_STATE_DATA; - r = archive_write_data(a, pax->pax_header.s, + r = (a->compression_write)(a, pax->pax_header.s, archive_strlen(&(pax->pax_header))); - a->state = oldstate; + if (r != ARCHIVE_OK) { + /* If a write fails, we're pretty much toast. */ + return (ARCHIVE_FATAL); + } + /* Pad out the end of the entry. */ + r = write_nulls(a, pax->entry_padding); if (r != ARCHIVE_OK) { /* If a write fails, we're pretty much toast. */ return (ARCHIVE_FATAL); } - - archive_write_pax_finish_entry(a); + pax->entry_bytes_remaining = pax->entry_padding = 0; } /* Write the header for main entry. */ ==== //depot/projects/trustedbsd/base/lib/libc/Makefile#17 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.2 (Berkeley) 2/3/94 -# $FreeBSD: src/lib/libc/Makefile,v 1.54 2004/10/24 15:32:30 ru Exp $ +# $FreeBSD: src/lib/libc/Makefile,v 1.55 2004/11/13 20:40:28 bz Exp $ # # All library objects contain FreeBSD revision strings by default; they may be # excluded as a space-saving measure. To produce a library that does @@ -60,7 +60,7 @@ .if ${MACHINE_ARCH} == "arm" .include "${.CURDIR}/softfloat/Makefile.inc" .endif -.if !defined(NO_YP_LIBC) +.if !defined(NO_NIS) CFLAGS+= -DYP .include "${.CURDIR}/yp/Makefile.inc" .endif ==== //depot/projects/trustedbsd/base/lib/libc/gen/getnetgrent.c#6 (text+ko) ==== @@ -38,7 +38,7 @@ static char sccsid[] = "@(#)getnetgrent.c 8.2 (Berkeley) 4/27/95"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/gen/getnetgrent.c,v 1.31 2004/07/28 11:56:03 des Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/gen/getnetgrent.c,v 1.32 2004/11/13 20:40:28 bz Exp $"); #include #include @@ -202,7 +202,7 @@ return; } #else - if (netf = fopen(_PATH_NETGROUP, "r")) { + if ((netf = fopen(_PATH_NETGROUP, "r"))) { #endif if (parse_netgrp(group)) endnetgrent(); ==== //depot/projects/trustedbsd/base/lib/libc/i386/net/htonl.S#5 (text+ko) ==== @@ -38,7 +38,7 @@ .asciz "@(#)htonl.s 5.3 (Berkeley) 12/17/90" #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/i386/net/htonl.S,v 1.10 2004/10/18 17:19:36 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/i386/net/htonl.S,v 1.11 2004/11/16 21:01:31 jhb Exp $"); /* netorder = htonl(hostorder) */ @@ -46,11 +46,5 @@ .set CNAME(htonl),CNAME(__htonl) ENTRY(__htonl) movl 4(%esp),%eax -#ifdef I386_CPU - xchgb %al,%ah - roll $16,%eax - xchgb %al,%ah -#else bswap %eax -#endif ret ==== //depot/projects/trustedbsd/base/lib/libc/i386/net/ntohl.S#5 (text+ko) ==== @@ -38,7 +38,7 @@ .asciz "@(#)ntohl.s 5.2 (Berkeley) 12/17/90" #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/i386/net/ntohl.S,v 1.10 2004/10/18 17:19:36 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/i386/net/ntohl.S,v 1.11 2004/11/16 21:01:31 jhb Exp $"); /* hostorder = ntohl(netorder) */ @@ -46,11 +46,5 @@ .set CNAME(ntohl),CNAME(__ntohl) ENTRY(__ntohl) movl 4(%esp),%eax -#ifdef I386_CPU - xchgb %al,%ah - roll $16,%eax - xchgb %al,%ah -#else bswap %eax -#endif ret ==== //depot/projects/trustedbsd/base/lib/libc/net/rcmd.c#6 (text+ko) ==== @@ -35,7 +35,7 @@ static char sccsid[] = "@(#)rcmd.c 8.3 (Berkeley) 3/26/94"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/net/rcmd.c,v 1.38 2003/02/18 13:39:52 nectar Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/net/rcmd.c,v 1.39 2004/11/13 20:40:28 bz Exp $"); #include "namespace.h" #include @@ -55,8 +55,8 @@ #include #include #include +#include #ifdef YP -#include #include #include #endif ==== //depot/projects/trustedbsd/base/lib/libc/rpc/netnamer.c#6 (text+ko) ==== @@ -32,7 +32,7 @@ static char sccsid[] = "@(#)netnamer.c 1.13 91/03/11 Copyr 1986 Sun Micro"; #endif #include -__FBSDID("$FreeBSD: src/lib/libc/rpc/netnamer.c,v 1.10 2004/10/16 06:11:35 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/rpc/netnamer.c,v 1.11 2004/11/13 20:40:28 bz Exp $"); /* * netname utility routines convert from unix names to network names and @@ -58,7 +58,9 @@ #include "un-namespace.h" static char *OPSYS = "unix"; +#ifdef YP static char *NETID = "netid.byname"; +#endif static char *NETIDFILE = "/etc/netid"; static int getnetid( char *, char * ); ==== //depot/projects/trustedbsd/base/lib/libc/sys/read.2#9 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)read.2 8.4 (Berkeley) 2/26/94 -.\" $FreeBSD: src/lib/libc/sys/read.2,v 1.27 2004/10/25 13:35:03 yar Exp $ +.\" $FreeBSD: src/lib/libc/sys/read.2,v 1.28 2004/11/15 13:55:33 yar Exp $ .\" .Dd October 16, 2004 .Dt READ 2 @@ -207,7 +207,7 @@ .It Bq Er EFAULT Part of the .Fa iov -points outside the process's allocated address space. +array points outside the process's allocated address space. .El .Pp The ==== //depot/projects/trustedbsd/base/lib/libc/sys/stat.2#9 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)stat.2 8.4 (Berkeley) 5/1/95 -.\" $FreeBSD: src/lib/libc/sys/stat.2,v 1.36 2003/12/10 15:08:41 dds Exp $ +.\" $FreeBSD: src/lib/libc/sys/stat.2,v 1.40 2004/11/15 14:16:31 yar Exp $ .\" -.Dd February 15, 2002 +.Dd November 15, 2004 .Dt STAT 2 .Os .Sh NAME @@ -87,8 +87,26 @@ .In sys/stat.h and into which information is placed concerning the file. .Pp +The fields of +.Vt "struct stat" +related to the file system are as follows: +.Bl -tag -width ".Va st_nlink" +.It Va st_dev +The numeric ID of the device containing the file. +.It Va st_ino +The file's inode number. +.It Va st_nlink +The number of hard links to the file. +.El +.Pp +The +.Va st_dev +and +.Va st_ino +fields together identify the file uniquely within the system. +.Pp The time-related fields of -.Fa struct stat +.Vt "struct stat" are as follows: .Bl -tag -width ".Va st_birthtime" .It Va st_atime @@ -150,15 +168,29 @@ The size-related fields of the .Vt "struct stat" are as follows: -.Bl -tag -width XXXst_blksize -.It st_blksize +.Bl -tag -width ".Va st_blksize" +.It Va st_size +The file size in bytes. +.It Va st_blksize The optimal I/O block size for the file. -.It st_blocks +.It Va st_blocks The actual number of blocks allocated for the file in 512-byte units. As short symbolic links are stored in the inode, this number may be zero. .El .Pp +The access-related fields of +.Vt "struct stat" +are as follows: +.Bl -tag -width ".Va st_mode" +.It Va st_uid +The user ID of the file's owner. +.It Va st_gid +The group ID of the file. +.It Va st_mode +Status of the file (see below). +.El +.Pp The status information word .Fa st_mode has the following bits: @@ -185,18 +217,44 @@ .Xr access 2 and .Xr chmod 2 . +The following macros are available to test whether a +.Va st_mode +value passed in the +.Ar m +argument corresponds to a file of the specified type: +.Bl -tag -width ".Fn S_ISFIFO m" +.It Fn S_ISBLK m +Test for a block special file. +.It Fn S_ISCHR m +Test for a character special file. +.It Fn S_ISDIR m +Test for a directory. +.It Fn S_ISFIFO m +Test for a pipe or FIFO special file. +.It Fn S_ISLNK m +Test for a symbolic link. +.It Fn S_ISREG m +Test for a regular file. +.It Fn S_ISSOCK m +Test for a socket. +.It Fn S_ISWHT m +Test for a whiteout. +.El +.Pp +The macros evaluate to a non-zero value if the test is true +or to the value 0 if the test is false. .Sh RETURN VALUES .Rv -std .Sh COMPATIBILITY Previous versions of the system used different types for the -.Li st_dev , -.Li st_uid , -.Li st_gid , -.Li st_rdev , -.Li st_size , -.Li st_blksize +.Va st_dev , +.Va st_uid , +.Va st_gid , +.Va st_rdev , +.Va st_size , +.Va st_blksize and -.Li st_blocks +.Va st_blocks fields. .Sh ERRORS The ==== //depot/projects/trustedbsd/base/lib/libkvm/kvm_getprocs.3#7 (text+ko) ==== @@ -34,7 +34,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)kvm_getprocs.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD: src/lib/libkvm/kvm_getprocs.3,v 1.18 2004/07/02 23:52:16 ru Exp $ +.\" $FreeBSD: src/lib/libkvm/kvm_getprocs.3,v 1.19 2004/11/13 14:26:13 csjp Exp $ .\" .Dd September 27, 2003 .Dt KVM_GETPROCS 3 @@ -167,6 +167,13 @@ on failure. .Sh BUGS These routines do not belong in the kvm interface. +.Pp +In order for +.Xr kvm_getenvv 3 +to function correctly, +.Xr procfs 5 +must be mounted on >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed Nov 17 15:51:26 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9FFF916A4D1; Wed, 17 Nov 2004 15:51:25 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7536A16A4CE for ; Wed, 17 Nov 2004 15:51:25 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 147A243D1F for ; Wed, 17 Nov 2004 15:51:25 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHFpOrw072422 for ; Wed, 17 Nov 2004 15:51:25 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHFpOQj072419 for perforce@freebsd.org; Wed, 17 Nov 2004 15:51:24 GMT (envelope-from jhb@freebsd.org) Date: Wed, 17 Nov 2004 15:51:24 GMT Message-Id: <200411171551.iAHFpOQj072419@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65334 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 15:51:26 -0000 http://perforce.freebsd.org/chv.cgi?CH=65334 Change 65334 by jhb@jhb_slimer on 2004/11/17 15:50:43 IFC @65327. Affected files ... .. //depot/projects/smpng/sys/alpha/conf/GENERIC#44 integrate .. //depot/projects/smpng/sys/alpha/conf/NOTES#10 integrate .. //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#13 integrate .. //depot/projects/smpng/sys/arm/arm/bcopy_page.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/bcopyinout.S#3 integrate .. //depot/projects/smpng/sys/arm/arm/bcopyinout_xscale.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/blockio.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/bus_space_asm_generic.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/busdma_machdep.c#6 integrate .. //depot/projects/smpng/sys/arm/arm/copystr.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc.c#5 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm_arm3.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm_arm67.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm_arm7tdmi.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm_arm8.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm_arm9.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm_armv4.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm_ixp12x0.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm_sa1.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm_sa11x0.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/cpufunc_asm_xscale.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/fiq_subr.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/fusu.S#4 integrate .. //depot/projects/smpng/sys/arm/arm/genassym.c#3 integrate .. //depot/projects/smpng/sys/arm/arm/in_cksum_arm.S#3 integrate .. //depot/projects/smpng/sys/arm/arm/intr.c#4 integrate .. //depot/projects/smpng/sys/arm/arm/irq_dispatch.S#3 integrate .. //depot/projects/smpng/sys/arm/arm/locore.S#5 integrate .. //depot/projects/smpng/sys/arm/arm/mem.c#1 branch .. //depot/projects/smpng/sys/arm/arm/nexus_io_asm.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/pmap.c#9 integrate .. //depot/projects/smpng/sys/arm/arm/setcpsr.S#2 integrate .. //depot/projects/smpng/sys/arm/arm/support.S#6 integrate .. //depot/projects/smpng/sys/arm/arm/swtch.S#4 integrate .. //depot/projects/smpng/sys/arm/arm/vm_machdep.c#6 integrate .. //depot/projects/smpng/sys/arm/conf/IQ31244#4 integrate .. //depot/projects/smpng/sys/arm/conf/SIMICS#5 integrate .. //depot/projects/smpng/sys/arm/include/asm.h#3 integrate .. //depot/projects/smpng/sys/arm/include/atomic.h#3 integrate .. //depot/projects/smpng/sys/arm/include/memdev.h#1 branch .. //depot/projects/smpng/sys/arm/include/pmap.h#5 integrate .. //depot/projects/smpng/sys/arm/xscale/i80321/i80321.c#2 integrate .. //depot/projects/smpng/sys/arm/xscale/i80321/iq31244_machdep.c#3 integrate .. //depot/projects/smpng/sys/boot/common/commands.c#6 integrate .. //depot/projects/smpng/sys/boot/forth/loader.conf#31 integrate .. //depot/projects/smpng/sys/boot/forth/loader.conf.5#9 integrate .. //depot/projects/smpng/sys/boot/i386/boot0/boot0.S#3 integrate .. //depot/projects/smpng/sys/boot/i386/libi386/biossmap.c#3 integrate .. //depot/projects/smpng/sys/coda/coda_vnops.c#16 integrate .. //depot/projects/smpng/sys/compat/linprocfs/linprocfs.c#40 integrate .. //depot/projects/smpng/sys/compat/svr4/svr4_filio.c#15 integrate .. //depot/projects/smpng/sys/compat/svr4/svr4_misc.c#35 integrate .. //depot/projects/smpng/sys/conf/NOTES#85 integrate .. //depot/projects/smpng/sys/conf/files#127 integrate .. //depot/projects/smpng/sys/conf/files.i386#70 integrate .. //depot/projects/smpng/sys/conf/files.sparc64#45 integrate .. //depot/projects/smpng/sys/conf/kern.post.mk#40 integrate .. //depot/projects/smpng/sys/conf/options#89 integrate .. //depot/projects/smpng/sys/conf/options.arm#3 integrate .. //depot/projects/smpng/sys/conf/options.i386#43 integrate .. //depot/projects/smpng/sys/conf/options.pc98#43 integrate .. //depot/projects/smpng/sys/contrib/pf/net/pf.c#12 integrate .. //depot/projects/smpng/sys/crypto/blowfish/arch/i386/bf_enc.S#2 integrate .. //depot/projects/smpng/sys/dev/acpi_support/acpi_asus.c#1 branch .. //depot/projects/smpng/sys/dev/acpi_support/acpi_panasonic.c#1 branch .. //depot/projects/smpng/sys/dev/acpi_support/acpi_sony.c#1 branch .. //depot/projects/smpng/sys/dev/acpi_support/acpi_toshiba.c#1 branch .. //depot/projects/smpng/sys/dev/acpica/acpi_cpu.c#29 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_pcib.c#26 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_pcib_acpi.c#16 integrate .. //depot/projects/smpng/sys/dev/acpica/acpi_video.c#7 integrate .. //depot/projects/smpng/sys/dev/aha/aha_isa.c#10 integrate .. //depot/projects/smpng/sys/dev/ata/ata-card.c#22 integrate .. //depot/projects/smpng/sys/dev/ata/ata-dma.c#41 integrate .. //depot/projects/smpng/sys/dev/bge/if_bge.c#49 integrate .. //depot/projects/smpng/sys/dev/ed/if_ed.c#25 integrate .. //depot/projects/smpng/sys/dev/ed/if_ed_cbus.c#10 integrate .. //depot/projects/smpng/sys/dev/em/if_em.c#40 integrate .. //depot/projects/smpng/sys/dev/em/if_em.h#23 integrate .. //depot/projects/smpng/sys/dev/esp/esp_sbus.c#5 integrate .. //depot/projects/smpng/sys/dev/esp/lsi64854.c#3 delete .. //depot/projects/smpng/sys/dev/esp/lsi64854reg.h#2 delete .. //depot/projects/smpng/sys/dev/esp/lsi64854var.h#3 delete .. //depot/projects/smpng/sys/dev/fdc/fdc.c#14 integrate .. //depot/projects/smpng/sys/dev/firewire/fwmem.c#18 integrate .. //depot/projects/smpng/sys/dev/fxp/if_fxp.c#56 integrate .. //depot/projects/smpng/sys/dev/gx/if_gx.c#17 delete .. //depot/projects/smpng/sys/dev/gx/if_gxreg.h#2 delete .. //depot/projects/smpng/sys/dev/gx/if_gxvar.h#6 delete .. //depot/projects/smpng/sys/dev/lge/if_lge.c#24 integrate .. //depot/projects/smpng/sys/dev/mc146818/mc146818reg.h#1 branch .. //depot/projects/smpng/sys/dev/md/md.c#59 integrate .. //depot/projects/smpng/sys/dev/mk48txx/mk48txx.c#4 integrate .. //depot/projects/smpng/sys/dev/mk48txx/mk48txxreg.h#3 integrate .. //depot/projects/smpng/sys/dev/mk48txx/mk48txxvar.h#1 branch .. //depot/projects/smpng/sys/dev/nge/if_nge.c#36 integrate .. //depot/projects/smpng/sys/dev/pbio/pbio.c#2 integrate .. //depot/projects/smpng/sys/dev/pci/pci.c#46 integrate .. //depot/projects/smpng/sys/dev/puc/puc_sbus.c#5 integrate .. //depot/projects/smpng/sys/dev/sound/pci/maestro.c#13 integrate .. //depot/projects/smpng/sys/dev/sound/pci/maestro_reg.h#2 integrate .. //depot/projects/smpng/sys/dev/streams/streams.c#20 integrate .. //depot/projects/smpng/sys/dev/uart/uart_bus.h#6 integrate .. //depot/projects/smpng/sys/dev/uart/uart_core.c#6 integrate .. //depot/projects/smpng/sys/dev/uart/uart_dev_ns8250.c#7 integrate .. //depot/projects/smpng/sys/dev/uart/uart_subr.c#2 integrate .. //depot/projects/smpng/sys/dev/usb/ehci.c#13 integrate .. //depot/projects/smpng/sys/dev/usb/ohci.c#32 integrate .. //depot/projects/smpng/sys/dev/usb/uhci.c#35 integrate .. //depot/projects/smpng/sys/dev/usb/uhub.c#21 integrate .. //depot/projects/smpng/sys/dev/usb/umass.c#43 integrate .. //depot/projects/smpng/sys/dev/usb/usb_port.h#22 integrate .. //depot/projects/smpng/sys/dev/vkbd/vkbd.c#1 branch .. //depot/projects/smpng/sys/dev/vkbd/vkbd_var.h#1 branch .. //depot/projects/smpng/sys/fs/autofs/autofs.h#3 delete .. //depot/projects/smpng/sys/fs/autofs/autofs_util.c#3 delete .. //depot/projects/smpng/sys/fs/autofs/autofs_vfsops.c#3 delete .. //depot/projects/smpng/sys/fs/autofs/autofs_vnops.c#3 delete .. //depot/projects/smpng/sys/fs/deadfs/dead_vnops.c#9 integrate .. //depot/projects/smpng/sys/fs/devfs/devfs_vfsops.c#16 integrate .. //depot/projects/smpng/sys/fs/devfs/devfs_vnops.c#35 integrate .. //depot/projects/smpng/sys/fs/fdescfs/fdesc_vfsops.c#15 integrate .. //depot/projects/smpng/sys/fs/fdescfs/fdesc_vnops.c#17 integrate .. //depot/projects/smpng/sys/fs/fifofs/fifo_vnops.c#29 integrate .. //depot/projects/smpng/sys/fs/hpfs/hpfs_vfsops.c#24 integrate .. //depot/projects/smpng/sys/fs/hpfs/hpfs_vnops.c#23 integrate .. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_vfsops.c#35 integrate .. //depot/projects/smpng/sys/fs/msdosfs/msdosfs_vnops.c#27 integrate .. //depot/projects/smpng/sys/fs/ntfs/ntfs_vfsops.c#24 integrate .. //depot/projects/smpng/sys/fs/ntfs/ntfs_vnops.c#17 integrate .. //depot/projects/smpng/sys/fs/nullfs/null_vfsops.c#14 integrate .. //depot/projects/smpng/sys/fs/nwfs/nwfs_vfsops.c#17 integrate .. //depot/projects/smpng/sys/fs/portalfs/portal_vfsops.c#15 integrate .. //depot/projects/smpng/sys/fs/smbfs/smbfs_vfsops.c#25 integrate .. //depot/projects/smpng/sys/fs/udf/udf_vnops.c#21 integrate .. //depot/projects/smpng/sys/fs/umapfs/umap_vfsops.c#19 integrate .. //depot/projects/smpng/sys/fs/unionfs/union_subr.c#19 integrate .. //depot/projects/smpng/sys/fs/unionfs/union_vfsops.c#22 integrate .. //depot/projects/smpng/sys/fs/unionfs/union_vnops.c#19 integrate .. //depot/projects/smpng/sys/geom/geom.h#41 integrate .. //depot/projects/smpng/sys/geom/geom_event.c#30 integrate .. //depot/projects/smpng/sys/geom/mirror/g_mirror.c#12 integrate .. //depot/projects/smpng/sys/geom/raid3/g_raid3.c#7 integrate .. //depot/projects/smpng/sys/geom/vinum/geom_vinum.h#6 integrate .. //depot/projects/smpng/sys/geom/vinum/geom_vinum_raid5.c#6 integrate .. //depot/projects/smpng/sys/geom/vinum/geom_vinum_share.c#4 integrate .. //depot/projects/smpng/sys/geom/vinum/geom_vinum_share.h#2 integrate .. //depot/projects/smpng/sys/geom/vinum/geom_vinum_subr.c#9 integrate .. //depot/projects/smpng/sys/gnu/ext2fs/ext2_bmap.c#8 integrate .. //depot/projects/smpng/sys/gnu/ext2fs/ext2_mount.h#6 integrate .. //depot/projects/smpng/sys/gnu/ext2fs/ext2_vfsops.c#38 integrate .. //depot/projects/smpng/sys/gnu/ext2fs/ext2_vnops.c#26 integrate .. //depot/projects/smpng/sys/i386/acpica/acpi_asus.c#9 delete .. //depot/projects/smpng/sys/i386/acpica/acpi_panasonic.c#4 delete .. //depot/projects/smpng/sys/i386/acpica/acpi_toshiba.c#7 delete .. //depot/projects/smpng/sys/i386/conf/NOTES#92 integrate .. //depot/projects/smpng/sys/i386/i386/autoconf.c#21 integrate .. //depot/projects/smpng/sys/i386/i386/busdma_machdep.c#31 integrate .. //depot/projects/smpng/sys/i386/i386/identcpu.c#31 integrate .. //depot/projects/smpng/sys/i386/i386/machdep.c#82 integrate .. //depot/projects/smpng/sys/i386/i386/mp_machdep.c#76 integrate .. //depot/projects/smpng/sys/i386/i386/pmap.c#78 integrate .. //depot/projects/smpng/sys/i386/i386/support.s#17 integrate .. //depot/projects/smpng/sys/i386/i386/trap.c#73 integrate .. //depot/projects/smpng/sys/i386/i386/vm_machdep.c#55 integrate .. //depot/projects/smpng/sys/i386/include/atomic.h#21 integrate .. //depot/projects/smpng/sys/i386/include/cpu.h#13 integrate .. //depot/projects/smpng/sys/i386/include/endian.h#15 integrate .. //depot/projects/smpng/sys/i386/include/sysarch.h#8 integrate .. //depot/projects/smpng/sys/i386/isa/pbio.c#2 delete .. //depot/projects/smpng/sys/ia64/conf/GENERIC.hints#7 integrate .. //depot/projects/smpng/sys/isofs/cd9660/cd9660_bmap.c#6 integrate .. //depot/projects/smpng/sys/isofs/cd9660/cd9660_vfsops.c#33 integrate .. //depot/projects/smpng/sys/kern/init_main.c#50 integrate .. //depot/projects/smpng/sys/kern/kern_descrip.c#71 integrate .. //depot/projects/smpng/sys/kern/kern_environment.c#15 integrate .. //depot/projects/smpng/sys/kern/kern_event.c#35 integrate .. //depot/projects/smpng/sys/kern/kern_exec.c#79 integrate .. //depot/projects/smpng/sys/kern/kern_fork.c#87 integrate .. //depot/projects/smpng/sys/kern/kern_intr.c#60 integrate .. //depot/projects/smpng/sys/kern/kern_mac.c#39 integrate .. //depot/projects/smpng/sys/kern/kern_shutdown.c#53 integrate .. //depot/projects/smpng/sys/kern/kern_sig.c#100 integrate .. //depot/projects/smpng/sys/kern/kern_subr.c#38 integrate .. //depot/projects/smpng/sys/kern/kern_switch.c#50 integrate .. //depot/projects/smpng/sys/kern/kern_thread.c#73 integrate .. //depot/projects/smpng/sys/kern/sched_ule.c#46 integrate .. //depot/projects/smpng/sys/kern/subr_param.c#17 integrate .. //depot/projects/smpng/sys/kern/subr_witness.c#123 integrate .. //depot/projects/smpng/sys/kern/sys_generic.c#36 integrate .. //depot/projects/smpng/sys/kern/sys_pipe.c#48 integrate .. //depot/projects/smpng/sys/kern/sys_socket.c#20 integrate .. //depot/projects/smpng/sys/kern/sysv_msg.c#23 integrate .. //depot/projects/smpng/sys/kern/sysv_sem.c#28 integrate .. //depot/projects/smpng/sys/kern/sysv_shm.c#26 integrate .. //depot/projects/smpng/sys/kern/tty.c#53 integrate .. //depot/projects/smpng/sys/kern/uipc_cow.c#17 integrate .. //depot/projects/smpng/sys/kern/uipc_domain.c#12 integrate .. //depot/projects/smpng/sys/kern/uipc_socket.c#61 integrate .. //depot/projects/smpng/sys/kern/uipc_syscalls.c#62 integrate .. //depot/projects/smpng/sys/kern/uipc_usrreq.c#42 integrate .. //depot/projects/smpng/sys/kern/vfs_cluster.c#35 integrate .. //depot/projects/smpng/sys/kern/vfs_default.c#30 integrate .. //depot/projects/smpng/sys/kern/vfs_mount.c#37 integrate .. //depot/projects/smpng/sys/kern/vfs_subr.c#88 integrate .. //depot/projects/smpng/sys/kern/vfs_syscalls.c#78 integrate .. //depot/projects/smpng/sys/kern/vfs_vnops.c#53 integrate .. //depot/projects/smpng/sys/kern/vnode_if.src#19 integrate .. //depot/projects/smpng/sys/libkern/arm/divsi3.S#3 integrate .. //depot/projects/smpng/sys/libkern/arm/ffs.S#2 integrate .. //depot/projects/smpng/sys/modules/Makefile#86 integrate .. //depot/projects/smpng/sys/modules/acpi/Makefile#23 integrate .. //depot/projects/smpng/sys/modules/acpi/acpi_asus/Makefile#4 integrate .. //depot/projects/smpng/sys/modules/acpi/acpi_panasonic/Makefile#3 integrate .. //depot/projects/smpng/sys/modules/acpi/acpi_snc/Makefile#1 branch .. //depot/projects/smpng/sys/modules/acpi/acpi_sony/Makefile#1 branch .. //depot/projects/smpng/sys/modules/acpi/acpi_toshiba/Makefile#4 integrate .. //depot/projects/smpng/sys/modules/autofs/Makefile#3 delete .. //depot/projects/smpng/sys/modules/esp/Makefile#3 integrate .. //depot/projects/smpng/sys/modules/gx/Makefile#2 delete .. //depot/projects/smpng/sys/modules/vkbd/Makefile#1 branch .. //depot/projects/smpng/sys/net/if_ppp.c#30 integrate .. //depot/projects/smpng/sys/net/if_pppvar.h#7 integrate .. //depot/projects/smpng/sys/net/if_sl.c#26 integrate .. //depot/projects/smpng/sys/net/if_var.h#33 integrate .. //depot/projects/smpng/sys/net/ppp_tty.c#15 integrate .. //depot/projects/smpng/sys/net/raw_usrreq.c#18 integrate .. //depot/projects/smpng/sys/net/rtsock.c#41 integrate .. //depot/projects/smpng/sys/netatalk/ddp_usrreq.c#21 integrate .. //depot/projects/smpng/sys/netatm/atm_aal5.c#11 integrate .. //depot/projects/smpng/sys/netatm/atm_usrreq.c#13 integrate .. //depot/projects/smpng/sys/netgraph/bluetooth/socket/ng_btsocket.c#8 integrate .. //depot/projects/smpng/sys/netgraph/ng_device.c#11 integrate .. //depot/projects/smpng/sys/netgraph/ng_socket.c#25 integrate .. //depot/projects/smpng/sys/netinet/in.c#22 integrate .. //depot/projects/smpng/sys/netinet/ip_divert.c#41 integrate .. //depot/projects/smpng/sys/netinet/ip_fastfwd.c#14 integrate .. //depot/projects/smpng/sys/netinet/raw_ip.c#46 integrate .. //depot/projects/smpng/sys/netinet/tcp_input.c#61 integrate .. //depot/projects/smpng/sys/netinet/tcp_subr.c#58 integrate .. //depot/projects/smpng/sys/netinet/tcp_usrreq.c#34 integrate .. //depot/projects/smpng/sys/netinet/udp_usrreq.c#52 integrate .. //depot/projects/smpng/sys/netinet6/ah_core.c#8 integrate .. //depot/projects/smpng/sys/netinet6/raw_ip6.c#30 integrate .. //depot/projects/smpng/sys/netinet6/udp6_usrreq.c#31 integrate .. //depot/projects/smpng/sys/netipsec/keysock.c#8 integrate .. //depot/projects/smpng/sys/netipx/ipx_usrreq.c#16 integrate .. //depot/projects/smpng/sys/netipx/spx_usrreq.c#15 integrate .. //depot/projects/smpng/sys/netkey/key.c#27 integrate .. //depot/projects/smpng/sys/netkey/key.h#5 integrate .. //depot/projects/smpng/sys/netkey/keydb.h#5 integrate .. //depot/projects/smpng/sys/netkey/keysock.c#21 integrate .. //depot/projects/smpng/sys/netnatm/natm.c#21 integrate .. //depot/projects/smpng/sys/netsmb/smb_dev.c#16 integrate .. //depot/projects/smpng/sys/nfs4client/nfs4_vfsops.c#9 integrate .. //depot/projects/smpng/sys/nfsclient/nfs_vfsops.c#42 integrate .. //depot/projects/smpng/sys/nfsserver/nfs_serv.c#37 integrate .. //depot/projects/smpng/sys/opencrypto/cryptodev.c#15 integrate .. //depot/projects/smpng/sys/pc98/conf/GENERIC#50 integrate .. //depot/projects/smpng/sys/pc98/conf/NOTES#32 integrate .. //depot/projects/smpng/sys/pc98/i386/machdep.c#73 integrate .. //depot/projects/smpng/sys/pc98/pc98/fd.c#40 integrate .. //depot/projects/smpng/sys/pci/if_de.c#23 integrate .. //depot/projects/smpng/sys/pci/if_sf.c#31 integrate .. //depot/projects/smpng/sys/pci/if_sfreg.h#4 integrate .. //depot/projects/smpng/sys/pci/if_sk.c#37 integrate .. //depot/projects/smpng/sys/pci/if_skreg.h#9 integrate .. //depot/projects/smpng/sys/pci/if_xl.c#51 integrate .. //depot/projects/smpng/sys/security/mac/mac_sysv_msg.c#1 branch .. //depot/projects/smpng/sys/security/mac/mac_sysv_sem.c#1 branch .. //depot/projects/smpng/sys/security/mac/mac_sysv_shm.c#1 branch .. //depot/projects/smpng/sys/sparc64/conf/GENERIC#49 integrate .. //depot/projects/smpng/sys/sparc64/conf/NOTES#11 integrate .. //depot/projects/smpng/sys/sparc64/include/eeprom.h#4 integrate .. //depot/projects/smpng/sys/sparc64/sbus/lsi64854.c#2 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/eeprom.c#5 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/eeprom_ebus.c#7 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/eeprom_sbus.c#7 integrate .. //depot/projects/smpng/sys/sparc64/sparc64/vm_machdep.c#43 integrate .. //depot/projects/smpng/sys/sys/_types.h#11 integrate .. //depot/projects/smpng/sys/sys/buf.h#32 integrate .. //depot/projects/smpng/sys/sys/conf.h#36 integrate .. //depot/projects/smpng/sys/sys/fdcio.h#5 integrate .. //depot/projects/smpng/sys/sys/file.h#19 integrate .. //depot/projects/smpng/sys/sys/filedesc.h#24 integrate .. //depot/projects/smpng/sys/sys/kernel.h#27 integrate .. //depot/projects/smpng/sys/sys/ktr.h#17 integrate .. //depot/projects/smpng/sys/sys/mac.h#28 integrate .. //depot/projects/smpng/sys/sys/mac_policy.h#27 integrate .. //depot/projects/smpng/sys/sys/mdioctl.h#11 integrate .. //depot/projects/smpng/sys/sys/msg.h#6 integrate .. //depot/projects/smpng/sys/sys/pbioio.h#2 delete .. //depot/projects/smpng/sys/sys/protosw.h#13 integrate .. //depot/projects/smpng/sys/sys/resource.h#13 integrate .. //depot/projects/smpng/sys/sys/rman.h#10 integrate .. //depot/projects/smpng/sys/sys/sem.h#7 integrate .. //depot/projects/smpng/sys/sys/sf_buf.h#5 integrate .. //depot/projects/smpng/sys/sys/shm.h#6 integrate .. //depot/projects/smpng/sys/sys/vnode.h#51 integrate .. //depot/projects/smpng/sys/ufs/ffs/ffs_vfsops.c#62 integrate .. //depot/projects/smpng/sys/ufs/ufs/ufs_bmap.c#13 integrate .. //depot/projects/smpng/sys/ufs/ufs/ufs_vnops.c#42 integrate .. //depot/projects/smpng/sys/vm/swap_pager.c#52 integrate .. //depot/projects/smpng/sys/vm/uma_core.c#50 integrate .. //depot/projects/smpng/sys/vm/vm_object.c#61 integrate .. //depot/projects/smpng/sys/vm/vm_object.h#26 integrate .. //depot/projects/smpng/sys/vm/vm_pager.c#19 integrate .. //depot/projects/smpng/sys/vm/vm_pager.h#11 integrate .. //depot/projects/smpng/sys/vm/vm_param.h#6 integrate .. //depot/projects/smpng/sys/vm/vm_zeroidle.c#24 integrate .. //depot/projects/smpng/sys/vm/vnode_pager.c#44 integrate Differences ... ==== //depot/projects/smpng/sys/alpha/conf/GENERIC#44 (text+ko) ==== @@ -18,7 +18,7 @@ # # For hardware specific information check HARDWARE.TXT # -# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.180 2004/11/02 20:57:19 andre Exp $ +# $FreeBSD: src/sys/alpha/conf/GENERIC,v 1.181 2004/11/09 22:23:34 wilko Exp $ machine alpha cpu EV4 @@ -32,7 +32,6 @@ # Platforms supported options API_UP1000 # UP1000, UP1100 (Nautilus) -options DEC_AXPPCI_33 # UDB, Multia, AXPpci33, NoName options DEC_EB164 # EB164, PC164, PC164LX, PC164SX options DEC_EB64PLUS # EB64+, AlphaPC64, Aspen Alpine, etc options DEC_2100_A50 # AlphaStation 200, 250, 255, 400 @@ -41,8 +40,6 @@ options DEC_ST550 # Personal Workstation 433, 500, 600 options DEC_ST6600 # XP1000, DP264, DS20, DS10, family options DEC_1000A # AlphaServer 1000, 1000A, 800 -# TurboLaser support is broken -# options DEC_KN8AE # AlphaServer 8200/8400 (Turbolaser) options DEC_KN300 # AlphaServer 4100 (Rawhide), # AlphaServer 1200 (Tincup) ==== //depot/projects/smpng/sys/alpha/conf/NOTES#10 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/alpha/conf/NOTES,v 1.155 2004/08/28 21:47:24 wilko Exp $ +# $FreeBSD: src/sys/alpha/conf/NOTES,v 1.156 2004/11/09 22:24:47 wilko Exp $ # # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. @@ -27,7 +27,6 @@ # PLATFORM OPTIONS options API_UP1000 # UP1000, UP1100 (Nautilus) -options DEC_AXPPCI_33 # UDB, Multia, AXPpci33, NoName options DEC_EB164 # EB164, PC164, PC164LX, PC164SX options DEC_EB64PLUS # EB64+, AlphaPC64, Aspen Alpine, etc options DEC_2100_A50 # AlphaStation 200, 250, 255, 400 @@ -36,8 +35,6 @@ options DEC_ST550 # Personal Workstation 433, 500, 600 options DEC_ST6600 # XP1000, DP264, DS20, DS10, family options DEC_1000A # AlphaServer 1000, 1000A, 800 -# TurboLaser support is broken -# options DEC_KN8AE # AlphaServer 8200/8400 (Turbolaser) options DEC_KN300 # AlphaServer 4100 (Rawhide), # AlphaServer 1200 (Tincup) ==== //depot/projects/smpng/sys/amd64/amd64/busdma_machdep.c#13 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.59 2004/11/05 18:24:01 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.60 2004/11/10 03:49:24 scottl Exp $"); #include #include @@ -52,6 +52,8 @@ #define MAX_BPAGES 512 +struct bounce_zone; + struct bus_dma_tag { bus_dma_tag_t parent; bus_size_t alignment; @@ -69,6 +71,7 @@ bus_dma_lock_t *lockfunc; void *lockfuncarg; bus_dma_segment_t *segments; + struct bounce_zone *bounce_zone; }; struct bounce_page { @@ -81,29 +84,32 @@ int busdma_swi_pending; +struct bounce_zone { + STAILQ_ENTRY(bounce_zone) links; + STAILQ_HEAD(bp_list, bounce_page) bounce_page_list; + int free_bpages; + int reserved_bpages; + int active_bpages; + int total_bounced; + int total_deferred; + bus_size_t alignment; + bus_size_t boundary; + bus_addr_t lowaddr; + char zoneid[8]; + char lowaddrid[20]; + struct sysctl_ctx_list sysctl_tree; + struct sysctl_oid *sysctl_tree_top; +}; + static struct mtx bounce_lock; -static STAILQ_HEAD(bp_list, bounce_page) bounce_page_list; -static int free_bpages; -static int reserved_bpages; -static int active_bpages; static int total_bpages; -static int total_bounced; -static int total_deferred; +static int busdma_zonecount; +static STAILQ_HEAD(, bounce_zone) bounce_zone_list; static bus_addr_t bounce_lowaddr = BUS_SPACE_MAXADDR; SYSCTL_NODE(_hw, OID_AUTO, busdma, CTLFLAG_RD, 0, "Busdma parameters"); -SYSCTL_INT(_hw_busdma, OID_AUTO, free_bpages, CTLFLAG_RD, &free_bpages, 0, - "Free bounce pages"); -SYSCTL_INT(_hw_busdma, OID_AUTO, reserved_bpages, CTLFLAG_RD, &reserved_bpages, - 0, "Reserved bounce pages"); -SYSCTL_INT(_hw_busdma, OID_AUTO, active_bpages, CTLFLAG_RD, &active_bpages, 0, - "Active bounce pages"); SYSCTL_INT(_hw_busdma, OID_AUTO, total_bpages, CTLFLAG_RD, &total_bpages, 0, "Total bounce pages"); -SYSCTL_INT(_hw_busdma, OID_AUTO, total_bounced, CTLFLAG_RD, &total_bounced, 0, - "Total bounce requests"); -SYSCTL_INT(_hw_busdma, OID_AUTO, total_deferred, CTLFLAG_RD, &total_deferred, 0, - "Total bounce requests that were deferred"); struct bus_dmamap { struct bp_list bpages; @@ -122,6 +128,7 @@ static struct bus_dmamap nobounce_dmamap; static void init_bounce_pages(void *dummy); +static struct bounce_zone * alloc_bounce_zone(bus_dma_tag_t dmat); static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages); static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit); @@ -219,7 +226,8 @@ /* Return a NULL tag on failure */ *dmat = NULL; - newtag = (bus_dma_tag_t)malloc(sizeof(*newtag), M_DEVBUF, M_NOWAIT); + newtag = (bus_dma_tag_t)malloc(sizeof(*newtag), M_DEVBUF, + M_ZERO | M_NOWAIT); if (newtag == NULL) { CTR3(KTR_BUSDMA, "bus_dma_tag_create returned tag %p tag " "flags 0x%x error %d", newtag, 0, error); @@ -376,6 +384,7 @@ */ if (dmat->lowaddr < ptoa((vm_paddr_t)Maxmem) || dmat->alignment > 1 || dmat->boundary > 0) { + /* Must bounce */ int maxpages; @@ -845,7 +854,7 @@ * want to add support for invalidating * the caches on broken hardware */ - total_bounced++; + dmat->bounce_zone->total_bounced++; CTR3(KTR_BUSDMA, "_bus_dmamap_sync: tag %p tag flags 0x%x " "op 0x%x performing bounce", op, dmat, dmat->flags); @@ -873,22 +882,111 @@ init_bounce_pages(void *dummy __unused) { - free_bpages = 0; - reserved_bpages = 0; - active_bpages = 0; total_bpages = 0; - STAILQ_INIT(&bounce_page_list); + STAILQ_INIT(&bounce_zone_list); STAILQ_INIT(&bounce_map_waitinglist); STAILQ_INIT(&bounce_map_callbacklist); mtx_init(&bounce_lock, "bounce pages lock", NULL, MTX_DEF); } SYSINIT(bpages, SI_SUB_LOCK, SI_ORDER_ANY, init_bounce_pages, NULL); +static struct sysctl_ctx_list * +busdma_sysctl_tree(struct bounce_zone *bz) +{ + return (&bz->sysctl_tree); +} + +static struct sysctl_oid * +busdma_sysctl_tree_top(struct bounce_zone *bz) +{ + return (bz->sysctl_tree_top); +} + +static struct bounce_zone * +alloc_bounce_zone(bus_dma_tag_t dmat) +{ + struct bounce_zone *bz; + + if ((bz = (struct bounce_zone *)malloc(sizeof(*bz), M_DEVBUF, + M_NOWAIT | M_ZERO)) == NULL) + return (NULL); + + STAILQ_INIT(&bz->bounce_page_list); + bz->free_bpages = 0; + bz->reserved_bpages = 0; + bz->active_bpages = 0; + bz->lowaddr = dmat->lowaddr; + bz->alignment = dmat->alignment; + bz->boundary = dmat->boundary; + snprintf(bz->zoneid, 8, "zone%d", busdma_zonecount); + busdma_zonecount++; + snprintf(bz->lowaddrid, 18, "%#jx", (uintmax_t)bz->lowaddr); + STAILQ_INSERT_TAIL(&bounce_zone_list, bz, links); + + sysctl_ctx_init(&bz->sysctl_tree); + bz->sysctl_tree_top = SYSCTL_ADD_NODE(&bz->sysctl_tree, + SYSCTL_STATIC_CHILDREN(_hw_busdma), OID_AUTO, bz->zoneid, + CTLFLAG_RD, 0, ""); + if (bz->sysctl_tree_top == NULL) { + sysctl_ctx_free(&bz->sysctl_tree); + return (bz); + } + + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "free_bpages", CTLFLAG_RD, &bz->free_bpages, 0, + "Free bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "reserved_bpages", CTLFLAG_RD, &bz->reserved_bpages, 0, + "Reserved bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "active_bpages", CTLFLAG_RD, &bz->active_bpages, 0, + "Active bounce pages"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_bounced", CTLFLAG_RD, &bz->total_bounced, 0, + "Total bounce requests"); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "total_deferred", CTLFLAG_RD, &bz->total_deferred, 0, + "Total bounce requests that were deferred"); + SYSCTL_ADD_STRING(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "lowaddr", CTLFLAG_RD, bz->lowaddrid, 0, ""); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "alignment", CTLFLAG_RD, &bz->alignment, 0, ""); + SYSCTL_ADD_INT(busdma_sysctl_tree(bz), + SYSCTL_CHILDREN(busdma_sysctl_tree_top(bz)), OID_AUTO, + "boundary", CTLFLAG_RD, &bz->boundary, 0, ""); + + return (bz); +} + static int alloc_bounce_pages(bus_dma_tag_t dmat, u_int numpages) { + struct bounce_zone *bz; int count; + bz = dmat->bounce_zone; + if (bz == NULL) { + STAILQ_FOREACH(bz, &bounce_zone_list, links) { + if ((dmat->alignment <= bz->alignment) + && (dmat->boundary <= bz->boundary) + && (dmat->lowaddr >= bz->lowaddr)) + break; + } + + if (bz == NULL) { + if ((bz = alloc_bounce_zone(dmat)) == NULL) + return (ENOMEM); + } + dmat->bounce_zone = bz; + } + count = 0; while (numpages > 0) { struct bounce_page *bpage; @@ -900,18 +998,18 @@ break; bpage->vaddr = (vm_offset_t)contigmalloc(PAGE_SIZE, M_DEVBUF, M_NOWAIT, 0ul, - dmat->lowaddr, + bz->lowaddr, PAGE_SIZE, - dmat->boundary); + bz->boundary); if (bpage->vaddr == 0) { free(bpage, M_DEVBUF); break; } bpage->busaddr = pmap_kextract(bpage->vaddr); mtx_lock(&bounce_lock); - STAILQ_INSERT_TAIL(&bounce_page_list, bpage, links); + STAILQ_INSERT_TAIL(&bz->bounce_page_list, bpage, links); total_bpages++; - free_bpages++; + bz->free_bpages++; mtx_unlock(&bounce_lock); count++; numpages--; @@ -922,14 +1020,16 @@ static int reserve_bounce_pages(bus_dma_tag_t dmat, bus_dmamap_t map, int commit) { + struct bounce_zone *bz; int pages; mtx_assert(&bounce_lock, MA_OWNED); - pages = MIN(free_bpages, map->pagesneeded - map->pagesreserved); + bz = dmat->bounce_zone; + pages = MIN(bz->free_bpages, map->pagesneeded - map->pagesreserved); if (commit == 0 && map->pagesneeded > (map->pagesreserved + pages)) return (map->pagesneeded - (map->pagesreserved + pages)); - free_bpages -= pages; - reserved_bpages += pages; + bz->free_bpages -= pages; + bz->reserved_bpages += pages; map->pagesreserved += pages; pages = map->pagesneeded - map->pagesreserved; @@ -940,11 +1040,14 @@ add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, bus_size_t size) { + struct bounce_zone *bz; struct bounce_page *bpage; + KASSERT(dmat->bounce_zone != NULL, ("no bounce zone in dma tag")); KASSERT(map != NULL && map != &nobounce_dmamap, ("add_bounce_page: bad map %p", map)); + bz = dmat->bounce_zone; if (map->pagesneeded == 0) panic("add_bounce_page: map doesn't need any pages"); map->pagesneeded--; @@ -954,13 +1057,13 @@ map->pagesreserved--; mtx_lock(&bounce_lock); - bpage = STAILQ_FIRST(&bounce_page_list); + bpage = STAILQ_FIRST(&bz->bounce_page_list); if (bpage == NULL) panic("add_bounce_page: free page list is empty"); - STAILQ_REMOVE_HEAD(&bounce_page_list, links); - reserved_bpages--; - active_bpages++; + STAILQ_REMOVE_HEAD(&bz->bounce_page_list, links); + bz->reserved_bpages--; + bz->active_bpages++; mtx_unlock(&bounce_lock); bpage->datavaddr = vaddr; @@ -973,21 +1076,23 @@ free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage) { struct bus_dmamap *map; + struct bounce_zone *bz; + bz = dmat->bounce_zone; bpage->datavaddr = 0; bpage->datacount = 0; mtx_lock(&bounce_lock); - STAILQ_INSERT_HEAD(&bounce_page_list, bpage, links); - free_bpages++; - active_bpages--; + STAILQ_INSERT_HEAD(&bz->bounce_page_list, bpage, links); + bz->free_bpages++; + bz->active_bpages--; if ((map = STAILQ_FIRST(&bounce_map_waitinglist)) != NULL) { if (reserve_bounce_pages(map->dmat, map, 1) == 0) { STAILQ_REMOVE_HEAD(&bounce_map_waitinglist, links); STAILQ_INSERT_TAIL(&bounce_map_callbacklist, map, links); busdma_swi_pending = 1; - total_deferred++; + bz->total_deferred++; swi_sched(vm_ih, 0); } } ==== //depot/projects/smpng/sys/arm/arm/bcopy_page.S#2 (text+ko) ==== @@ -40,7 +40,7 @@ #include #include -__FBSDID("$FreeBSD: src/sys/arm/arm/bcopy_page.S,v 1.1 2004/05/14 11:46:42 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/bcopy_page.S,v 1.2 2004/11/09 16:47:47 cognet Exp $"); #ifndef __XSCALE__ /* #define BIG_LOOPS */ @@ -242,7 +242,7 @@ strd r4, [r1], #0x08 bgt 1b ldmfd sp!, {r4, r5} - mov pc, lr + RET /* * XSCALE version of bzero_page @@ -269,5 +269,5 @@ strd r2, [r0], #8 subs r1, r1, #128 bne 1b - mov pc, lr + RET #endif /* __XSCALE__ */ ==== //depot/projects/smpng/sys/arm/arm/bcopyinout.S#3 (text+ko) ==== @@ -40,7 +40,7 @@ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/bcopyinout.S,v 1.2 2004/09/23 21:56:36 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/bcopyinout.S,v 1.3 2004/11/09 16:47:47 cognet Exp $"); #ifdef __XSCALE__ #include #else @@ -80,7 +80,7 @@ /* Quick exit if length is zero */ teq r2, #0 moveq r0, #0 - moveq pc, lr + RETEQ SAVE_REGS #ifdef MULTIPROCESSOR @@ -280,14 +280,14 @@ str r5, [r4, #PCB_ONFAULT] RESTORE_REGS - mov pc, lr + RET .Lcopyfault: mov r0, #14 /* EFAULT */ str r5, [r4, #PCB_ONFAULT] RESTORE_REGS - mov pc, lr + RET /* * r0 = kernel space address @@ -304,7 +304,7 @@ /* Quick exit if length is zero */ teq r2, #0 moveq r0, #0 - moveq pc, lr + RETeq SAVE_REGS #ifdef MULTIPROCESSOR @@ -501,7 +501,7 @@ str r5, [r4, #PCB_ONFAULT] RESTORE_REGS - mov pc, lr + RET /* * r0 = kernel space source address @@ -517,7 +517,7 @@ /* Quick exit if length is zero */ teq r2, #0 moveq r0, #0 - moveq pc, lr + RETeq SAVE_REGS #ifdef MULTIPROCESSOR @@ -703,7 +703,7 @@ str r5, [r4, #PCB_ONFAULT] RESTORE_REGS - mov pc, lr + RET #endif /* !__XSCALE__ */ /* @@ -738,7 +738,7 @@ strb r3, [r1] mov r0, #0 /* No fault */ 1: str ip, [r2, #PCB_ONFAULT] - mov pc, lr + RET /* * int badaddr_read_2(const uint16_t *src, uint16_t *dest) @@ -772,7 +772,7 @@ strh r3, [r1] mov r0, #0 /* No fault */ 1: str ip, [r2, #PCB_ONFAULT] - mov pc, lr + RET /* * int badaddr_read_4(const uint32_t *src, uint32_t *dest) @@ -806,5 +806,5 @@ str r3, [r1] mov r0, #0 /* No fault */ 1: str ip, [r2, #PCB_ONFAULT] - mov pc, lr + RET ==== //depot/projects/smpng/sys/arm/arm/bcopyinout_xscale.S#2 (text+ko) ==== @@ -36,7 +36,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/bcopyinout_xscale.S,v 1.1 2004/05/14 11:46:42 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/bcopyinout_xscale.S,v 1.2 2004/11/09 16:47:47 cognet Exp $"); .text .align 0 @@ -111,7 +111,7 @@ ldrbt ip, [r0], #0x01 strb ip, [r1], #0x01 cmp r2, #0x00 /* All done? */ - moveq pc, lr + RETeq /* Destination buffer is now word aligned */ .Lcopyin_wordaligned: @@ -193,7 +193,7 @@ .Lcopyin_w_lessthan128: adds r2, r2, #0x80 /* Adjust for extra sub */ ldmeqfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq subs r2, r2, #0x20 blt .Lcopyin_w_lessthan32 @@ -218,7 +218,7 @@ .Lcopyin_w_lessthan32: adds r2, r2, #0x20 /* Adjust for extra sub */ ldmeqfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ and r4, r2, #0x18 rsb r5, r4, #0x18 @@ -246,14 +246,14 @@ /* Less than 8 bytes remaining */ ldmfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ mov r3, #0x00 .Lcopyin_w_less_than8: subs r2, r2, #0x04 ldrget ip, [r0], #0x04 strge ip, [r1], #0x04 - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ addlt r2, r2, #0x04 ldrbt ip, [r0], #0x01 cmp r2, #0x02 @@ -262,7 +262,7 @@ ldrgtbt ip, [r0] strgeb r2, [r1], #0x01 strgtb ip, [r1] - mov pc, lr + RET /* * At this point, it has not been possible to word align both buffers. @@ -317,7 +317,7 @@ adds r2, r2, #0x10 ldmeqfd sp!, {r4-r7} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x04 sublt r0, r0, #0x03 blt .Lcopyin_l4 @@ -378,7 +378,7 @@ adds r2, r2, #0x10 ldmeqfd sp!, {r4-r7} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x04 sublt r0, r0, #0x02 blt .Lcopyin_l4 @@ -439,7 +439,7 @@ adds r2, r2, #0x10 ldmeqfd sp!, {r4-r7} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x04 sublt r0, r0, #0x01 blt .Lcopyin_l4 @@ -465,7 +465,7 @@ ldmfd sp!, {r4-r7} mov r3, #0x00 adds r2, r2, #0x04 - moveq pc, lr + RETeq .Lcopyin_l4_2: rsbs r2, r2, #0x03 addne pc, pc, r2, lsl #3 @@ -476,7 +476,7 @@ strb ip, [r1], #0x01 ldrbt ip, [r0] strb ip, [r1] - mov pc, lr + RET /* @@ -541,7 +541,7 @@ ldrb ip, [r0], #0x01 strbt ip, [r1], #0x01 cmp r2, #0x00 /* All done? */ - moveq pc, lr + RETeq /* Destination buffer is now word aligned */ .Lcopyout_wordaligned: @@ -639,7 +639,7 @@ .Lcopyout_w_lessthan128: adds r2, r2, #0x80 /* Adjust for extra sub */ ldmeqfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ subs r2, r2, #0x20 blt .Lcopyout_w_lessthan32 @@ -668,7 +668,7 @@ .Lcopyout_w_lessthan32: adds r2, r2, #0x20 /* Adjust for extra sub */ ldmeqfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ and r4, r2, #0x18 rsb r5, r4, #0x18 @@ -696,14 +696,14 @@ /* Less than 8 bytes remaining */ ldmfd sp!, {r4-r9} - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ mov r3, #0x00 .Lcopyout_w_less_than8: subs r2, r2, #0x04 ldrge ip, [r0], #0x04 strget ip, [r1], #0x04 - moveq pc, lr /* Return now if done */ + RETeq /* Return now if done */ addlt r2, r2, #0x04 ldrb ip, [r0], #0x01 cmp r2, #0x02 @@ -712,7 +712,7 @@ ldrgtb ip, [r0] strgebt r2, [r1], #0x01 strgtbt ip, [r1] - mov pc, lr + RET /* * At this point, it has not been possible to word align both buffers. @@ -767,7 +767,7 @@ >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed Nov 17 15:53:28 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 71AC216A4D1; Wed, 17 Nov 2004 15:53:28 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4B18616A4CE for ; Wed, 17 Nov 2004 15:53:28 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 00F3C43D31 for ; Wed, 17 Nov 2004 15:53:28 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHFrR47072497 for ; Wed, 17 Nov 2004 15:53:27 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHFrRub072494 for perforce@freebsd.org; Wed, 17 Nov 2004 15:53:27 GMT (envelope-from jhb@freebsd.org) Date: Wed, 17 Nov 2004 15:53:27 GMT Message-Id: <200411171553.iAHFrRub072494@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65335 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 15:53:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=65335 Change 65335 by jhb@jhb_slimer on 2004/11/17 15:52:59 IFC @65332. Affected files ... .. //depot/projects/smpng/sys/dev/mc146818/mc146818reg.h#2 integrate .. //depot/projects/smpng/sys/dev/uart/uart_cpu_sparc64.c#7 integrate .. //depot/projects/smpng/sys/kern/kern_intr.c#61 integrate .. //depot/projects/smpng/sys/modules/uart/Makefile#6 integrate .. //depot/projects/smpng/sys/sparc64/isa/isa.c#13 integrate Differences ... ==== //depot/projects/smpng/sys/dev/mc146818/mc146818reg.h#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/dev/mc146818/mc146818reg.h,v 1.3 2000/05/01 19:54:23 peter Exp $ */ +/* $FreeBSD: src/sys/dev/mc146818/mc146818reg.h,v 1.4 2004/11/17 14:46:13 marius Exp $ */ /* $NetBSD: mc146818reg.h,v 1.2 1997/03/12 06:53:42 cgd Exp $ */ /* ==== //depot/projects/smpng/sys/dev/uart/uart_cpu_sparc64.c#7 (text+ko) ==== @@ -25,30 +25,20 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_sparc64.c,v 1.12 2004/08/15 02:17:20 marius Exp $"); - -#include "opt_isa.h" +__FBSDID("$FreeBSD: src/sys/dev/uart/uart_cpu_sparc64.c,v 1.13 2004/11/17 14:44:09 marius Exp $"); #include #include #include #include -#include -#include #include #include -#include - #include -#include #include -#include -#include - bus_space_tag_t uart_bus_space_io; bus_space_tag_t uart_bus_space_mem; @@ -252,35 +242,5 @@ void uart_cpu_identify(driver_t *driver, device_t parent) { -#ifdef DEV_ISA - char buf[32]; - struct isa_regs reg; - device_t child; - phandle_t node; - ofw_isa_intr_t intr; -#endif -#ifdef DEV_ISA - if (strcmp(device_get_name(parent), "isa") == 0) { - if ((node = ofw_bus_get_node(device_get_parent(parent))) == 0) - return; - for (node = OF_child(node); node != 0; node = OF_peer(node)) { - if (OF_getprop(node, "name", buf, sizeof(buf)) == -1) - continue; - if (strcmp(buf, "serial") != 0) - continue; - if ((OF_getprop(node, "reg", ®, - sizeof(reg)) == -1) || - (OF_getprop(node, "interrupts", &intr, - sizeof(intr)) == -1)) - continue; - if ((child = BUS_ADD_CHILD(parent, ISA_ORDER_SENSITIVE, - uart_driver_name, -1)) == NULL) - return; - bus_set_resource(child, SYS_RES_IOPORT, 0, - ISA_REG_PHYS(®), reg.size); - bus_set_resource(child, SYS_RES_IRQ, 0, intr, 1); - } - } -#endif } ==== //depot/projects/smpng/sys/kern/kern_intr.c#61 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_intr.c,v 1.119 2004/11/16 16:09:46 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_intr.c,v 1.120 2004/11/17 14:39:41 jhb Exp $"); #include "opt_ddb.h" @@ -554,22 +554,14 @@ * * If this interrupt source is currently storming, * then throttle it to only fire the handler once - * per clock tick. Each second we go out of storming - * mode to see if the storm has subsided. + * per clock tick. * * If this interrupt source is not currently * storming, but the number of back to back * interrupts exceeds the storm threshold, then * enter storming mode. */ - if (storming) { - tsleep(&count, td->td_priority, "istorm", 1); - if (count > hz) { - storming = 0; - count = 0; - } else - count++; - } else if (intr_storm_threshold != 0 && + if (!storming && intr_storm_threshold != 0 && count >= intr_storm_threshold) { if (!warned) { printf( @@ -578,8 +570,10 @@ warned = 1; } storming = 1; - count = 0; - } else + } + if (storming) + tsleep(&count, td->td_priority, "istorm", 1); + else count++; if (ithd->it_enable != NULL) ==== //depot/projects/smpng/sys/modules/uart/Makefile#6 (text+ko) ==== @@ -1,12 +1,10 @@ -# $FreeBSD: src/sys/modules/uart/Makefile,v 1.11 2004/08/14 23:54:27 marius Exp $ +# $FreeBSD: src/sys/modules/uart/Makefile,v 1.12 2004/11/17 14:44:10 marius Exp $ .PATH: ${.CURDIR}/../../dev/uart .if ${MACHINE_ARCH} == "sparc64" uart_bus_ebus= uart_bus_ebus.c ofw_bus_if= ofw_bus_if.h -ofw_pci_if= ofw_pci_if.h -opt_isa= opt_isa.h .endif KMOD= uart @@ -14,10 +12,7 @@ uart_bus_pci.c uart_bus_puc.c uart_core.c uart_cpu_${MACHINE}.c \ uart_dbg.c uart_dev_i8251.c uart_dev_ns8250.c uart_dev_sab82532.c \ uart_dev_z8530.c uart_if.c uart_subr.c uart_tty.c -SRCS+= bus_if.h card_if.h device_if.h isa_if.h ${ofw_bus_if} ${ofw_pci_if} \ - ${opt_isa} pci_if.h power_if.h uart_if.h pccarddevs.h - -opt_isa.h: - echo "#define DEV_ISA 1" > ${.TARGET} +SRCS+= bus_if.h card_if.h device_if.h isa_if.h ${ofw_bus_if} pci_if.h \ + power_if.h uart_if.h pccarddevs.h .include ==== //depot/projects/smpng/sys/sparc64/isa/isa.c#13 (text+ko) ==== @@ -25,10 +25,11 @@ * SUCH DAMAGE. * * from: FreeBSD: src/sys/alpha/isa/isa.c,v 1.26 2001/07/11 - * - * $FreeBSD: src/sys/sparc64/isa/isa.c,v 1.13 2004/08/12 17:41:32 marius Exp $ */ +#include +__FBSDID("$FreeBSD: src/sys/sparc64/isa/isa.c,v 1.14 2004/11/17 14:44:10 marius Exp $"); + #include #include #include @@ -66,11 +67,13 @@ device_t isa_bus_device; static phandle_t isab_node; +static struct isa_ranges *isab_ranges; +static int isab_nrange; static ofw_pci_intr_t isa_ino[8]; -struct ofw_bus_iinfo isa_iinfo; +static struct ofw_bus_iinfo isa_iinfo; /* - * XXX: This is really partly partly PCI-specific, but unfortunately is + * XXX: This is really partly PCI-specific, but unfortunately is * differently enough to have to duplicate it here... */ #define ISAB_RANGE_PHYS(r) \ @@ -82,7 +85,7 @@ #define INRANGE(x, start, end) ((x) >= (start) && (x) <= (end)) -static int isa_route_intr_res(device_t, u_long, u_long); +static void isa_setup_children(device_t, phandle_t); intrmask_t isa_irq_pending(void) @@ -105,16 +108,14 @@ isa_init(device_t dev) { device_t bridge; - phandle_t node; - ofw_isa_intr_t ino; - struct isa_ranges *br; - int nbr, i; + int i; /* The parent of the bus must be a PCI-ISA bridge. */ bridge = device_get_parent(dev); isab_node = ofw_bus_get_node(bridge); - nbr = OF_getprop_alloc(isab_node, "ranges", sizeof(*br), (void **)&br); - if (nbr <= 0) + isab_nrange = OF_getprop_alloc(isab_node, "ranges", + sizeof(*isab_ranges), (void **)&isab_ranges); + if (isab_nrange <= 0) panic("isa_init: cannot get bridge range property"); ofw_bus_setup_iinfo(isab_node, &isa_iinfo, sizeof(ofw_isa_intr_t)); @@ -123,54 +124,175 @@ * This is really a bad kludge; however, it is needed to provide * isa_irq_pending(), which is unfortunately still used by some * drivers. + * XXX: The only driver still using isa_irq_pending() is sio(4) + * which we don't use on sparc64. Should we just drop support + * for isa_irq_pending()? */ for (i = 0; i < 8; i++) isa_ino[i] = PCI_INVALID_IRQ; - for (node = OF_child(isab_node); node != 0; node = OF_peer(node)) { - if (OF_getprop(node, "interrupts", &ino, sizeof(ino)) == -1) - continue; - if (ino > 7) - panic("isa_init: XXX: ino too large"); - isa_ino[ino] = ofw_isa_route_intr(bridge, node, &isa_iinfo, - ino); - } + + isa_setup_children(dev, isab_node); - for (nbr -= 1; nbr >= 0; nbr--) { - switch(ISAB_RANGE_SPACE(br + nbr)) { + for (i = isab_nrange - 1; i >= 0; i--) { + switch(ISAB_RANGE_SPACE(&isab_ranges[i])) { case ISAR_SPACE_IO: /* This is probably always 0. */ - isa_io_base = ISAB_RANGE_PHYS(&br[nbr]); - isa_io_limit = br[nbr].size; + isa_io_base = ISAB_RANGE_PHYS(&isab_ranges[i]); + isa_io_limit = isab_ranges[i].size; isa_io_hdl = OFW_PCI_GET_BUS_HANDLE(bridge, SYS_RES_IOPORT, isa_io_base, &isa_io_bt); break; case ISAR_SPACE_MEM: /* This is probably always 0. */ - isa_mem_base = ISAB_RANGE_PHYS(&br[nbr]); - isa_mem_limit = br[nbr].size; + isa_mem_base = ISAB_RANGE_PHYS(&isab_ranges[i]); + isa_mem_limit = isab_ranges[i].size; isa_mem_hdl = OFW_PCI_GET_BUS_HANDLE(bridge, SYS_RES_MEMORY, isa_mem_base, &isa_mem_bt); break; } } - free(br, M_OFWPROP); } -static int -isa_route_intr_res(device_t bus, u_long start, u_long end) +struct ofw_isa_pnp_map { + const char *name; + uint32_t id; +}; + +static struct ofw_isa_pnp_map pnp_map[] = { + { "SUNW,lomh", 0x0000ae4e }, /* SUN0000 */ + { "dma", 0x0002d041 }, /* PNP0200 */ + { "floppy", 0x0007d041 }, /* PNP0700 */ + { "rtc", 0x000bd041 }, /* PNP0B00 */ + { "flashprom", 0x0100ae4e }, /* SUN0001 */ + { "parallel", 0x0104d041 }, /* PNP0401 */ + { "serial", 0x0105d041 }, /* PNP0501 */ + { "kb_ps2", 0x0303d041 }, /* PNP0303 */ + { "kdmouse", 0x030fd041 }, /* PNP0F03 */ + { "power", 0x0c0cd041 }, /* PNP0C0C */ + { NULL, 0x0 } +}; + +static void +isa_setup_children(device_t dev, phandle_t parent) { - int res; + struct isa_regs *regs; + device_t cdev; + u_int64_t end, start; + ofw_isa_intr_t *intrs, rintr; + phandle_t node; + uint32_t *drqs, *regidx; + int i, ndrq, nintr, nreg, nregidx, rtype; + char *name; + + /* + * Loop through children and fake up PnP devices for them. + * Their resources are added as fully mapped and specified because + * adjusting the resources and the resource list entries respectively + * in isa_alloc_resource() causes trouble with drivers which use + * rman_get_start(), pass-through or allocate and release resources + * multiple times, etc. Adjusting the resources might be better off + * in a bus_activate_resource method but the common ISA code doesn't + * allow for an isa_activate_resource(). + */ + for (node = OF_child(parent); node != 0; node = OF_peer(node)) { + if ((OF_getprop_alloc(node, "name", 1, (void **)&name)) == -1) + continue; + + /* + * Keyboard and mouse controllers hang off of the `8042' + * node but we have no real use for the `8042' itself. + */ + if (strcmp(name, "8042") == 0) { + isa_setup_children(dev, node); + free(name, M_OFWPROP); + continue; + } + + for (i = 0; pnp_map[i].name != NULL; i++) + if (strcmp(pnp_map[i].name, name) == 0) + break; + if (i == (sizeof(pnp_map) / sizeof(*pnp_map)) - 1) { + printf("isa_setup_children: no PnP map entry for node " + "0x%lx: %s\n", (unsigned long)node, name); + continue; + } + + if ((cdev = BUS_ADD_CHILD(dev, ISA_ORDER_PNP, NULL, -1)) == + NULL) + panic("isa_setup_children: BUS_ADD_CHILD failed"); + isa_set_logicalid(cdev, pnp_map[i].id); + isa_set_vendorid(cdev, pnp_map[i].id); + + nreg = OF_getprop_alloc(node, "reg", sizeof(*regs), + (void **)®s); + for (i = 0; i < nreg; i++) { + start = ISA_REG_PHYS(®s[i]); + end = start + regs[i].size - 1; + rtype = ofw_isa_range_map(isab_ranges, isab_nrange, + &start, &end, NULL); + bus_set_resource(cdev, rtype, i, start, + end - start + 1); + } + if (nreg == -1 && parent != isab_node) { + /* + * The "reg" property still might be an index into + * the set of registers of the parent device like + * with the nodes hanging off of the `8042' node. + */ + nregidx = OF_getprop_alloc(node, "reg", sizeof(*regidx), + (void **)®idx); + if (nregidx > 2) + panic("isa_setup_children: impossible number " + "of register indices"); + if (nregidx != -1 && (nreg = OF_getprop_alloc(parent, + "reg", sizeof(*regs), (void **)®s)) >= nregidx) { + for (i = 0; i < nregidx; i++) { + start = ISA_REG_PHYS(®s[regidx[i]]); + end = start + regs[regidx[i]].size - 1; + rtype = ofw_isa_range_map(isab_ranges, + isab_nrange, &start, &end, NULL); + bus_set_resource(cdev, rtype, i, start, + end - start + 1); + } + } + if (regidx != NULL) + free(regidx, M_OFWPROP); + } + if (regs != NULL) + free(regs, M_OFWPROP); + + nintr = OF_getprop_alloc(node, "interrupts", sizeof(*intrs), + (void **)&intrs); + for (i = 0; i < nintr; i++) { + if (intrs[i] > 7) + panic("isa_setup_children: intr too large"); + rintr = ofw_isa_route_intr(device_get_parent(dev), node, + &isa_iinfo, intrs[i]); + if (rintr == PCI_INVALID_IRQ) + panic("isa_setup_children: could not map ISA " + "interrupt %d", intrs[i]); + isa_ino[intrs[i]] = rintr; + bus_set_resource(cdev, SYS_RES_IRQ, i, rintr, 1); + } + if (intrs != NULL) + free(intrs, M_OFWPROP); + + ndrq = OF_getprop_alloc(node, "dma-channel", sizeof(*drqs), + (void **)&drqs); + for (i = 0; i < ndrq; i++) + bus_set_resource(cdev, SYS_RES_DRQ, i, drqs[i], 1); + if (drqs != NULL) + free(drqs, M_OFWPROP); + + /* + * Devices using DMA hang off of the `dma' node instead of + * directly from the ISA bridge node. + */ + if (strcmp(name, "dma") == 0) + isa_setup_children(dev, node); - if (start != end) { - panic("isa_route_intr_res: allocation of interrupt range not " - "supported (0x%lx - 0x%lx)", start, end); + free(name, M_OFWPROP); } - if (start > 7) - panic("isa_route_intr_res: start out of isa range"); - res = isa_ino[start]; - if (res == PCI_INVALID_IRQ) - device_printf(bus, "could not map interrupt %d\n", res); - return (res); } struct resource * @@ -217,93 +339,45 @@ } /* - * Add the base, change default allocations to be between base and - * limit, and reject allocations if a resource type is not enabled. + * Sanity check if the resource in the respective entry is fully + * mapped and specified and its type allocable. A driver could + * have added an out of range resource on its own. */ - base = limit = 0; - switch(type) { - case SYS_RES_MEMORY: - if (isa_mem_bt == NULL) + if (!passthrough) { + if ((rle = resource_list_find(rl, type, *rid)) == NULL) return (NULL); - base = isa_mem_base; - limit = base + isa_mem_limit; - break; - case SYS_RES_IOPORT: - if (isa_io_bt == NULL) - return (NULL); - base = isa_io_base; - limit = base + isa_io_limit; - break; - case SYS_RES_IRQ: - if (isdefault && passthrough) - panic("isa_alloc_resource: cannot pass through default " - "irq allocation"); - if (!isdefault) { - start = end = isa_route_intr_res(bus, start, end); - if (start == PCI_INVALID_IRQ) - return (NULL); - } - break; - default: - panic("isa_alloc_resource: unsupported resource type %d", type); - } - if (type == SYS_RES_MEMORY || type == SYS_RES_IOPORT) { - start = ulmin(start + base, limit); - end = ulmin(end + base, limit); - } - - /* - * This inlines a modified resource_list_alloc(); this is needed - * because the resources need to have offsets added to them, which - * cannot be done beforehand without patching the resource list entries - * (which is ugly). - */ - if (passthrough) { - return (BUS_ALLOC_RESOURCE(device_get_parent(bus), child, - type, rid, start, end, count, flags)); - } - - rle = resource_list_find(rl, type, *rid); - if (rle == NULL) - return (NULL); /* no resource of that type/rid */ - - if (rle->res != NULL) - panic("isa_alloc_resource: resource entry is busy"); - - if (isdefault) { - start = rle->start; - count = ulmax(count, rle->count); - end = ulmax(rle->end, start + count - 1); + base = limit = 0; switch (type) { case SYS_RES_MEMORY: + if (isa_mem_bt == NULL) + return (NULL); + base = isa_mem_base; + limit = base + isa_mem_limit; + break; case SYS_RES_IOPORT: - start += base; - end += base; - if (!INRANGE(start, base, limit) || - !INRANGE(end, base, limit)) + if (isa_io_bt == NULL) return (NULL); + base = isa_io_base; + limit = base + isa_io_limit; break; case SYS_RES_IRQ: - start = end = isa_route_intr_res(bus, start, end); - if (start == PCI_INVALID_IRQ) + if (rle->start != rle->end || rle->start <= 7) return (NULL); break; + case SYS_RES_DRQ: + break; + default: + return (NULL); } + if (type == SYS_RES_MEMORY || type == SYS_RES_IOPORT) { + if (!INRANGE(rle->start, base, limit) || + !INRANGE(rle->end, base, limit)) + return (NULL); + } } - rle->res = BUS_ALLOC_RESOURCE(device_get_parent(bus), child, - type, rid, start, end, count, flags); - - /* - * Record the new range. - */ - if (rle->res != NULL) { - rle->start = rman_get_start(rle->res) - base; - rle->end = rman_get_end(rle->res) - base; - rle->count = count; - } - - return (rle->res); + return (resource_list_alloc(rl, bus, child, type, rid, start, end, + count, flags)); } int From owner-p4-projects@FreeBSD.ORG Wed Nov 17 15:56:32 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 647C816A4D1; Wed, 17 Nov 2004 15:56:32 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3DAF416A4CE for ; Wed, 17 Nov 2004 15:56:32 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2AFDD43D4C for ; Wed, 17 Nov 2004 15:56:32 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHFuWZS072627 for ; Wed, 17 Nov 2004 15:56:32 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHFuVeK072624 for perforce@freebsd.org; Wed, 17 Nov 2004 15:56:31 GMT (envelope-from jhb@freebsd.org) Date: Wed, 17 Nov 2004 15:56:31 GMT Message-Id: <200411171556.iAHFuVeK072624@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65336 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 15:56:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=65336 Change 65336 by jhb@jhb_slimer on 2004/11/17 15:55:51 Update. Affected files ... .. //depot/projects/smpng/sys/notes#26 edit Differences ... ==== //depot/projects/smpng/sys/notes#26 (text+ko) ==== @@ -49,12 +49,13 @@ buys is being able to swi_sched() from a fast handler, but that doesn't make sense because you can't actually enqueue a task onto its queue from a fast interrupt context -- "Optimize" atomic_store_rel() on i386 (it actually seems to be slower, - go figure) - + It is faster on UP, but slower on SMP, so tweak the patch so that we use - the non-MP safe 386 versions on all UP kernels. - Optimize spin locks on UP such that they don't do atomic operations - Untested - Unbenchmarked +- Try to fix problems with stuck IPIs by raising TPR and enabling interrupts + in spin loops. Need to perhaps generalize this so that critical sections + do this. That really needs to only be done in spinlock_*() (and maybe some + frobbing in intr_execute_handlers()) and needs to happen after the + spinlock_*() changes happen. Space reserved for child branches: From owner-p4-projects@FreeBSD.ORG Wed Nov 17 15:57:34 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1BF8A16A4D1; Wed, 17 Nov 2004 15:57:34 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id ECD3316A4CE for ; Wed, 17 Nov 2004 15:57:33 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id DD11943D48 for ; Wed, 17 Nov 2004 15:57:33 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHFvXlZ072656 for ; Wed, 17 Nov 2004 15:57:33 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHFvXtf072653 for perforce@freebsd.org; Wed, 17 Nov 2004 15:57:33 GMT (envelope-from jhb@freebsd.org) Date: Wed, 17 Nov 2004 15:57:33 GMT Message-Id: <200411171557.iAHFvXtf072653@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65337 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 15:57:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=65337 Change 65337 by jhb@jhb_slimer on 2004/11/17 15:57:30 Get rid of the 'storming' variable altogether. Affected files ... .. //depot/projects/smpng/sys/kern/kern_intr.c#62 edit Differences ... ==== //depot/projects/smpng/sys/kern/kern_intr.c#62 (text+ko) ==== @@ -485,7 +485,7 @@ struct intrhand *ih; /* and our interrupt handler chain */ struct thread *td; struct proc *p; - int count, warned, storming; + int count, warned; td = curthread; p = td->td_proc; @@ -494,7 +494,6 @@ ("%s: ithread and proc linkage out of sync", __func__)); count = 0; warned = 0; - storming = 0; /* * As long as we have interrupts outstanding, go through the @@ -561,7 +560,7 @@ * interrupts exceeds the storm threshold, then * enter storming mode. */ - if (!storming && intr_storm_threshold != 0 && + if (intr_storm_threshold != 0 && count >= intr_storm_threshold) { if (!warned) { printf( @@ -569,9 +568,6 @@ p->p_comm); warned = 1; } - storming = 1; - } - if (storming) tsleep(&count, td->td_priority, "istorm", 1); else count++; @@ -591,7 +587,6 @@ if (!ithd->it_need) { TD_SET_IWAIT(td); count = 0; - storming = 0; CTR2(KTR_INTR, "%s: pid %d: done", __func__, p->p_pid); mi_switch(SW_VOL, NULL); CTR2(KTR_INTR, "%s: pid %d: resumed", __func__, p->p_pid); From owner-p4-projects@FreeBSD.ORG Wed Nov 17 17:20:30 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 403AC16A4D1; Wed, 17 Nov 2004 17:20:30 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 180DB16A4CE for ; Wed, 17 Nov 2004 17:20:30 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id ADC1643D2F for ; Wed, 17 Nov 2004 17:20:29 +0000 (GMT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHHKTgV082510 for ; Wed, 17 Nov 2004 17:20:29 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHHKTer082507 for perforce@freebsd.org; Wed, 17 Nov 2004 17:20:29 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Wed, 17 Nov 2004 17:20:29 GMT Message-Id: <200411171720.iAHHKTer082507@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Subject: PERFORCE change 65346 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 17:20:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=65346 Change 65346 by rwatson@rwatson_tislabs on 2004/11/17 17:19:56 Integrate TrustedBSD MAC branch, primarily to loop back System V IPC related changes now merged to base FreeBSD tree. Affected files ... .. //depot/projects/trustedbsd/mac/Makefile.inc1#52 integrate .. //depot/projects/trustedbsd/mac/UPDATING#43 integrate .. //depot/projects/trustedbsd/mac/bin/ps/Makefile#12 integrate .. //depot/projects/trustedbsd/mac/bin/ps/ps.c#22 integrate .. //depot/projects/trustedbsd/mac/contrib/pf/man/pf.conf.5#3 integrate .. //depot/projects/trustedbsd/mac/etc/rc.d/Makefile#22 integrate .. //depot/projects/trustedbsd/mac/etc/rc.d/ramdisk-own#3 integrate .. //depot/projects/trustedbsd/mac/etc/rc.d/serial#7 integrate .. //depot/projects/trustedbsd/mac/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#2 integrate .. //depot/projects/trustedbsd/mac/lib/Makefile#32 integrate .. //depot/projects/trustedbsd/mac/lib/libarchive/archive_write_set_format_pax.c#5 integrate .. //depot/projects/trustedbsd/mac/lib/libc/Makefile#17 integrate .. //depot/projects/trustedbsd/mac/lib/libc/gen/getnetgrent.c#6 integrate .. //depot/projects/trustedbsd/mac/lib/libc/i386/net/htonl.S#5 integrate .. //depot/projects/trustedbsd/mac/lib/libc/i386/net/ntohl.S#5 integrate .. //depot/projects/trustedbsd/mac/lib/libc/net/rcmd.c#6 integrate .. //depot/projects/trustedbsd/mac/lib/libc/rpc/netnamer.c#6 integrate .. //depot/projects/trustedbsd/mac/lib/libc/sys/read.2#8 integrate .. //depot/projects/trustedbsd/mac/lib/libc/sys/stat.2#9 integrate .. //depot/projects/trustedbsd/mac/lib/libkvm/kvm_getprocs.3#7 integrate .. //depot/projects/trustedbsd/mac/lib/libkvm/kvm_proc.c#21 integrate .. //depot/projects/trustedbsd/mac/lib/libpam/modules/pam_unix/Makefile#9 integrate .. //depot/projects/trustedbsd/mac/lib/librpcsvc/Makefile#5 integrate .. //depot/projects/trustedbsd/mac/lib/libwrap/Makefile#7 integrate .. //depot/projects/trustedbsd/mac/lib/libxpg4/Makefile#4 delete .. //depot/projects/trustedbsd/mac/lib/libxpg4/fakelib.c#3 delete .. //depot/projects/trustedbsd/mac/libexec/Makefile#14 integrate .. //depot/projects/trustedbsd/mac/libexec/ftpd/ftpcmd.y#19 integrate .. //depot/projects/trustedbsd/mac/libexec/ftpd/ftpd.c#28 integrate .. //depot/projects/trustedbsd/mac/libexec/rtld-elf/Makefile#12 integrate .. //depot/projects/trustedbsd/mac/libexec/rtld-elf/i386/lockdflt.c#5 delete .. //depot/projects/trustedbsd/mac/libexec/rtld-elf/rtld_lock.c#3 integrate .. //depot/projects/trustedbsd/mac/release/picobsd/bridge/PICOBSD#5 integrate .. //depot/projects/trustedbsd/mac/rescue/librescue/Makefile#3 integrate .. //depot/projects/trustedbsd/mac/sbin/mdconfig/mdconfig.c#15 integrate .. //depot/projects/trustedbsd/mac/sbin/mount_cd9660/mount_cd9660.8#8 integrate .. //depot/projects/trustedbsd/mac/sbin/mount_cd9660/mount_cd9660.c#9 integrate .. //depot/projects/trustedbsd/mac/share/examples/etc/make.conf#29 integrate .. //depot/projects/trustedbsd/mac/share/man/man4/Makefile#46 integrate .. //depot/projects/trustedbsd/mac/share/man/man4/vkbd.4#1 branch .. //depot/projects/trustedbsd/mac/share/man/man4/vlan.4#9 integrate .. //depot/projects/trustedbsd/mac/share/man/man7/tuning.7#20 integrate .. //depot/projects/trustedbsd/mac/share/man/man9/get_cyclecount.9#3 integrate .. //depot/projects/trustedbsd/mac/share/mk/bsd.cpu.mk#17 integrate .. //depot/projects/trustedbsd/mac/share/mk/bsd.libnames.mk#21 integrate .. //depot/projects/trustedbsd/mac/share/numericdef/eu_ES.ISO8859-1.src#2 integrate .. //depot/projects/trustedbsd/mac/sys/arm/arm/busdma_machdep.c#3 integrate .. //depot/projects/trustedbsd/mac/sys/arm/arm/pmap.c#3 integrate .. //depot/projects/trustedbsd/mac/sys/arm/xscale/i80321/i80321.c#2 integrate .. //depot/projects/trustedbsd/mac/sys/boot/common/commands.c#7 integrate .. //depot/projects/trustedbsd/mac/sys/coda/coda_vnops.c#14 integrate .. //depot/projects/trustedbsd/mac/sys/conf/files#110 integrate .. //depot/projects/trustedbsd/mac/sys/conf/files.i386#41 integrate .. //depot/projects/trustedbsd/mac/sys/conf/kern.post.mk#32 integrate .. //depot/projects/trustedbsd/mac/sys/conf/options.i386#22 integrate .. //depot/projects/trustedbsd/mac/sys/conf/options.pc98#23 integrate .. //depot/projects/trustedbsd/mac/sys/crypto/blowfish/arch/i386/bf_enc.S#2 integrate .. //depot/projects/trustedbsd/mac/sys/dev/acpi_support/acpi_asus.c#1 branch .. //depot/projects/trustedbsd/mac/sys/dev/acpi_support/acpi_panasonic.c#1 branch .. //depot/projects/trustedbsd/mac/sys/dev/acpi_support/acpi_sony.c#1 branch .. //depot/projects/trustedbsd/mac/sys/dev/acpi_support/acpi_toshiba.c#1 branch .. //depot/projects/trustedbsd/mac/sys/dev/acpica/acpi_cpu.c#18 integrate .. //depot/projects/trustedbsd/mac/sys/dev/acpica/acpi_snc.c#2 delete .. //depot/projects/trustedbsd/mac/sys/dev/ata/ata-dma.c#29 integrate .. //depot/projects/trustedbsd/mac/sys/dev/em/if_em.c#33 integrate .. //depot/projects/trustedbsd/mac/sys/dev/fxp/if_fxp.c#34 integrate .. //depot/projects/trustedbsd/mac/sys/dev/mc146818/mc146818reg.h#1 branch .. //depot/projects/trustedbsd/mac/sys/dev/mk48txx/mk48txx.c#4 integrate .. //depot/projects/trustedbsd/mac/sys/dev/mk48txx/mk48txxreg.h#3 integrate .. //depot/projects/trustedbsd/mac/sys/dev/mk48txx/mk48txxvar.h#1 branch .. //depot/projects/trustedbsd/mac/sys/dev/puc/puc_sbus.c#4 integrate .. //depot/projects/trustedbsd/mac/sys/dev/uart/uart_bus.h#4 integrate .. //depot/projects/trustedbsd/mac/sys/dev/uart/uart_core.c#4 integrate .. //depot/projects/trustedbsd/mac/sys/dev/uart/uart_dev_ns8250.c#4 integrate .. //depot/projects/trustedbsd/mac/sys/dev/uart/uart_subr.c#2 integrate .. //depot/projects/trustedbsd/mac/sys/dev/usb/ehci.c#9 integrate .. //depot/projects/trustedbsd/mac/sys/dev/usb/ohci.c#28 integrate .. //depot/projects/trustedbsd/mac/sys/dev/usb/uhci.c#29 integrate .. //depot/projects/trustedbsd/mac/sys/dev/vkbd/vkbd.c#1 branch .. //depot/projects/trustedbsd/mac/sys/dev/vkbd/vkbd_var.h#1 branch .. //depot/projects/trustedbsd/mac/sys/fs/deadfs/dead_vnops.c#13 integrate .. //depot/projects/trustedbsd/mac/sys/fs/devfs/devfs_vnops.c#53 integrate .. //depot/projects/trustedbsd/mac/sys/fs/fifofs/fifo_vnops.c#28 integrate .. //depot/projects/trustedbsd/mac/sys/fs/hpfs/hpfs_vnops.c#20 integrate .. //depot/projects/trustedbsd/mac/sys/fs/msdosfs/msdosfs_vnops.c#22 integrate .. //depot/projects/trustedbsd/mac/sys/fs/ntfs/ntfs_vnops.c#17 integrate .. //depot/projects/trustedbsd/mac/sys/fs/udf/udf_vnops.c#25 integrate .. //depot/projects/trustedbsd/mac/sys/fs/unionfs/union_vnops.c#20 integrate .. //depot/projects/trustedbsd/mac/sys/geom/vinum/geom_vinum.h#2 integrate .. //depot/projects/trustedbsd/mac/sys/geom/vinum/geom_vinum_raid5.c#2 integrate .. //depot/projects/trustedbsd/mac/sys/geom/vinum/geom_vinum_share.c#2 integrate .. //depot/projects/trustedbsd/mac/sys/geom/vinum/geom_vinum_share.h#2 integrate .. //depot/projects/trustedbsd/mac/sys/geom/vinum/geom_vinum_subr.c#2 integrate .. //depot/projects/trustedbsd/mac/sys/gnu/ext2fs/ext2_bmap.c#8 integrate .. //depot/projects/trustedbsd/mac/sys/i386/acpica/acpi_asus.c#5 delete .. //depot/projects/trustedbsd/mac/sys/i386/acpica/acpi_panasonic.c#3 delete .. //depot/projects/trustedbsd/mac/sys/i386/acpica/acpi_toshiba.c#5 delete .. //depot/projects/trustedbsd/mac/sys/i386/conf/NOTES#49 integrate .. //depot/projects/trustedbsd/mac/sys/i386/i386/identcpu.c#26 integrate .. //depot/projects/trustedbsd/mac/sys/i386/i386/machdep.c#44 integrate .. //depot/projects/trustedbsd/mac/sys/i386/i386/mp_machdep.c#33 integrate .. //depot/projects/trustedbsd/mac/sys/i386/i386/pmap.c#44 integrate .. //depot/projects/trustedbsd/mac/sys/i386/i386/support.s#13 integrate .. //depot/projects/trustedbsd/mac/sys/i386/i386/trap.c#31 integrate .. //depot/projects/trustedbsd/mac/sys/i386/include/atomic.h#9 integrate .. //depot/projects/trustedbsd/mac/sys/i386/include/cpu.h#9 integrate .. //depot/projects/trustedbsd/mac/sys/i386/include/endian.h#13 integrate .. //depot/projects/trustedbsd/mac/sys/ia64/conf/GENERIC.hints#6 integrate .. //depot/projects/trustedbsd/mac/sys/isofs/cd9660/cd9660_bmap.c#6 integrate .. //depot/projects/trustedbsd/mac/sys/kern/kern_descrip.c#55 integrate .. //depot/projects/trustedbsd/mac/sys/kern/kern_event.c#29 integrate .. //depot/projects/trustedbsd/mac/sys/kern/kern_intr.c#32 integrate .. //depot/projects/trustedbsd/mac/sys/kern/kern_sig.c#43 integrate .. //depot/projects/trustedbsd/mac/sys/kern/sys_generic.c#29 integrate .. //depot/projects/trustedbsd/mac/sys/kern/sys_pipe.c#51 integrate .. //depot/projects/trustedbsd/mac/sys/kern/sys_socket.c#24 integrate .. //depot/projects/trustedbsd/mac/sys/kern/tty.c#27 integrate .. //depot/projects/trustedbsd/mac/sys/kern/vfs_cluster.c#26 integrate .. //depot/projects/trustedbsd/mac/sys/kern/vfs_default.c#30 integrate .. //depot/projects/trustedbsd/mac/sys/kern/vfs_subr.c#69 integrate .. //depot/projects/trustedbsd/mac/sys/kern/vfs_syscalls.c#118 integrate .. //depot/projects/trustedbsd/mac/sys/kern/vfs_vnops.c#73 integrate .. //depot/projects/trustedbsd/mac/sys/kern/vnode_if.src#22 integrate .. //depot/projects/trustedbsd/mac/sys/modules/Makefile#74 integrate .. //depot/projects/trustedbsd/mac/sys/modules/acpi/Makefile#18 integrate .. //depot/projects/trustedbsd/mac/sys/modules/acpi/acpi_asus/Makefile#3 integrate .. //depot/projects/trustedbsd/mac/sys/modules/acpi/acpi_panasonic/Makefile#2 integrate .. //depot/projects/trustedbsd/mac/sys/modules/acpi/acpi_sony/Makefile#1 branch .. //depot/projects/trustedbsd/mac/sys/modules/acpi/acpi_toshiba/Makefile#3 integrate .. //depot/projects/trustedbsd/mac/sys/modules/vkbd/Makefile#1 branch .. //depot/projects/trustedbsd/mac/sys/netinet/in.c#18 integrate .. //depot/projects/trustedbsd/mac/sys/opencrypto/cryptodev.c#14 integrate .. //depot/projects/trustedbsd/mac/sys/pc98/conf/GENERIC#35 integrate .. //depot/projects/trustedbsd/mac/sys/pc98/conf/NOTES#16 integrate .. //depot/projects/trustedbsd/mac/sys/pc98/i386/machdep.c#41 integrate .. //depot/projects/trustedbsd/mac/sys/pci/if_sk.c#24 integrate .. //depot/projects/trustedbsd/mac/sys/pci/if_skreg.h#8 integrate .. //depot/projects/trustedbsd/mac/sys/sparc64/conf/GENERIC#37 integrate .. //depot/projects/trustedbsd/mac/sys/sparc64/conf/NOTES#7 integrate .. //depot/projects/trustedbsd/mac/sys/sparc64/include/eeprom.h#4 integrate .. //depot/projects/trustedbsd/mac/sys/sparc64/sparc64/eeprom.c#5 integrate .. //depot/projects/trustedbsd/mac/sys/sparc64/sparc64/eeprom_ebus.c#6 integrate .. //depot/projects/trustedbsd/mac/sys/sparc64/sparc64/eeprom_sbus.c#6 integrate .. //depot/projects/trustedbsd/mac/sys/sys/buf.h#25 integrate .. //depot/projects/trustedbsd/mac/sys/sys/filedesc.h#21 integrate .. //depot/projects/trustedbsd/mac/sys/sys/mac.h#263 integrate .. //depot/projects/trustedbsd/mac/sys/sys/mac_policy.h#220 integrate .. //depot/projects/trustedbsd/mac/sys/sys/msg.h#12 integrate .. //depot/projects/trustedbsd/mac/sys/sys/sem.h#9 integrate .. //depot/projects/trustedbsd/mac/sys/sys/shm.h#9 integrate .. //depot/projects/trustedbsd/mac/sys/sys/vnode.h#70 integrate .. //depot/projects/trustedbsd/mac/sys/ufs/ufs/ufs_bmap.c#13 integrate .. //depot/projects/trustedbsd/mac/sys/vm/vm_pager.c#18 integrate .. //depot/projects/trustedbsd/mac/sys/vm/vnode_pager.c#32 integrate .. //depot/projects/trustedbsd/mac/tools/tools/nanobsd/make.conf#6 integrate .. //depot/projects/trustedbsd/mac/usr.bin/Makefile#31 integrate .. //depot/projects/trustedbsd/mac/usr.bin/chkey/Makefile#6 integrate .. //depot/projects/trustedbsd/mac/usr.bin/chpass/Makefile#5 integrate .. //depot/projects/trustedbsd/mac/usr.bin/make/config.h#5 integrate .. //depot/projects/trustedbsd/mac/usr.bin/make/main.c#22 integrate .. //depot/projects/trustedbsd/mac/usr.bin/make/parse.c#15 integrate .. //depot/projects/trustedbsd/mac/usr.bin/newkey/Makefile#7 integrate .. //depot/projects/trustedbsd/mac/usr.bin/pkill/Makefile#2 integrate .. //depot/projects/trustedbsd/mac/usr.bin/pkill/pkill.c#3 integrate .. //depot/projects/trustedbsd/mac/usr.bin/tr/str.c#9 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/Makefile#36 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/acpi/acpiconf/acpiconf.c#11 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/amd/Makefile.inc#3 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/amd/amd/Makefile#3 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/amd/include/Makefile#3 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/bootparamd/bootparamd/Makefile#3 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/bootparamd/bootparamd/bootparamd.c#3 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/jail/Makefile#3 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/jail/jail.c#7 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/sendmail/Makefile#9 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/sysinstall/anonFTP.c#4 integrate .. //depot/projects/trustedbsd/mac/usr.sbin/sysinstall/config.c#21 integrate Differences ... ==== //depot/projects/trustedbsd/mac/Makefile.inc1#52 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.454 2004/11/12 13:22:22 ru Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.456 2004/11/15 05:59:10 peter Exp $ # # Make command line options: # -DNO_DYNAMICROOT do not link /bin and /sbin dynamically @@ -404,11 +404,21 @@ cd ${.CURDIR}/secure/lib; \ ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} .endif +.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) + cd ${.CURDIR}/kerberos5/lib; \ + ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} +.endif .endfor .for _dir in lib/libncurses lib/libmagic cd ${.CURDIR}/${_dir}; \ MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} build-tools .endfor +.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) +.for _t in obj depend all + cd ${.CURDIR}/kerberos5/tools; \ + MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} ${_t} +.endfor +.endif cd ${.CURDIR}; \ ${LIB32MAKE} -f Makefile.inc1 DESTDIR=${LIB32TMP} libraries .for _t in obj depend all @@ -992,7 +1002,7 @@ lib/libkvm lib/libmd \ lib/libncurses lib/libnetgraph lib/libopie lib/libpam \ lib/libradius \ - lib/libsbuf lib/libtacplus lib/libutil lib/libypclnt \ + lib/libsbuf lib/libtacplus lib/libutil \ lib/libz lib/msun lib/libopie__L lib/libtacplus__L: lib/libmd__L @@ -1029,6 +1039,10 @@ lib/libradius__L: lib/libmd__L .endif +.if !defined(NO_NIS) +_prebuild_libs+= lib/libypclnt +.endif + _generic_libs+= usr.bin/lex/lib .if ${MACHINE_ARCH} == "i386" ==== //depot/projects/trustedbsd/mac/UPDATING#43 (text+ko) ==== @@ -23,6 +23,10 @@ developers choose to disable these features on build machines to maximize performance. +20041116: + Support for systems with an 80386 CPU has been removed. Please + use FreeBSD 5.x or earlier on systems with an 80386. + 20041110: We have had a hack which would mount the root filesystem R/W if the device were named 'md*'. As part of the vnode @@ -1969,4 +1973,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.378 2004/11/10 07:39:27 phk Exp $ +$FreeBSD: src/UPDATING,v 1.379 2004/11/16 21:18:41 jhb Exp $ ==== //depot/projects/trustedbsd/mac/bin/ps/Makefile#12 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/bin/ps/Makefile,v 1.25 2004/02/23 20:05:14 johan Exp $ +# $FreeBSD: src/bin/ps/Makefile,v 1.26 2004/11/13 17:12:22 ru Exp $ # @(#)Makefile 8.1 (Berkeley) 6/2/93 PROG= ps @@ -13,7 +13,5 @@ CFLAGS+=-DLAZY_PS DPADD= ${LIBM} ${LIBKVM} LDADD= -lm -lkvm -#BINGRP= kmem -#BINMODE=2555 .include ==== //depot/projects/trustedbsd/mac/bin/ps/ps.c#22 (text+ko) ==== @@ -47,7 +47,7 @@ #endif #include -__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.106 2004/06/27 22:56:58 gad Exp $"); +__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.108 2004/11/14 19:30:02 csjp Exp $"); #include #include @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -128,6 +129,7 @@ } l; }; +static int check_procfs(void); static int addelem_gid(struct listinfo *, const char *); static int addelem_pid(struct listinfo *, const char *); static int addelem_tty(struct listinfo *, const char *); @@ -171,7 +173,7 @@ struct winsize ws; const char *nlistf, *memf; char *cols; - int all, ch, dropgid, elem, flag, _fmt, i, lineno; + int all, ch, elem, flag, _fmt, i, lineno; int nentries, nkept, nselectors; int prtheader, showthreads, wflag, what, xkeep, xkeep_implied; char errbuf[_POSIX2_LINE_MAX]; @@ -196,7 +198,7 @@ if (argc > 1) argv[1] = kludge_oldps_options(PS_ARGS, argv[1], argv[2]); - all = dropgid = _fmt = nselectors = optfatal = 0; + all = _fmt = nselectors = optfatal = 0; prtheader = showthreads = wflag = xkeep_implied = 0; xkeep = -1; /* Neither -x nor -X. */ init_list(&gidlist, addelem_gid, sizeof(gid_t), "group"); @@ -278,14 +280,12 @@ break; case 'M': memf = optarg; - dropgid = 1; break; case 'm': sortby = SORTMEM; break; case 'N': nlistf = optarg; - dropgid = 1; break; case 'O': parsefmt(o1, 1); @@ -404,6 +404,14 @@ argv += optind; /* + * If the user specified ps -e then they want a copy of the process + * environment kvm_getenvv(3) attempts to open /proc//mem. + * Check to make sure that procfs is mounted on /proc, otherwise + * print a warning informing the user that output will be incomplete. + */ + if (needenv == 1 && check_procfs() == 0) + warnx("Process environment requires procfs(5)"); + /* * If there arguments after processing all the options, attempt * to treat them as a list of process ids. */ @@ -423,14 +431,6 @@ if (xkeep < 0) /* Neither -X nor -x was specified. */ xkeep = xkeep_implied; - - /* - * Discard setgid privileges if not the running kernel so that bad - * guys can't print interesting stuff from kernel memory. - */ - if (dropgid) - setgid(getgid()); - kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, errbuf); if (kd == 0) errx(1, "%s", errbuf); @@ -1176,6 +1176,21 @@ return (newopts); } +static int +check_procfs(void) +{ + struct statfs *mntbuf; + size_t mntsize, i; + + mntsize = getmntinfo(&mntbuf, MNT_NOWAIT); + for (i = 0; i < mntsize; i++) + if (strcmp(mntbuf[i].f_mntonname, "/proc") == 0 && + strcmp(mntbuf[i].f_fstypename, "procfs") == 0) { + return (1); + } + return (0); +} + static void usage(void) { ==== //depot/projects/trustedbsd/mac/contrib/pf/man/pf.conf.5#3 (text+ko) ==== @@ -1,4 +1,4 @@ -.\" $FreeBSD: src/contrib/pf/man/pf.conf.5,v 1.4 2004/10/07 15:39:02 mlaier Exp $ +.\" $FreeBSD: src/contrib/pf/man/pf.conf.5,v 1.5 2004/11/14 17:05:54 mlaier Exp $ .\" $OpenBSD: pf.conf.5,v 1.292 2004/02/24 05:44:48 mcbride Exp $ .\" .\" Copyright (c) 2002, Daniel Hartmeier @@ -349,7 +349,7 @@ .It Ar set limit Sets hard limits on the memory pools used by the packet filter. See -.Xr pool 9 +.Xr zone 9 for an explanation of memory pools. .Pp For example, ==== //depot/projects/trustedbsd/mac/etc/rc.d/Makefile#22 (text+ko) ==== @@ -1,5 +1,5 @@ # $NetBSD: Makefile,v 1.16 2001/01/14 15:37:22 minoura Exp $ -# $FreeBSD: src/etc/rc.d/Makefile,v 1.46 2004/11/04 12:59:16 phk Exp $ +# $FreeBSD: src/etc/rc.d/Makefile,v 1.47 2004/11/16 04:20:09 wes Exp $ FILES= DAEMON LOGIN NETWORKING SERVERS \ abi accounting addswap adjkerntz amd \ @@ -28,7 +28,7 @@ pccard pcvt pf pflog \ power_profile ppp-user pppoed preseedrandom pwcheck \ quota \ - random rarpd rcconf.sh resolv root \ + ramdisk ramdisk-own random rarpd rcconf.sh resolv root \ route6d routed routing rpcbind rtadvd rwho \ savecore securelevel sendmail \ serial sppp sshd swap1 \ ==== //depot/projects/trustedbsd/mac/etc/rc.d/ramdisk-own#3 (text+ko) ==== @@ -24,7 +24,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/rc.d/ramdisk-own,v 1.3 2004/10/07 13:55:26 mtm Exp $ +# $FreeBSD: src/etc/rc.d/ramdisk-own,v 1.4 2004/11/16 04:14:28 wes Exp $ # # PROVIDE: ramdisk-own @@ -39,7 +39,6 @@ ramdisk_own_start() { -set -x for unit in $ramdisk_units; do device="/dev/md$unit" dir=`mount | grep $device | cut -d' ' -f3` ==== //depot/projects/trustedbsd/mac/etc/rc.d/serial#7 (text+ko) ==== @@ -24,7 +24,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/rc.d/serial,v 1.22 2004/10/07 13:55:26 mtm Exp $ +# $FreeBSD: src/etc/rc.d/serial,v 1.24 2004/11/14 19:51:34 obrien Exp $ # # PROVIDE: serial @@ -45,73 +45,69 @@ default() { # Reset everything changed by the other functions to initial defaults. - ci=$1; shift # call in device identifier - co=$1; shift # call out device identifier + dc=$1; shift # device name character drainwait=`sysctl -n kern.drainwait` for i in $* do - comcontrol /dev/tty${ci}${i} dtrwait 300 drainwait $drainwait - stty < /dev/ttyi${ci}${i} -clocal crtscts hupcl 9600 reprint ^R - stty < /dev/ttyl${ci}${i} -clocal -crtscts -hupcl 0 - stty < /dev/cuai${co}${i} -clocal crtscts hupcl 9600 reprint ^R - stty < /dev/cual${co}${i} -clocal -crtscts -hupcl 0 + comcontrol /dev/tty${dc}${i} dtrwait 300 drainwait $drainwait + stty < /dev/tty${dc}${i}.init -clocal crtscts hupcl 9600 reprint ^R + stty < /dev/tty${dc}${i}.lock -clocal -crtscts -hupcl 0 + stty < /dev/cua${dc}${i}.init -clocal crtscts hupcl 9600 reprint ^R + stty < /dev/cua${dc}${i}.lock -clocal -crtscts -hupcl 0 done } maybe() { # Special settings. - ci=$1; shift - co=$1; shift + dc=$1; shift for i in $* do # Don't use ^R; it breaks bash's ^R when typed ahead. - stty < /dev/ttyi${ci}${i} reprint undef - stty < /dev/cuai${co}${i} reprint undef + stty < /dev/tty${dc}${i}.init reprint undef + stty < /dev/cua${dc}${i}.init reprint undef # Lock clocal off on dialin device for security. - stty < /dev/ttyl${ci}${i} clocal + stty < /dev/tty${dc}${i}.lock clocal # Lock the speeds to use old binaries that don't support them. # Any legal speed works to lock the initial speed. - stty < /dev/ttyl${ci}${i} 300 - stty < /dev/cual${co}${i} 300 + stty < /dev/tty${dc}${i}.lock 300 + stty < /dev/cua${dc}${i}.lock 300 done } modem() { # Modem that supports CTS and perhaps RTS handshaking. - ci=$1; shift - co=$1; shift + dc=$1; shift for i in $* do # may depend on modem - comcontrol /dev/tty${ci}${i} dtrwait 100 drainwait 180 + comcontrol /dev/tty${dc}${i} dtrwait 100 drainwait 180 # Lock crtscts on. # Speed reasonable for V42bis. - stty < /dev/ttyi${ci}${i} crtscts 115200 - stty < /dev/ttyl${ci}${i} crtscts - stty < /dev/cuai${co}${i} crtscts 115200 - stty < /dev/cual${co}${i} crtscts + stty < /dev/tty${dc}${i}.init crtscts 115200 + stty < /dev/tty${dc}${i}.lock crtscts + stty < /dev/cua${dc}${i}.init crtscts 115200 + stty < /dev/cua${dc}${i}.lock crtscts done } mouse() { # Mouse on either callin or callout port. - ci=$1; shift - co=$1; shift + dc=$1; shift for i in $* do # Lock clocal on, hupcl off. # Standard speed for Microsoft mouse. - stty < /dev/ttyi${ci}${i} clocal -hupcl 1200 - stty < /dev/ttyl${ci}${i} clocal hupcl - stty < /dev/cuai${co}${i} clocal -hupcl 1200 - stty < /dev/cual${co}${i} clocal hupcl + stty < /dev/tty${dc}${i}.init clocal -hupcl 1200 + stty < /dev/tty${dc}${i}.lock clocal hupcl + stty < /dev/cua${dc}${i}.init clocal -hupcl 1200 + stty < /dev/cua${dc}${i}.lock clocal hupcl done } @@ -123,15 +119,14 @@ # provided at most one side runs getty. # Same as modem() except we want a faster speed and no dtrwait. - ci=$1; shift - co=$1; shift + dc=$1; shift - modem ${ci} ${co} $* + modem ${dc} $* for i in $* do - comcontrol /dev/tty${ci}${i} dtrwait 0 - stty < /dev/ttyi${ci}${i} 115200 - stty < /dev/cuai${co}${i} 115200 + comcontrol /dev/tty${dc}${i} dtrwait 0 + stty < /dev/tty${dc}${i}.init 115200 + stty < /dev/cua${dc}${i}.init 115200 done } @@ -143,16 +138,16 @@ # and the remainder of the line lists the device numbers. # Initialize assorted 8250-16550 (sio) ports. -# maybe d a 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v -# mouse d a 2 -# modem d a 1 -# terminal d a 0 +# maybe d 0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v +# mouse d 2 +# modem d 1 +# terminal d 0 # Initialize all ports on a Cyclades-8yo. -# modem c c 00 01 02 03 04 05 06 07 +# modem c 00 01 02 03 04 05 06 07 # Initialize all ports on a Cyclades-16ye. -# modem c c 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f +# modem c 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f # Initialize all ports on a Digiboard 8. -# modem D D 00 01 02 03 04 05 06 07 +# modem D 00 01 02 03 04 05 06 07 ==== //depot/projects/trustedbsd/mac/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#2 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c,v 1.7 2004/08/22 09:05:57 davidxu Exp $ */ +/* $FreeBSD: src/gnu/usr.bin/gdb/libgdb/fbsd-threads.c,v 1.8 2004/11/15 13:06:01 davidxu Exp $ */ /* FreeBSD libthread_db assisted debugging support. Copyright 1999, 2000, 2001 Free Software Foundation, Inc. @@ -294,8 +294,8 @@ if (!in_thread_list (ptid)) { add_thread (ptid); - inferior_ptid = ptid; } + inferior_ptid = ptid; } static void ==== //depot/projects/trustedbsd/mac/lib/Makefile#32 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.1 (Berkeley) 6/4/93 -# $FreeBSD: src/lib/Makefile,v 1.195 2004/11/10 22:16:37 markm Exp $ +# $FreeBSD: src/lib/Makefile,v 1.197 2004/11/13 23:54:30 tjr Exp $ # To satisfy shared library or ELF linkage when only the libraries being # built are visible: @@ -32,7 +32,7 @@ ${_libncp} ${_libngatm} libopie libpam libpanel libpcap \ ${_libpthread} ${_libsdp} ${_libsm} ${_libsmb} ${_libsmdb} \ ${_libsmutil} libstand libtelnet ${_libthr} ${_libthread_db} libufs \ - libugidfw ${_libusbhid} ${_libvgl} libwrap libxpg4 liby libz ${_bind} + libugidfw ${_libusbhid} ${_libvgl} libwrap liby libz ${_bind} .if exists(${.CURDIR}/csu/${MACHINE_ARCH}-elf) _csu=csu/${MACHINE_ARCH}-elf @@ -107,7 +107,7 @@ _libusbhid= libusbhid .endif -.if !defined(NO_YP_LIBC) +.if !defined(NO_NIS) _libypclnt= libypclnt .endif ==== //depot/projects/trustedbsd/mac/lib/libarchive/archive_write_set_format_pax.c#5 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include "archive_platform.h" -__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_format_pax.c,v 1.19 2004/11/05 05:26:30 kientzle Exp $"); +__FBSDID("$FreeBSD: src/lib/libarchive/archive_write_set_format_pax.c,v 1.21 2004/11/15 01:46:33 kientzle Exp $"); #include #include @@ -315,7 +315,7 @@ const char *linkname, *p; const char *hardlink; const wchar_t *wp, *wp2, *wname_start; - int need_extension, oldstate, r, ret; + int need_extension, r, ret; struct pax *pax; const struct stat *st_main, *st_original; @@ -672,17 +672,19 @@ pax->entry_bytes_remaining = archive_strlen(&(pax->pax_header)); pax->entry_padding = 0x1ff & (- pax->entry_bytes_remaining); - oldstate = a->state; - a->state = ARCHIVE_STATE_DATA; - r = archive_write_data(a, pax->pax_header.s, + r = (a->compression_write)(a, pax->pax_header.s, archive_strlen(&(pax->pax_header))); - a->state = oldstate; + if (r != ARCHIVE_OK) { + /* If a write fails, we're pretty much toast. */ + return (ARCHIVE_FATAL); + } + /* Pad out the end of the entry. */ + r = write_nulls(a, pax->entry_padding); if (r != ARCHIVE_OK) { /* If a write fails, we're pretty much toast. */ return (ARCHIVE_FATAL); } - - archive_write_pax_finish_entry(a); + pax->entry_bytes_remaining = pax->entry_padding = 0; } /* Write the header for main entry. */ ==== //depot/projects/trustedbsd/mac/lib/libc/Makefile#17 (text+ko) ==== @@ -1,5 +1,5 @@ # @(#)Makefile 8.2 (Berkeley) 2/3/94 -# $FreeBSD: src/lib/libc/Makefile,v 1.54 2004/10/24 15:32:30 ru Exp $ +# $FreeBSD: src/lib/libc/Makefile,v 1.55 2004/11/13 20:40:28 bz Exp $ # # All library objects contain FreeBSD revision strings by default; they may be # excluded as a space-saving measure. To produce a library that does @@ -60,7 +60,7 @@ .if ${MACHINE_ARCH} == "arm" .include "${.CURDIR}/softfloat/Makefile.inc" .endif -.if !defined(NO_YP_LIBC) +.if !defined(NO_NIS) CFLAGS+= -DYP .include "${.CURDIR}/yp/Makefile.inc" .endif ==== //depot/projects/trustedbsd/mac/lib/libc/gen/getnetgrent.c#6 (text+ko) ==== @@ -38,7 +38,7 @@ static char sccsid[] = "@(#)getnetgrent.c 8.2 (Berkeley) 4/27/95"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/gen/getnetgrent.c,v 1.31 2004/07/28 11:56:03 des Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/gen/getnetgrent.c,v 1.32 2004/11/13 20:40:28 bz Exp $"); #include #include @@ -202,7 +202,7 @@ return; } #else - if (netf = fopen(_PATH_NETGROUP, "r")) { + if ((netf = fopen(_PATH_NETGROUP, "r"))) { #endif if (parse_netgrp(group)) endnetgrent(); ==== //depot/projects/trustedbsd/mac/lib/libc/i386/net/htonl.S#5 (text+ko) ==== @@ -38,7 +38,7 @@ .asciz "@(#)htonl.s 5.3 (Berkeley) 12/17/90" #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/i386/net/htonl.S,v 1.10 2004/10/18 17:19:36 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/i386/net/htonl.S,v 1.11 2004/11/16 21:01:31 jhb Exp $"); /* netorder = htonl(hostorder) */ @@ -46,11 +46,5 @@ .set CNAME(htonl),CNAME(__htonl) ENTRY(__htonl) movl 4(%esp),%eax -#ifdef I386_CPU - xchgb %al,%ah - roll $16,%eax - xchgb %al,%ah -#else bswap %eax -#endif ret ==== //depot/projects/trustedbsd/mac/lib/libc/i386/net/ntohl.S#5 (text+ko) ==== @@ -38,7 +38,7 @@ .asciz "@(#)ntohl.s 5.2 (Berkeley) 12/17/90" #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/i386/net/ntohl.S,v 1.10 2004/10/18 17:19:36 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/i386/net/ntohl.S,v 1.11 2004/11/16 21:01:31 jhb Exp $"); /* hostorder = ntohl(netorder) */ @@ -46,11 +46,5 @@ .set CNAME(ntohl),CNAME(__ntohl) ENTRY(__ntohl) movl 4(%esp),%eax -#ifdef I386_CPU - xchgb %al,%ah - roll $16,%eax - xchgb %al,%ah -#else bswap %eax -#endif ret ==== //depot/projects/trustedbsd/mac/lib/libc/net/rcmd.c#6 (text+ko) ==== @@ -35,7 +35,7 @@ static char sccsid[] = "@(#)rcmd.c 8.3 (Berkeley) 3/26/94"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/net/rcmd.c,v 1.38 2003/02/18 13:39:52 nectar Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/net/rcmd.c,v 1.39 2004/11/13 20:40:28 bz Exp $"); #include "namespace.h" #include @@ -55,8 +55,8 @@ #include #include #include +#include #ifdef YP -#include #include #include #endif ==== //depot/projects/trustedbsd/mac/lib/libc/rpc/netnamer.c#6 (text+ko) ==== @@ -32,7 +32,7 @@ static char sccsid[] = "@(#)netnamer.c 1.13 91/03/11 Copyr 1986 Sun Micro"; #endif #include -__FBSDID("$FreeBSD: src/lib/libc/rpc/netnamer.c,v 1.10 2004/10/16 06:11:35 obrien Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/rpc/netnamer.c,v 1.11 2004/11/13 20:40:28 bz Exp $"); /* * netname utility routines convert from unix names to network names and @@ -58,7 +58,9 @@ #include "un-namespace.h" static char *OPSYS = "unix"; +#ifdef YP static char *NETID = "netid.byname"; +#endif static char *NETIDFILE = "/etc/netid"; static int getnetid( char *, char * ); ==== //depot/projects/trustedbsd/mac/lib/libc/sys/read.2#8 (text+ko) ==== @@ -30,7 +30,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)read.2 8.4 (Berkeley) 2/26/94 -.\" $FreeBSD: src/lib/libc/sys/read.2,v 1.27 2004/10/25 13:35:03 yar Exp $ +.\" $FreeBSD: src/lib/libc/sys/read.2,v 1.28 2004/11/15 13:55:33 yar Exp $ .\" .Dd October 16, 2004 .Dt READ 2 @@ -207,7 +207,7 @@ .It Bq Er EFAULT Part of the .Fa iov -points outside the process's allocated address space. +array points outside the process's allocated address space. .El .Pp The ==== //depot/projects/trustedbsd/mac/lib/libc/sys/stat.2#9 (text+ko) ==== @@ -30,9 +30,9 @@ .\" SUCH DAMAGE. .\" .\" @(#)stat.2 8.4 (Berkeley) 5/1/95 -.\" $FreeBSD: src/lib/libc/sys/stat.2,v 1.36 2003/12/10 15:08:41 dds Exp $ +.\" $FreeBSD: src/lib/libc/sys/stat.2,v 1.40 2004/11/15 14:16:31 yar Exp $ .\" -.Dd February 15, 2002 +.Dd November 15, 2004 .Dt STAT 2 .Os .Sh NAME @@ -87,8 +87,26 @@ .In sys/stat.h and into which information is placed concerning the file. .Pp +The fields of +.Vt "struct stat" +related to the file system are as follows: +.Bl -tag -width ".Va st_nlink" +.It Va st_dev +The numeric ID of the device containing the file. +.It Va st_ino +The file's inode number. +.It Va st_nlink +The number of hard links to the file. +.El +.Pp +The +.Va st_dev +and +.Va st_ino +fields together identify the file uniquely within the system. +.Pp The time-related fields of -.Fa struct stat +.Vt "struct stat" are as follows: .Bl -tag -width ".Va st_birthtime" .It Va st_atime @@ -150,15 +168,29 @@ The size-related fields of the .Vt "struct stat" are as follows: -.Bl -tag -width XXXst_blksize -.It st_blksize +.Bl -tag -width ".Va st_blksize" +.It Va st_size +The file size in bytes. +.It Va st_blksize The optimal I/O block size for the file. -.It st_blocks +.It Va st_blocks The actual number of blocks allocated for the file in 512-byte units. As short symbolic links are stored in the inode, this number may be zero. .El .Pp +The access-related fields of +.Vt "struct stat" +are as follows: +.Bl -tag -width ".Va st_mode" +.It Va st_uid +The user ID of the file's owner. +.It Va st_gid +The group ID of the file. +.It Va st_mode +Status of the file (see below). +.El +.Pp The status information word .Fa st_mode has the following bits: @@ -185,18 +217,44 @@ .Xr access 2 and .Xr chmod 2 . +The following macros are available to test whether a +.Va st_mode +value passed in the +.Ar m +argument corresponds to a file of the specified type: +.Bl -tag -width ".Fn S_ISFIFO m" +.It Fn S_ISBLK m +Test for a block special file. +.It Fn S_ISCHR m +Test for a character special file. +.It Fn S_ISDIR m +Test for a directory. +.It Fn S_ISFIFO m +Test for a pipe or FIFO special file. +.It Fn S_ISLNK m +Test for a symbolic link. +.It Fn S_ISREG m +Test for a regular file. +.It Fn S_ISSOCK m +Test for a socket. +.It Fn S_ISWHT m +Test for a whiteout. +.El +.Pp +The macros evaluate to a non-zero value if the test is true +or to the value 0 if the test is false. .Sh RETURN VALUES .Rv -std .Sh COMPATIBILITY Previous versions of the system used different types for the -.Li st_dev , -.Li st_uid , -.Li st_gid , -.Li st_rdev , -.Li st_size , -.Li st_blksize +.Va st_dev , +.Va st_uid , +.Va st_gid , +.Va st_rdev , +.Va st_size , +.Va st_blksize and -.Li st_blocks +.Va st_blocks fields. .Sh ERRORS The ==== //depot/projects/trustedbsd/mac/lib/libkvm/kvm_getprocs.3#7 (text+ko) ==== @@ -34,7 +34,7 @@ .\" SUCH DAMAGE. .\" .\" @(#)kvm_getprocs.3 8.1 (Berkeley) 6/4/93 -.\" $FreeBSD: src/lib/libkvm/kvm_getprocs.3,v 1.18 2004/07/02 23:52:16 ru Exp $ +.\" $FreeBSD: src/lib/libkvm/kvm_getprocs.3,v 1.19 2004/11/13 14:26:13 csjp Exp $ .\" .Dd September 27, 2003 .Dt KVM_GETPROCS 3 @@ -167,6 +167,13 @@ on failure. .Sh BUGS These routines do not belong in the kvm interface. +.Pp +In order for +.Xr kvm_getenvv 3 +to function correctly, +.Xr procfs 5 +must be mounted on +.Pa /proc . .Sh SEE ALSO .Xr kvm 3 , .Xr kvm_close 3 , >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Wed Nov 17 17:26:38 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BFAE716A4D1; Wed, 17 Nov 2004 17:26:37 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9A4C116A4CE for ; Wed, 17 Nov 2004 17:26:37 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8C47343D4C for ; Wed, 17 Nov 2004 17:26:37 +0000 (GMT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHHQbr5082705 for ; Wed, 17 Nov 2004 17:26:37 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHHQbCH082702 for perforce@freebsd.org; Wed, 17 Nov 2004 17:26:37 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Wed, 17 Nov 2004 17:26:37 GMT Message-Id: <200411171726.iAHHQbCH082702@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Subject: PERFORCE change 65347 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 17:26:38 -0000 http://perforce.freebsd.org/chv.cgi?CH=65347 Change 65347 by rwatson@rwatson_tislabs on 2004/11/17 17:25:50 Trim unneeded comment. Affected files ... .. //depot/projects/trustedbsd/mac/sys/kern/sysv_msg.c#30 edit Differences ... ==== //depot/projects/trustedbsd/mac/sys/kern/sysv_msg.c#30 (text+ko) ==== @@ -222,10 +222,6 @@ int i; #endif - /* - * Make sure that the msgunload maintains the consistency of the - * msqids and msghdrs data structures. - */ for (msqid = 0; msqid < msginfo.msgmni; msqid++) { /* * Look for an unallocated and unlocked msqid_ds. From owner-p4-projects@FreeBSD.ORG Wed Nov 17 17:31:44 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 75E8F16A4D1; Wed, 17 Nov 2004 17:31:44 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 516D416A4CE for ; Wed, 17 Nov 2004 17:31:44 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2E79D43D46 for ; Wed, 17 Nov 2004 17:31:44 +0000 (GMT) (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHHVilX082891 for ; Wed, 17 Nov 2004 17:31:44 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHHVh4B082888 for perforce@freebsd.org; Wed, 17 Nov 2004 17:31:43 GMT (envelope-from bb+lists.freebsd.perforce@cyrus.watson.org) Date: Wed, 17 Nov 2004 17:31:43 GMT Message-Id: <200411171731.iAHHVh4B082888@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bb+lists.freebsd.perforce@cyrus.watson.org using -f From: Robert Watson To: Perforce Change Reviews Subject: PERFORCE change 65348 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 17:31:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=65348 Change 65348 by rwatson@rwatson_tislabs on 2004/11/17 17:31:06 Trim local white space change. Affected files ... .. //depot/projects/trustedbsd/mac/sys/kern/sysv_msg.c#31 edit Differences ... ==== //depot/projects/trustedbsd/mac/sys/kern/sysv_msg.c#31 (text+ko) ==== @@ -237,7 +237,6 @@ if (msqid != msginfo.msgmni) return (EBUSY); - #ifdef MAC for (i = 0; i < msginfo.msgtql; i++) mac_destroy_sysv_msgmsg(&msghdrs[i]); From owner-p4-projects@FreeBSD.ORG Wed Nov 17 19:17:54 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A56E316A4D1; Wed, 17 Nov 2004 19:17:53 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7FD3516A4CE for ; Wed, 17 Nov 2004 19:17:53 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5C51143D39 for ; Wed, 17 Nov 2004 19:17:53 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHJHriT087803 for ; Wed, 17 Nov 2004 19:17:53 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHJHrR0087800 for perforce@freebsd.org; Wed, 17 Nov 2004 19:17:53 GMT (envelope-from sam@freebsd.org) Date: Wed, 17 Nov 2004 19:17:53 GMT Message-Id: <200411171917.iAHJHrR0087800@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65352 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 19:17:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=65352 Change 65352 by sam@sam_ebb on 2004/11/17 19:16:54 opt_ah.h -> i386-elf.opt_ah.h Affected files ... .. //depot/projects/wifi/sys/modules/ath_hal/Makefile#2 edit Differences ... ==== //depot/projects/wifi/sys/modules/ath_hal/Makefile#2 (text+ko) ==== @@ -63,6 +63,8 @@ hal.o: ${HAL}/freebsd/i386-elf.hal.o.uu uudecode -p < ${HAL}/freebsd/i386-elf.hal.o.uu > ${.TARGET} +opt_ah.h: ${HAL}/freebsd/i386-elf.opt_ah.h + cp ${HAL}/freebsd/i386-elf.opt_ah.h ${.TARGET} .endif .include From owner-p4-projects@FreeBSD.ORG Wed Nov 17 19:25:02 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B20AF16A4D1; Wed, 17 Nov 2004 19:25:02 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 8E8D716A4CE for ; Wed, 17 Nov 2004 19:25:02 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 72D0B43D41 for ; Wed, 17 Nov 2004 19:25:02 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHJP23B087958 for ; Wed, 17 Nov 2004 19:25:02 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHJP2qG087955 for perforce@freebsd.org; Wed, 17 Nov 2004 19:25:02 GMT (envelope-from sam@freebsd.org) Date: Wed, 17 Nov 2004 19:25:02 GMT Message-Id: <200411171925.iAHJP2qG087955@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65353 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 19:25:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=65353 Change 65353 by sam@sam_ebb on 2004/11/17 19:24:22 o update for new tx path handling o add power save support to the tx path while we're here (incomplete and/or untested) Affected files ... .. //depot/projects/wifi/sys/dev/awi/awi.c#4 edit .. //depot/projects/wifi/sys/dev/wi/if_wi.c#6 edit Differences ... ==== //depot/projects/wifi/sys/dev/awi/awi.c#4 (text+ko) ==== @@ -746,6 +746,7 @@ struct ieee80211com *ic = &sc->sc_ic; struct ieee80211_node *ni; struct ieee80211_frame *wh; + struct ether_header *eh; struct mbuf *m, *m0; int len, dowep; u_int32_t txd, frame, ntxd; @@ -758,6 +759,7 @@ txd = sc->sc_txnext; IF_POLL(&ic->ic_mgtq, m0); dowep = 0; + ni = NULL; if (m0 != NULL) { len = m0->m_pkthdr.len; if (awi_next_txd(sc, len, &frame, &ntxd)) { @@ -765,6 +767,13 @@ break; } IF_DEQUEUE(&ic->ic_mgtq, m0); + ni = (struct ieee80211_node *) m0->m_pkthdr.rcvif; + if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) && + (m0->m_flags & M_PWR_SAV) == 0) { + ieee80211_pwrsave(ic, ni, m0); + continue; + } + m0->m_pkthdr.rcvif = NULL; } else { if (ic->ic_state != IEEE80211_S_RUN) break; @@ -780,6 +789,7 @@ len += sizeof(struct llc) - sizeof(struct ether_header); if (ic->ic_flags & IEEE80211_F_PRIVACY) { + /* XXX other crypto */ dowep = 1; len += IEEE80211_WEP_IVLEN + IEEE80211_WEP_KIDLEN + IEEE80211_WEP_CRCLEN; @@ -789,21 +799,31 @@ break; } IFQ_DEQUEUE(&ifp->if_snd, m0); - ifp->if_opackets++; #if NBPFILTER > 0 if (ifp->if_bpf) bpf_mtap(ifp->if_bpf, m0); #endif if ((ifp->if_flags & IFF_LINK0) || sc->sc_adhoc_ap) m0 = awi_ether_encap(sc, m0); - else - m0 = ieee80211_encap(ic, m0, &ni); - if (m0 == NULL) { - ifp->if_oerrors++; - continue; + else { + if (m0->m_len < sizeof(struct ether_header) && + ((m0 = m_pullup(m0, sizeof(struct ether_header)))) == NULL) { + ifp->if_oerrors++; + continue; + } + eh = mtod(m0, struct ether_header *); + ni = ieee80211_find_txnode(ic, eh->ether_dhost); + if (ni == NULL) + goto bad; + if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) && + (m0->m_flags & M_PWR_SAV) == 0) { + ieee80211_pwrsave(ic, ni, m0); + continue; + } + m0 = ieee80211_encap(ic, m0, ni); } - if (ni != NULL) - ieee80211_free_node(ic, ni); + if (m0 == NULL) + goto bad; wh = mtod(m0, struct ieee80211_frame *); if (!IEEE80211_IS_MULTICAST(wh->i_addr1) && (ic->ic_opmode == IEEE80211_M_HOSTAP || @@ -812,10 +832,15 @@ (ifp->if_flags & IFF_LINK0) == 0 && (wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) == IEEE80211_FC0_TYPE_DATA && ni == NULL) { - m_freem(m0); + bad: + if (m0 != NULL) + m_freem(m0); ifp->if_oerrors++; + if (ni != NULL) + ieee80211_free_node(ni); continue; } + ifp->if_opackets++; } #if NBPFILTER > 0 if (ic->ic_rawbpf) @@ -827,16 +852,18 @@ k = ieee80211_crypto_encap(ic, ni, m0); if (k == NULL) { if (ni != NULL) - ieee80211_free_node(ic, ni); + ieee80211_free_node(ni); continue; } } #ifdef DIAGNOSTIC if (m0->m_pkthdr.len != len) { - printf("%s: length %d should be %d\n", - ic->ic_if.if_xname, m0->m_pkthdr.len, len); + if_printf(ifp, "length %d should be %d\n", + m0->m_pkthdr.len, len); m_freem(m0); ifp->if_oerrors++; + if (ni != NULL) + ieee80211_free_node(ni); continue; } #endif @@ -1228,7 +1255,7 @@ ni = ieee80211_find_rxnode(ic, mtod(m, struct ieee80211_frame_min *)); ieee80211_input(ic, m, ni, rssi, rstamp); - ieee80211_free_node(ic, ni); + ieee80211_free_node(ni); } else sc->sc_rxpend = m; rx_next: ==== //depot/projects/wifi/sys/dev/wi/if_wi.c#6 (text+ko) ==== @@ -866,6 +866,7 @@ struct ieee80211com *ic = &sc->sc_ic; struct ieee80211_node *ni; struct ieee80211_frame *wh; + struct ether_header *eh; struct mbuf *m0; struct wi_frame frmhdr; int cur, fid, off, error; @@ -919,6 +920,23 @@ ifp->if_flags |= IFF_OACTIVE; break; } + if (m0->m_len < sizeof(struct ether_header) && + (m0 = m_pullup(m0, sizeof(struct ether_header))) == NULL) { + ifp->if_oerrors++; + continue; + } + eh = mtod(m0, struct ether_header *); + ni = ieee80211_find_txnode(ic, eh->ether_dhost); + if (ni == NULL) { + m_freem(m0); + continue; + } + if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) && + (m0->m_flags & M_PWR_SAV) == 0) { + ieee80211_pwrsave(ic, ni, m0); + ieee80211_free_node(ni); + continue; + } ifp->if_opackets++; m_copydata(m0, 0, ETHER_HDR_LEN, (caddr_t)&frmhdr.wi_ehdr); @@ -926,9 +944,10 @@ BPF_MTAP(ifp, m0); #endif - m0 = ieee80211_encap(ic, m0, &ni); + m0 = ieee80211_encap(ic, m0, ni); if (m0 == NULL) { ifp->if_oerrors++; + ieee80211_free_node(ni); continue; } wh = mtod(m0, struct ieee80211_frame *); From owner-p4-projects@FreeBSD.ORG Wed Nov 17 19:26:04 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 841A216A4D2; Wed, 17 Nov 2004 19:26:04 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5F98B16A4CE for ; Wed, 17 Nov 2004 19:26:04 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 300EE43D45 for ; Wed, 17 Nov 2004 19:26:04 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHJQ4aF088029 for ; Wed, 17 Nov 2004 19:26:04 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHJQ3u1088026 for perforce@freebsd.org; Wed, 17 Nov 2004 19:26:03 GMT (envelope-from sam@freebsd.org) Date: Wed, 17 Nov 2004 19:26:03 GMT Message-Id: <200411171926.iAHJQ3u1088026@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65354 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 19:26:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=65354 Change 65354 by sam@sam_ebb on 2004/11/17 19:25:23 o fixup for node table rewrite o use ieee80211_iterate_nodes instead of hand-rolled code to scan the station table Affected files ... .. //depot/projects/wifi/sys/dev/ath/ath_rate/amrr/amrr.c#2 edit .. //depot/projects/wifi/sys/dev/ath/ath_rate/onoe/onoe.c#2 edit Differences ... ==== //depot/projects/wifi/sys/dev/ath/ath_rate/amrr/amrr.c#2 (text+ko) ==== @@ -330,6 +330,12 @@ #undef RATE } +static void +ath_rate_cb(void *arg, struct ieee80211_node *ni) +{ + ath_rate_update(ni->ni_ic->ic_ifp->if_softc, ni, (int) arg); +} + /* * Reset the rate control state for each 802.11 state transition. */ @@ -362,8 +368,8 @@ * For any other operating mode we want to reset the * tx rate state of each node. */ - TAILQ_FOREACH(ni, &ic->ic_node, ni_list) - ath_rate_update(sc, ni, 0); /* use lowest rate */ + if (ic->ic_sta != NULL) + ieee80211_iterate_nodes(ic->ic_sta, ath_rate_cb, 0); ath_rate_update(sc, ic->ic_bss, 0); } if (ic->ic_fixed_rate == -1 && state == IEEE80211_S_RUN) { @@ -468,7 +474,7 @@ if (ic->ic_opmode == IEEE80211_M_STA) ath_rate_ctl(sc, ic->ic_bss); /* NB: no reference */ - else + else if (ic->ic_sta != NULL) ieee80211_iterate_nodes(ic, ath_rate_ctl, sc); } interval = ath_rateinterval; ==== //depot/projects/wifi/sys/dev/ath/ath_rate/onoe/onoe.c#2 (text+ko) ==== @@ -319,6 +319,12 @@ #undef RATE } +static void +ath_rate_cb(void *arg, struct ieee80211_node *ni) +{ + ath_rate_update(ni->ni_ic->ic_ifp->if_softc, ni, (int) arg); +} + /* * Reset the rate control state for each 802.11 state transition. */ @@ -351,8 +357,8 @@ * For any other operating mode we want to reset the * tx rate state of each node. */ - TAILQ_FOREACH(ni, &ic->ic_node, ni_list) - ath_rate_update(sc, ni, 0); /* use lowest rate */ + if (ic->ic_sta != NULL) + ieee80211_iterate_nodes(ic->ic_sta, ath_rate_cb, 0); ath_rate_update(sc, ic->ic_bss, 0); } if (ic->ic_fixed_rate == -1 && state == IEEE80211_S_RUN) { @@ -454,8 +460,8 @@ if (ic->ic_opmode == IEEE80211_M_STA) ath_rate_ctl(sc, ic->ic_bss); /* NB: no reference */ - else - ieee80211_iterate_nodes(ic, ath_rate_ctl, sc); + else if (ic->ic_sta != NULL) + ieee80211_iterate_nodes(ic->ic_sta, ath_rate_ctl, sc); } interval = ath_rateinterval; if (ic->ic_opmode == IEEE80211_M_STA) From owner-p4-projects@FreeBSD.ORG Wed Nov 17 20:22:17 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 296FC16A4D1; Wed, 17 Nov 2004 20:22:17 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id F3BC916A4CE for ; Wed, 17 Nov 2004 20:22:16 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id D1FC843D1F for ; Wed, 17 Nov 2004 20:22:16 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAHKMGHT089798 for ; Wed, 17 Nov 2004 20:22:16 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAHKMG3n089795 for perforce@freebsd.org; Wed, 17 Nov 2004 20:22:16 GMT (envelope-from jhb@freebsd.org) Date: Wed, 17 Nov 2004 20:22:16 GMT Message-Id: <200411172022.iAHKMG3n089795@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65362 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 17 Nov 2004 20:22:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=65362 Change 65362 by jhb@jhb_slimer on 2004/11/17 20:21:50 Compiling considered helpful. Affected files ... .. //depot/projects/smpng/sys/kern/kern_intr.c#63 edit Differences ... ==== //depot/projects/smpng/sys/kern/kern_intr.c#63 (text+ko) ==== @@ -569,7 +569,7 @@ warned = 1; } tsleep(&count, td->td_priority, "istorm", 1); - else + } else count++; if (ithd->it_enable != NULL) From owner-p4-projects@FreeBSD.ORG Thu Nov 18 14:09:01 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D9F5B16A4D1; Thu, 18 Nov 2004 14:09:00 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9C98016A4CE for ; Thu, 18 Nov 2004 14:09:00 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7BFB543D31 for ; Thu, 18 Nov 2004 14:09:00 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAIE90Jp059247 for ; Thu, 18 Nov 2004 14:09:00 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAIE90Q0059242 for perforce@freebsd.org; Thu, 18 Nov 2004 14:09:00 GMT (envelope-from davidxu@freebsd.org) Date: Thu, 18 Nov 2004 14:09:00 GMT Message-Id: <200411181409.iAIE90Q0059242@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65403 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Nov 2004 14:09:01 -0000 http://perforce.freebsd.org/chv.cgi?CH=65403 Change 65403 by davidxu@davidxu_alona on 2004/11/18 14:07:59 1.Change hash function to use golden ratio multiplication found Knuth book. The prime is specically selected which can be optimized by gcc. 2.Only calculate hash once in each function. Affected files ... .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#8 edit Differences ... ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#8 (text+ko) ==== @@ -55,27 +55,26 @@ struct mtx uc_lock; /* lock for this chain. */ }; -#define UMTX_QUEUES 128 -#define UMTX_HASH(pid, umtx) \ - ((((uintptr_t)pid << 16) + (((uintptr_t)umtx >> 4) & 65535)) % UMTX_QUEUES) +#define GOLDEN_RATIO_PRIME 2654404609U +#define UMTX_QUEUES 128 +#define UMTX_SHIFTS (__WORD_BIT - 7) static struct umtxq_chain umtxq_chains[UMTX_QUEUES]; static MALLOC_DEFINE(M_UMTX, "umtx", "UMTX queue memory"); -#define UMTX_LOCK(td, umtx) \ - mtx_lock(&umtxq_chains[UMTX_HASH((td)->td_proc->p_pid, \ - (umtx))].uc_lock) -#define UMTX_UNLOCK(td, umtx) \ - mtx_unlock(&umtxq_chains[UMTX_HASH((td)->td_proc->p_pid, \ - (umtx))].uc_lock); -#define UMTX_MUTEX(td, umtx) \ - (&umtxq_chains[UMTX_HASH(td->td_proc->p_pid, umtx)].uc_lock) +#define UMTX_LOCK(chain) \ + mtx_lock(&umtxq_chains[chain].uc_lock) +#define UMTX_UNLOCK(chain) \ + mtx_unlock(&umtxq_chains[chain].uc_lock) +#define UMTX_MUTEX(chain) \ + (&umtxq_chains[chain].uc_lock) #define UMTX_CONTESTED LONG_MIN static void umtx_queues_init(void *); -static struct umtx_q *umtx_lookup(struct thread *, struct umtx *umtx); -static struct umtx_q *umtx_insert(struct thread *, struct umtx *umtx); +static int umtx_hash(unsigned, void *); +static struct umtx_q *umtx_lookup(struct thread *, struct umtx *, int); +static struct umtx_q *umtx_insert(struct thread *, struct umtx *, int); SYSINIT(umtx, SI_SUB_LOCK, SI_ORDER_MIDDLE, umtx_queues_init, NULL); @@ -91,18 +90,26 @@ } } +static inline int +umtx_hash(unsigned pid, void *umtx) +{ + unsigned n = (unsigned)umtx + pid; + + return (n * GOLDEN_RATIO_PRIME) >> UMTX_SHIFTS; +} + static struct umtx_q * -umtx_lookup(struct thread *td, struct umtx *umtx) +umtx_lookup(struct thread *td, struct umtx *umtx, int chain) { struct umtx_head *head; struct umtx_q *uq; pid_t pid; - mtx_assert(UMTXQ_MUTEX(td, umtx), MA_OWNED); + mtx_assert(UMTXQ_MUTEX(chain), MA_OWNED); pid = td->td_proc->p_pid; - head = &umtxq_chains[UMTX_HASH(td->td_proc->p_pid, umtx)].uc_queues; + head = &umtxq_chains[chain].uc_queues; LIST_FOREACH(uq, head, uq_next) { if (uq->uq_pid == pid && uq->uq_umtx == umtx) @@ -116,7 +123,7 @@ * Insert a thread onto the umtx queue. */ static struct umtx_q * -umtx_insert(struct thread *td, struct umtx *umtx) +umtx_insert(struct thread *td, struct umtx *umtx, int chain) { struct umtx_head *head; struct umtx_q *uq; @@ -124,19 +131,19 @@ pid = td->td_proc->p_pid; - if ((uq = umtx_lookup(td, umtx)) == NULL) { + if ((uq = umtx_lookup(td, umtx, chain)) == NULL) { struct umtx_q *ins; - UMTX_UNLOCK(td, umtx); + UMTX_UNLOCK(chain); ins = malloc(sizeof(*uq), M_UMTX, M_ZERO | M_WAITOK); - UMTX_LOCK(td, umtx); + UMTX_LOCK(chain); /* * Some one else could have succeeded while we were blocked * waiting on memory. */ - if ((uq = umtx_lookup(td, umtx)) == NULL) { - head = &umtxq_chains[UMTX_HASH(pid, umtx)].uc_queues; + if ((uq = umtx_lookup(td, umtx, chain)) == NULL) { + head = &umtxq_chains[chain].uc_queues; uq = ins; uq->uq_pid = pid; uq->uq_umtx = umtx; @@ -155,14 +162,17 @@ } static void -umtx_remove(struct umtx_q *uq, struct thread *td) +umtx_remove(struct umtx_q *uq, struct thread *td, struct umtx *umtx, + int chain) { TAILQ_REMOVE(&uq->uq_tdq, td, td_umtx); if (TAILQ_EMPTY(&uq->uq_tdq)) { LIST_REMOVE(uq, uq_next); + UMTX_UNLOCK(chain); free(uq, M_UMTX); - } + } else + UMTX_UNLOCK(chain); } int @@ -173,6 +183,7 @@ struct umtx *umtx; intptr_t owner; intptr_t old; + int chain; int error = 0; uq = NULL; @@ -182,6 +193,7 @@ * can fault on any access. */ umtx = uap->umtx; + chain = umtx_hash(td->td_proc->p_pid, umtx); for (;;) { /* @@ -221,9 +233,9 @@ if (error) return (error); - UMTX_LOCK(td, umtx); - uq = umtx_insert(td, umtx); - UMTX_UNLOCK(td, umtx); + UMTX_LOCK(chain); + uq = umtx_insert(td, umtx, chain); + UMTX_UNLOCK(chain); /* * Set the contested bit so that a release in user space @@ -236,9 +248,8 @@ /* The address was invalid. */ if (old == -1) { - UMTX_LOCK(td, umtx); - umtx_remove(uq, td); - UMTX_UNLOCK(td, umtx); + UMTX_LOCK(chain); + umtx_remove(uq, td, umtx, chain); return (EFAULT); } @@ -247,14 +258,13 @@ * and we need to retry or we lost a race to the thread * unlocking the umtx. */ - UMTX_LOCK(td, umtx); + UMTX_LOCK(chain); if (old == owner && (td->td_flags & TDF_UMTXWAKEUP) == 0) - error = msleep(td, UMTX_MUTEX(td, umtx), + error = msleep(td, UMTX_MUTEX(chain), td->td_priority | PCATCH, "umtx", 0); else error = 0; - umtx_remove(uq, td); - UMTX_UNLOCK(td, umtx); + umtx_remove(uq, td, umtx, chain); if (td->td_flags & TDF_UMTXWAKEUP) { /* @@ -285,6 +295,7 @@ struct thread *blocked, *blocked2; struct umtx *umtx; struct umtx_q *uq; + int chain; intptr_t owner; intptr_t old; @@ -316,6 +327,9 @@ return (EFAULT); if (old != owner) return (EINVAL); + + chain = umtx_hash(td->td_proc->p_pid, umtx); + /* * At the point, a new thread can lock the umtx before we * reach here, so contested bit will not be set, if there @@ -323,10 +337,10 @@ * contensted bit for them. */ blocked = NULL; - UMTX_LOCK(td, umtx); - uq = umtx_lookup(td, umtx); + UMTX_LOCK(chain); + uq = umtx_lookup(td, umtx, chain); if (uq == NULL) { - UMTX_UNLOCK(td, umtx); + UMTX_UNLOCK(chain); return (0); } blocked2 = NULL; @@ -336,7 +350,7 @@ mtx_unlock_spin(&sched_lock); blocked2 = TAILQ_NEXT(blocked, td_umtx); } - UMTX_UNLOCK(td, umtx); + UMTX_UNLOCK(chain); /* * If there is second thread waiting on umtx, set contested bit, From owner-p4-projects@FreeBSD.ORG Thu Nov 18 14:22:17 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1E09316A4D1; Thu, 18 Nov 2004 14:22:17 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E9A4C16A4CE for ; Thu, 18 Nov 2004 14:22:16 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C638543D1F for ; Thu, 18 Nov 2004 14:22:16 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAIEMGJs059771 for ; Thu, 18 Nov 2004 14:22:16 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAIEMG33059768 for perforce@freebsd.org; Thu, 18 Nov 2004 14:22:16 GMT (envelope-from davidxu@freebsd.org) Date: Thu, 18 Nov 2004 14:22:16 GMT Message-Id: <200411181422.iAIEMG33059768@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65404 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 18 Nov 2004 14:22:17 -0000 http://perforce.freebsd.org/chv.cgi?CH=65404 Change 65404 by davidxu@davidxu_alona on 2004/11/18 14:21:53 Fix compiling for 64-bits machine. Affected files ... .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#9 edit Differences ... ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_umtx.c#9 (text+ko) ==== @@ -93,7 +93,7 @@ static inline int umtx_hash(unsigned pid, void *umtx) { - unsigned n = (unsigned)umtx + pid; + unsigned n = (uintptr_t)umtx + pid; return (n * GOLDEN_RATIO_PRIME) >> UMTX_SHIFTS; } From owner-p4-projects@FreeBSD.ORG Fri Nov 19 02:59:43 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C5CF616A4D0; Fri, 19 Nov 2004 02:59:42 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9837616A4CE for ; Fri, 19 Nov 2004 02:59:42 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7084443D39 for ; Fri, 19 Nov 2004 02:59:42 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAJ2xgEn009076 for ; Fri, 19 Nov 2004 02:59:42 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAJ2xfaw009073 for perforce@freebsd.org; Fri, 19 Nov 2004 02:59:41 GMT (envelope-from marcel@freebsd.org) Date: Fri, 19 Nov 2004 02:59:41 GMT Message-Id: <200411190259.iAJ2xfaw009073@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65435 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Nov 2004 02:59:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=65435 Change 65435 by marcel@marcel_nfs on 2004/11/19 02:58:43 Copy bsc(4) to hdlc(4) and s/bsc/hdlc/g for the contents. Now that I have the HDLC standard, I might as well go for that. I need a synchronous driver for validation and the bisync driver is much easier to implement. HDLC is more useful (relatively speaking). Affected files ... .. //depot/projects/uart/conf/files#36 edit .. //depot/projects/uart/dev/hdlc/hdlc_bus.h#1 add .. //depot/projects/uart/dev/hdlc/hdlc_bus_scc.c#1 add .. //depot/projects/uart/dev/hdlc/hdlc_core.c#1 add .. //depot/projects/uart/dev/hdlc/hdlc_dev_sab82532.c#1 add .. //depot/projects/uart/dev/hdlc/hdlc_dev_z8530.c#1 add Differences ... ==== //depot/projects/uart/conf/files#36 (text+ko) ==== @@ -479,6 +479,10 @@ dev/hatm/if_hatm_ioctl.c optional hatm pci dev/hatm/if_hatm_rx.c optional hatm pci dev/hatm/if_hatm_tx.c optional hatm pci +dev/hdlc/hdlc_bus_scc.c optional hdlc scc +dev/hdlc/hdlc_core.c optional hdlc +dev/hdlc/hdlc_dev_sab82532.c optional hdlc +dev/hdlc/hdlc_dev_z8530.c optional hdlc dev/hfa/fore_buffer.c optional hfa dev/hfa/fore_command.c optional hfa dev/hfa/fore_globals.c optional hfa From owner-p4-projects@FreeBSD.ORG Fri Nov 19 04:43:50 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7E70616A4D0; Fri, 19 Nov 2004 04:43:50 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 41F0316A4CF for ; Fri, 19 Nov 2004 04:43:50 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id B753643D53 for ; Fri, 19 Nov 2004 04:43:49 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAJ4hnaR012891 for ; Fri, 19 Nov 2004 04:43:49 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAJ4hm7k012888 for perforce@freebsd.org; Fri, 19 Nov 2004 04:43:48 GMT (envelope-from marcel@freebsd.org) Date: Fri, 19 Nov 2004 04:43:48 GMT Message-Id: <200411190443.iAJ4hm7k012888@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65439 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Nov 2004 04:43:51 -0000 http://perforce.freebsd.org/chv.cgi?CH=65439 Change 65439 by marcel@marcel_nfs on 2004/11/19 04:43:07 IFC @65438 Affected files ... .. //depot/projects/uart/arm/arm/busdma_machdep.c#2 integrate .. //depot/projects/uart/arm/xscale/i80321/std.i80321#2 integrate .. //depot/projects/uart/arm/xscale/i80321/std.iq31244#2 integrate .. //depot/projects/uart/cam/cam_xpt.c#3 integrate .. //depot/projects/uart/coda/coda_vnops.c#5 integrate .. //depot/projects/uart/compat/freebsd32/freebsd32_proto.h#4 integrate .. //depot/projects/uart/compat/freebsd32/freebsd32_syscall.h#4 integrate .. //depot/projects/uart/compat/freebsd32/freebsd32_syscalls.c#4 integrate .. //depot/projects/uart/compat/freebsd32/freebsd32_sysent.c#4 integrate .. //depot/projects/uart/compat/freebsd32/syscalls.master#3 integrate .. //depot/projects/uart/conf/files#37 integrate .. //depot/projects/uart/conf/files.i386#12 integrate .. //depot/projects/uart/conf/files.sparc64#8 integrate .. //depot/projects/uart/conf/options.i386#6 integrate .. //depot/projects/uart/conf/options.pc98#5 integrate .. //depot/projects/uart/crypto/blowfish/arch/i386/bf_enc.S#2 integrate .. //depot/projects/uart/dev/acpi_support/acpi_asus.c#2 integrate .. //depot/projects/uart/dev/acpi_support/acpi_panasonic.c#2 integrate .. //depot/projects/uart/dev/acpi_support/acpi_sony.c#2 integrate .. //depot/projects/uart/dev/acpi_support/acpi_toshiba.c#2 integrate .. //depot/projects/uart/dev/acpica/acpi_cpu.c#5 integrate .. //depot/projects/uart/dev/acpica/acpi_snc.c#3 delete .. //depot/projects/uart/dev/aic7xxx/aic79xx.c#4 integrate .. //depot/projects/uart/dev/aic7xxx/aic79xx.h#4 integrate .. //depot/projects/uart/dev/aic7xxx/aic7xxx.c#4 integrate .. //depot/projects/uart/dev/aic7xxx/aic_osm_lib.h#2 integrate .. //depot/projects/uart/dev/ata/ata-dma.c#8 integrate .. //depot/projects/uart/dev/fxp/if_fxp.c#13 integrate .. //depot/projects/uart/dev/mc146818/mc146818.c#1 branch .. //depot/projects/uart/dev/mc146818/mc146818reg.h#1 branch .. //depot/projects/uart/dev/mc146818/mc146818var.h#1 branch .. //depot/projects/uart/dev/mk48txx/mk48txx.c#5 integrate .. //depot/projects/uart/dev/mk48txx/mk48txxreg.h#3 integrate .. //depot/projects/uart/dev/mk48txx/mk48txxvar.h#1 branch .. //depot/projects/uart/dev/uart/uart_bus_isa.c#7 integrate .. //depot/projects/uart/dev/uart/uart_cpu.h#14 integrate .. //depot/projects/uart/dev/uart/uart_cpu_alpha.c#10 integrate .. //depot/projects/uart/dev/uart/uart_cpu_amd64.c#8 integrate .. //depot/projects/uart/dev/uart/uart_cpu_i386.c#9 integrate .. //depot/projects/uart/dev/uart/uart_cpu_ia64.c#10 integrate .. //depot/projects/uart/dev/uart/uart_cpu_pc98.c#9 integrate .. //depot/projects/uart/dev/uart/uart_cpu_sparc64.c#20 integrate .. //depot/projects/uart/dev/usb/ehci.c#8 integrate .. //depot/projects/uart/dev/usb/ohci.c#9 integrate .. //depot/projects/uart/dev/usb/uhci.c#10 integrate .. //depot/projects/uart/dev/vkbd/vkbd.c#1 branch .. //depot/projects/uart/dev/vkbd/vkbd_var.h#1 branch .. //depot/projects/uart/fs/deadfs/dead_vnops.c#3 integrate .. //depot/projects/uart/fs/devfs/devfs_vnops.c#6 integrate .. //depot/projects/uart/fs/fifofs/fifo_vnops.c#5 integrate .. //depot/projects/uart/fs/hpfs/hpfs_vnops.c#5 integrate .. //depot/projects/uart/fs/msdosfs/msdosfs_vnops.c#8 integrate .. //depot/projects/uart/fs/ntfs/ntfs_vnops.c#5 integrate .. //depot/projects/uart/fs/udf/udf_vnops.c#5 integrate .. //depot/projects/uart/geom/vinum/geom_vinum.h#2 integrate .. //depot/projects/uart/geom/vinum/geom_vinum_raid5.c#2 integrate .. //depot/projects/uart/geom/vinum/geom_vinum_share.c#2 integrate .. //depot/projects/uart/geom/vinum/geom_vinum_share.h#2 integrate .. //depot/projects/uart/geom/vinum/geom_vinum_subr.c#2 integrate .. //depot/projects/uart/gnu/ext2fs/ext2_bmap.c#5 integrate .. //depot/projects/uart/i386/acpica/acpi_asus.c#5 delete .. //depot/projects/uart/i386/acpica/acpi_panasonic.c#3 delete .. //depot/projects/uart/i386/acpica/acpi_toshiba.c#2 delete .. //depot/projects/uart/i386/conf/NOTES#7 integrate .. //depot/projects/uart/i386/i386/identcpu.c#8 integrate .. //depot/projects/uart/i386/i386/machdep.c#10 integrate .. //depot/projects/uart/i386/i386/mp_machdep.c#11 integrate .. //depot/projects/uart/i386/i386/pmap.c#24 integrate .. //depot/projects/uart/i386/i386/support.s#5 integrate .. //depot/projects/uart/i386/i386/trap.c#7 integrate .. //depot/projects/uart/i386/include/atomic.h#4 integrate .. //depot/projects/uart/i386/include/cpu.h#4 integrate .. //depot/projects/uart/i386/include/endian.h#5 integrate .. //depot/projects/uart/isofs/cd9660/cd9660_bmap.c#4 integrate .. //depot/projects/uart/kern/init_sysent.c#5 integrate .. //depot/projects/uart/kern/kern_descrip.c#11 integrate .. //depot/projects/uart/kern/kern_event.c#4 integrate .. //depot/projects/uart/kern/kern_intr.c#6 integrate .. //depot/projects/uart/kern/kern_ntptime.c#3 integrate .. //depot/projects/uart/kern/kern_sig.c#14 integrate .. //depot/projects/uart/kern/sys_generic.c#6 integrate .. //depot/projects/uart/kern/sys_pipe.c#13 integrate .. //depot/projects/uart/kern/sys_socket.c#4 integrate .. //depot/projects/uart/kern/syscalls.c#5 integrate .. //depot/projects/uart/kern/syscalls.master#5 integrate .. //depot/projects/uart/kern/tty.c#5 integrate .. //depot/projects/uart/kern/vfs_bio.c#13 integrate .. //depot/projects/uart/kern/vfs_cluster.c#8 integrate .. //depot/projects/uart/kern/vfs_default.c#7 integrate .. //depot/projects/uart/kern/vfs_mount.c#8 integrate .. //depot/projects/uart/kern/vfs_subr.c#11 integrate .. //depot/projects/uart/kern/vfs_syscalls.c#10 integrate .. //depot/projects/uart/kern/vfs_vnops.c#7 integrate .. //depot/projects/uart/kern/vnode_if.src#6 integrate .. //depot/projects/uart/modules/Makefile#14 integrate .. //depot/projects/uart/modules/acpi/Makefile#9 integrate .. //depot/projects/uart/modules/acpi/acpi_asus/Makefile#2 integrate .. //depot/projects/uart/modules/acpi/acpi_panasonic/Makefile#2 integrate .. //depot/projects/uart/modules/acpi/acpi_snc/Makefile#2 delete .. //depot/projects/uart/modules/acpi/acpi_sony/Makefile#1 branch .. //depot/projects/uart/modules/acpi/acpi_toshiba/Makefile#2 integrate .. //depot/projects/uart/modules/uart/Makefile#11 integrate .. //depot/projects/uart/modules/vkbd/Makefile#1 branch .. //depot/projects/uart/net/if.h#4 integrate .. //depot/projects/uart/netinet/in.c#4 integrate .. //depot/projects/uart/netinet/ip_divert.c#6 integrate .. //depot/projects/uart/nfsclient/nfs_bio.c#6 integrate .. //depot/projects/uart/opencrypto/cryptodev.c#4 integrate .. //depot/projects/uart/pc98/conf/GENERIC#6 integrate .. //depot/projects/uart/pc98/conf/NOTES#7 integrate .. //depot/projects/uart/pc98/i386/machdep.c#8 integrate .. //depot/projects/uart/pci/if_sf.c#7 integrate .. //depot/projects/uart/pci/if_sfreg.h#4 integrate .. //depot/projects/uart/pci/if_sk.c#9 integrate .. //depot/projects/uart/pci/if_skreg.h#5 integrate .. //depot/projects/uart/security/mac/mac_sysv_msg.c#1 branch .. //depot/projects/uart/security/mac/mac_sysv_sem.c#1 branch .. //depot/projects/uart/security/mac/mac_sysv_shm.c#1 branch .. //depot/projects/uart/sparc64/conf/GENERIC#8 integrate .. //depot/projects/uart/sparc64/conf/NOTES#4 integrate .. //depot/projects/uart/sparc64/include/eeprom.h#3 integrate .. //depot/projects/uart/sparc64/isa/isa.c#6 integrate .. //depot/projects/uart/sparc64/sparc64/eeprom.c#5 integrate .. //depot/projects/uart/sparc64/sparc64/eeprom_ebus.c#5 integrate .. //depot/projects/uart/sparc64/sparc64/eeprom_sbus.c#5 integrate .. //depot/projects/uart/sparc64/sparc64/rtc.c#1 branch .. //depot/projects/uart/sys/buf.h#9 integrate .. //depot/projects/uart/sys/filedesc.h#5 integrate .. //depot/projects/uart/sys/mac.h#7 integrate .. //depot/projects/uart/sys/mac_policy.h#5 integrate .. //depot/projects/uart/sys/msg.h#3 integrate .. //depot/projects/uart/sys/sem.h#3 integrate .. //depot/projects/uart/sys/shm.h#3 integrate .. //depot/projects/uart/sys/syscall.h#5 integrate .. //depot/projects/uart/sys/syscall.mk#5 integrate .. //depot/projects/uart/sys/sysproto.h#5 integrate .. //depot/projects/uart/ufs/ffs/ffs_vnops.c#7 integrate .. //depot/projects/uart/ufs/ufs/ufs_bmap.c#4 integrate .. //depot/projects/uart/vm/vm_pager.c#6 integrate .. //depot/projects/uart/vm/vnode_pager.c#10 integrate Differences ... ==== //depot/projects/uart/arm/arm/busdma_machdep.c#2 (text+ko) ==== @@ -29,7 +29,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.5 2004/10/21 11:59:33 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/busdma_machdep.c,v 1.7 2004/11/16 00:57:44 cognet Exp $"); /* * MacPPC bus dma support routines @@ -97,11 +97,10 @@ * Check to see if the specified page is in an allowed DMA range. */ -static int +static __inline int bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dma_segment_t segs[], - bus_dmamap_t map, void *buf, bus_size_t buflen, struct thread *td, - int flags, vm_offset_t *lastaddrp, int *segp, - int first); + bus_dmamap_t map, void *buf, bus_size_t buflen, struct pmap *pmap, + int flags, vm_offset_t *lastaddrp, int *segp); static __inline struct arm32_dma_range * _bus_dma_inrange(struct arm32_dma_range *ranges, int nranges, @@ -367,7 +366,7 @@ void *callback_arg, int flags) { vm_offset_t lastaddr = 0; - int error, nsegs = 0; + int error, nsegs = -1; #ifdef __GNUC__ bus_dma_segment_t dm_segments[dmat->nsegments]; #else @@ -379,8 +378,8 @@ map->buffer = buf; map->len = buflen; error = bus_dmamap_load_buffer(dmat, - dm_segments, map, buf, buflen, NULL, - flags, &lastaddr, &nsegs, 1); + dm_segments, map, buf, buflen, kernel_pmap, + flags, &lastaddr, &nsegs); if (error) (*callback)(callback_arg, NULL, 0, error); else @@ -395,27 +394,20 @@ * the starting segment on entrance, and the ending segment on exit. * first indicates if this is the first invocation of this function. */ -static int +static int __inline bus_dmamap_load_buffer(bus_dma_tag_t dmat, bus_dma_segment_t segs[], - bus_dmamap_t map, void *buf, bus_size_t buflen, struct thread *td, - int flags, vm_offset_t *lastaddrp, int *segp, - int first) + bus_dmamap_t map, void *buf, bus_size_t buflen, struct pmap *pmap, + int flags, vm_offset_t *lastaddrp, int *segp) { bus_size_t sgsize; bus_addr_t curaddr, lastaddr, baddr, bmask; vm_offset_t vaddr = (vm_offset_t)buf; int seg; int error = 0; - pmap_t pmap; pd_entry_t *pde; pt_entry_t pte; pt_entry_t *ptep; - if (td != NULL) - pmap = vmspace_pmap(td->td_proc->p_vmspace); - else - pmap = pmap_kernel(); - lastaddr = *lastaddrp; bmask = ~(dmat->boundary - 1); @@ -496,27 +488,19 @@ * Insert chunk into a segment, coalescing with * the previous segment if possible. */ - if (first) { + if (seg >= 0 && curaddr == lastaddr && + (segs[seg].ds_len + sgsize) <= dmat->maxsegsz && + (dmat->boundary == 0 || + (segs[seg].ds_addr & bmask) == + (curaddr & bmask))) { + segs[seg].ds_len += sgsize; + goto segdone; + } else { + if (++seg >= dmat->nsegments) + break; segs[seg].ds_addr = curaddr; segs[seg].ds_len = sgsize; - first = 0; - } else { - if (curaddr == lastaddr && - (segs[seg].ds_len + sgsize) <= dmat->maxsegsz && - (dmat->boundary == 0 || - (segs[seg].ds_addr & bmask) == - (curaddr & bmask))) { - segs[seg].ds_len += sgsize; - goto segdone; - } - else { - if (++seg >= dmat->nsegments) - break; - segs[seg].ds_addr = curaddr; - segs[seg].ds_len = sgsize; - } } - if (error) break; segdone: @@ -549,7 +533,7 @@ #else bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS]; #endif - int nsegs = 0, error = 0; + int nsegs = -1, error = 0; M_ASSERTPKTHDR(m0); @@ -557,17 +541,14 @@ map->flags |= DMAMAP_MBUF | DMAMAP_COHERENT; map->buffer = m0; if (m0->m_pkthdr.len <= dmat->maxsize) { - int first = 1; vm_offset_t lastaddr = 0; struct mbuf *m; for (m = m0; m != NULL && error == 0; m = m->m_next) { - if (m->m_len > 0) { + if (m->m_len > 0) error = bus_dmamap_load_buffer(dmat, - dm_segments, map, m->m_data, m->m_len, NULL, - flags, &lastaddr, &nsegs, first); - first = 0; - } + dm_segments, map, m->m_data, m->m_len, + pmap_kernel(), flags, &lastaddr, &nsegs); } } else { error = EINVAL; @@ -599,10 +580,10 @@ #else bus_dma_segment_t dm_segments[BUS_DMAMAP_NSEGS]; #endif - int nsegs, i, error, first; + int nsegs, i, error; bus_size_t resid; struct iovec *iov; - struct thread *td = NULL; + struct pmap *pmap; resid = uio->uio_resid; iov = uio->uio_iov; @@ -611,13 +592,14 @@ map->buffer = uio; if (uio->uio_segflg == UIO_USERSPACE) { - td = uio->uio_td; + pmap = vmspace_pmap(uio->uio_td->td_proc->p_vmspace); KASSERT(td != NULL, ("bus_dmamap_load_uio: USERSPACE but no proc")); - } + } else + pmap = kernel_pmap; - first = 1; - nsegs = error = 0; + error = 0; + nsegs = -1; for (i = 0; i < uio->uio_iovcnt && resid != 0 && !error; i++) { /* * Now at the first iovec to load. Load each iovec @@ -629,9 +611,7 @@ if (minlen > 0) { error = bus_dmamap_load_buffer(dmat, dm_segments, map, - addr, minlen, td, flags, &lastaddr, &nsegs, first); - - first = 0; + addr, minlen, pmap, flags, &lastaddr, &nsegs); resid -= minlen; } ==== //depot/projects/uart/arm/xscale/i80321/std.i80321#2 (text+ko) ==== @@ -1,6 +1,4 @@ #XScale i80321 generic configuration -#$FreeBSD: src/sys/arm/xscale/i80321/std.i80321,v 1.1 2004/09/23 22:45:36 cognet Exp $ +#$FreeBSD: src/sys/arm/xscale/i80321/std.i80321,v 1.2 2004/11/18 00:05:09 cognet Exp $ files "../xscale/i80321/files.i80321" cpu CPU_XSCALE_80321 -makeoptions KERNPHYSADDR=0x00200000 -makeoptions KERNVIRTADDR=0xc0200000 ==== //depot/projects/uart/arm/xscale/i80321/std.iq31244#2 (text+ko) ==== @@ -1,4 +1,6 @@ #IQ31244 board configuration -#$FreeBSD: src/sys/arm/xscale/i80321/std.iq31244,v 1.1 2004/09/23 22:45:36 cognet Exp $ +#$FreeBSD: src/sys/arm/xscale/i80321/std.iq31244,v 1.2 2004/11/18 00:05:09 cognet Exp $ include "../xscale/i80321/std.i80321" files "../xscale/i80321/files.iq31244" +makeoptions KERNPHYSADDR=0xa0200000 +makeoptions KERNVIRTADDR=0xc0200000 ==== //depot/projects/uart/cam/cam_xpt.c#3 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.143 2004/10/05 04:22:20 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/cam/cam_xpt.c,v 1.145 2004/11/18 07:24:29 gibbs Exp $"); #include #include @@ -5651,7 +5651,17 @@ if (softc->action == PROBE_INQUIRY) inquiry_len = SHORT_INQUIRY_LENGTH; else - inquiry_len = inq_buf->additional_length + 4; + inquiry_len = inq_buf->additional_length + + offsetof(struct scsi_inquiry_data, + additional_length) + 1; + + /* + * Some parallel SCSI devices fail to send an + * ignore wide residue message when dealing with + * odd length inquiry requests. Round up to be + * safe. + */ + inquiry_len = roundup2(inquiry_len, 2); scsi_inquiry(csio, /*retries*/4, @@ -5803,7 +5813,7 @@ switch(periph_qual) { case SID_QUAL_LU_CONNECTED: { - u_int8_t alen; + u_int8_t len; /* * We conservatively request only @@ -5815,9 +5825,11 @@ * the amount of information the device * is willing to give. */ - alen = inq_buf->additional_length; + len = inq_buf->additional_length + + offsetof(struct scsi_inquiry_data, + additional_length) + 1; if (softc->action == PROBE_INQUIRY - && alen > (SHORT_INQUIRY_LENGTH - 4)) { + && len > SHORT_INQUIRY_LENGTH) { softc->action = PROBE_FULL_INQUIRY; xpt_release_ccb(done_ccb); xpt_schedule(periph, priority); ==== //depot/projects/uart/coda/coda_vnops.c#5 (text+ko) ==== @@ -42,7 +42,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/coda/coda_vnops.c,v 1.53 2004/07/28 06:05:41 kan Exp $"); +__FBSDID("$FreeBSD: src/sys/coda/coda_vnops.c,v 1.54 2004/11/15 09:18:26 phk Exp $"); #include #include @@ -1679,7 +1679,7 @@ struct vop_bmap_args *ap = v; struct vnode *vp __attribute__((unused)) = ap->a_vp; /* file's vnode */ daddr_t bn __attribute__((unused)) = ap->a_bn; /* fs block number */ - struct vnode **vpp = ap->a_vpp; /* RETURN vp of device */ + struct bufobj **bop = ap->a_bop; /* RETURN bufobj of device */ daddr_t *bnp __attribute__((unused)) = ap->a_bnp; /* RETURN device block number */ struct thread *td __attribute__((unused)) = curthread; /* upcall decl */ @@ -1691,10 +1691,10 @@ cp = VTOC(vp); if (cp->c_ovp) { return EINVAL; - ret = VOP_BMAP(cp->c_ovp, bn, vpp, bnp, ap->a_runp, ap->a_runb); + ret = VOP_BMAP(cp->c_ovp, bn, bop, bnp, ap->a_runp, ap->a_runb); #if 0 - printf("VOP_BMAP(cp->c_ovp %p, bn %p, vpp %p, bnp %lld, ap->a_runp %p, ap->a_runb %p) = %d\n", - cp->c_ovp, bn, vpp, bnp, ap->a_runp, ap->a_runb, ret); + printf("VOP_BMAP(cp->c_ovp %p, bn %p, bop %p, bnp %lld, ap->a_runp %p, ap->a_runb %p) = %d\n", + cp->c_ovp, bn, bop, bnp, ap->a_runp, ap->a_runb, ret); #endif return ret; } else { ==== //depot/projects/uart/compat/freebsd32/freebsd32_proto.h#4 (text+ko) ==== @@ -2,7 +2,7 @@ * System call prototypes. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.30 2004/10/23 20:05:42 rwatson Exp $ + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.31 2004/11/18 23:56:09 marks Exp $ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.42 2004/10/23 20:04:56 rwatson Exp */ ==== //depot/projects/uart/compat/freebsd32/freebsd32_syscall.h#4 (text+ko) ==== @@ -2,7 +2,7 @@ * System call numbers. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.30 2004/10/23 20:05:42 rwatson Exp $ + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.31 2004/11/18 23:56:09 marks Exp $ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.42 2004/10/23 20:04:56 rwatson Exp */ ==== //depot/projects/uart/compat/freebsd32/freebsd32_syscalls.c#4 (text+ko) ==== @@ -2,7 +2,7 @@ * System call names. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.21 2004/10/23 20:05:42 rwatson Exp $ + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.22 2004/11/18 23:56:09 marks Exp $ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.42 2004/10/23 20:04:56 rwatson Exp */ @@ -255,7 +255,7 @@ "#245", /* 245 = nosys */ "#246", /* 246 = nosys */ "#247", /* 247 = nosys */ - "#248", /* 248 = nosys */ + "#248", /* 248 = ntp_gettime */ "#249", /* 249 = nosys */ "minherit", /* 250 = minherit */ "rfork", /* 251 = rfork */ ==== //depot/projects/uart/compat/freebsd32/freebsd32_sysent.c#4 (text+ko) ==== @@ -2,7 +2,7 @@ * System call switch table. * * DO NOT EDIT-- this file is automatically generated. - * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.31 2004/10/23 20:05:42 rwatson Exp $ + * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.32 2004/11/18 23:56:09 marks Exp $ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.42 2004/10/23 20:04:56 rwatson Exp */ @@ -273,7 +273,7 @@ { 0, (sy_call_t *)nosys }, /* 245 = nosys */ { 0, (sy_call_t *)nosys }, /* 246 = nosys */ { 0, (sy_call_t *)nosys }, /* 247 = nosys */ - { 0, (sy_call_t *)nosys }, /* 248 = nosys */ + { 0, (sy_call_t *)nosys }, /* 248 = ntp_gettime */ { 0, (sy_call_t *)nosys }, /* 249 = nosys */ { SYF_MPSAFE | AS(minherit_args), (sy_call_t *)minherit }, /* 250 = minherit */ { SYF_MPSAFE | AS(rfork_args), (sy_call_t *)rfork }, /* 251 = rfork */ ==== //depot/projects/uart/compat/freebsd32/syscalls.master#3 (text+ko) ==== @@ -1,4 +1,4 @@ - $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.42 2004/10/23 20:04:56 rwatson Exp $ + $FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.43 2004/11/18 23:54:26 marks Exp $ ; from: @(#)syscalls.master 8.2 (Berkeley) 1/13/94 ; from: src/sys/kern/syscalls.master 1.107 ; @@ -361,7 +361,7 @@ 245 UNIMPL nosys 246 UNIMPL nosys 247 UNIMPL nosys -248 UNIMPL nosys +248 UNIMPL ntp_gettime 249 UNIMPL nosys ; syscall numbers initially used in OpenBSD 250 MNOPROTO { int minherit(void *addr, size_t len, int inherit); } ==== //depot/projects/uart/conf/files#37 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/files,v 1.966 2004/11/12 04:48:24 imp Exp $ +# $FreeBSD: src/sys/conf/files,v 1.971 2004/11/17 17:33:59 rwatson Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -272,6 +272,10 @@ dev/aac/aac_pci.c optional aac pci dev/aac/aac_cam.c optional aacp aac dev/aac/aac_linux.c optional aac compat_linux +dev/acpi_support/acpi_asus.c optional acpi_asus acpi +dev/acpi_support/acpi_panasonic.c optional acpi_panasonic acpi +dev/acpi_support/acpi_sony.c optional acpi_sony acpi +dev/acpi_support/acpi_toshiba.c optional acpi_toshiba acpi dev/acpica/acpi.c optional acpi dev/acpica/acpi_acad.c optional acpi dev/acpica/acpi_battery.c optional acpi @@ -300,7 +304,6 @@ dev/acpica/Osd/OsdStream.c optional acpi dev/acpica/Osd/OsdSynch.c optional acpi dev/acpica/Osd/OsdTable.c optional acpi -dev/acpica/acpi_snc.c optional acpi_snc acpi dev/acpica/acpi_video.c optional acpi_video acpi dev/adlink/adlink.c optional adlink dev/advansys/adv_eisa.c optional adv eisa @@ -550,6 +553,7 @@ dev/nsp/nsp.c optional nsp dev/nsp/nsp_pccard.c optional nsp card dev/nsp/nsp_pccard.c optional nsp pccard +dev/mc146818/mc146818.c optional mc146818 dev/mca/mca_bus.c optional mca dev/mcd/mcd.c optional mcd isa nowerror dev/mcd/mcd_isa.c optional mcd isa nowerror @@ -846,6 +850,7 @@ dev/usb/usbdi_util.c optional usb dev/utopia/utopia.c optional utopia dev/vge/if_vge.c optional vge +dev/vkbd/vkbd.c optional vkbd dev/vx/if_vx.c optional vx dev/vx/if_vx_eisa.c optional vx eisa dev/vx/if_vx_pci.c optional vx pci @@ -1675,6 +1680,9 @@ security/mac/mac_process.c optional mac security/mac/mac_socket.c optional mac security/mac/mac_system.c optional mac +security/mac/mac_sysv_msg.c optional mac +security/mac/mac_sysv_sem.c optional mac +security/mac/mac_sysv_shm.c optional mac security/mac/mac_vfs.c optional mac security/mac_biba/mac_biba.c optional mac_biba security/mac_bsdextended/mac_bsdextended.c optional mac_bsdextended ==== //depot/projects/uart/conf/files.i386#12 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.i386,v 1.507 2004/11/11 04:53:46 imp Exp $ +# $FreeBSD: src/sys/conf/files.i386,v 1.508 2004/11/15 05:54:14 imp Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -192,10 +192,7 @@ geom/geom_mbr_enc.c standard dev/acpica/acpi_if.m standard i386/acpica/OsdEnvironment.c optional acpi -i386/acpica/acpi_asus.c optional acpi_asus acpi i386/acpica/acpi_machdep.c optional acpi -i386/acpica/acpi_panasonic.c optional acpi_panasonic acpi -i386/acpica/acpi_toshiba.c optional acpi_toshiba acpi i386/acpica/acpi_wakeup.c optional acpi acpi_wakecode.h optional acpi \ dependency "$S/i386/acpica/acpi_wakecode.S" \ ==== //depot/projects/uart/conf/files.sparc64#8 (text+ko) ==== @@ -1,7 +1,7 @@ # This file tells config what files go into building a kernel, # files marked standard are always included. # -# $FreeBSD: src/sys/conf/files.sparc64,v 1.62 2004/11/10 14:09:51 trhodes Exp $ +# $FreeBSD: src/sys/conf/files.sparc64,v 1.63 2004/11/17 16:41:41 marius Exp $ # # The long compile-with and dependency lines are required because of # limitations in config: backslash-newline doesn't work in strings, and @@ -103,6 +103,8 @@ sparc64/sparc64/ofw_machdep.c standard sparc64/sparc64/pmap.c standard sparc64/sparc64/prof_machdep.c optional profiling-routine +sparc64/sparc64/rtc.c optional rtc ebus +sparc64/sparc64/rtc.c optional rtc isa sparc64/sparc64/rwindow.c standard sparc64/sparc64/sc_machdep.c optional sc sparc64/sparc64/spitfire.c standard ==== //depot/projects/uart/conf/options.i386#6 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.i386,v 1.215 2004/08/19 20:58:23 obrien Exp $ +# $FreeBSD: src/sys/conf/options.i386,v 1.216 2004/11/16 20:42:30 jhb Exp $ # Options specific to the i386 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -72,7 +72,6 @@ NO_MEMORY_HOLE opt_cpu.h # The CPU type affects the endian conversion functions all over the kernel. -I386_CPU opt_global.h I486_CPU opt_global.h I586_CPU opt_global.h I686_CPU opt_global.h ==== //depot/projects/uart/conf/options.pc98#5 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/options.pc98,v 1.180 2004/08/30 23:03:57 peter Exp $ +# $FreeBSD: src/sys/conf/options.pc98,v 1.181 2004/11/16 20:42:30 jhb Exp $ # Options specific to the pc98 platform kernels AUTO_EOI_1 opt_auto_eoi.h @@ -61,7 +61,6 @@ NO_MEMORY_HOLE opt_cpu.h # The CPU type affects the endian conversion functions all over the kernel. -I386_CPU opt_global.h I486_CPU opt_global.h I586_CPU opt_global.h I686_CPU opt_global.h ==== //depot/projects/uart/crypto/blowfish/arch/i386/bf_enc.S#2 (text+ko) ==== @@ -1,5 +1,5 @@ /* $NetBSD: bf_enc.S,v 1.1 2001/09/09 11:01:01 tls Exp $ */ -/* $FreeBSD: src/sys/crypto/blowfish/arch/i386/bf_enc.S,v 1.1 2002/03/05 09:19:02 ume Exp $ */ +/* $FreeBSD: src/sys/crypto/blowfish/arch/i386/bf_enc.S,v 1.2 2004/11/16 20:42:30 jhb Exp $ */ /* * Written by Jason R. Thorpe and Thor Lancelot Simon @@ -10,7 +10,7 @@ * XXX Should use CPP symbols defined as a result of * XXX `cc -mcpu=pentiumpro'. */ -#if defined(I386_CPU) || defined(I486_CPU) || defined(I586_CPU) +#if defined(I486_CPU) || defined(I586_CPU) #include "bf_enc_586.S" #else #include "bf_enc_686.S" ==== //depot/projects/uart/dev/acpi_support/acpi_asus.c#2 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_asus.c,v 1.16 2004/11/12 23:21:19 philip Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_asus.c,v 1.17 2004/11/15 05:54:15 imp Exp $"); /* * Driver for extra ACPI-controlled gadgets (hotkeys, leds, etc) found on ==== //depot/projects/uart/dev/acpi_support/acpi_panasonic.c#2 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_panasonic.c,v 1.5 2004/11/07 23:18:23 njl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_panasonic.c,v 1.6 2004/11/15 05:54:15 imp Exp $"); #include "opt_acpi.h" #include ==== //depot/projects/uart/dev/acpi_support/acpi_sony.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/dev/acpi_support/acpi_sony.c,v 1.2 2004/11/13 23:39:56 imp Exp $ + * $FreeBSD: src/sys/dev/acpi_support/acpi_sony.c,v 1.5 2004/11/15 20:08:44 imp Exp $ */ #include "opt_acpi.h" @@ -45,24 +45,24 @@ */ struct acpi_snc_softc { - int pid; + int pid; }; static struct acpi_snc_name_list { - char *nodename; - char *getmethod; - char *setmethod; - char *comment; -}acpi_snc_oids[] = { - { "brightness", "GBRT", "SBRT", "Display Brightness"}, - { "ctr", "GCTR", "SCTR", "??"}, - { "pcr", "GPCR", "SPCR", "???"}, + char *nodename; + char *getmethod; + char *setmethod; + char *comment; +} acpi_snc_oids[] = { + { "brightness", "GBRT", "SBRT", "Display Brightness"}, + { "ctr", "GCTR", "SCTR", "??"}, + { "pcr", "GPCR", "SPCR", "???"}, #if 0 - { "cmi", "GCMI", "SCMI", "????"}, + { "cmi", "GCMI", "SCMI", "????"}, #endif - { "wdp", "GWDP", NULL, "?????"}, - { "cdp", "GCDP", "CDPW", "??????"}, /*shares [\GL03]&0x8 flag*/ - {NULL, NULL,NULL} + { "wdp", "GWDP", NULL, "?????"}, + { "cdp", "GCDP", "CDPW", "??????"}, /*shares [\GL03]&0x8 flag*/ + {NULL, NULL,NULL} }; static int acpi_snc_probe(device_t dev); @@ -124,21 +124,21 @@ dev, i, sysctl_acpi_snc_gen_handler, "I", acpi_snc_oids[i].comment); } - - return_VALUE(0); + return (0); } static int acpi_snc_detach(device_t dev) { - return_VALUE(0); + return (0); } + #if 0 static int acpi_snc_suspend(device_t dev) { struct acpi_snc_softc *sc = device_get_softc(dev); - return_VALUE(0); + return (0); } static int @@ -155,14 +155,12 @@ int function = oidp->oid_arg2; int error = 0, val; - - acpi_GetInteger(acpi_get_handle(dev), acpi_snc_oids[function].getmethod, &val); + acpi_GetInteger(acpi_get_handle(dev), + acpi_snc_oids[function].getmethod, &val); error = sysctl_handle_int(oidp, &val, 0, req); - if (error || !req->newptr || !acpi_snc_oids[function].setmethod) - return error; - - acpi_SetInteger(acpi_get_handle(dev), acpi_snc_oids[function].setmethod, val); - return 0; - + return (error); + acpi_SetInteger(acpi_get_handle(dev), + acpi_snc_oids[function].setmethod, val); + return (0); } ==== //depot/projects/uart/dev/acpi_support/acpi_toshiba.c#2 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_toshiba.c,v 1.13 2004/08/13 06:22:35 njl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpi_support/acpi_toshiba.c,v 1.14 2004/11/15 05:54:15 imp Exp $"); #include "opt_acpi.h" #include ==== //depot/projects/uart/dev/acpica/acpi_cpu.c#5 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.45 2004/10/11 21:15:10 njl Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/acpica/acpi_cpu.c,v 1.46 2004/11/16 18:47:42 njl Exp $"); #include "opt_acpi.h" #include @@ -299,10 +299,6 @@ SYSCTL_CHILDREN(acpi_sc->acpi_sysctl_tree), OID_AUTO, "cpu", CTLFLAG_RD, 0, ""); - /* If this is the first device probed, check for quirks. */ - if (device_get_unit(dev) == 0) - acpi_cpu_quirks(sc); - /* * Probe for throttling and Cx state support. * If none of these is present, free up unused resources. @@ -674,6 +670,10 @@ /* Get set of CPU devices */ devclass_get_devices(acpi_cpu_devclass, &cpu_devices, &cpu_ndevices); + /* Check for quirks via the first CPU device. */ + sc = device_get_softc(cpu_devices[0]); + acpi_cpu_quirks(sc); + /* * Make sure all the processors' Cx counts match. We should probably * also check the contents of each. However, no known systems have @@ -702,6 +702,10 @@ acpi_cpu_startup_throttling() { + /* If throttling is not usable, don't initialize it. */ + if (cpu_quirks & CPU_QUIRK_NO_THROTTLE) + return; + /* Initialise throttling states */ cpu_throttle_max = CPU_MAX_SPEED; cpu_throttle_state = CPU_MAX_SPEED; @@ -737,13 +741,22 @@ acpi_cpu_startup_cx() { struct acpi_cpu_softc *sc; - struct sbuf sb; + struct sbuf sb; int i; + /* + * Set up the list of Cx states, eliminating C3 states by truncating + * cpu_cx_count if quirks indicate C3 is not usable. + */ sc = device_get_softc(cpu_devices[0]); sbuf_new(&sb, cpu_cx_supported, sizeof(cpu_cx_supported), SBUF_FIXEDLEN); - for (i = 0; i < cpu_cx_count; i++) - sbuf_printf(&sb, "C%d/%d ", i + 1, sc->cpu_cx_states[i].trans_lat); + for (i = 0; i < cpu_cx_count; i++) { + if ((cpu_quirks & CPU_QUIRK_NO_C3) == 0 || + sc->cpu_cx_states[i].type != ACPI_STATE_C3) + sbuf_printf(&sb, "C%d/%d ", i + 1, sc->cpu_cx_states[i].trans_lat); + else + cpu_cx_count = i; + } sbuf_trim(&sb); sbuf_finish(&sb); SYSCTL_ADD_STRING(&acpi_cpu_sysctl_ctx, @@ -966,6 +979,7 @@ static int acpi_cpu_quirks(struct acpi_cpu_softc *sc) { + device_t acpi_dev; /* * C3 on multiple CPUs requires using the expensive flush cache @@ -974,7 +988,6 @@ if (mp_ncpus > 1) cpu_quirks |= CPU_QUIRK_NO_BM_CTRL; -#ifdef notyet /* Look for various quirks of the PIIX4 part. */ acpi_dev = pci_find_device(PCI_VENDOR_INTEL, PCI_DEVICE_82371AB_3); if (acpi_dev != NULL) { @@ -1011,7 +1024,6 @@ break; } } -#endif return (0); } ==== //depot/projects/uart/dev/aic7xxx/aic79xx.c#4 (text+ko) ==== @@ -46,7 +46,7 @@ #include "aicasm/aicasm_insformat.h" #else #include -__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic79xx.c,v 1.32 2004/08/18 16:35:52 gibbs Exp $"); +__FBSDID("$FreeBSD: src/sys/dev/aic7xxx/aic79xx.c,v 1.33 2004/11/18 20:22:30 gibbs Exp $"); #include #include #include @@ -6487,7 +6487,7 @@ } init_done: ahd_restart(ahd); - aic_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US, + aic_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_MS, ahd_stat_timer, ahd); return (0); } @@ -8055,7 +8055,7 @@ } -#define AHD_RESET_POLL_US 1000 +#define AHD_RESET_POLL_MS 1 static void ahd_reset_poll(void *arg) { @@ -8077,7 +8077,7 @@ ahd_set_modes(ahd, AHD_MODE_SCSI, AHD_MODE_SCSI); ahd_outb(ahd, CLRSINT1, CLRSCSIRSTI); if ((ahd_inb(ahd, SSTAT1) & SCSIRSTI) != 0) { - aic_timer_reset(&ahd->reset_timer, AHD_RESET_POLL_US, + aic_timer_reset(&ahd->reset_timer, AHD_RESET_POLL_MS, ahd_reset_poll, ahd); ahd_unpause(ahd); ahd_unlock(ahd, &s); @@ -8135,7 +8135,7 @@ ahd->cmdcmplt_bucket = (ahd->cmdcmplt_bucket+1) & (AHD_STAT_BUCKETS-1); ahd->cmdcmplt_total -= ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket]; ahd->cmdcmplt_counts[ahd->cmdcmplt_bucket] = 0; - aic_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_US, + aic_timer_reset(&ahd->stat_timer, AHD_STAT_UPDATE_MS, ahd_stat_timer, ahd); ahd_unlock(ahd, &s); ahd_list_unlock(&l); @@ -8358,7 +8358,7 @@ */ if (ahd->scb_data.recovery_scbs == 0 || (scb->flags & SCB_RECOVERY_SCB) != 0) - aic_scb_timer_reset(scb, 5 * 1000000); + aic_scb_timer_reset(scb, 5 * 1000); break; } case SCSI_STATUS_OK: @@ -9406,7 +9406,7 @@ ahd_outb(ahd, SCSISIGO, last_phase|ATNO); ahd_print_path(ahd, active_scb); printf("BDR message in message buffer\n"); - aic_scb_timer_reset(scb, 2 * 1000000); + aic_scb_timer_reset(scb, 2 * 1000); break; } else if (last_phase != P_BUSFREE && ahd_inb(ahd, SCSIPHASE) == 0) { @@ -9498,7 +9498,7 @@ ahd_set_scbptr(ahd, active_scbptr); ahd_print_path(ahd, scb); printf("Queuing a BDR SCB\n"); - aic_scb_timer_reset(scb, 2 * 1000000); + aic_scb_timer_reset(scb, 2 * 1000); break; } } ==== //depot/projects/uart/dev/aic7xxx/aic79xx.h#4 (text+ko) ==== @@ -39,7 +39,7 @@ * * $Id: //depot/aic7xxx/aic7xxx/aic79xx.h#107 $ * - * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.h,v 1.22 2004/08/18 16:33:14 gibbs Exp $ + * $FreeBSD: src/sys/dev/aic7xxx/aic79xx.h,v 1.23 2004/11/18 20:22:31 gibbs Exp $ */ #ifndef _AIC79XX_H_ @@ -1151,7 +1151,7 @@ /* >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri Nov 19 15:48:06 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 58DDC16A4D0; Fri, 19 Nov 2004 15:48:06 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 314EA16A4CE for ; Fri, 19 Nov 2004 15:48:06 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E205D43D1D for ; Fri, 19 Nov 2004 15:48:05 +0000 (GMT) (envelope-from areisse@nailabs.com) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAJFm5ET053204 for ; Fri, 19 Nov 2004 15:48:05 GMT (envelope-from areisse@nailabs.com) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAJFm589053201 for perforce@freebsd.org; Fri, 19 Nov 2004 15:48:05 GMT (envelope-from areisse@nailabs.com) Date: Fri, 19 Nov 2004 15:48:05 GMT Message-Id: <200411191548.iAJFm589053201@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to areisse@nailabs.com using -f From: Andrew Reisse To: Perforce Change Reviews Subject: PERFORCE change 65452 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Nov 2004 15:48:07 -0000 http://perforce.freebsd.org/chv.cgi?CH=65452 Change 65452 by areisse@areisse_tislabs on 2004/11/19 15:47:32 Begin the update of sebsd to selinux version 2004081908. This step was initial merging only, the kernel is in an unworking state. Affected files ... .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/avc/avc.c#6 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/avc/avc.h#6 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask.h#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/Makefile#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/access_vectors#5 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/initial_sids#3 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/mkaccess_vector.sh#5 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/mkflask.sh#3 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/security_classes#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/avtab.c#5 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/avtab.h#5 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/conditional.c#1 branch .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/conditional.h#1 branch .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/constraint.h#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/context.h#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/ebitmap.c#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/ebitmap.h#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/hashtab.c#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/hashtab.h#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/mls.c#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/mls.h#3 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/mls_types.h#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/policydb.c#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/policydb.h#5 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/security.h#6 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/services.c#7 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/services.h#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/sidtab.c#9 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/sidtab.h#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/symtab.c#4 integrate .. //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/symtab.h#4 integrate Differences ... ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/avc/avc.c#6 (text+ko) ==== @@ -583,6 +583,9 @@ } else { printf(" fs/inode info not available"); } + inode = a->u.fs.dentry->d_inode; + } else if (a->u.fs.inode) { + inode = a->u.fs.inode; } break; case AVC_AUDIT_DATA_NET: @@ -1018,3 +1021,14 @@ avc_audit(ssid, tsid, tclass, requested, &avd, rc, auditdata); return rc; } + +static int __init avc_log_level_setup(char *str) +{ + avc_log_level = simple_strtol(str, NULL, 0); + if (avc_log_level > 7) + avc_log_level = 7; + return 1; +} + +__setup("avc_log_level=", avc_log_level_setup); + ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/avc/avc.h#6 (text+ko) ==== @@ -62,8 +62,20 @@ } fs; struct { char *netif; - u16 port; - u32 daddr; + struct sock *sk; + u16 family; + u16 dport; + u16 sport; + union { + struct { + u32 daddr; + u32 saddr; + } v4; + struct { + struct in6_addr daddr; + struct in6_addr saddr; + } v6; + } fam; } net; cap_value_t cap; int ipc_id; @@ -86,25 +98,6 @@ #define AVC_CAV_PROBES 6 #define AVC_CAV_MISSES 7 #define AVC_NSTATS 8 -extern unsigned avc_cache_stats[AVC_NSTATS]; - -#ifdef AVC_CACHE_STATS -static inline void avc_cache_stats_incr(int type) -{ - avc_cache_stats[type]++; -} - -static inline void avc_cache_stats_add(int type, unsigned val) -{ - avc_cache_stats[type] += val; -} -#else -static inline void avc_cache_stats_incr(int type) -{ } - -static inline void avc_cache_stats_add(int type, unsigned val) -{ } -#endif /* * AVC display support ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask.h#4 (text+ko) ==== ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/Makefile#4 (text+ko) ==== ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/access_vectors#5 (text+ko) ==== @@ -220,10 +220,11 @@ { fork transition - sigchld - sigkill - sigstop - signal + sigchld # commonly granted from child to parent + sigkill # cannot be caught or ignored + sigstop # cannot be caught or ignored + signull # for kill(pid, 0) + signal # all other signals ptrace getsched setsched @@ -233,6 +234,13 @@ getcap setcap share + getattr + setexec + setfscreate + noatsecure + siginh + setrlimit + rlimitinh } @@ -279,16 +287,14 @@ class security { compute_av - notify_perm - transition_sid - member_sid - sid_to_context - context_to_sid + compute_create + compute_member + check_context load_policy - get_sids - register_avc - change_sid - get_user_sids + compute_relabel + compute_user + setenforce # was avc_toggle in system class + setbool } @@ -366,3 +372,15 @@ mknod lease } + + +# +# Define the access vector interpretation for controlling +# changes to passwd information. +# +class passwd +{ + passwd + chfn + chsh +} ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/initial_sids#3 (text+ko) ==== ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/mkaccess_vector.sh#5 (text+ko) ==== ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/mkflask.sh#3 (text+ko) ==== ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/flask/security_classes#4 (text+ko) ==== @@ -42,5 +42,11 @@ #Posix.1b-related classes class posix_sem +# +# userspace object manager classes +# + +# passwd/chfn/chsh +class passwd # FLASK ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/avtab.c#5 (text+ko) ==== @@ -4,6 +4,24 @@ * Author : Stephen Smalley, */ +/* Updated: Frank Mayer and Karl MacMillan + * + * Added conditional policy language extensions + * + * Copyright (C) 2003 Tresys Technology, LLC + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + */ + +#include +#include +#include +#include + +#include "avtab.h" +#include "policydb.h" + #ifdef _KERNEL #include #include @@ -22,6 +40,31 @@ (keyp->source_type << 9)) & \ AVTAB_HASH_MASK) +static kmem_cache_t *avtab_node_cachep; + +static struct avtab_node* +avtab_insert_node(struct avtab *h, int hvalue, struct avtab_node * prev, struct avtab_node * cur, + struct avtab_key *key, struct avtab_datum *datum) +{ + struct avtab_node * newnode; + newnode = kmem_cache_alloc(avtab_node_cachep, SLAB_KERNEL); + if (newnode == NULL) + return NULL; + memset(newnode, 0, sizeof(struct avtab_node)); + newnode->key = *key; + newnode->datum = *datum; + if (prev) { + newnode->next = prev->next; + prev->next = newnode; + } else { + newnode->next = h->htable[hvalue]; + h->htable[hvalue] = newnode; + } + + h->nel++; + return newnode; +} + int avtab_insert(struct avtab *h, struct avtab_key *key, struct avtab_datum *datum) { int hvalue; @@ -50,24 +93,48 @@ break; } - newnode = kmalloc(sizeof(*newnode), GFP_KERNEL); - if (newnode == NULL) - return ENOMEM; - memset(newnode, 0, sizeof(*newnode)); - newnode->key = *key; - newnode->datum = *datum; - if (prev) { - newnode->next = prev->next; - prev->next = newnode; - } else { - newnode->next = h->htable[hvalue]; - h->htable[hvalue] = newnode; - } + newnode = avtab_insert_node(h, hvalue, prev, cur, key, datum); + if(!newnode) + return -ENOMEM; - h->nel++; return 0; } +/* Unlike avtab_insert(), this function allow multiple insertions of the same + * key/specified mask into the table, as needed by the conditional avtab. + * It also returns a pointer to the node inserted. + */ +struct avtab_node * +avtab_insert_nonunique(struct avtab * h, struct avtab_key * key, struct avtab_datum * datum) +{ + int hvalue; + struct avtab_node *prev, *cur, *newnode; + + if (!h) + return NULL; + hvalue = AVTAB_HASH(key); + for (prev = NULL, cur = h->htable[hvalue]; + cur; + prev = cur, cur = cur->next) { + if (key->source_type == cur->key.source_type && + key->target_type == cur->key.target_type && + key->target_class == cur->key.target_class && + (datum->specified & cur->datum.specified)) + break; + if (key->source_type < cur->key.source_type) + break; + if (key->source_type == cur->key.source_type && + key->target_type < cur->key.target_type) + break; + if (key->source_type == cur->key.source_type && + key->target_type == cur->key.target_type && + key->target_class < cur->key.target_class) + break; + } + newnode = avtab_insert_node(h, hvalue, prev, cur, key, datum); + + return newnode; +} struct avtab_datum *avtab_search(struct avtab *h, struct avtab_key *key, int specified) { @@ -99,12 +166,73 @@ return NULL; } +/* This search function returns a node pointer, and can be used in + * conjunction with avtab_search_next_node() + */ +struct avtab_node* +avtab_search_node(struct avtab *h, struct avtab_key *key, int specified) +{ + int hvalue; + struct avtab_node *cur; + + if (!h) + return NULL; + + hvalue = AVTAB_HASH(key); + for (cur = h->htable[hvalue]; cur; cur = cur->next) { + if (key->source_type == cur->key.source_type && + key->target_type == cur->key.target_type && + key->target_class == cur->key.target_class && + (specified & cur->datum.specified)) + return cur; + + if (key->source_type < cur->key.source_type) + break; + if (key->source_type == cur->key.source_type && + key->target_type < cur->key.target_type) + break; + if (key->source_type == cur->key.source_type && + key->target_type == cur->key.target_type && + key->target_class < cur->key.target_class) + break; + } + return NULL; +} + +struct avtab_node* +avtab_search_node_next(struct avtab_node *node, int specified) +{ + struct avtab_node *cur; + + if (!node) + return NULL; + + for (cur = node->next; cur; cur = cur->next) { + if (node->key.source_type == cur->key.source_type && + node->key.target_type == cur->key.target_type && + node->key.target_class == cur->key.target_class && + (specified & cur->datum.specified)) + return cur; + + if (node->key.source_type < cur->key.source_type) + break; + if (node->key.source_type == cur->key.source_type && + node->key.target_type < cur->key.target_type) + break; + if (node->key.source_type == cur->key.source_type && + node->key.target_type == cur->key.target_type && + node->key.target_class < cur->key.target_class) + break; + } + return NULL; +} + void avtab_destroy(struct avtab *h) { int i; struct avtab_node *cur, *temp; - if (!h) + if (!h || !h->htable) return; for (i = 0; i < AVTAB_SIZE; i++) { @@ -116,7 +244,8 @@ } h->htable[i] = NULL; } - kfree(h->htable); + vfree(h->htable); + h->htable = NULL; } @@ -184,6 +313,65 @@ max_chain_len); } +int avtab_read_item(void *fp, struct avtab_datum *avdatum, struct avtab_key *avkey) +{ + __u32 *buf; + __u32 items, items2; + + memset(avkey, 0, sizeof(struct avtab_key)); + memset(avdatum, 0, sizeof(struct avtab_datum)); + + buf = next_entry(fp, sizeof(__u32)); + if (!buf) { + printk(KERN_ERR "security: avtab: truncated entry\n"); + goto bad; + } + items2 = le32_to_cpu(buf[0]); + buf = next_entry(fp, sizeof(__u32)*items2); + if (!buf) { + printk(KERN_ERR "security: avtab: truncated entry\n"); + goto bad; + } + items = 0; + avkey->source_type = le32_to_cpu(buf[items++]); + avkey->target_type = le32_to_cpu(buf[items++]); + avkey->target_class = le32_to_cpu(buf[items++]); + avdatum->specified = le32_to_cpu(buf[items++]); + if (!(avdatum->specified & (AVTAB_AV | AVTAB_TYPE))) { + printk(KERN_ERR "security: avtab: null entry\n"); + goto bad; + } + if ((avdatum->specified & AVTAB_AV) && + (avdatum->specified & AVTAB_TYPE)) { + printk(KERN_ERR "security: avtab: entry has both access vectors and types\n"); + goto bad; + } + if (avdatum->specified & AVTAB_AV) { + if (avdatum->specified & AVTAB_ALLOWED) + avtab_allowed(avdatum) = le32_to_cpu(buf[items++]); + if (avdatum->specified & AVTAB_AUDITDENY) + avtab_auditdeny(avdatum) = le32_to_cpu(buf[items++]); + if (avdatum->specified & AVTAB_AUDITALLOW) + avtab_auditallow(avdatum) = le32_to_cpu(buf[items++]); + } else { + if (avdatum->specified & AVTAB_TRANSITION) + avtab_transition(avdatum) = le32_to_cpu(buf[items++]); + if (avdatum->specified & AVTAB_CHANGE) + avtab_change(avdatum) = le32_to_cpu(buf[items++]); + if (avdatum->specified & AVTAB_MEMBER) + avtab_member(avdatum) = le32_to_cpu(buf[items++]); + } + if (items != items2) { + printk(KERN_ERR "security: avtab: entry only had %d items, expected %d\n", + items2, items); + goto bad; + } + + return 0; +bad: + return -1; +} + int avtab_read(struct avtab *a, void *fp, u32 config) { int i, rc = EINVAL; @@ -204,33 +392,7 @@ goto bad; } for (i = 0; i < nel; i++) { - memset(&avkey, 0, sizeof(avkey)); - memset(&avdatum, 0, sizeof(avdatum)); - - buf = next_entry(fp, sizeof(u32)); - if (!buf) { - printk(KERN_ERR "security: avtab: truncated entry\n"); - goto bad; - } - items2 = le32_to_cpu(buf[0]); - buf = next_entry(fp, sizeof(u32)*items2); - if (!buf) { - printk(KERN_ERR "security: avtab: truncated entry\n"); - goto bad; - } - items = 0; - avkey.source_type = le32_to_cpu(buf[items++]); - avkey.target_type = le32_to_cpu(buf[items++]); - avkey.target_class = le32_to_cpu(buf[items++]); - avdatum.specified = le32_to_cpu(buf[items++]); - if (!(avdatum.specified & (AVTAB_AV | AVTAB_TYPE))) { - printk(KERN_ERR "security: avtab: null entry\n"); - goto bad; - } - if ((avdatum.specified & AVTAB_AV) && - (avdatum.specified & AVTAB_TYPE)) { - printk(KERN_ERR "security: avtab: entry has both " - "access vectors and types\n"); + if (avtab_read_item(fp, &avdatum, &avkey)) goto bad; } if (avdatum.specified & AVTAB_AV) { ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/avtab.h#5 (text+ko) ==== @@ -7,6 +7,16 @@ * * Author : Stephen Smalley, */ + +/* Updated: Frank Mayer and Karl MacMillan + * + * Added conditional policy language extensions + * + * Copyright (C) 2003 Tresys Technology, LLC + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + */ #ifndef _SS_AVTAB_H_ #define _SS_AVTAB_H_ @@ -59,8 +69,19 @@ void *args), void *args); void avtab_hash_eval(struct avtab *h, char *tag); + +int avtab_read_item(void *fp, struct avtab_datum *avdatum, struct avtab_key *avkey); int avtab_read(struct avtab *a, void *fp, u32 config); +struct avtab_node *avtab_insert_nonunique(struct avtab *h, struct avtab_key *key, + struct avtab_datum *datum); + +struct avtab_node *avtab_search_node(struct avtab *h, struct avtab_key *key, int specified); + +struct avtab_node *avtab_search_node_next(struct avtab_node *node, int specified); + +void avtab_cache_init(void); + #define AVTAB_HASH_BITS 15 #define AVTAB_HASH_BUCKETS (1 << AVTAB_HASH_BITS) #define AVTAB_HASH_MASK (AVTAB_HASH_BUCKETS-1) ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/constraint.h#4 (text+ko) ==== ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/context.h#4 (text+ko) ==== ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/ebitmap.c#4 (text+ko) ==== @@ -21,7 +21,7 @@ n1 = e1->node; n2 = e2->node; - prev = 0; + prev = NULL; while (n1 || n2) { new = kmalloc(sizeof(*new), GFP_ATOMIC); if (!new) { @@ -44,7 +44,7 @@ n2 = n2->next; } - new->next = 0; + new->next = NULL; if (prev) prev->next = new; else @@ -84,7 +84,7 @@ ebitmap_init(dst); n = src->node; - prev = 0; + prev = NULL; while (n) { new = kmalloc(sizeof(*new), GFP_ATOMIC); if (!new) { @@ -94,7 +94,7 @@ memset(new, 0, sizeof(*new)); new->startbit = n->startbit; new->map = n->map; - new->next = 0; + new->next = NULL; if (prev) prev->next = new; else @@ -159,7 +159,7 @@ { struct ebitmap_node *n, *prev, *new; - prev = 0; + prev = NULL; n = e->node; while (n && n->startbit <= bit) { if ((n->startbit + MAPSIZE) > bit) { @@ -235,7 +235,7 @@ } e->highbit = 0; - e->node = 0; + e->node = NULL; return; } @@ -257,8 +257,8 @@ count = le32_to_cpu(buf[2]); if (mapsize != MAPSIZE) { - printk(KERN_ERR "security: ebitmap: map size %d does not " - "match my size %d (high bit was %d)\n", mapsize, + printk(KERN_ERR "security: ebitmap: map size %u does not " + "match my size %Zd (high bit was %d)\n", mapsize, MAPSIZE, e->highbit); goto out; } @@ -268,7 +268,7 @@ } if (e->highbit & (MAPSIZE - 1)) { printk(KERN_ERR "security: ebitmap: high bit (%d) is not a " - "multiple of the map size (%d)\n", e->highbit, MAPSIZE); + "multiple of the map size (%Zd)\n", e->highbit, MAPSIZE); goto bad; } l = NULL; @@ -290,13 +290,13 @@ if (n->startbit & (MAPSIZE - 1)) { printk(KERN_ERR "security: ebitmap start bit (%d) is " - "not a multiple of the map size (%d)\n", + "not a multiple of the map size (%Zd)\n", n->startbit, MAPSIZE); goto bad_free; } if (n->startbit > (e->highbit - MAPSIZE)) { printk(KERN_ERR "security: ebitmap start bit (%d) is " - "beyond the end of the bitmap (%d)\n", + "beyond the end of the bitmap (%Zd)\n", n->startbit, (e->highbit - MAPSIZE)); goto bad_free; } ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/ebitmap.h#4 (text+ko) ==== ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/hashtab.c#4 (text+ko) ==== ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/hashtab.h#4 (text+ko) ==== ==== //depot/projects/trustedbsd/sebsd/sys/security/sebsd/ss/mls.c#4 (text+ko) ==== @@ -1,10 +1,7 @@ - -/* Author : Stephen Smalley (NAI Labs), */ - -/* FLASK */ - -/* +/* * Implementation of the multi-level security (MLS) policy. + * + * Author : Stephen Smalley, */ #include @@ -13,10 +10,10 @@ * Remove any permissions from `allowed' that are * denied by the MLS policy. */ -void mls_compute_av(context_struct_t * scontext, - context_struct_t * tcontext, - class_datum_t * tclass, - access_vector_t * allowed) +void mls_compute_av(struct context *scontext, + struct context *tcontext, + struct class_datum *tclass, + u32 *allowed) { unsigned int rel[2]; int l; @@ -63,12 +60,11 @@ } } - /* * Return the length in bytes for the MLS fields of the * security context string representation of `context'. */ -int mls_compute_context_len(context_struct_t * context) +int mls_compute_context_len(struct context * context) { int i, l, len; @@ -81,26 +77,25 @@ if (ebitmap_get_bit(&context->range.level[l].cat, i - 1)) len += strlen(policydb.p_cat_val_to_name[i - 1]) + 1; - if (mls_level_relation(context->range.level[0], context->range.level[1]) == MLS_RELATION_EQ) + if (mls_level_relation(context->range.level[0], context->range.level[1]) + == MLS_RELATION_EQ) break; } return len; } - /* - * Write the security context string representation of + * Write the security context string representation of * the MLS fields of `context' into the string `*scontext'. * Update `*scontext' to point to the end of the MLS fields. */ -int mls_sid_to_context(context_struct_t * context, +int mls_sid_to_context(struct context *context, char **scontext) { char *scontextp; int i, l; - scontextp = *scontext; for (l = 0; l < 2; l++) { @@ -116,7 +111,8 @@ *scontextp = ','; scontextp++; } - if (mls_level_relation(context->range.level[0], context->range.level[1]) != MLS_RELATION_EQ) { + if (mls_level_relation(context->range.level[0], context->range.level[1]) + != MLS_RELATION_EQ) { scontextp--; sprintf(scontextp, "-"); scontextp++; @@ -130,60 +126,59 @@ return 0; } - /* - * Return TRUE if the MLS fields in the security context - * structure `c' are valid. Return FALSE otherwise. + * Return 1 if the MLS fields in the security context + * structure `c' are valid. Return 0 otherwise. */ -int mls_context_isvalid(policydb_t *p, context_struct_t * c) +int mls_context_isvalid(struct policydb *p, struct context *c) { unsigned int relation; - level_datum_t *levdatum; - user_datum_t *usrdatum; - mls_range_list_t *rnode; + struct level_datum *levdatum; + struct user_datum *usrdatum; + struct mls_range_list *rnode; int i, l; - /* - * MLS range validity checks: high must dominate low, low level must - * be valid (category set <-> sensitivity check), and high level must + /* + * MLS range validity checks: high must dominate low, low level must + * be valid (category set <-> sensitivity check), and high level must * be valid (category set <-> sensitivity check) */ relation = mls_level_relation(c->range.level[1], c->range.level[0]); if (!(relation & (MLS_RELATION_DOM | MLS_RELATION_EQ))) /* High does not dominate low. */ - return FALSE; + return 0; for (l = 0; l < 2; l++) { if (!c->range.level[l].sens || c->range.level[l].sens > p->p_levels.nprim) - return FALSE; - levdatum = (level_datum_t *) hashtab_search(p->p_levels.table, - p->p_sens_val_to_name[c->range.level[l].sens - 1]); + return 0; + levdatum = hashtab_search(p->p_levels.table, + p->p_sens_val_to_name[c->range.level[l].sens - 1]); if (!levdatum) - return FALSE; + return 0; for (i = 1; i <= ebitmap_length(&c->range.level[l].cat); i++) { if (ebitmap_get_bit(&c->range.level[l].cat, i - 1)) { if (i > p->p_cats.nprim) - return FALSE; + return 0; if (!ebitmap_get_bit(&levdatum->level->cat, i - 1)) /* * Category may not be associated with * sensitivity in low level. */ - return FALSE; + return 0; } } } - if (c->role == OBJECT_R_VAL) - return TRUE; + if (c->role == OBJECT_R_VAL) + return 1; /* * User must be authorized for the MLS range. */ if (!c->user || c->user > p->p_users.nprim) - return FALSE; + return 0; usrdatum = p->user_val_to_struct[c->user - 1]; for (rnode = usrdatum->ranges; rnode; rnode = rnode->next) { if (mls_range_contains(rnode->range, c->range)) @@ -191,9 +186,9 @@ } if (!rnode) /* user may not be associated with range */ - return FALSE; + return 0; - return TRUE; + return 1; } @@ -202,33 +197,33 @@ * `context' based on the string representation in * the string `*scontext'. Update `*scontext' to * point to the end of the string representation of - * the MLS fields. + * the MLS fields. * * This function modifies the string in place, inserting - * NULL characters to terminate the MLS fields. + * NULL characters to terminate the MLS fields. */ int mls_context_to_sid(char oldc, char **scontext, - context_struct_t * context) + struct context *context) { char delim; char *scontextp, *p; - level_datum_t *levdatum; - cat_datum_t *catdatum; - int l; + struct level_datum *levdatum; + struct cat_datum *catdatum; + int l, rc = -EINVAL; if (!oldc) { /* No MLS component to the security context. Try to use a default 'unclassified' value. */ - levdatum = (level_datum_t *) hashtab_search(policydb.p_levels.table, - (hashtab_key_t) "unclassified"); - + levdatum = hashtab_search(policydb.p_levels.table, + "unclassified"); if (!levdatum) - return -EINVAL; + goto out; context->range.level[0].sens = levdatum->level->sens; context->range.level[1].sens = context->range.level[0].sens; - return 0; + rc = 0; + goto out; } /* Extract low sensitivity. */ @@ -241,11 +236,9 @@ *p++ = 0; for (l = 0; l < 2; l++) { - levdatum = (level_datum_t *) hashtab_search(policydb.p_levels.table, - (hashtab_key_t) scontextp); - + levdatum = hashtab_search(policydb.p_levels.table, scontextp); if (!levdatum) - return -EINVAL; + goto out; context->range.level[l].sens = levdatum->level->sens; @@ -259,15 +252,15 @@ if (delim != 0) *p++ = 0; - catdatum = (cat_datum_t *) hashtab_search(policydb.p_cats.table, - (hashtab_key_t) scontextp); - + catdatum = hashtab_search(policydb.p_cats.table, + scontextp); if (!catdatum) - return -EINVAL; + goto out; - if (!ebitmap_set_bit(&context->range.level[l].cat, - catdatum->value - 1, TRUE)) - return -ENOMEM; + rc = ebitmap_set_bit(&context->range.level[l].cat, + catdatum->value - 1, 1); + if (rc) + goto out; if (delim != ',') break; } @@ -287,50 +280,55 @@ if (l == 0) { context->range.level[1].sens = context->range.level[0].sens; - ebitmap_cpy(&context->range.level[1].cat, &context->range.level[0].cat); + rc = ebitmap_cpy(&context->range.level[1].cat, + &context->range.level[0].cat); + if (rc) + goto out; } - *scontext = p; - return 0; + *scontext = ++p; + rc = 0; +out: + return rc; } - -/* +/* * Copies the MLS range from `src' into `dst'. */ -static __inline int mls_copy_context(context_struct_t * dst, - context_struct_t * src) +static inline int mls_copy_context(struct context *dst, + struct context *src) { - int l; + int l, rc = 0; /* Copy the MLS range from the source context */ for (l = 0; l < 2; l++) { + dst->range.level[l].sens = src->range.level[l].sens; - if (!ebitmap_cpy(&dst->range.level[l].cat, &src->range.level[l].cat)) - return -ENOMEM; + rc = ebitmap_cpy(&dst->range.level[l].cat, + &src->range.level[l].cat); + if (rc) + break; } - return 0; + return rc; } - -/* +/* * Convert the MLS fields in the security context * structure `c' from the values specified in the * policy `oldp' to the values specified in the policy `newp'. */ -int mls_convert_context(policydb_t * oldp, - policydb_t * newp, - context_struct_t * c) +int mls_convert_context(struct policydb *oldp, >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Fri Nov 19 20:16:36 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E8F2316A4D0; Fri, 19 Nov 2004 20:16:35 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C008816A4CE for ; Fri, 19 Nov 2004 20:16:35 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9AB2143D54 for ; Fri, 19 Nov 2004 20:16:35 +0000 (GMT) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAJKGZH5073525 for ; Fri, 19 Nov 2004 20:16:35 GMT (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAJKGZwS073522 for perforce@freebsd.org; Fri, 19 Nov 2004 20:16:35 GMT (envelope-from jhb@freebsd.org) Date: Fri, 19 Nov 2004 20:16:35 GMT Message-Id: <200411192016.iAJKGZwS073522@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin To: Perforce Change Reviews Subject: PERFORCE change 65466 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Nov 2004 20:16:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=65466 Change 65466 by jhb@jhb_slimer on 2004/11/19 20:16:10 Compile fix. Affected files ... .. //depot/projects/smpng/sys/amd64/include/atomic.h#5 edit Differences ... ==== //depot/projects/smpng/sys/amd64/include/atomic.h#5 (text+ko) ==== @@ -70,7 +70,7 @@ int atomic_cmpset_int(volatile u_int *dst, u_int exp, u_int src); int atomic_cmpset_long(volatile u_long *dst, u_long exp, u_long src); -#define ATOMIC_STORE_LOAD(TYPE, LOP, SOP) \ +#define ATOMIC_STORE_LOAD(TYPE) \ u_##TYPE atomic_load_acq_##TYPE(volatile u_##TYPE *p); \ void atomic_store_rel_##TYPE(volatile u_##TYPE *p, u_##TYPE v) From owner-p4-projects@FreeBSD.ORG Fri Nov 19 22:07:52 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C487D16A4D0; Fri, 19 Nov 2004 22:07:51 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 998B116A4CE for ; Fri, 19 Nov 2004 22:07:51 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7695943D1F for ; Fri, 19 Nov 2004 22:07:51 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAJM7ptg085233 for ; Fri, 19 Nov 2004 22:07:51 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAJM7pXW085230 for perforce@freebsd.org; Fri, 19 Nov 2004 22:07:51 GMT (envelope-from sam@freebsd.org) Date: Fri, 19 Nov 2004 22:07:51 GMT Message-Id: <200411192207.iAJM7pXW085230@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65471 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Nov 2004 22:07:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=65471 Change 65471 by sam@sam_ebb on 2004/11/19 22:07:33 tx power support Affected files ... .. //depot/projects/wifi/sys/net80211/ieee80211.c#9 edit .. //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#16 edit .. //depot/projects/wifi/sys/net80211/ieee80211_ioctl.h#10 edit .. //depot/projects/wifi/sys/net80211/ieee80211_node.c#17 edit .. //depot/projects/wifi/sys/net80211/ieee80211_var.h#12 edit Differences ... ==== //depot/projects/wifi/sys/net80211/ieee80211.c#9 (text+ko) ==== @@ -130,6 +130,7 @@ if (ic->ic_lintval == 0) ic->ic_lintval = 100; /* default sleep */ ic->ic_bmisstimeout = 7*ic->ic_lintval; /* default 7 beacons */ + ic->ic_txpowlimit = IEEE80211_TXPOWER_MAX; ieee80211_node_attach(ic); ieee80211_proto_attach(ic); ==== //depot/projects/wifi/sys/net80211/ieee80211_ioctl.c#16 (text+ko) ==== @@ -1114,6 +1114,29 @@ } static int +ieee80211_ioctl_getstatxpow(struct ieee80211com *ic, struct ieee80211req *ireq) +{ + struct ieee80211_node *ni; + struct ieee80211req_sta_txpow txpow; + int error; + + if (ireq->i_len != sizeof(txpow)) + return EINVAL; + error = copyin(ireq->i_data, &txpow, sizeof(txpow)); + if (error != 0) + return error; + if (ic->ic_sta == NULL) + return EINVAL; + ni = ieee80211_find_node(ic->ic_sta, txpow.it_macaddr); + if (ni == NULL) + return EINVAL; /* XXX */ + txpow.it_txpow = ni->ni_txpower; + error = copyout(&txpow, ireq->i_data, sizeof(txpow)); + ieee80211_free_node(ni); + return error; +} + +static int ieee80211_ioctl_get80211(struct ieee80211com *ic, u_long cmd, struct ieee80211req *ireq) { const struct ieee80211_rsnparms *rsn = &ic->ic_bss->ni_rsn; @@ -1196,7 +1219,7 @@ case IEEE80211_IOC_TXPOWER: if ((ic->ic_caps & IEEE80211_C_TXPMGT) == 0) return EINVAL; - ireq->i_val = ic->ic_bss->ni_txpower; + ireq->i_val = ic->ic_txpowlimit; break; case IEEE80211_IOC_MCASTCIPHER: ireq->i_val = rsn->rsn_mcastcipher; @@ -1294,6 +1317,12 @@ case IEEE80211_IOC_STA_STATS: error = ieee80211_ioctl_getstastats(ic, ireq); break; + case IEEE80211_IOC_TXPOWMAX: + ireq->i_val = ic->ic_bss->ni_txpower; + break; + case IEEE80211_IOC_STA_TXPOW: + error = ieee80211_ioctl_getstatxpow(ic, ireq); + break; case IEEE80211_IOC_STA_INFO: error = ieee80211_ioctl_getstainfo(ic, ireq); break; @@ -1599,6 +1628,28 @@ } static int +ieee80211_ioctl_setstatxpow(struct ieee80211com *ic, struct ieee80211req *ireq) +{ + struct ieee80211_node *ni; + struct ieee80211req_sta_txpow txpow; + int error; + + if (ireq->i_len != sizeof(txpow)) + return EINVAL; + error = copyin(ireq->i_data, &txpow, sizeof(txpow)); + if (error != 0) + return error; + if (ic->ic_sta == NULL) + return EINVAL; + ni = ieee80211_find_node(ic->ic_sta, txpow.it_macaddr); + if (ni == NULL) + return EINVAL; /* XXX */ + ni->ni_txpower = txpow.it_txpow; + ieee80211_free_node(ni); + return error; +} + +static int cipher2cap(int cipher) { switch (cipher) { @@ -1810,7 +1861,7 @@ if (!(IEEE80211_TXPOWER_MIN < ireq->i_val && ireq->i_val < IEEE80211_TXPOWER_MAX)) return EINVAL; - ic->ic_bss->ni_txpower = ireq->i_val; + ic->ic_txpowlimit = ireq->i_val; error = IS_UP(ic) ? ic->ic_reset(ic->ic_ifp) : 0; break; case IEEE80211_IOC_ROAMING: @@ -1979,6 +2030,9 @@ case IEEE80211_IOC_MACCMD: error = ieee80211_ioctl_maccmd(ic, ireq); break; + case IEEE80211_IOC_STA_TXPOW: + error = ieee80211_ioctl_setstatxpow(ic, ireq); + break; default: error = EINVAL; break; ==== //depot/projects/wifi/sys/net80211/ieee80211_ioctl.h#10 (text+ko) ==== @@ -321,6 +321,14 @@ struct ieee80211req_sta_info info[1]; /* variable length */ }; +/* + * Get/set per-station tx power cap. + */ +struct ieee80211req_sta_txpow { + u_int8_t it_macaddr[IEEE80211_ADDR_LEN]; + u_int8_t it_txpow; +}; + #ifdef __FreeBSD__ /* * FreeBSD-style ioctls. @@ -362,7 +370,7 @@ #define IEEE80211_PROTMODE_OFF 0 #define IEEE80211_PROTMODE_CTS 1 #define IEEE80211_PROTMODE_RTSCTS 2 -#define IEEE80211_IOC_TXPOWER 14 +#define IEEE80211_IOC_TXPOWER 14 /* global tx power limit */ #define IEEE80211_IOC_BSSID 15 #define IEEE80211_IOC_ROAMING 16 /* roaming mode */ #define IEEE80211_IOC_PRIVACY 17 /* privacy invoked */ @@ -391,7 +399,8 @@ #define IEEE80211_IOC_STA_STATS 40 /* per-station statistics */ #define IEEE80211_IOC_MACCMD 41 /* MAC ACL operation */ #define IEEE80211_IOC_CHANINFO 42 /* channel info list */ -/* 43-44 available */ +#define IEEE80211_IOC_TXPOWMAX 43 /* max tx power for channel */ +#define IEEE80211_IOC_STA_TXPOW 44 /* per-station tx power limit */ #define IEEE80211_IOC_STA_INFO 45 /* station/neighbor info */ /* ==== //depot/projects/wifi/sys/net80211/ieee80211_node.c#17 (text+ko) ==== @@ -162,10 +162,6 @@ rsn->rsn_keymgmtset = WPA_ASE_8021X_UNSPEC | WPA_ASE_8021X_PSK; rsn->rsn_keymgmt = WPA_ASE_8021X_PSK; - ni->ni_chan = IEEE80211_CHAN_ANYC; - ni->ni_authmode = IEEE80211_AUTH_OPEN; - ni->ni_txpower = IEEE80211_TXPOWER_MAX; - ieee80211_crypto_resetkey(ic, &ni->ni_ucastkey, IEEE80211_KEYIX_NONE); ic->ic_bss = ni; ieee80211_ref_node(ic->ic_bss); /* hold reference */ ic->ic_auth = ieee80211_authenticator_get(ni->ni_authmode); @@ -886,6 +882,9 @@ IEEE80211_ADDR_COPY(ni->ni_macaddr, macaddr); hash = IEEE80211_NODE_HASH(macaddr); ieee80211_node_initref(ni); /* mark referenced */ + ni->ni_chan = IEEE80211_CHAN_ANYC; + ni->ni_authmode = IEEE80211_AUTH_OPEN; + ni->ni_txpower = ic->ic_txpowlimit; /* max power */ ieee80211_crypto_resetkey(ic, &ni->ni_ucastkey, IEEE80211_KEYIX_NONE); ni->ni_inact = nt->nt_inact_init; ==== //depot/projects/wifi/sys/net80211/ieee80211_var.h#12 (text+ko) ==== @@ -128,6 +128,7 @@ u_int16_t ic_txmin; /* min tx retry count */ u_int16_t ic_txmax; /* max tx retry count */ u_int16_t ic_txlifetime; /* tx lifetime */ + u_int16_t ic_txpowlimit; /* global tx power limit */ u_int16_t ic_bmisstimeout;/* beacon miss threshold (ms) */ u_int16_t ic_nonerpsta; /* # non-ERP stations */ u_int16_t ic_longslotsta; /* # long slot time stations */ From owner-p4-projects@FreeBSD.ORG Fri Nov 19 22:11:57 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 6072D16A4D0; Fri, 19 Nov 2004 22:11:57 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1E07016A4CE for ; Fri, 19 Nov 2004 22:11:57 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id DE8EE43D55 for ; Fri, 19 Nov 2004 22:11:56 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAJMBuhM085362 for ; Fri, 19 Nov 2004 22:11:56 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAJMBumw085359 for perforce@freebsd.org; Fri, 19 Nov 2004 22:11:56 GMT (envelope-from sam@freebsd.org) Date: Fri, 19 Nov 2004 22:11:56 GMT Message-Id: <200411192211.iAJMBumw085359@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65472 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Nov 2004 22:11:58 -0000 http://perforce.freebsd.org/chv.cgi?CH=65472 Change 65472 by sam@sam_ebb on 2004/11/19 22:11:41 o cleanup tx queue setup to not use the number of h/w queues but instead fall back to using a single data queue if we cannot allocate sufficient queues for all the AC's o correct problems cleaning up tx q state during failure in attach o tx power support o correct TXDESCINT setup to use 802.11 packet type and not hal packet type (some management frames were not being marked 'cuz they mappy to a normal packet) o add sysctl's for futzing with tp scale factor and per-packet tpc Affected files ... .. //depot/projects/wifi/sys/dev/ath/if_ath.c#24 edit .. //depot/projects/wifi/sys/dev/ath/if_athvar.h#8 edit Differences ... ==== //depot/projects/wifi/sys/dev/ath/if_ath.c#24 (text+ko) ==== @@ -132,9 +132,10 @@ struct ieee80211_node *ni, int subtype, int rssi, u_int32_t rstamp); static void ath_rx_proc(void *, int); -static struct ath_txq *ath_txq_setup(struct ath_softc *, int qtype, - int subtype, const char *typename); +static struct ath_txq *ath_txq_setup(struct ath_softc*, int qtype, int subtype); static int ath_tx_setup(struct ath_softc *, int, int); +static void ath_tx_cleanupq(struct ath_softc *, struct ath_txq *); +static void ath_tx_cleanup(struct ath_softc *); static int ath_tx_start(struct ath_softc *, struct ieee80211_node *, struct ath_buf *, struct mbuf *); static void ath_tx_proc_q0(void *, int); @@ -153,6 +154,7 @@ static int ath_getchannels(struct ath_softc *, u_int cc, HAL_BOOL outdoor, HAL_BOOL xchanmode); static void ath_update_led(struct ath_softc *); +static void ath_update_txpow(struct ath_softc *); static int ath_rate_setup(struct ath_softc *, u_int mode); static void ath_setcurmode(struct ath_softc *, enum ieee80211_phymode); @@ -248,7 +250,6 @@ struct ath_hal *ah; HAL_STATUS status; int error = 0, i; - u_int32_t numqs; DPRINTF(sc, ATH_DEBUG_ANY, "%s: devid 0x%x\n", __func__, devid); @@ -377,39 +378,36 @@ error = EIO; goto bad2; } - sc->sc_cabq = ath_txq_setup(sc, HAL_TX_QUEUE_CAB, 0, "CAB"); + sc->sc_cabq = ath_txq_setup(sc, HAL_TX_QUEUE_CAB, 0); if (sc->sc_cabq == NULL) { if_printf(ifp, "unable to setup CAB xmit queue!\n"); error = EIO; goto bad2; } - (void) ath_hal_getnumtxqueues(ah, &numqs); - if (numqs < 5) { - int qnum; - /* + /* NB: insure BK queue is the lowest priority h/w queue */ + if (!ath_tx_setup(sc, WME_AC_BK, HAL_WME_AC_BK)) { + if_printf(ifp, "unable to setup xmit queue for %s traffic!\n", + acnames[WME_AC_BK]); + error = EIO; + goto bad2; + } + if (!ath_tx_setup(sc, WME_AC_BE, HAL_WME_AC_BE) || + !ath_tx_setup(sc, WME_AC_VI, HAL_WME_AC_VI) || + !ath_tx_setup(sc, WME_AC_VO, HAL_WME_AC_VO)) { + /* * Not enough hardware tx queues to properly do WME; * just punt and assign them all to the same h/w queue. * We could do a better job of this if, for example, - * we allocate queues when we switch from station - * to AP mode. + * we allocate queues when we switch from station to + * AP mode. */ - if (!ath_tx_setup(sc, WME_AC_BK, HAL_WME_AC_BK)) { - error = EIO; - goto bad2; - } - qnum = sc->sc_txq[WME_AC_BK].axq_qnum; - sc->sc_ac2q[WME_AC_BE] = &sc->sc_txq[qnum]; - sc->sc_ac2q[WME_AC_VI] = &sc->sc_txq[qnum]; - sc->sc_ac2q[WME_AC_VO] = &sc->sc_txq[qnum]; - } else { - /* NB: insure BK queue is h/w queue 0 */ - if (!ath_tx_setup(sc, WME_AC_BK, HAL_WME_AC_BK) || - !ath_tx_setup(sc, WME_AC_BE, HAL_WME_AC_BE) || - !ath_tx_setup(sc, WME_AC_VI, HAL_WME_AC_VI) || - !ath_tx_setup(sc, WME_AC_VO, HAL_WME_AC_VO)) { - error = EIO; - goto bad2; - } + if (sc->sc_ac2q[WME_AC_VI] != NULL) + ath_tx_cleanupq(sc, sc->sc_ac2q[WME_AC_VI]); + if (sc->sc_ac2q[WME_AC_BE] != NULL) + ath_tx_cleanupq(sc, sc->sc_ac2q[WME_AC_BE]); + sc->sc_ac2q[WME_AC_BE] = sc->sc_ac2q[WME_AC_BK]; + sc->sc_ac2q[WME_AC_VI] = sc->sc_ac2q[WME_AC_BK]; + sc->sc_ac2q[WME_AC_VO] = sc->sc_ac2q[WME_AC_BK]; } /* @@ -470,7 +468,6 @@ | IEEE80211_C_MONITOR /* monitor mode */ | IEEE80211_C_SHPREAMBLE /* short preamble supported */ | IEEE80211_C_SHSLOT /* short slot time supported */ - | IEEE80211_C_TXPMGT /* transmit power control */ | IEEE80211_C_WPA /* capable of WPA1+WPA2 */ ; /* @@ -497,6 +494,15 @@ sc->sc_splitmic = 1; } /* + * TPC support can be done either with a global cap or + * per-packet support. The latter is not available on + * all parts. We're a bit pedantic here as all parts + * support a global cap. + */ + sc->sc_hastpc = ath_hal_hastpc(ah); + if (sc->sc_hastpc || ath_hal_hastxpowlimit(ah)) + ic->ic_caps |= IEEE80211_C_TXPMGT; + /* * Indicate we need the 802.11 header padded to a * 32-bit boundary for 4-address and QoS frames. */ @@ -515,7 +521,7 @@ * Not all chips have the VEOL support we want to * use with IBSS beacons; check here for it. */ - sc->sc_hasveol = ath_hal_veolsupported(ah); + sc->sc_hasveol = ath_hal_hasveol(ah); /* get mac address from hardware */ ath_hal_getmac(ah, ic->ic_myaddr); @@ -546,14 +552,7 @@ ath_announce(sc); return 0; bad2: - if (ATH_TXQ_SETUP(sc, WME_AC_BK)) - ATH_TXQ_LOCK_DESTROY(&sc->sc_txq[WME_AC_BK]); - if (ATH_TXQ_SETUP(sc, WME_AC_BE)) - ATH_TXQ_LOCK_DESTROY(&sc->sc_txq[WME_AC_BE]); - if (ATH_TXQ_SETUP(sc, WME_AC_VI)) - ATH_TXQ_LOCK_DESTROY(&sc->sc_txq[WME_AC_VI]); - if (ATH_TXQ_SETUP(sc, WME_AC_VO)) - ATH_TXQ_LOCK_DESTROY(&sc->sc_txq[WME_AC_VO]); + ath_tx_cleanup(sc); ath_desc_free(sc); bad: if (ah) @@ -566,33 +565,30 @@ ath_detach(struct ath_softc *sc) { struct ifnet *ifp = &sc->sc_if; - int i; DPRINTF(sc, ATH_DEBUG_ANY, "%s: if_flags %x\n", __func__, ifp->if_flags); ath_stop(ifp); bpfdetach(ifp); - /* - * NB: Must do this before detaching the hal to insure - * callbacks into the driver to delete global key - * entries can be handled. + /* + * NB: the order of these is important: + * o call the 802.11 layer before detaching the hal to + * insure callbacks into the driver to delete global + * key cache entries can be handled + * o reclaim the tx queue data structures after calling + * the 802.11 layer as we'll get called back to reclaim + * node state and potentially want to use them + * o to cleanup the tx queues the hal is called, so detach + * it last + * Other than that, it's straightforward... */ ieee80211_ifdetach(&sc->sc_ic); ath_rate_detach(sc->sc_rc); ath_desc_free(sc); + ath_tx_cleanup(sc); ath_hal_detach(sc->sc_ah); - /* - * NB: can't reclaim these until after ieee80211_ifdetach - * returns because we'll get called back to reclaim node - * state and potentially want to use them. - */ - ATH_TXBUF_LOCK_DESTROY(sc); - for (i = 0; i < HAL_NUM_TX_QUEUES; i++) - if (ATH_TXQ_SETUP(sc, i)) - ATH_TXQ_LOCK_DESTROY(&sc->sc_txq[i]); - return 0; } @@ -834,6 +830,12 @@ } /* + * This is needed only to setup initial state + * but it's best done after a reset. + */ + ath_update_txpow(sc); + + /* * Setup the hardware after reset: the key cache * is filled as needed and the receive engine is * set going. Frame transmit is handled entirely @@ -981,6 +983,7 @@ if (!ath_hal_reset(ah, ic->ic_opmode, &sc->sc_curchan, AH_TRUE, &status)) if_printf(ifp, "%s: unable to reset hardware; hal status %u\n", __func__, status); + ath_update_txpow(sc); /* update tx power state */ if (ath_startrecv(sc) != 0) /* restart recv */ if_printf(ifp, "%s: unable to start recv logic\n", __func__); /* @@ -1670,7 +1673,7 @@ , m->m_len + IEEE80211_CRC_LEN /* frame length */ , sizeof(struct ieee80211_frame)/* header length */ , HAL_PKT_TYPE_BEACON /* Atheros packet type */ - , MIN(ni->ni_txpower,60) /* txpower XXX */ + , ni->ni_txpower /* txpower XXX */ , rate, 1 /* series 0 rate/tries */ , HAL_TXKEYIX_INVALID /* no encryption */ , 0 /* antenna mode */ @@ -2580,7 +2583,7 @@ * Setup a h/w transmit queue. */ static struct ath_txq * -ath_txq_setup(struct ath_softc *sc, int qtype, int subtype, const char *typename) +ath_txq_setup(struct ath_softc *sc, int qtype, int subtype) { #define N(a) (sizeof(a)/sizeof(a[0])) struct ath_hal *ah = sc->sc_ah; @@ -2607,9 +2610,10 @@ qi.tqi_qflags = TXQ_FLAG_TXEOLINT_ENABLE | TXQ_FLAG_TXDESCINT_ENABLE; qnum = ath_hal_setuptxqueue(ah, qtype, &qi); if (qnum == -1) { - device_printf(sc->sc_dev, - "Unable to setup hardware queue for %s traffic!\n", - typename); + /* + * NB: don't print a message, this happens + * ormally on parts with too few tx queues + */ return NULL; } if (qnum >= N(sc->sc_txq)) { @@ -2653,7 +2657,7 @@ ac, N(sc->sc_ac2q)); return 0; } - txq = ath_txq_setup(sc, HAL_TX_QUEUE_DATA, haltype, acnames[ac]); + txq = ath_txq_setup(sc, HAL_TX_QUEUE_DATA, haltype); if (txq != NULL) { sc->sc_ac2q[ac] = txq; return 1; @@ -2662,6 +2666,32 @@ #undef N } +/* + * Reclaim resources for a setup queue. + */ +static void +ath_tx_cleanupq(struct ath_softc *sc, struct ath_txq *txq) +{ + + ath_hal_releasetxqueue(sc->sc_ah, txq->axq_qnum); + ATH_TXQ_LOCK_DESTROY(txq); + sc->sc_txqsetup &= ~(1<axq_qnum); +} + +/* + * Reclaim all tx queue resources. + */ +static void +ath_tx_cleanup(struct ath_softc *sc) +{ + int i; + + ATH_TXBUF_LOCK_DESTROY(sc); + for (i = 0; i < HAL_NUM_TX_QUEUES; i++) + if (ATH_TXQ_SETUP(sc, i)) + ath_tx_cleanupq(sc, &sc->sc_txq[i]); +} + static int ath_tx_start(struct ath_softc *sc, struct ieee80211_node *ni, struct ath_buf *bf, struct mbuf *m0) @@ -2809,6 +2839,7 @@ } an = ATH_NODE(ni); + flags = HAL_TXDESC_CLRDMASK; /* XXX needed for crypto errs */ /* * Calculate Atheros packet type from IEEE80211 packet header, * setup for rate calculations, and select h/w transmit queue. @@ -2832,6 +2863,7 @@ txrate = an->an_tx_mgtrate; /* NB: force all management frames to highest queue */ txq = sc->sc_ac2q[WME_AC_VO]; + flags |= HAL_TXDESC_INTREQ; /* force interrupt */ break; case IEEE80211_FC0_TYPE_CTL: atype = HAL_PKT_TYPE_PSPOLL; /* stop setting of duration */ @@ -2843,6 +2875,7 @@ txrate = an->an_tx_mgtrate; /* NB: force all ctl frames to highest queue */ txq = sc->sc_ac2q[WME_AC_VO]; + flags |= HAL_TXDESC_INTREQ; /* force interrupt */ break; case IEEE80211_FC0_TYPE_DATA: atype = HAL_PKT_TYPE_NORMAL; /* default */ @@ -2881,7 +2914,6 @@ /* * Calculate miscellaneous flags. */ - flags = HAL_TXDESC_CLRDMASK; /* XXX needed for crypto errs */ if (ismcast) { flags |= HAL_TXDESC_NOACK; /* no ack on broad/multicast */ sc->sc_stats.ast_tx_noack++; @@ -2983,7 +3015,7 @@ if (iswep) sc->sc_tx_th.wt_flags |= IEEE80211_RADIOTAP_F_WEP; sc->sc_tx_th.wt_rate = ni->ni_rates.rs_rates[ni->ni_txrate]; - sc->sc_tx_th.wt_txpower = MIN(ni->ni_txpower,60); + sc->sc_tx_th.wt_txpower = ni->ni_txpower; sc->sc_tx_th.wt_antenna = sc->sc_txantenna; bpf_mtap2(sc->sc_drvbpf, @@ -3005,8 +3037,9 @@ * NB: use >= to deal with sc_txintrperiod changing * dynamically through sysctl. */ - if (atype != HAL_PKT_TYPE_NORMAL || - ++txq->axq_intrcnt >= sc->sc_txintrperiod) { + if (flags & HAL_TXDESC_INTREQ) { + txq->axq_intrcnt = 0; + } else if (++txq->axq_intrcnt >= sc->sc_txintrperiod) { flags |= HAL_TXDESC_INTREQ; txq->axq_intrcnt = 0; } @@ -3019,7 +3052,7 @@ , pktlen /* packet length */ , hdrlen /* header length */ , atype /* Atheros packet type */ - , MIN(ni->ni_txpower,60)/* txpower */ + , ni->ni_txpower /* txpower */ , txrate, try0 /* series 0 rate/tries */ , keyix /* key cache index */ , sc->sc_txantenna /* antenna mode */ @@ -3466,6 +3499,7 @@ return EIO; } sc->sc_curchan = hchan; + ath_update_txpow(sc); /* update tx power state */ /* * Re-enable rx framework. @@ -3739,6 +3773,26 @@ } } +static void +ath_update_txpow(struct ath_softc *sc) +{ + struct ieee80211com *ic = &sc->sc_ic; + struct ath_hal *ah = sc->sc_ah; + u_int32_t txpow; + + if (sc->sc_curtxpow != ic->ic_txpowlimit) { + ath_hal_settxpowlimit(ah, ic->ic_txpowlimit); + /* read back in case value is clamped */ + ath_hal_gettxpowlimit(ah, &txpow); + ic->ic_txpowlimit = sc->sc_curtxpow = txpow; + } + /* + * Fetch max tx power level for status requests. + */ + ath_hal_getmaxtxpow(sc->sc_ah, &txpow); + ic->ic_bss->ni_txpower = txpow; +} + static int ath_rate_setup(struct ath_softc *sc, u_int mode) { @@ -3863,9 +3917,8 @@ ath_reset(ifp); ifp->if_oerrors++; sc->sc_stats.ast_watchdog++; - return; - } - ifp->if_timer = 1; + } else + ifp->if_timer = 1; } ieee80211_watchdog(ic); } @@ -4109,6 +4162,34 @@ return !ath_hal_setdiag(sc->sc_ah, diag) ? EINVAL : 0; } +static int +ath_sysctl_tpscale(SYSCTL_HANDLER_ARGS) +{ + struct ath_softc *sc = arg1; + struct ifnet *ifp = &sc->sc_if; + u_int32_t scale; + int error; + + ath_hal_gettpscale(sc->sc_ah, &scale); + error = sysctl_handle_int(oidp, &scale, 0, req); + if (error || !req->newptr) + return error; + return !ath_hal_settpscale(sc->sc_ah, scale) ? EINVAL : ath_reset(ifp); +} + +static int +ath_sysctl_tpc(SYSCTL_HANDLER_ARGS) +{ + struct ath_softc *sc = arg1; + u_int tpc = ath_hal_gettpc(sc->sc_ah); + int error; + + error = sysctl_handle_int(oidp, &tpc, 0, req); + if (error || !req->newptr) + return error; + return !ath_hal_settpc(sc->sc_ah, tpc) ? EINVAL : 0; +} + static void ath_sysctlattach(struct ath_softc *sc) { @@ -4160,6 +4241,13 @@ SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, "diag", CTLTYPE_INT | CTLFLAG_RW, sc, 0, ath_sysctl_diag, "I", "h/w diagnostic control"); + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, + "tpscale", CTLTYPE_INT | CTLFLAG_RW, sc, 0, + ath_sysctl_tpscale, "I", "tx power scaling"); + if (sc->sc_hastpc) + SYSCTL_ADD_PROC(ctx, SYSCTL_CHILDREN(tree), OID_AUTO, + "tpc", CTLTYPE_INT | CTLFLAG_RW, sc, 0, + ath_sysctl_tpc, "I", "enable/disable per-packet TPC"); } static void ==== //depot/projects/wifi/sys/dev/ath/if_athvar.h#8 (text+ko) ==== @@ -156,11 +156,13 @@ sc_needmib : 1, /* enable MIB stats intr */ sc_hasdiversity : 1,/* rx diversity available */ sc_diversity : 1,/* enable rx diversity */ - sc_hasveol : 1; /* tx VEOL support */ + sc_hasveol : 1, /* tx VEOL support */ + sc_hastpc : 1; /* per-packet TPC support */ /* rate tables */ const HAL_RATE_TABLE *sc_rates[IEEE80211_MODE_MAX]; const HAL_RATE_TABLE *sc_currates; /* current rate table */ enum ieee80211_phymode sc_curmode; /* current phy mode */ + u_int16_t sc_curtxpow; /* current tx power limit */ HAL_CHANNEL sc_curchan; /* current h/w channel */ u_int8_t sc_rixmap[256]; /* IEEE to h/w rate table ix */ u_int8_t sc_hwmap[32]; /* h/w rate ix to IEEE table */ @@ -351,8 +353,6 @@ ((*(_ah)->ah_resetTxQueue)((_ah), (_q))) #define ath_hal_releasetxqueue(_ah, _q) \ ((*(_ah)->ah_releaseTxQueue)((_ah), (_q))) -#define ath_hal_hasveol(_ah) \ - ((*(_ah)->ah_hasVEOL)((_ah))) #define ath_hal_getrfgain(_ah) \ ((*(_ah)->ah_getRfGain)((_ah))) #define ath_hal_getdefantenna(_ah) \ @@ -401,8 +401,26 @@ ath_hal_setcapability(_ah, HAL_CAP_DIAG, 0, _v, NULL) #define ath_hal_getnumtxqueues(_ah, _pv) \ (ath_hal_getcapability(_ah, HAL_CAP_NUM_TXQUEUES, 0, _pv) == HAL_OK) -#define ath_hal_veolsupported(_ah) \ +#define ath_hal_hasveol(_ah) \ (ath_hal_getcapability(_ah, HAL_CAP_VEOL, 0, NULL) == HAL_OK) +#define ath_hal_hastxpowlimit(_ah) \ + (ath_hal_getcapability(_ah, HAL_CAP_TXPOW, 0, NULL) == HAL_OK) +#define ath_hal_settxpowlimit(_ah, _pow) \ + ((*(_ah)->ah_setTxPowerLimit)((_ah), (_pow))) +#define ath_hal_gettxpowlimit(_ah, _ppow) \ + (ath_hal_getcapability(_ah, HAL_CAP_TXPOW, 1, _ppow) == HAL_OK) +#define ath_hal_getmaxtxpow(_ah, _ppow) \ + (ath_hal_getcapability(_ah, HAL_CAP_TXPOW, 2, _ppow) == HAL_OK) +#define ath_hal_gettpscale(_ah, _scale) \ + (ath_hal_getcapability(_ah, HAL_CAP_TXPOW, 3, _scale) == HAL_OK) +#define ath_hal_settpscale(_ah, _v) \ + ath_hal_setcapability(_ah, HAL_CAP_TXPOW, 3, _v, NULL) +#define ath_hal_hastpc(_ah) \ + (ath_hal_getcapability(_ah, HAL_CAP_TPC, 0, NULL) == HAL_OK) +#define ath_hal_gettpc(_ah) \ + (ath_hal_getcapability(_ah, HAL_CAP_TPC, 1, NULL) == HAL_OK) +#define ath_hal_settpc(_ah, _v) \ + ath_hal_setcapability(_ah, HAL_CAP_TPC, 1, _v, NULL) #define ath_hal_setuprxdesc(_ah, _ds, _size, _intreq) \ ((*(_ah)->ah_setupRxDesc)((_ah), (_ds), (_size), (_intreq))) From owner-p4-projects@FreeBSD.ORG Fri Nov 19 22:12:59 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EB99B16A4D0; Fri, 19 Nov 2004 22:12:58 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B1D7D16A4CE for ; Fri, 19 Nov 2004 22:12:58 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id A1DBE43D53 for ; Fri, 19 Nov 2004 22:12:58 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAJMCwFZ085380 for ; Fri, 19 Nov 2004 22:12:58 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAJMCw7g085377 for perforce@freebsd.org; Fri, 19 Nov 2004 22:12:58 GMT (envelope-from sam@freebsd.org) Date: Fri, 19 Nov 2004 22:12:58 GMT Message-Id: <200411192212.iAJMCw7g085377@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65473 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 19 Nov 2004 22:12:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=65473 Change 65473 by sam@sam_ebb on 2004/11/19 22:12:55 o by default report max tx power for channel instead of tx power limit which is normally not interesting o move tx power limit under -v Affected files ... .. //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#14 edit Differences ... ==== //depot/projects/wifi/sbin/ifconfig/ifieee80211.c#14 (text+ko) ==== @@ -1189,12 +1189,20 @@ } } - ireq.i_type = IEEE80211_IOC_TXPOWER; + ireq.i_type = IEEE80211_IOC_TXPOWMAX; if (ioctl(s, SIOCG80211, &ireq) != -1) { - printf("%ctxpower %d", spacer, ireq.i_val); + printf("%ctxpowmax %d", spacer, ireq.i_val); spacer = ' '; } + if (verbose) { + ireq.i_type = IEEE80211_IOC_TXPOWER; + if (ioctl(s, SIOCG80211, &ireq) != -1) { + printf("%ctxpower %d", spacer, ireq.i_val); + spacer = ' '; + } + } + if (spacer != '\t') printf("\n"); spacer = '\t'; From owner-p4-projects@FreeBSD.ORG Sat Nov 20 01:07:16 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id A214016A4D0; Sat, 20 Nov 2004 01:07:15 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 720C216A4CE for ; Sat, 20 Nov 2004 01:07:15 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0A32A43D1F for ; Sat, 20 Nov 2004 01:07:15 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK17EMD097026 for ; Sat, 20 Nov 2004 01:07:14 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK16l9J097007 for perforce@freebsd.org; Sat, 20 Nov 2004 01:06:47 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 01:06:47 GMT Message-Id: <200411200106.iAK16l9J097007@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65480 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 01:07:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=65480 Change 65480 by davidxu@davidxu_alona on 2004/11/20 01:05:50 IFC Affected files ... .. //depot/projects/davidxu_ksedbg/src/MAINTAINERS#6 integrate .. //depot/projects/davidxu_ksedbg/src/Makefile#6 integrate .. //depot/projects/davidxu_ksedbg/src/Makefile.inc1#5 integrate .. //depot/projects/davidxu_ksedbg/src/UPDATING#10 integrate .. //depot/projects/davidxu_ksedbg/src/bin/chflags/Makefile#2 integrate .. //depot/projects/davidxu_ksedbg/src/bin/chflags/chflags.1#2 integrate .. //depot/projects/davidxu_ksedbg/src/bin/chflags/chflags.c#2 integrate .. //depot/projects/davidxu_ksedbg/src/bin/mkdir/mkdir.c#2 integrate .. //depot/projects/davidxu_ksedbg/src/bin/pax/tar.c#2 integrate .. //depot/projects/davidxu_ksedbg/src/bin/ps/Makefile#2 integrate .. //depot/projects/davidxu_ksedbg/src/bin/ps/ps.c#3 integrate .. //depot/projects/davidxu_ksedbg/src/bin/rcp/Makefile#2 integrate .. //depot/projects/davidxu_ksedbg/src/bin/rm/rm.1#3 integrate .. //depot/projects/davidxu_ksedbg/src/bin/rm/rm.c#2 integrate .. //depot/projects/davidxu_ksedbg/src/bin/sh/exec.c#2 integrate .. //depot/projects/davidxu_ksedbg/src/bin/sh/sh.1#4 integrate .. //depot/projects/davidxu_ksedbg/src/bin/sh/var.c#2 integrate .. //depot/projects/davidxu_ksedbg/src/bin/stty/key.c#2 integrate .. //depot/projects/davidxu_ksedbg/src/contrib/amd/fsinfo/fsinfo.8#3 integrate .. //depot/projects/davidxu_ksedbg/src/contrib/bind/CHANGES#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/DNSSEC#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/FREEBSD-Upgrade#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/FREEBSD-Xlist#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/INSTALL#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/LICENSE#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/README#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/SUPPORT#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/TODO#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/Version#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/addr/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/addr/addr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/dig/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/dig/dig.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/dnskeygen/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/dnskeygen/dnskeygen.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/dnsquery/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/dnsquery/dnsquery.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/host/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/host/host.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/irpd/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/irpd/irpd.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/irpd/irs-irpd.conf#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/irpd/version.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/mkservdb/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/mkservdb/mkservdb.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named-bootconf/Grot/named-bootconf.pl#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named-bootconf/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named-bootconf/named-bootconf.sh#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named-bootconf/test.boot#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named-xfer/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named-xfer/named-xfer.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_defs.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_dump.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_func.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_glob.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_glue.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_ixfr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_load.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_lookup.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_save.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_sec.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_tsig.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/db_update.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/named.conf#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/named.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_config.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_ctl.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_defs.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_forw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_func.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_glob.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_glue.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_init.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_ixfr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_lexer.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_lexer.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_main.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_maint.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_ncache.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_notify.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_parser.y#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_parseutil.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_parseutil.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_req.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_resp.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_signal.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_sort.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_stats.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_udp.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_update.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/ns_xfr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/pathtemplate.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/test/127.0.0.zone#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/test/localhost.zone#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/test/named.conf#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/test/root.hint#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/named/version.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/ndc/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/ndc/ndc.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/commands.l#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/debug.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/getinfo.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/list.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/main.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/nslookup.help#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/pathnames.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/res.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/send.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/skip.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nslookup/subr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nsupdate/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/bin/nsupdate/nsupdate.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/acl.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/address_list.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/comments.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/config.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/controls.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/docdef.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/example.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/include.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/index.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/key.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/logging.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/master.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/options.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/server.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/trusted-keys.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/html/zone.html#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/dig.1#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/dnskeygen.1#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/dnsquery.1#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/getaddrinfo.3#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/gethostbyname.3#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/getipnodebyname.3#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/getnameinfo.3#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/getnetent.3#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/hesiod.3#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/host.1#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/hostname.7#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/inet_cidr.3#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/irs.conf.5#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/mailaddr.7#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/mkdep.1#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/named-bootconf.8#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/named-xfer.8#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/named.8#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/named.conf.5#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/ndc.8#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/nslookup.8#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/nsupdate.8#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/resolver.3#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/resolver.5#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/man/tsig.3#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/misc/DynamicUpdate#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/misc/FAQ.1of2#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/misc/FAQ.2of2#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/misc/rfc2317-notes.txt#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/doc/misc/style.txt#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/arpa/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/arpa/inet.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/arpa/nameser.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/arpa/nameser_compat.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/fd_setsize.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/hesiod.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/irp.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/irs.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/assertions.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/ctl.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/dst.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/eventlib.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/heap.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/irpmarshall.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/list.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/logging.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/memcluster.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/misc.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/isc/tree.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/netdb.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/netgroup.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/res_update.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/include/resolv.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/README#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/bsafe_link.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/cylink_link.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/dst_api.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/dst_internal.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/eay_dss_link.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/hmac_link.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/md5.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/md5_dgst.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/md5_locl.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/prandom.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/rsaref_link.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/dst/support.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_addr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_cidr_ntop.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_cidr_pton.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_data.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_lnaof.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_makeaddr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_net_ntop.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_net_pton.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_neta.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_netof.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_network.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_ntoa.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_ntop.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/inet_pton.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/inet/nsap_addr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/Makefile.BSD#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/README#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/dns.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/dns_gr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/dns_ho.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/dns_nw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/dns_p.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/dns_pr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/dns_pw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/dns_sv.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gai_strerror.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gen.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gen_gr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gen_ho.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gen_ng.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gen_nw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gen_p.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gen_pr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gen_pw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gen_sv.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getaddrinfo.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getgrent.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getgrent_r.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gethostent.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/gethostent_r.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getnameinfo.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getnetent.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getnetent_r.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getnetgrent.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getnetgrent_r.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getprotoent.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getprotoent_r.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getpwent.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getpwent_r.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getservent.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/getservent_r.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/hesiod.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/hesiod_p.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irp.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irp_gr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irp_ho.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irp_ng.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irp_nw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irp_p.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irp_pr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irp_pw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irp_sv.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irpmarshall.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irs_data.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irs_data.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/irs_p.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/lcl.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/lcl_gr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/lcl_ho.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/lcl_ng.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/lcl_nw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/lcl_p.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/lcl_pr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/lcl_pw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/lcl_sv.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/nis.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/nis_gr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/nis_ho.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/nis_ng.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/nis_nw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/nis_p.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/nis_pr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/nis_pw.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/nis_sv.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/nul_ng.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/pathnames.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/irs/util.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/assertions.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/assertions.mdoc#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/base64.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/bitncmp.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/bitncmp.mdoc#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/ctl_clnt.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/ctl_p.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/ctl_p.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/ctl_srvr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/ev_connects.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/ev_files.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/ev_streams.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/ev_timers.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/ev_waits.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/eventlib.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/eventlib.mdoc#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/eventlib_p.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/heap.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/heap.mdoc#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/hex.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/logging.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/logging.mdoc#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/logging_p.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/memcluster.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/memcluster.mdoc#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/movefile.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/tree.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/isc/tree.mdoc#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/nameser/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/nameser/ns_date.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/nameser/ns_name.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/nameser/ns_netint.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/nameser/ns_parse.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/nameser/ns_print.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/nameser/ns_samedomain.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/nameser/ns_sign.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/nameser/ns_ttl.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/nameser/ns_verify.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/herror.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_comp.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_data.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_debug.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_debug.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_findzonecut.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_init.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_mkquery.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_mkupdate.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_mkupdate.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_private.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_query.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_send.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_sendsigned.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/lib/resolv/res_update.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/README#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/Makefile.set#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/bin/probe_ipv6#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/include/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/include/port_after.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/include/port_before.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/include/prand_conf.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/include/sys/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/include/sys/bitypes.h#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/noop.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/freebsd/probe#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/prand_conf/Makefile#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/prand_conf/README#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/prand_conf/prand_conf.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/settings#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/port/systype#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/tests/irs_testclient.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/tests/irs_testirpd.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/tests/irs_testserver.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/tests/test_cidr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind/tests/test_getaddr.c#2 delete .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/CHANGES#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/COPYRIGHT#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/FAQ#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/FREEBSD-Upgrade#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/FREEBSD-Xlist#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/KNOWN_DEFECTS#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/README#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/acconfig.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/check-tool.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/check-tool.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/named-checkconf.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/named-checkconf.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/named-checkconf.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/named-checkconf.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/named-checkzone.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/named-checkzone.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/named-checkzone.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/check/named-checkzone.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/dig.1#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/dig.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/dig.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/dig.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/dighost.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/host.1#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/host.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/host.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/host.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/include/dig/dig.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/nslookup.1#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/nslookup.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/nslookup.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dig/nslookup.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-keygen.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-keygen.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-keygen.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-keygen.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-makekeyset.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-makekeyset.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-makekeyset.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-makekeyset.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-signkey.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-signkey.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-signkey.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-signkey.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-signzone.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-signzone.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-signzone.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssec-signzone.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssectool.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/dnssec/dnssectool.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/aclconf.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/builtin.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/client.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/config.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/control.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/controlconf.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/aclconf.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/builtin.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/client.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/config.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/control.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/globals.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/interfacemgr.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/listenlist.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/log.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/logconf.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/lwaddr.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/lwdclient.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/lwresd.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/lwsearch.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/main.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/notify.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/query.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/server.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/sortlist.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/tkeyconf.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/tsigconf.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/types.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/update.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/xfrout.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/include/named/zoneconf.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/interfacemgr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/listenlist.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/log.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/logconf.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwaddr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwdclient.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwderror.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwdgabn.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwdgnba.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwdgrbn.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwdnoop.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwresd.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwresd.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwresd.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwresd.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/lwsearch.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/main.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/named.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/named.conf.5#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/named.conf.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/named.conf.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/named.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/named.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/notify.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/query.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/server.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/sortlist.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/tkeyconf.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/tsigconf.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/unix/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/unix/include/named/os.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/unix/os.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/update.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/xfrout.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/named/zoneconf.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/nsupdate/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/nsupdate/nsupdate.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/nsupdate/nsupdate.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/nsupdate/nsupdate.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/nsupdate/nsupdate.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/include/rndc/os.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc-confgen.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc-confgen.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc-confgen.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc-confgen.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc.8#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc.conf#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc.conf.5#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc.conf.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc.conf.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc.docbook#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/rndc.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/unix/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/unix/os.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/util.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/bin/rndc/util.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/config.guess#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/config.sub#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/configure.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM-book.xml#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM.ch01.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM.ch02.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM.ch03.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM.ch04.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM.ch05.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM.ch06.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM.ch07.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM.ch08.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM.ch09.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Bv9ARM.html#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/README-SGML#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/isc.color.gif#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/nominum-docbook-html.dsl.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/nominum-docbook-print.dsl.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/arm/validate.sh.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-baba-dnsext-acl-reqts-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-daigle-napstr-04.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-danisch-dns-rr-smtp-03.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-dnsext-opcode-discover-02.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-durand-dnsop-dynreverse-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-axfr-clarify-05.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dhcid-rr-08.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-2535typecode-change-06.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-intro-11.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-protocol-07.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-records-09.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-insensitive-04.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-interop3597-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-keyrr-key-signing-flag-12.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-mdns-33.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-tkey-renewal-mode-04.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-tsig-sha-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsext-wcard-clarify-02.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsop-bad-dns-res-02.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsop-dnssec-operational-practices-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-configuration-02.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-issues-09.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-transport-guidelines-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsop-key-rollover-requirements-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsop-misbehavior-against-aaaa-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsop-respsize-01.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-dnsop-serverid-02.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-enum-e164-gstn-np-05.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-ipseckey-rr-09.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-ipv6-node-requirements-08.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ietf-secsh-dns-05.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-ihren-dnsext-threshold-validation-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-kato-dnsop-local-zones-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/draft-park-ipv6-extensions-dns-pnp-00.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/draft/update#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/misc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/misc/dnssec#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/misc/format-options.pl#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/misc/ipv6#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/misc/migration#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/misc/migration-4to9#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/misc/options#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/misc/rfc-compliance#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/misc/roadmap#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/misc/sdb#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/index#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1032.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1033.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1034.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1035.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1101.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1122.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1123.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1183.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1348.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1535.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1536.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1537.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1591.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1611.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1612.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1706.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1712.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1750.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1876.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1886.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1982.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1995.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc1996.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2052.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2104.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2119.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2133.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2136.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2137.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2163.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2168.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2181.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2230.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2308.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2317.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2373.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2374.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2375.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2418.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2535.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2536.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2537.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2538.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2539.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2540.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2541.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2553.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2671.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2672.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2673.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2782.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2825.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2826.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2845.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2874.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2915.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2929.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2930.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc2931.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3007.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3008.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3071.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3090.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3110.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3123.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3152.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3197.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3225.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3226.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3258.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3363.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3364.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3425.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3445.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3467.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3490.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3491.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3492.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3493.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3513.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3596.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3597.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3645.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3655.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3658.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3833.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc3845.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/doc/rfc/rfc952.txt#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/install-sh#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/isc-config.sh.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/README#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/aclocal.m4#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/api#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/daemon.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/ftruncate.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/gettimeofday.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/mktemp.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/putenv.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/readv.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/setenv.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/setitimer.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/strcasecmp.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/strdup.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/strerror.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/strpbrk.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/strsep.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/strtoul.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/utimes.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/bsd/writev.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/config.h.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/configure#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/configure.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/dst/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/dst/dst_api.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/dst/dst_internal.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/dst/hmac_link.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/dst/md5.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/dst/md5_dgst.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/dst/md5_locl.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/dst/support.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/arpa/inet.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/arpa/nameser.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/arpa/nameser_compat.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/fd_setsize.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/hesiod.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/irp.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/irs.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/assertions.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/ctl.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/dst.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/eventlib.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/heap.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/irpmarshall.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/list.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/logging.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/memcluster.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/misc.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/isc/tree.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/netdb.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/netgroup.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/res_update.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/include/resolv.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_addr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_cidr_ntop.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_cidr_pton.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_data.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_lnaof.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_makeaddr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_net_ntop.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_net_pton.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_neta.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_netof.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_network.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_ntoa.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_ntop.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/inet_pton.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/inet/nsap_addr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/dns.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/dns_gr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/dns_ho.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/dns_nw.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/dns_p.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/dns_pr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/dns_pw.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/dns_sv.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gai_strerror.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gen.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gen_gr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gen_ho.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gen_ng.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gen_nw.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gen_p.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gen_pr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gen_pw.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gen_sv.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getaddrinfo.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getgrent.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getgrent_r.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gethostent.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/gethostent_r.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getnameinfo.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getnetent.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getnetent_r.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getnetgrent.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getnetgrent_r.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getprotoent.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getprotoent_r.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getpwent.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getpwent_r.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getservent.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/getservent_r.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/hesiod.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/hesiod_p.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irp.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irp_gr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irp_ho.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irp_ng.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irp_nw.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irp_p.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irp_pr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irp_pw.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irp_sv.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irpmarshall.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irs_data.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irs_data.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/irs_p.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/lcl.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/lcl_gr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/lcl_ho.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/lcl_ng.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/lcl_nw.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/lcl_p.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/lcl_pr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/lcl_pw.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/lcl_sv.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/nis.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/nis_gr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/nis_ho.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/nis_ng.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/nis_nw.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/nis_p.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/nis_pr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/nis_pw.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/nis_sv.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/nul_ng.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/pathnames.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/irs/util.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/assertions.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/assertions.mdoc#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/base64.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/bitncmp.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/bitncmp.mdoc#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/ctl_clnt.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/ctl_p.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/ctl_p.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/ctl_srvr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/ev_connects.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/ev_files.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/ev_streams.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/ev_timers.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/ev_waits.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/eventlib.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/eventlib.mdoc#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/eventlib_p.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/heap.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/heap.mdoc#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/hex.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/logging.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/logging.mdoc#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/logging_p.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/memcluster.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/memcluster.mdoc#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/movefile.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/tree.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/isc/tree.mdoc#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/libtool.m4#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/ltmain.sh#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/make/includes.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/make/mkdep.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/make/rules.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/mkinstalldirs#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/nameser/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/nameser/ns_date.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/nameser/ns_name.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/nameser/ns_netint.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/nameser/ns_parse.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/nameser/ns_print.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/nameser/ns_samedomain.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/nameser/ns_sign.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/nameser/ns_ttl.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/nameser/ns_verify.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/port/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/port/freebsd/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/port/freebsd/include/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/port/freebsd/include/sys/bitypes.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/port_after.h.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/port_before.h.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/herror.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_comp.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_data.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_debug.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_debug.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_findzonecut.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_init.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_mkquery.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_mkupdate.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_mkupdate.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_private.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_query.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_send.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_sendsigned.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind/resolv/res_update.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind9/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind9/api#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind9/check.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind9/getaddresses.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind9/include/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind9/include/bind9/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind9/include/bind9/check.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind9/include/bind9/getaddresses.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind9/include/bind9/version.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/bind9/version.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/acl.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/adb.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/api#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/byaddr.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/cache.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/callbacks.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/compress.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/db.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/dbiterator.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/dbtable.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/diff.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/dispatch.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/dnssec.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/ds.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/forward.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/gen-unix.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/gen.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/Makefile.in#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/acl.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/adb.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/bit.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/byaddr.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/cache.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/callbacks.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/cert.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/compress.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/db.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/dbiterator.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/dbtable.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/diff.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/dispatch.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/dnssec.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/ds.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/events.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/fixedname.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/forward.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/journal.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/keyflags.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/keytable.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/keyvalues.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/lib.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/log.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/lookup.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/master.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/masterdump.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/message.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/name.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/ncache.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/nsec.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/opcode.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/order.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/peer.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/portlist.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/rbt.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/rcode.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/rdata.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/rdataclass.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/rdatalist.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/rdataset.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/rdatasetiter.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/rdataslab.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/rdatatype.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/request.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/resolver.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/result.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/rootns.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/sdb.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/secalg.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/secproto.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/soa.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/ssu.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/stats.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/tcpmsg.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/time.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/timer.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/tkey.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/tsig.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/ttl.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/types.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/validator.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/version.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/view.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/xfrin.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/zone.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/zonekey.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/include/dns/zt.h#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/journal.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/keytable.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/lib.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/log.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/lookup.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/master.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/masterdump.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/message.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/name.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/ncache.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/nsec.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/order.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/peer.c#1 branch .. //depot/projects/davidxu_ksedbg/src/contrib/bind9/lib/dns/portlist.c#1 branch >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Nov 20 01:11:21 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E26C316A4D0; Sat, 20 Nov 2004 01:11:20 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A712D16A4CE for ; Sat, 20 Nov 2004 01:11:20 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7551A43D31 for ; Sat, 20 Nov 2004 01:11:20 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK1BKDc097155 for ; Sat, 20 Nov 2004 01:11:20 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK1BKCo097152 for perforce@freebsd.org; Sat, 20 Nov 2004 01:11:20 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 01:11:20 GMT Message-Id: <200411200111.iAK1BKCo097152@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65481 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 01:11:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=65481 Change 65481 by davidxu@davidxu_alona on 2004/11/20 01:10:43 IFC Affected files ... .. //depot/projects/davidxu_ksedbg/src/etc/rc.d/ntpdate#2 integrate .. //depot/projects/davidxu_ksedbg/src/lib/libthr/arch/amd64/Makefile.inc#2 integrate .. //depot/projects/davidxu_ksedbg/src/lib/libthr/arch/amd64/amd64/_setcurthread.c#2 integrate .. //depot/projects/davidxu_ksedbg/src/lib/libthread_db/pthread/pthread_db.c#13 delete .. //depot/projects/davidxu_ksedbg/src/lib/libthread_db/src/thread_db.c#5 delete .. //depot/projects/davidxu_ksedbg/src/sys/kern/kern_thr.c#7 integrate Differences ... ==== //depot/projects/davidxu_ksedbg/src/etc/rc.d/ntpdate#2 (text+ko) ==== @@ -1,12 +1,13 @@ #!/bin/sh # # $NetBSD: ntpdate,v 1.8 2002/03/22 04:16:39 lukem Exp $ -# $FreeBSD: src/etc/rc.d/ntpdate,v 1.9 2004/03/29 20:00:54 des Exp $ +# $FreeBSD: src/etc/rc.d/ntpdate,v 1.12 2004/10/07 13:55:26 mtm Exp $ # +# BEFORE: ntpd # PROVIDE: ntpdate # REQUIRE: NETWORKING syslogd -# KEYWORD: FreeBSD nojail +# KEYWORD: nojail . /etc/rc.subr ==== //depot/projects/davidxu_ksedbg/src/lib/libthr/arch/amd64/Makefile.inc#2 (text+ko) ==== ==== //depot/projects/davidxu_ksedbg/src/lib/libthr/arch/amd64/amd64/_setcurthread.c#2 (text+ko) ==== ==== //depot/projects/davidxu_ksedbg/src/sys/kern/kern_thr.c#7 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_thr.c,v 1.23 2004/07/18 23:36:12 julian Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_thr.c,v 1.29 2004/10/06 14:20:57 mtm Exp $"); #include #include @@ -34,6 +34,8 @@ #include #include #include +#include +#include #include #include #include @@ -43,74 +45,22 @@ #include +extern int max_threads_per_proc; +extern int max_groups_per_proc; + +SYSCTL_DECL(_kern_threads); +static int thr_scope_sys = 0; +SYSCTL_INT(_kern_threads, OID_AUTO, thr_scope_sys, CTLFLAG_RW, + &thr_scope_sys, 0, "sys or proc scope scheduling"); + +static int thr_concurrency = 0; +SYSCTL_INT(_kern_threads, OID_AUTO, thr_concurrency, CTLFLAG_RW, + &thr_concurrency, 0, "a concurrency value if not default"); + /* * Back end support functions. */ -void -thr_exit1(void) -{ - struct ksegrp *kg; - struct thread *td; - struct kse *ke; - struct proc *p; - - td = curthread; - p = td->td_proc; - kg = td->td_ksegrp; - ke = td->td_kse; - - mtx_assert(&sched_lock, MA_OWNED); - PROC_LOCK_ASSERT(p, MA_OWNED); - KASSERT(!mtx_owned(&Giant), ("dying thread owns giant")); - - /* - * Shutting down last thread in the proc. This will actually - * call exit() in the trampoline when it returns. - */ - if (p->p_numthreads == 1) { - PROC_UNLOCK(p); - return; - } - - /* - * XXX Undelivered process wide signals should be reposted to the - * proc. - */ - - /* Clean up cpu resources. */ - cpu_thread_exit(td); - - /* Unlink the thread from the process and kseg. */ - thread_unlink(td); - - ke->ke_state = KES_UNQUEUED; - ke->ke_thread = NULL; - kse_unlink(ke); - sched_exit_kse(TAILQ_NEXT(ke, ke_kglist), td); - - /* - * If we were stopped while waiting for all threads to exit and this - * is the last thread wakeup the exiting thread. - */ - if (P_SHOULDSTOP(p) == P_STOPPED_SINGLE) - if (p->p_numthreads == 1) - thread_unsuspend_one(p->p_singlethread); - - PROC_UNLOCK(p); - td->td_kse = NULL; - td->td_state = TDS_INACTIVE; -#if 0 - td->td_proc = NULL; -#endif - td->td_ksegrp = NULL; - td->td_last_kse = NULL; - sched_exit_thread(TAILQ_NEXT(td, td_kglist), td); - thread_stash(td); - - cpu_throw(td, choosethread()); -} - #define RANGEOF(type, start, end) (offsetof(type, end) - offsetof(type, start)) /* @@ -120,69 +70,99 @@ thr_create(struct thread *td, struct thr_create_args *uap) /* ucontext_t *ctx, long *id, int flags */ { - struct kse *ke0; - struct thread *td0; + struct thread *newtd; ucontext_t ctx; long id; int error; + struct ksegrp *kg, *newkg; + struct proc *p; + int scope_sys; + p = td->td_proc; + kg = td->td_ksegrp; if ((error = copyin(uap->ctx, &ctx, sizeof(ctx)))) return (error); - /* Initialize our td. */ - td0 = thread_alloc(); + /* Have race condition but it is cheap */ + if ((p->p_numksegrps >= max_groups_per_proc) || + (p->p_numthreads >= max_threads_per_proc)) { + return (EPROCLIM); + } + scope_sys = thr_scope_sys; + /* Initialize our td and new ksegrp.. */ + newtd = thread_alloc(); + if (scope_sys) + newkg = ksegrp_alloc(); + else + newkg = kg; /* * Try the copyout as soon as we allocate the td so we don't have to * tear things down in a failure case below. */ - id = td0->td_tid; + id = newtd->td_tid; if ((error = copyout(&id, uap->id, sizeof(long)))) { - thread_free(td0); + if (scope_sys) + ksegrp_free(newkg); + thread_free(newtd); return (error); } - bzero(&td0->td_startzero, - (unsigned)RANGEOF(struct thread, td_startzero, td_endzero)); - bcopy(&td->td_startcopy, &td0->td_startcopy, + bzero(&newtd->td_startzero, + (unsigned) RANGEOF(struct thread, td_startzero, td_endzero)); + bcopy(&td->td_startcopy, &newtd->td_startcopy, (unsigned) RANGEOF(struct thread, td_startcopy, td_endcopy)); - td0->td_proc = td->td_proc; - PROC_LOCK(td->td_proc); - td0->td_sigmask = td->td_sigmask; - PROC_UNLOCK(td->td_proc); - td0->td_ucred = crhold(td->td_ucred); + if (scope_sys) { + bzero(&newkg->kg_startzero, + (unsigned)RANGEOF(struct ksegrp, kg_startzero, kg_endzero)); + bcopy(&kg->kg_startcopy, &newkg->kg_startcopy, + (unsigned)RANGEOF(struct ksegrp, kg_startcopy, kg_endcopy)); + } - /* Initialize our kse structure. */ - ke0 = kse_alloc(); - bzero(&ke0->ke_startzero, - RANGEOF(struct kse, ke_startzero, ke_endzero)); + newtd->td_proc = td->td_proc; + newtd->td_ucred = crhold(td->td_ucred); /* Set up our machine context. */ - cpu_set_upcall(td0, td); - error = set_mcontext(td0, &ctx.uc_mcontext); + cpu_set_upcall(newtd, td); + error = set_mcontext(newtd, &ctx.uc_mcontext); if (error != 0) { - kse_free(ke0); - thread_free(td0); + if (scope_sys) + ksegrp_free(newkg); + thread_free(newtd); + crfree(td->td_ucred); goto out; } /* Link the thread and kse into the ksegrp and make it runnable. */ + PROC_LOCK(td->td_proc); + if (scope_sys) { + sched_init_concurrency(newkg); + } else { + if ((td->td_proc->p_flag & P_HADTHREADS) == 0) { + sched_set_concurrency(kg, + thr_concurrency ? thr_concurrency : (2*mp_ncpus)); + } + } + + td->td_proc->p_flag |= P_HADTHREADS; + newtd->td_sigmask = td->td_sigmask; mtx_lock_spin(&sched_lock); + if (scope_sys) + ksegrp_link(newkg, p); + thread_link(newtd, newkg); + mtx_unlock_spin(&sched_lock); + PROC_UNLOCK(p); - thread_link(td0, td->td_ksegrp); - kse_link(ke0, td->td_ksegrp); + /* let the scheduler know about these things. */ + mtx_lock_spin(&sched_lock); + if (scope_sys) + sched_fork_ksegrp(td, newkg); + sched_fork_thread(td, newtd); - /* Bind this thread and kse together. */ - td0->td_kse = ke0; - ke0->ke_thread = td0; - - sched_fork_kse(td, ke0); - sched_fork_thread(td, td0); - - TD_SET_CAN_RUN(td0); + TD_SET_CAN_RUN(newtd); if ((uap->flags & THR_SUSPENDED) == 0) - setrunqueue(td0); + setrunqueue(newtd, SRQ_BORING); mtx_unlock_spin(&sched_lock); @@ -206,22 +186,29 @@ int thr_exit(struct thread *td, struct thr_exit_args *uap) - /* NULL */ + /* long *state */ { struct proc *p; p = td->td_proc; + /* Signal userland that it can free the stack. */ + if ((void *)uap->state != NULL) + suword((void *)uap->state, 1); + PROC_LOCK(p); mtx_lock_spin(&sched_lock); /* - * This unlocks proc and doesn't return unless this is the last - * thread. + * Shutting down last thread in the proc. This will actually + * call exit() in the trampoline when it returns. */ - thr_exit1(); + if (p->p_numthreads != 1) { + thread_exit(); + /* NOTREACHED */ + } mtx_unlock_spin(&sched_lock); - + PROC_UNLOCK(p); return (0); } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 01:29:46 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 168BF16A4D0; Sat, 20 Nov 2004 01:29:44 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C95EE16A4CE for ; Sat, 20 Nov 2004 01:29:43 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 64DBC43D53 for ; Sat, 20 Nov 2004 01:29:43 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK1ThVN097708 for ; Sat, 20 Nov 2004 01:29:43 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK1TgdD097705 for perforce@freebsd.org; Sat, 20 Nov 2004 01:29:42 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 01:29:42 GMT Message-Id: <200411200129.iAK1TgdD097705@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65482 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 01:29:47 -0000 http://perforce.freebsd.org/chv.cgi?CH=65482 Change 65482 by davidxu@davidxu_alona on 2004/11/20 01:29:22 delete. Affected files ... .. //depot/projects/davidxu_thread/COPYRIGHT#1 branch .. //depot/projects/davidxu_thread/MAINTAINERS#1 branch .. //depot/projects/davidxu_thread/Makefile#1 branch .. //depot/projects/davidxu_thread/Makefile.inc1#1 branch .. //depot/projects/davidxu_thread/README#1 branch .. //depot/projects/davidxu_thread/UPDATING#1 branch .. //depot/projects/davidxu_thread/UPDATING.64BTT#1 branch .. //depot/projects/davidxu_thread/bin/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/bin/cat/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/cat/cat.1#1 branch .. //depot/projects/davidxu_thread/bin/cat/cat.c#1 branch .. //depot/projects/davidxu_thread/bin/chflags/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/chflags/chflags.1#1 branch .. //depot/projects/davidxu_thread/bin/chflags/chflags.c#1 branch .. //depot/projects/davidxu_thread/bin/chio/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/chio/chio.1#1 branch .. //depot/projects/davidxu_thread/bin/chio/chio.c#1 branch .. //depot/projects/davidxu_thread/bin/chio/defs.h#1 branch .. //depot/projects/davidxu_thread/bin/chio/pathnames.h#1 branch .. //depot/projects/davidxu_thread/bin/chmod/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/chmod/chmod.1#1 branch .. //depot/projects/davidxu_thread/bin/chmod/chmod.c#1 branch .. //depot/projects/davidxu_thread/bin/cp/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/cp/cp.1#1 branch .. //depot/projects/davidxu_thread/bin/cp/cp.c#1 branch .. //depot/projects/davidxu_thread/bin/cp/extern.h#1 branch .. //depot/projects/davidxu_thread/bin/cp/utils.c#1 branch .. //depot/projects/davidxu_thread/bin/csh/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/csh/USD.doc/csh.1#1 branch .. //depot/projects/davidxu_thread/bin/csh/USD.doc/csh.2#1 branch .. //depot/projects/davidxu_thread/bin/csh/USD.doc/csh.3#1 branch .. //depot/projects/davidxu_thread/bin/csh/USD.doc/csh.4#1 branch .. //depot/projects/davidxu_thread/bin/csh/USD.doc/csh.a#1 branch .. //depot/projects/davidxu_thread/bin/csh/USD.doc/csh.g#1 branch .. //depot/projects/davidxu_thread/bin/csh/USD.doc/tabs#1 branch .. //depot/projects/davidxu_thread/bin/csh/config.h#1 branch .. //depot/projects/davidxu_thread/bin/csh/host.defs#1 branch .. //depot/projects/davidxu_thread/bin/date/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/date/date.1#1 branch .. //depot/projects/davidxu_thread/bin/date/date.c#1 branch .. //depot/projects/davidxu_thread/bin/date/extern.h#1 branch .. //depot/projects/davidxu_thread/bin/date/netdate.c#1 branch .. //depot/projects/davidxu_thread/bin/date/vary.c#1 branch .. //depot/projects/davidxu_thread/bin/date/vary.h#1 branch .. //depot/projects/davidxu_thread/bin/dd/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/dd/args.c#1 branch .. //depot/projects/davidxu_thread/bin/dd/conv.c#1 branch .. //depot/projects/davidxu_thread/bin/dd/conv_tab.c#1 branch .. //depot/projects/davidxu_thread/bin/dd/dd.1#1 branch .. //depot/projects/davidxu_thread/bin/dd/dd.c#1 branch .. //depot/projects/davidxu_thread/bin/dd/dd.h#1 branch .. //depot/projects/davidxu_thread/bin/dd/extern.h#1 branch .. //depot/projects/davidxu_thread/bin/dd/gen.c#1 branch .. //depot/projects/davidxu_thread/bin/dd/misc.c#1 branch .. //depot/projects/davidxu_thread/bin/dd/position.c#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.ascii#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.ebcdic#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.ibm#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.lcase#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.oldascii#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.oldebcdic#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.oldibm#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.pareven#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.parnone#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.parodd#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.parset#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.swab#1 branch .. //depot/projects/davidxu_thread/bin/dd/ref.ucase#1 branch .. //depot/projects/davidxu_thread/bin/df/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/df/df.1#1 branch .. //depot/projects/davidxu_thread/bin/df/df.c#1 branch .. //depot/projects/davidxu_thread/bin/domainname/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/domainname/domainname.1#1 branch .. //depot/projects/davidxu_thread/bin/domainname/domainname.c#1 branch .. //depot/projects/davidxu_thread/bin/echo/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/echo/echo.1#1 branch .. //depot/projects/davidxu_thread/bin/echo/echo.c#1 branch .. //depot/projects/davidxu_thread/bin/ed/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/ed/POSIX#1 branch .. //depot/projects/davidxu_thread/bin/ed/README#1 branch .. //depot/projects/davidxu_thread/bin/ed/buf.c#1 branch .. //depot/projects/davidxu_thread/bin/ed/cbc.c#1 branch .. //depot/projects/davidxu_thread/bin/ed/ed.1#1 branch .. //depot/projects/davidxu_thread/bin/ed/ed.h#1 branch .. //depot/projects/davidxu_thread/bin/ed/glbl.c#1 branch .. //depot/projects/davidxu_thread/bin/ed/io.c#1 branch .. //depot/projects/davidxu_thread/bin/ed/main.c#1 branch .. //depot/projects/davidxu_thread/bin/ed/re.c#1 branch .. //depot/projects/davidxu_thread/bin/ed/sub.c#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/=.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/README#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/TODO#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/a.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/a.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/a.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/a1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/a2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/addr.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/addr.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/addr.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/addr1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/addr2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/ascii.d.uu#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/ascii.r.uu#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/ascii.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/bang1.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/bang1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/bang1.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/bang1.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/bang2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/c.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/c.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/c.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/c1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/c2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/ckscripts.sh#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/d.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/d.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/d.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/d.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e1.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e1.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e1.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e2.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e2.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e2.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e3.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e3.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e3.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e3.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e4.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e4.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/e4.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/f1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/f2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g1.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g1.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g1.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g2.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g2.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g2.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g3.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g3.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g3.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g3.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g4.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g4.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g4.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g5.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g5.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/g5.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/h.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/i.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/i.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/i.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/i1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/i2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/i3.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/j.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/j.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/j.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/k.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/k.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/k.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/k1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/k2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/k3.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/k4.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/l.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/l.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/l.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/m.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/m.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/m.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/m.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/mkscripts.sh#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/n.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/n.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/n.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/nl.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/nl1.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/nl1.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/nl1.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/nl2.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/nl2.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/nl2.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/p.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/p.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/p.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/q.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/q.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/q.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/q1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r1.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r1.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r1.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r2.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r2.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r2.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r3.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r3.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/r3.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s1.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s1.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s1.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s10.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s2.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s2.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s2.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s3.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s3.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s3.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s3.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s4.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s5.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s6.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s7.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s8.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/s9.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/t.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/t.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/t1.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/t1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/t1.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/t1.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/t2.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/t2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/t2.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/t2.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/u.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/u.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/u.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/u.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/v.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/v.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/v.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/w.d#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/w.r#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/w.t#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/w1.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/w2.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/w3.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/x.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/test/z.err#1 branch .. //depot/projects/davidxu_thread/bin/ed/undo.c#1 branch .. //depot/projects/davidxu_thread/bin/expr/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/expr/expr.1#1 branch .. //depot/projects/davidxu_thread/bin/expr/expr.y#1 branch .. //depot/projects/davidxu_thread/bin/getfacl/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/getfacl/getfacl.1#1 branch .. //depot/projects/davidxu_thread/bin/getfacl/getfacl.c#1 branch .. //depot/projects/davidxu_thread/bin/hostname/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/hostname/hostname.1#1 branch .. //depot/projects/davidxu_thread/bin/hostname/hostname.c#1 branch .. //depot/projects/davidxu_thread/bin/kenv/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/kenv/kenv.1#1 branch .. //depot/projects/davidxu_thread/bin/kenv/kenv.c#1 branch .. //depot/projects/davidxu_thread/bin/kill/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/kill/kill.1#1 branch .. //depot/projects/davidxu_thread/bin/kill/kill.c#1 branch .. //depot/projects/davidxu_thread/bin/ln/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/ln/ln.1#1 branch .. //depot/projects/davidxu_thread/bin/ln/ln.c#1 branch .. //depot/projects/davidxu_thread/bin/ln/symlink.7#1 branch .. //depot/projects/davidxu_thread/bin/ls/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/ls/cmp.c#1 branch .. //depot/projects/davidxu_thread/bin/ls/extern.h#1 branch .. //depot/projects/davidxu_thread/bin/ls/ls.1#1 branch .. //depot/projects/davidxu_thread/bin/ls/ls.c#1 branch .. //depot/projects/davidxu_thread/bin/ls/ls.h#1 branch .. //depot/projects/davidxu_thread/bin/ls/print.c#1 branch .. //depot/projects/davidxu_thread/bin/ls/util.c#1 branch .. //depot/projects/davidxu_thread/bin/mkdir/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/mkdir/mkdir.1#1 branch .. //depot/projects/davidxu_thread/bin/mkdir/mkdir.c#1 branch .. //depot/projects/davidxu_thread/bin/mv/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/mv/mv.1#1 branch .. //depot/projects/davidxu_thread/bin/mv/mv.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/pax/ar_io.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/ar_subs.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/buf_subs.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/cache.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/cache.h#1 branch .. //depot/projects/davidxu_thread/bin/pax/cpio.1#1 branch .. //depot/projects/davidxu_thread/bin/pax/cpio.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/cpio.h#1 branch .. //depot/projects/davidxu_thread/bin/pax/extern.h#1 branch .. //depot/projects/davidxu_thread/bin/pax/file_subs.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/ftree.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/ftree.h#1 branch .. //depot/projects/davidxu_thread/bin/pax/gen_subs.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/getoldopt.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/options.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/options.h#1 branch .. //depot/projects/davidxu_thread/bin/pax/pat_rep.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/pat_rep.h#1 branch .. //depot/projects/davidxu_thread/bin/pax/pax.1#1 branch .. //depot/projects/davidxu_thread/bin/pax/pax.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/pax.h#1 branch .. //depot/projects/davidxu_thread/bin/pax/sel_subs.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/sel_subs.h#1 branch .. //depot/projects/davidxu_thread/bin/pax/tables.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/tables.h#1 branch .. //depot/projects/davidxu_thread/bin/pax/tar.1#1 branch .. //depot/projects/davidxu_thread/bin/pax/tar.c#1 branch .. //depot/projects/davidxu_thread/bin/pax/tar.h#1 branch .. //depot/projects/davidxu_thread/bin/pax/tty_subs.c#1 branch .. //depot/projects/davidxu_thread/bin/ps/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/ps/extern.h#1 branch .. //depot/projects/davidxu_thread/bin/ps/fmt.c#1 branch .. //depot/projects/davidxu_thread/bin/ps/keyword.c#1 branch .. //depot/projects/davidxu_thread/bin/ps/nlist.c#1 branch .. //depot/projects/davidxu_thread/bin/ps/print.c#1 branch .. //depot/projects/davidxu_thread/bin/ps/ps.1#1 branch .. //depot/projects/davidxu_thread/bin/ps/ps.c#1 branch .. //depot/projects/davidxu_thread/bin/ps/ps.h#1 branch .. //depot/projects/davidxu_thread/bin/pwd/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/pwd/pwd.1#1 branch .. //depot/projects/davidxu_thread/bin/pwd/pwd.c#1 branch .. //depot/projects/davidxu_thread/bin/rcp/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/rcp/extern.h#1 branch .. //depot/projects/davidxu_thread/bin/rcp/rcp.1#1 branch .. //depot/projects/davidxu_thread/bin/rcp/rcp.c#1 branch .. //depot/projects/davidxu_thread/bin/rcp/util.c#1 branch .. //depot/projects/davidxu_thread/bin/realpath/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/realpath/realpath.1#1 branch .. //depot/projects/davidxu_thread/bin/realpath/realpath.c#1 branch .. //depot/projects/davidxu_thread/bin/rm/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/rm/rm.1#1 branch .. //depot/projects/davidxu_thread/bin/rm/rm.c#1 branch .. //depot/projects/davidxu_thread/bin/rmail/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/rmdir/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/rmdir/rmdir.1#1 branch .. //depot/projects/davidxu_thread/bin/rmdir/rmdir.c#1 branch .. //depot/projects/davidxu_thread/bin/setfacl/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/setfacl/file.c#1 branch .. //depot/projects/davidxu_thread/bin/setfacl/mask.c#1 branch .. //depot/projects/davidxu_thread/bin/setfacl/merge.c#1 branch .. //depot/projects/davidxu_thread/bin/setfacl/remove.c#1 branch .. //depot/projects/davidxu_thread/bin/setfacl/setfacl.1#1 branch .. //depot/projects/davidxu_thread/bin/setfacl/setfacl.c#1 branch .. //depot/projects/davidxu_thread/bin/setfacl/setfacl.h#1 branch .. //depot/projects/davidxu_thread/bin/setfacl/util.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/sh/TOUR#1 branch .. //depot/projects/davidxu_thread/bin/sh/alias.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/alias.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/arith.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/arith.y#1 branch .. //depot/projects/davidxu_thread/bin/sh/arith_lex.l#1 branch .. //depot/projects/davidxu_thread/bin/sh/bltin/bltin.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/bltin/echo.1#1 branch .. //depot/projects/davidxu_thread/bin/sh/bltin/echo.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/builtins.def#1 branch .. //depot/projects/davidxu_thread/bin/sh/cd.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/cd.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/error.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/error.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/eval.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/eval.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/exec.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/exec.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/expand.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/expand.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/funcs/cmv#1 branch .. //depot/projects/davidxu_thread/bin/sh/funcs/dirs#1 branch .. //depot/projects/davidxu_thread/bin/sh/funcs/kill#1 branch .. //depot/projects/davidxu_thread/bin/sh/funcs/login#1 branch .. //depot/projects/davidxu_thread/bin/sh/funcs/newgrp#1 branch .. //depot/projects/davidxu_thread/bin/sh/funcs/popd#1 branch .. //depot/projects/davidxu_thread/bin/sh/funcs/pushd#1 branch .. //depot/projects/davidxu_thread/bin/sh/funcs/suspend#1 branch .. //depot/projects/davidxu_thread/bin/sh/histedit.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/init.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/input.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/input.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/jobs.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/jobs.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/mail.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/mail.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/main.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/main.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/memalloc.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/memalloc.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/miscbltin.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/mkbuiltins#1 branch .. //depot/projects/davidxu_thread/bin/sh/mkinit.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/mknodes.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/mksyntax.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/mktokens#1 branch .. //depot/projects/davidxu_thread/bin/sh/myhistedit.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/mystring.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/mystring.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/nodes.c.pat#1 branch .. //depot/projects/davidxu_thread/bin/sh/nodetypes#1 branch .. //depot/projects/davidxu_thread/bin/sh/options.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/options.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/output.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/output.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/parser.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/parser.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/redir.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/redir.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/sh.1#1 branch .. //depot/projects/davidxu_thread/bin/sh/shell.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/show.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/show.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/trap.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/trap.h#1 branch .. //depot/projects/davidxu_thread/bin/sh/var.c#1 branch .. //depot/projects/davidxu_thread/bin/sh/var.h#1 branch .. //depot/projects/davidxu_thread/bin/sleep/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/sleep/sleep.1#1 branch .. //depot/projects/davidxu_thread/bin/sleep/sleep.c#1 branch .. //depot/projects/davidxu_thread/bin/stty/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/stty/cchar.c#1 branch .. //depot/projects/davidxu_thread/bin/stty/extern.h#1 branch .. //depot/projects/davidxu_thread/bin/stty/gfmt.c#1 branch .. //depot/projects/davidxu_thread/bin/stty/key.c#1 branch .. //depot/projects/davidxu_thread/bin/stty/modes.c#1 branch .. //depot/projects/davidxu_thread/bin/stty/print.c#1 branch .. //depot/projects/davidxu_thread/bin/stty/stty.1#1 branch .. //depot/projects/davidxu_thread/bin/stty/stty.c#1 branch .. //depot/projects/davidxu_thread/bin/stty/stty.h#1 branch .. //depot/projects/davidxu_thread/bin/stty/util.c#1 branch .. //depot/projects/davidxu_thread/bin/sync/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/sync/sync.8#1 branch .. //depot/projects/davidxu_thread/bin/sync/sync.c#1 branch .. //depot/projects/davidxu_thread/bin/test/Makefile#1 branch .. //depot/projects/davidxu_thread/bin/test/TEST.README#1 branch .. //depot/projects/davidxu_thread/bin/test/TEST.csh#1 branch .. //depot/projects/davidxu_thread/bin/test/TEST.sh#1 branch .. //depot/projects/davidxu_thread/bin/test/test.1#1 branch .. //depot/projects/davidxu_thread/bin/test/test.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/AUTHORS#1 branch .. //depot/projects/davidxu_thread/contrib/amd/BUGS#1 branch .. //depot/projects/davidxu_thread/contrib/amd/COPYING#1 branch .. //depot/projects/davidxu_thread/contrib/amd/ChangeLog#1 branch .. //depot/projects/davidxu_thread/contrib/amd/FREEBSD-Xlist#1 branch .. //depot/projects/davidxu_thread/contrib/amd/FREEBSD-upgrade#1 branch .. //depot/projects/davidxu_thread/contrib/amd/INSTALL#1 branch .. //depot/projects/davidxu_thread/contrib/amd/MIRRORS.html#1 branch .. //depot/projects/davidxu_thread/contrib/amd/MIRRORS.txt#1 branch .. //depot/projects/davidxu_thread/contrib/amd/NEWS#1 branch .. //depot/projects/davidxu_thread/contrib/amd/README#1 branch .. //depot/projects/davidxu_thread/contrib/amd/README.ldap#1 branch .. //depot/projects/davidxu_thread/contrib/amd/README.y2k#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/am_ops.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amd.8#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amd.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amd.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_auto.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_direct.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_error.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_host.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_inherit.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_link.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_linkx.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_nfsl.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_nfsx.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_program.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_root.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_toplvl.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amfs_union.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amq_subr.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/amq_svc.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/autil.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/clock.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/conf.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/conf_parse.y#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/conf_tok.l#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/get_args.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/info_file.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/info_hesiod.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/info_ldap.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/info_ndbm.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/info_nis.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/info_nisplus.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/info_passwd.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/info_union.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/map.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/mapc.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/mntfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/nfs_prot_svc.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/nfs_start.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/nfs_subr.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_TEMPLATE.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_cachefs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_cdfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_efs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_lofs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_mfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_nfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_nfs3.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_nullfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_pcfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_tfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_tmpfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_ufs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_umapfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_unionfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/ops_xfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/opts.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/restart.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/rpc_fwd.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/sched.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/srvr_amfs_auto.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amd/srvr_nfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amq/amq.8#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amq/amq.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amq/amq.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amq/amq_clnt.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amq/amq_xdr.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amq/pawd.1#1 branch .. //depot/projects/davidxu_thread/contrib/amd/amq/pawd.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/aux_conf.h.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/bootstrap#1 branch .. //depot/projects/davidxu_thread/contrib/amd/conf/checkmount/checkmount_bsd44.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/conf/fh_dref/fh_dref_freebsd22.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/conf/mtab/mtab_bsd.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/conf/sa_dref/sa_dref_bsd44.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/conf/transp/transp_sockets.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/conf/trap/trap_default.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/conf/umount/umount_bsd44.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/doc/am-utils.texi#1 branch .. //depot/projects/davidxu_thread/contrib/amd/doc/texinfo.tex#1 branch .. //depot/projects/davidxu_thread/contrib/amd/doc/version.texi#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fixmount/fixmount.8#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fixmount/fixmount.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/fsi_analyze.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/fsi_data.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/fsi_dict.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/fsi_gram.y#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/fsi_lex.l#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/fsi_util.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/fsinfo.8#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/fsinfo.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/fsinfo.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/wr_atab.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/wr_bparam.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/wr_dumpset.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/wr_exportfs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/fsinfo/wr_fstab.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/hlfsd/hlfsd.8#1 branch .. //depot/projects/davidxu_thread/contrib/amd/hlfsd/hlfsd.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/hlfsd/hlfsd.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/hlfsd/homedir.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/hlfsd/nfs_prot_svc.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/hlfsd/stubs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/include/am_compat.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/include/am_defs.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/include/am_utils.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/include/am_xdr_func.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/include/amq_defs.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/include/mount_headers1.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/include/mount_headers2.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/ldap-id.ms#1 branch .. //depot/projects/davidxu_thread/contrib/amd/ldap-id.txt#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/alloca.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/amu.h#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/hasmntopt.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/misc_rpc.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/mount_fs.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/mtab.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/nfs_prot_xdr.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/strerror.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/util.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/wire.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/xdr_func.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/libamu/xutil.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/GNUmakefile#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/amdgrep#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/amindent#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/autopat#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/chop-aclocal.pl#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/copy-if-newbig#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/macros/HEADER#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/macros/TRAILER#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/mk-aclocal#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/mkconf#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/rmtspc#1 branch .. //depot/projects/davidxu_thread/contrib/amd/m4/update_build_version#1 branch .. //depot/projects/davidxu_thread/contrib/amd/mk-amd-map/mk-amd-map.8#1 branch .. //depot/projects/davidxu_thread/contrib/amd/mk-amd-map/mk-amd-map.c#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/Makefile.am#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/am-eject.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/amd.conf-sample#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/amd.conf.5#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/amd2ldif.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/amd2sun.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/automount2amd.8#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/automount2amd.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/ctl-amd.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/ctl-hlfsd.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/expn.1#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/expn.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/fix-amd-map.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/fixrmtab.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/redhat-ctl-amd.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/wait4amd.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/scripts/wait4amd2die.in#1 branch .. //depot/projects/davidxu_thread/contrib/amd/tasks#1 branch .. //depot/projects/davidxu_thread/contrib/amd/wire-test/wire-test.8#1 branch .. //depot/projects/davidxu_thread/contrib/amd/wire-test/wire-test.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/AUTHORS#1 branch .. //depot/projects/davidxu_thread/contrib/bc/ChangeLog#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Examples/ckbook.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Examples/pi.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Examples/primes.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Examples/twins.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/FAQ#1 branch .. //depot/projects/davidxu_thread/contrib/bc/FREEBSD-upgrade#1 branch .. //depot/projects/davidxu_thread/contrib/bc/INSTALL#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Makefile.am#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bc/NEWS#1 branch .. //depot/projects/davidxu_thread/contrib/bc/README#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/BUG.bc#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/array.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/arrayp.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/aryprm.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/atan.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/checklib.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/div.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/exp.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/fact.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/jn.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/ln.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/mul.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/raise.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/signum#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/sine.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/sqrt.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/sqrt1.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/sqrt2.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/testfn.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/Test/timetest#1 branch .. //depot/projects/davidxu_thread/contrib/bc/acconfig.h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/aclocal.m4#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/Makefile.am#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/bc.y#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/bcdefs.h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/const.h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/execute.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/fix-libmath_h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/global.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/global.h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/libmath.b#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/libmath.h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/load.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/main.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/proto.h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/sbc.y#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/scan.l#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/storage.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/bc/util.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/config.h.in#1 branch .. //depot/projects/davidxu_thread/contrib/bc/configure#1 branch .. //depot/projects/davidxu_thread/contrib/bc/configure.in#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/Makefile.am#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/array.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/dc-proto.h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/dc-regdef.h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/dc.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/dc.h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/eval.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/misc.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/numeric.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/stack.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/dc/string.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/doc/Makefile.am#1 branch .. //depot/projects/davidxu_thread/contrib/bc/doc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bc/doc/bc.1#1 branch .. //depot/projects/davidxu_thread/contrib/bc/doc/bc.texi#1 branch .. //depot/projects/davidxu_thread/contrib/bc/doc/dc.1#1 branch .. //depot/projects/davidxu_thread/contrib/bc/doc/dc.texi#1 branch .. //depot/projects/davidxu_thread/contrib/bc/h/number.h#1 branch .. //depot/projects/davidxu_thread/contrib/bc/install-sh#1 branch .. //depot/projects/davidxu_thread/contrib/bc/lib/Makefile.am#1 branch .. //depot/projects/davidxu_thread/contrib/bc/lib/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bc/lib/number.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/lib/testmul.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/lib/vfprintf.c#1 branch .. //depot/projects/davidxu_thread/contrib/bc/missing#1 branch .. //depot/projects/davidxu_thread/contrib/bc/mkinstalldirs#1 branch .. //depot/projects/davidxu_thread/contrib/bc/stamp-h.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/CHANGES#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/COPYRIGHT#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/FAQ#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/FREEBSD-Upgrade#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/FREEBSD-Xlist#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/KNOWN_DEFECTS#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/README#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/acconfig.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/check-tool.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/check-tool.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/named-checkconf.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/named-checkconf.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/named-checkconf.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/named-checkconf.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/named-checkzone.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/named-checkzone.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/named-checkzone.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/check/named-checkzone.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/dig.1#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/dig.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/dig.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/dig.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/dighost.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/host.1#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/host.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/host.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/host.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/include/dig/dig.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/nslookup.1#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/nslookup.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/nslookup.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dig/nslookup.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-keygen.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-keygen.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-keygen.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-keygen.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-makekeyset.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-makekeyset.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-makekeyset.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-makekeyset.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-signkey.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-signkey.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-signkey.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-signkey.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-signzone.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-signzone.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-signzone.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssec-signzone.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssectool.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/dnssec/dnssectool.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/aclconf.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/builtin.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/client.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/config.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/control.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/controlconf.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/aclconf.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/builtin.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/client.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/config.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/control.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/globals.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/interfacemgr.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/listenlist.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/log.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/logconf.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/lwaddr.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/lwdclient.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/lwresd.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/lwsearch.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/main.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/notify.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/query.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/server.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/sortlist.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/tkeyconf.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/tsigconf.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/types.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/update.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/xfrout.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/include/named/zoneconf.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/interfacemgr.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/listenlist.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/log.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/logconf.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwaddr.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwdclient.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwderror.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwdgabn.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwdgnba.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwdgrbn.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwdnoop.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwresd.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwresd.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwresd.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwresd.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/lwsearch.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/main.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/named.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/named.conf.5#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/named.conf.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/named.conf.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/named.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/named.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/notify.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/query.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/server.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/sortlist.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/tkeyconf.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/tsigconf.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/unix/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/unix/include/named/os.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/unix/os.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/update.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/xfrout.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/named/zoneconf.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/nsupdate/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/nsupdate/nsupdate.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/nsupdate/nsupdate.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/nsupdate/nsupdate.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/nsupdate/nsupdate.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/include/rndc/os.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc-confgen.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc-confgen.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc-confgen.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc-confgen.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc.8#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc.conf#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc.conf.5#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc.conf.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc.conf.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc.docbook#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/rndc.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/unix/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/unix/os.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/util.c#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/bin/rndc/util.h#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/config.guess#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/config.sub#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/configure.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM-book.xml#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM.ch01.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM.ch02.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM.ch03.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM.ch04.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM.ch05.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM.ch06.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM.ch07.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM.ch08.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM.ch09.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Bv9ARM.html#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/README-SGML#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/isc.color.gif#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/nominum-docbook-html.dsl.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/nominum-docbook-print.dsl.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/arm/validate.sh.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-baba-dnsext-acl-reqts-01.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-daigle-napstr-04.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-danisch-dns-rr-smtp-03.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-dnsext-opcode-discover-02.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-durand-dnsop-dynreverse-00.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-axfr-clarify-05.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-dhcid-rr-08.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-2535typecode-change-06.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-intro-11.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-protocol-07.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-records-09.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-insensitive-04.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-interop3597-01.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-keyrr-key-signing-flag-12.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-mdns-33.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-tkey-renewal-mode-04.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-tsig-sha-00.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsext-wcard-clarify-02.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsop-bad-dns-res-02.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsop-dnssec-operational-practices-01.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-configuration-02.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-issues-09.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-transport-guidelines-01.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsop-key-rollover-requirements-01.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsop-misbehavior-against-aaaa-00.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsop-respsize-01.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-dnsop-serverid-02.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-enum-e164-gstn-np-05.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-ipseckey-rr-09.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-ipv6-node-requirements-08.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ietf-secsh-dns-05.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-ihren-dnsext-threshold-validation-00.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-kato-dnsop-local-zones-00.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/draft-park-ipv6-extensions-dns-pnp-00.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/draft/update#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/misc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/misc/dnssec#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/misc/format-options.pl#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/misc/ipv6#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/misc/migration#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/misc/migration-4to9#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/misc/options#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/misc/rfc-compliance#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/misc/roadmap#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/misc/sdb#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/index#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1032.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1033.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1034.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1035.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1101.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1122.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1123.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1183.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1348.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1535.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1536.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1537.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1591.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1611.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1612.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1706.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1712.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1750.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1876.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1886.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1982.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1995.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc1996.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2052.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2104.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2119.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2133.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2136.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2137.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2163.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2168.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2181.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2230.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2308.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2317.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2373.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2374.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2375.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2418.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2535.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2536.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2537.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2538.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2539.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2540.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2541.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2553.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2671.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2672.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2673.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2782.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2825.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2826.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2845.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2874.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2915.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2929.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2930.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc2931.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3007.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3008.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3071.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3090.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3110.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3123.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3152.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3197.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3225.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3226.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3258.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3363.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3364.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3425.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3445.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3467.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3490.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3491.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3492.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3493.txt#1 branch .. //depot/projects/davidxu_thread/contrib/bind9/doc/rfc/rfc3513.txt#1 branch >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Nov 20 01:57:34 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 038D616A4D0; Sat, 20 Nov 2004 01:57:33 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7314916A4CE for ; Sat, 20 Nov 2004 01:57:32 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0D42743D39 for ; Sat, 20 Nov 2004 01:57:32 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK1vVul098450 for ; Sat, 20 Nov 2004 01:57:32 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK1vVV9098447 for perforce@freebsd.org; Sat, 20 Nov 2004 01:57:31 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 01:57:31 GMT Message-Id: <200411200157.iAK1vVV9098447@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65484 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 01:57:34 -0000 http://perforce.freebsd.org/chv.cgi?CH=65484 Change 65484 by davidxu@davidxu_alona on 2004/11/20 01:52:59 my new thread branch. :-) Affected files ... .. //depot/projects/davidxu_thread/src/COPYRIGHT#1 branch .. //depot/projects/davidxu_thread/src/MAINTAINERS#1 branch .. //depot/projects/davidxu_thread/src/Makefile#1 branch .. //depot/projects/davidxu_thread/src/Makefile.inc1#1 branch .. //depot/projects/davidxu_thread/src/README#1 branch .. //depot/projects/davidxu_thread/src/UPDATING#1 branch .. //depot/projects/davidxu_thread/src/UPDATING.64BTT#1 branch .. //depot/projects/davidxu_thread/src/bin/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/bin/cat/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/cat/cat.1#1 branch .. //depot/projects/davidxu_thread/src/bin/cat/cat.c#1 branch .. //depot/projects/davidxu_thread/src/bin/chflags/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/chflags/chflags.1#1 branch .. //depot/projects/davidxu_thread/src/bin/chflags/chflags.c#1 branch .. //depot/projects/davidxu_thread/src/bin/chio/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/chio/chio.1#1 branch .. //depot/projects/davidxu_thread/src/bin/chio/chio.c#1 branch .. //depot/projects/davidxu_thread/src/bin/chio/defs.h#1 branch .. //depot/projects/davidxu_thread/src/bin/chio/pathnames.h#1 branch .. //depot/projects/davidxu_thread/src/bin/chmod/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/chmod/chmod.1#1 branch .. //depot/projects/davidxu_thread/src/bin/chmod/chmod.c#1 branch .. //depot/projects/davidxu_thread/src/bin/cp/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/cp/cp.1#1 branch .. //depot/projects/davidxu_thread/src/bin/cp/cp.c#1 branch .. //depot/projects/davidxu_thread/src/bin/cp/extern.h#1 branch .. //depot/projects/davidxu_thread/src/bin/cp/utils.c#1 branch .. //depot/projects/davidxu_thread/src/bin/csh/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/csh/USD.doc/csh.1#1 branch .. //depot/projects/davidxu_thread/src/bin/csh/USD.doc/csh.2#1 branch .. //depot/projects/davidxu_thread/src/bin/csh/USD.doc/csh.3#1 branch .. //depot/projects/davidxu_thread/src/bin/csh/USD.doc/csh.4#1 branch .. //depot/projects/davidxu_thread/src/bin/csh/USD.doc/csh.a#1 branch .. //depot/projects/davidxu_thread/src/bin/csh/USD.doc/csh.g#1 branch .. //depot/projects/davidxu_thread/src/bin/csh/USD.doc/tabs#1 branch .. //depot/projects/davidxu_thread/src/bin/csh/config.h#1 branch .. //depot/projects/davidxu_thread/src/bin/csh/host.defs#1 branch .. //depot/projects/davidxu_thread/src/bin/date/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/date/date.1#1 branch .. //depot/projects/davidxu_thread/src/bin/date/date.c#1 branch .. //depot/projects/davidxu_thread/src/bin/date/extern.h#1 branch .. //depot/projects/davidxu_thread/src/bin/date/netdate.c#1 branch .. //depot/projects/davidxu_thread/src/bin/date/vary.c#1 branch .. //depot/projects/davidxu_thread/src/bin/date/vary.h#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/args.c#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/conv.c#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/conv_tab.c#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/dd.1#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/dd.c#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/dd.h#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/extern.h#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/gen.c#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/misc.c#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/position.c#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.ascii#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.ebcdic#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.ibm#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.lcase#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.oldascii#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.oldebcdic#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.oldibm#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.pareven#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.parnone#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.parodd#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.parset#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.swab#1 branch .. //depot/projects/davidxu_thread/src/bin/dd/ref.ucase#1 branch .. //depot/projects/davidxu_thread/src/bin/df/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/df/df.1#1 branch .. //depot/projects/davidxu_thread/src/bin/df/df.c#1 branch .. //depot/projects/davidxu_thread/src/bin/domainname/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/domainname/domainname.1#1 branch .. //depot/projects/davidxu_thread/src/bin/domainname/domainname.c#1 branch .. //depot/projects/davidxu_thread/src/bin/echo/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/echo/echo.1#1 branch .. //depot/projects/davidxu_thread/src/bin/echo/echo.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/POSIX#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/README#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/buf.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/cbc.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/ed.1#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/ed.h#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/glbl.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/io.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/main.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/re.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/sub.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/=.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/README#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/TODO#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/a.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/a.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/a.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/a1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/a2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/addr.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/addr.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/addr.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/addr1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/addr2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/ascii.d.uu#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/ascii.r.uu#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/ascii.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/bang1.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/bang1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/bang1.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/bang1.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/bang2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/c.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/c.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/c.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/c1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/c2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/ckscripts.sh#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/d.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/d.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/d.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/d.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e1.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e1.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e1.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e2.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e2.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e2.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e3.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e3.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e3.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e3.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e4.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e4.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/e4.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/f1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/f2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g1.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g1.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g1.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g2.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g2.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g2.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g3.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g3.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g3.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g3.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g4.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g4.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g4.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g5.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g5.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/g5.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/h.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/i.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/i.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/i.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/i1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/i2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/i3.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/j.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/j.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/j.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/k.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/k.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/k.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/k1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/k2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/k3.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/k4.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/l.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/l.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/l.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/m.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/m.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/m.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/m.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/mkscripts.sh#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/n.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/n.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/n.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/nl.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/nl1.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/nl1.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/nl1.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/nl2.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/nl2.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/nl2.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/p.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/p.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/p.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/q.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/q.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/q.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/q1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r1.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r1.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r1.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r2.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r2.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r2.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r3.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r3.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/r3.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s1.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s1.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s1.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s10.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s2.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s2.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s2.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s3.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s3.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s3.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s3.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s4.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s5.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s6.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s7.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s8.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/s9.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/t.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/t.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/t1.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/t1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/t1.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/t1.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/t2.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/t2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/t2.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/t2.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/u.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/u.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/u.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/u.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/v.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/v.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/v.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/w.d#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/w.r#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/w.t#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/w1.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/w2.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/w3.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/x.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/test/z.err#1 branch .. //depot/projects/davidxu_thread/src/bin/ed/undo.c#1 branch .. //depot/projects/davidxu_thread/src/bin/expr/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/expr/expr.1#1 branch .. //depot/projects/davidxu_thread/src/bin/expr/expr.y#1 branch .. //depot/projects/davidxu_thread/src/bin/getfacl/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/getfacl/getfacl.1#1 branch .. //depot/projects/davidxu_thread/src/bin/getfacl/getfacl.c#1 branch .. //depot/projects/davidxu_thread/src/bin/hostname/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/hostname/hostname.1#1 branch .. //depot/projects/davidxu_thread/src/bin/hostname/hostname.c#1 branch .. //depot/projects/davidxu_thread/src/bin/kenv/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/kenv/kenv.1#1 branch .. //depot/projects/davidxu_thread/src/bin/kenv/kenv.c#1 branch .. //depot/projects/davidxu_thread/src/bin/kill/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/kill/kill.1#1 branch .. //depot/projects/davidxu_thread/src/bin/kill/kill.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ln/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/ln/ln.1#1 branch .. //depot/projects/davidxu_thread/src/bin/ln/ln.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ln/symlink.7#1 branch .. //depot/projects/davidxu_thread/src/bin/ls/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/ls/cmp.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ls/extern.h#1 branch .. //depot/projects/davidxu_thread/src/bin/ls/ls.1#1 branch .. //depot/projects/davidxu_thread/src/bin/ls/ls.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ls/ls.h#1 branch .. //depot/projects/davidxu_thread/src/bin/ls/print.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ls/util.c#1 branch .. //depot/projects/davidxu_thread/src/bin/mkdir/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/mkdir/mkdir.1#1 branch .. //depot/projects/davidxu_thread/src/bin/mkdir/mkdir.c#1 branch .. //depot/projects/davidxu_thread/src/bin/mv/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/mv/mv.1#1 branch .. //depot/projects/davidxu_thread/src/bin/mv/mv.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/ar_io.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/ar_subs.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/buf_subs.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/cache.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/cache.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/cpio.1#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/cpio.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/cpio.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/extern.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/file_subs.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/ftree.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/ftree.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/gen_subs.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/getoldopt.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/options.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/options.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/pat_rep.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/pat_rep.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/pax.1#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/pax.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/pax.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/sel_subs.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/sel_subs.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/tables.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/tables.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/tar.1#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/tar.c#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/tar.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pax/tty_subs.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ps/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/ps/extern.h#1 branch .. //depot/projects/davidxu_thread/src/bin/ps/fmt.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ps/keyword.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ps/nlist.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ps/print.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ps/ps.1#1 branch .. //depot/projects/davidxu_thread/src/bin/ps/ps.c#1 branch .. //depot/projects/davidxu_thread/src/bin/ps/ps.h#1 branch .. //depot/projects/davidxu_thread/src/bin/pwd/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/pwd/pwd.1#1 branch .. //depot/projects/davidxu_thread/src/bin/pwd/pwd.c#1 branch .. //depot/projects/davidxu_thread/src/bin/rcp/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/rcp/extern.h#1 branch .. //depot/projects/davidxu_thread/src/bin/rcp/rcp.1#1 branch .. //depot/projects/davidxu_thread/src/bin/rcp/rcp.c#1 branch .. //depot/projects/davidxu_thread/src/bin/rcp/util.c#1 branch .. //depot/projects/davidxu_thread/src/bin/realpath/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/realpath/realpath.1#1 branch .. //depot/projects/davidxu_thread/src/bin/realpath/realpath.c#1 branch .. //depot/projects/davidxu_thread/src/bin/rm/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/rm/rm.1#1 branch .. //depot/projects/davidxu_thread/src/bin/rm/rm.c#1 branch .. //depot/projects/davidxu_thread/src/bin/rmail/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/rmdir/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/rmdir/rmdir.1#1 branch .. //depot/projects/davidxu_thread/src/bin/rmdir/rmdir.c#1 branch .. //depot/projects/davidxu_thread/src/bin/setfacl/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/setfacl/file.c#1 branch .. //depot/projects/davidxu_thread/src/bin/setfacl/mask.c#1 branch .. //depot/projects/davidxu_thread/src/bin/setfacl/merge.c#1 branch .. //depot/projects/davidxu_thread/src/bin/setfacl/remove.c#1 branch .. //depot/projects/davidxu_thread/src/bin/setfacl/setfacl.1#1 branch .. //depot/projects/davidxu_thread/src/bin/setfacl/setfacl.c#1 branch .. //depot/projects/davidxu_thread/src/bin/setfacl/setfacl.h#1 branch .. //depot/projects/davidxu_thread/src/bin/setfacl/util.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/TOUR#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/alias.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/alias.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/arith.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/arith.y#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/arith_lex.l#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/bltin/bltin.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/bltin/echo.1#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/bltin/echo.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/builtins.def#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/cd.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/cd.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/error.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/error.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/eval.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/eval.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/exec.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/exec.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/expand.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/expand.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/funcs/cmv#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/funcs/dirs#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/funcs/kill#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/funcs/login#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/funcs/newgrp#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/funcs/popd#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/funcs/pushd#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/funcs/suspend#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/histedit.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/init.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/input.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/input.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/jobs.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/jobs.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/mail.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/mail.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/main.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/main.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/memalloc.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/memalloc.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/miscbltin.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/mkbuiltins#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/mkinit.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/mknodes.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/mksyntax.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/mktokens#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/myhistedit.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/mystring.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/mystring.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/nodes.c.pat#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/nodetypes#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/options.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/options.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/output.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/output.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/parser.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/parser.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/redir.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/redir.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/sh.1#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/shell.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/show.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/show.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/trap.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/trap.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/var.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sh/var.h#1 branch .. //depot/projects/davidxu_thread/src/bin/sleep/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/sleep/sleep.1#1 branch .. //depot/projects/davidxu_thread/src/bin/sleep/sleep.c#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/cchar.c#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/extern.h#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/gfmt.c#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/key.c#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/modes.c#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/print.c#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/stty.1#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/stty.c#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/stty.h#1 branch .. //depot/projects/davidxu_thread/src/bin/stty/util.c#1 branch .. //depot/projects/davidxu_thread/src/bin/sync/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/sync/sync.8#1 branch .. //depot/projects/davidxu_thread/src/bin/sync/sync.c#1 branch .. //depot/projects/davidxu_thread/src/bin/test/Makefile#1 branch .. //depot/projects/davidxu_thread/src/bin/test/TEST.README#1 branch .. //depot/projects/davidxu_thread/src/bin/test/TEST.csh#1 branch .. //depot/projects/davidxu_thread/src/bin/test/TEST.sh#1 branch .. //depot/projects/davidxu_thread/src/bin/test/test.1#1 branch .. //depot/projects/davidxu_thread/src/bin/test/test.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/AUTHORS#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/BUGS#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/COPYING#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/ChangeLog#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/FREEBSD-Xlist#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/FREEBSD-upgrade#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/INSTALL#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/MIRRORS.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/MIRRORS.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/NEWS#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/README#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/README.ldap#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/README.y2k#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/am_ops.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amd.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amd.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amd.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_auto.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_direct.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_error.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_host.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_inherit.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_link.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_linkx.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_nfsl.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_nfsx.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_program.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_root.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_toplvl.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amfs_union.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amq_subr.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/amq_svc.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/autil.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/clock.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/conf.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/conf_parse.y#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/conf_tok.l#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/get_args.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/info_file.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/info_hesiod.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/info_ldap.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/info_ndbm.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/info_nis.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/info_nisplus.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/info_passwd.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/info_union.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/map.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/mapc.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/mntfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/nfs_prot_svc.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/nfs_start.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/nfs_subr.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_TEMPLATE.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_cachefs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_cdfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_efs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_lofs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_mfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_nfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_nfs3.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_nullfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_pcfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_tfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_tmpfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_ufs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_umapfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_unionfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/ops_xfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/opts.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/restart.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/rpc_fwd.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/sched.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/srvr_amfs_auto.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amd/srvr_nfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amq/amq.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amq/amq.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amq/amq.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amq/amq_clnt.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amq/amq_xdr.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amq/pawd.1#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/amq/pawd.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/aux_conf.h.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/bootstrap#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/conf/checkmount/checkmount_bsd44.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/conf/fh_dref/fh_dref_freebsd22.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/conf/mtab/mtab_bsd.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/conf/nfs_prot/nfs_prot_freebsd2.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/conf/nfs_prot/nfs_prot_freebsd3.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/conf/sa_dref/sa_dref_bsd44.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/conf/transp/transp_sockets.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/conf/trap/trap_default.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/conf/umount/umount_bsd44.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/doc/am-utils.texi#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/doc/texinfo.tex#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/doc/version.texi#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fixmount/fixmount.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fixmount/fixmount.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/fsi_analyze.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/fsi_data.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/fsi_dict.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/fsi_gram.y#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/fsi_lex.l#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/fsi_util.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/fsinfo.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/fsinfo.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/fsinfo.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/wr_atab.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/wr_bparam.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/wr_dumpset.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/wr_exportfs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/fsinfo/wr_fstab.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/hlfsd/hlfsd.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/hlfsd/hlfsd.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/hlfsd/hlfsd.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/hlfsd/homedir.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/hlfsd/nfs_prot_svc.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/hlfsd/stubs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/include/am_compat.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/include/am_defs.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/include/am_utils.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/include/am_xdr_func.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/include/amq_defs.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/include/mount_headers1.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/include/mount_headers2.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/ldap-id.ms#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/ldap-id.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/alloca.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/amu.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/hasmntopt.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/misc_rpc.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/mount_fs.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/mtab.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/nfs_prot_xdr.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/strerror.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/util.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/wire.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/xdr_func.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/libamu/xutil.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/GNUmakefile#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/amdgrep#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/amindent#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/autopat#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/chop-aclocal.pl#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/copy-if-newbig#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/macros/HEADER#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/macros/TRAILER#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/mk-aclocal#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/mkconf#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/rmtspc#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/m4/update_build_version#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/mk-amd-map/mk-amd-map.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/mk-amd-map/mk-amd-map.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/Makefile.am#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/am-eject.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/amd.conf-sample#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/amd.conf.5#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/amd2ldif.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/amd2sun.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/automount2amd.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/automount2amd.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/ctl-amd.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/ctl-hlfsd.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/expn.1#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/expn.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/fix-amd-map.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/fixrmtab.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/redhat-ctl-amd.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/wait4amd.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/scripts/wait4amd2die.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/tasks#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/wire-test/wire-test.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/amd/wire-test/wire-test.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/AUTHORS#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/ChangeLog#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Examples/ckbook.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Examples/pi.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Examples/primes.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Examples/twins.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/FAQ#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/FREEBSD-upgrade#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/INSTALL#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Makefile.am#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/NEWS#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/README#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/BUG.bc#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/array.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/arrayp.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/aryprm.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/atan.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/checklib.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/div.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/exp.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/fact.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/jn.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/ln.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/mul.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/raise.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/signum#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/sine.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/sqrt.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/sqrt1.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/sqrt2.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/testfn.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/Test/timetest#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/acconfig.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/aclocal.m4#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/Makefile.am#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/bc.y#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/bcdefs.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/const.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/execute.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/fix-libmath_h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/global.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/global.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/libmath.b#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/libmath.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/load.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/main.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/proto.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/sbc.y#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/scan.l#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/storage.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/bc/util.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/config.h.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/configure#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/configure.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/Makefile.am#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/array.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/dc-proto.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/dc-regdef.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/dc.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/dc.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/eval.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/misc.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/numeric.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/stack.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/dc/string.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/doc/Makefile.am#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/doc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/doc/bc.1#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/doc/bc.texi#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/doc/dc.1#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/doc/dc.texi#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/h/number.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/install-sh#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/lib/Makefile.am#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/lib/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/lib/number.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/lib/testmul.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/lib/vfprintf.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/missing#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/mkinstalldirs#1 branch .. //depot/projects/davidxu_thread/src/contrib/bc/stamp-h.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/CHANGES#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/COPYRIGHT#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/FAQ#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/FREEBSD-Upgrade#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/FREEBSD-Xlist#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/KNOWN_DEFECTS#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/README#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/acconfig.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/check-tool.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/check-tool.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/named-checkconf.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/named-checkconf.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/named-checkconf.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/named-checkconf.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/named-checkzone.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/named-checkzone.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/named-checkzone.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/check/named-checkzone.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/dig.1#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/dig.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/dig.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/dig.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/dighost.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/host.1#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/host.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/host.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/host.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/include/dig/dig.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/nslookup.1#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/nslookup.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/nslookup.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dig/nslookup.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-keygen.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-keygen.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-keygen.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-keygen.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-makekeyset.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-makekeyset.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-makekeyset.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-makekeyset.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-signkey.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-signkey.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-signkey.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-signkey.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-signzone.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-signzone.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-signzone.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssec-signzone.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssectool.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/dnssec/dnssectool.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/aclconf.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/builtin.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/client.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/config.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/control.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/controlconf.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/aclconf.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/builtin.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/client.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/config.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/control.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/globals.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/interfacemgr.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/listenlist.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/log.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/logconf.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/lwaddr.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/lwdclient.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/lwresd.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/lwsearch.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/main.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/notify.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/query.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/server.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/sortlist.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/tkeyconf.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/tsigconf.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/types.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/update.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/xfrout.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/include/named/zoneconf.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/interfacemgr.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/listenlist.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/log.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/logconf.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwaddr.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwdclient.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwderror.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwdgabn.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwdgnba.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwdgrbn.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwdnoop.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwresd.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwresd.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwresd.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwresd.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/lwsearch.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/main.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/named.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/named.conf.5#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/named.conf.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/named.conf.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/named.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/named.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/notify.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/query.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/server.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/sortlist.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/tkeyconf.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/tsigconf.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/unix/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/unix/include/named/os.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/unix/os.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/update.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/xfrout.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/named/zoneconf.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/nsupdate/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/nsupdate/nsupdate.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/nsupdate/nsupdate.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/nsupdate/nsupdate.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/nsupdate/nsupdate.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/include/rndc/os.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc-confgen.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc-confgen.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc-confgen.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc-confgen.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc.8#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc.conf#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc.conf.5#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc.conf.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc.conf.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc.docbook#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/rndc.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/unix/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/unix/os.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/util.c#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/bin/rndc/util.h#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/config.guess#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/config.sub#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/configure.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM-book.xml#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM.ch01.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM.ch02.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM.ch03.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM.ch04.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM.ch05.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM.ch06.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM.ch07.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM.ch08.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM.ch09.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Bv9ARM.html#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/README-SGML#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/isc.color.gif#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/nominum-docbook-html.dsl.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/nominum-docbook-print.dsl.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/arm/validate.sh.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-baba-dnsext-acl-reqts-01.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-daigle-napstr-04.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-danisch-dns-rr-smtp-03.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-dnsext-opcode-discover-02.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-durand-dnsop-dynreverse-00.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-axfr-clarify-05.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dhcid-rr-08.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-2535typecode-change-06.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-intro-11.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-protocol-07.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-dnssec-records-09.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-insensitive-04.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-interop3597-01.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-keyrr-key-signing-flag-12.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-mdns-33.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-tkey-renewal-mode-04.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-tsig-sha-00.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsext-wcard-clarify-02.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsop-bad-dns-res-02.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsop-dnssec-operational-practices-01.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-configuration-02.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-dns-issues-09.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsop-ipv6-transport-guidelines-01.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsop-key-rollover-requirements-01.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsop-misbehavior-against-aaaa-00.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsop-respsize-01.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-dnsop-serverid-02.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-enum-e164-gstn-np-05.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-ipseckey-rr-09.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-ipv6-node-requirements-08.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ietf-secsh-dns-05.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-ihren-dnsext-threshold-validation-00.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-kato-dnsop-local-zones-00.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/draft-park-ipv6-extensions-dns-pnp-00.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/draft/update#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/misc/Makefile.in#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/misc/dnssec#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/misc/format-options.pl#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/misc/ipv6#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/misc/migration#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/misc/migration-4to9#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/misc/options#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/misc/rfc-compliance#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/misc/roadmap#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/misc/sdb#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/index#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1032.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1033.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1034.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1035.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1101.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1122.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1123.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1183.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1348.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1535.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1536.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1537.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1591.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1611.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1612.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1706.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1712.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1750.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1876.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1886.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1982.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1995.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc1996.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2052.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2104.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2119.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2133.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2136.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2137.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2163.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2168.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2181.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2230.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2308.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2317.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2373.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2374.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2375.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2418.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2535.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2536.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2537.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2538.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2539.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2540.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2541.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2553.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2671.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2672.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2673.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2782.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2825.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2826.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2845.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2874.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2915.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2929.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2930.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc2931.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3007.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3008.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3071.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3090.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3110.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3123.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3152.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3197.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3225.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3226.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3258.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3363.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3364.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3425.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3445.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3467.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3490.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3491.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3492.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3493.txt#1 branch .. //depot/projects/davidxu_thread/src/contrib/bind9/doc/rfc/rfc3513.txt#1 branch >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Nov 20 02:14:54 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5E49916A4D0; Sat, 20 Nov 2004 02:14:54 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 21EEB16A4CE for ; Sat, 20 Nov 2004 02:14:54 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E5BFE43D48 for ; Sat, 20 Nov 2004 02:14:53 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK2ErOX099140 for ; Sat, 20 Nov 2004 02:14:53 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK2ErOL099137 for perforce@freebsd.org; Sat, 20 Nov 2004 02:14:53 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 02:14:53 GMT Message-Id: <200411200214.iAK2ErOL099137@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65486 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 02:14:54 -0000 http://perforce.freebsd.org/chv.cgi?CH=65486 Change 65486 by davidxu@davidxu_alona on 2004/11/20 02:14:17 1. Use per-chain mutex lock. 2. Fix race conditions. Affected files ... .. //depot/projects/davidxu_thread/src/sys/kern/kern_umtx.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/sys/kern/kern_umtx.c#2 (text+ko) ==== @@ -49,35 +49,67 @@ pid_t uq_pid; /* Pid key component. */ }; -#define UMTX_QUEUES 128 -#define UMTX_HASH(pid, umtx) \ - (((uintptr_t)pid + ((uintptr_t)umtx & ~65535)) % UMTX_QUEUES) +LIST_HEAD(umtx_head, umtx_q); +struct umtxq_chain { + struct umtx_head uc_queues; /* List of sleep queues. */ + struct mtx uc_lock; /* lock for this chain. */ +}; + +#define GOLDEN_RATIO_PRIME 2654404609U +#define UMTX_QUEUES 128 +#define UMTX_SHIFTS (__WORD_BIT - 7) -LIST_HEAD(umtx_head, umtx_q); -static struct umtx_head queues[UMTX_QUEUES]; +static struct umtxq_chain umtxq_chains[UMTX_QUEUES]; static MALLOC_DEFINE(M_UMTX, "umtx", "UMTX queue memory"); -static struct mtx umtx_lock; -MTX_SYSINIT(umtx, &umtx_lock, "umtx", MTX_DEF); +#define UMTX_LOCK(chain) \ + mtx_lock(&umtxq_chains[chain].uc_lock) +#define UMTX_UNLOCK(chain) \ + mtx_unlock(&umtxq_chains[chain].uc_lock) +#define UMTX_MUTEX(chain) \ + (&umtxq_chains[chain].uc_lock) + +#define UMTX_CONTESTED LONG_MIN + +static void umtx_queues_init(void *); +static int umtx_hash(unsigned, void *); +static struct umtx_q *umtx_lookup(struct thread *, struct umtx *, int); +static struct umtx_q *umtx_insert(struct thread *, struct umtx *, int); + +SYSINIT(umtx, SI_SUB_LOCK, SI_ORDER_MIDDLE, umtx_queues_init, NULL); + +static void +umtx_queues_init(void *arg) +{ + int i; -#define UMTX_LOCK() mtx_lock(&umtx_lock); -#define UMTX_UNLOCK() mtx_unlock(&umtx_lock); + for (i = 0; i < UMTX_QUEUES; ++i) { + LIST_INIT(&umtxq_chains[i].uc_queues); + mtx_init(&umtxq_chains[i].uc_lock, "umtxq_lock", NULL, + MTX_DEF | MTX_DUPOK); + } +} -#define UMTX_CONTESTED LONG_MIN +static inline int +umtx_hash(unsigned pid, void *umtx) +{ + unsigned n = (unsigned)umtx + pid; -static struct umtx_q *umtx_lookup(struct thread *, struct umtx *umtx); -static struct umtx_q *umtx_insert(struct thread *, struct umtx *umtx); + return (n * GOLDEN_RATIO_PRIME) >> UMTX_SHIFTS; +} static struct umtx_q * -umtx_lookup(struct thread *td, struct umtx *umtx) +umtx_lookup(struct thread *td, struct umtx *umtx, int chain) { struct umtx_head *head; struct umtx_q *uq; pid_t pid; + mtx_assert(UMTXQ_MUTEX(chain), MA_OWNED); + pid = td->td_proc->p_pid; - head = &queues[UMTX_HASH(td->td_proc->p_pid, umtx)]; + head = &umtxq_chains[chain].uc_queues; LIST_FOREACH(uq, head, uq_next) { if (uq->uq_pid == pid && uq->uq_umtx == umtx) @@ -91,7 +123,7 @@ * Insert a thread onto the umtx queue. */ static struct umtx_q * -umtx_insert(struct thread *td, struct umtx *umtx) +umtx_insert(struct thread *td, struct umtx *umtx, int chain) { struct umtx_head *head; struct umtx_q *uq; @@ -99,19 +131,19 @@ pid = td->td_proc->p_pid; - if ((uq = umtx_lookup(td, umtx)) == NULL) { + if ((uq = umtx_lookup(td, umtx, chain)) == NULL) { struct umtx_q *ins; - UMTX_UNLOCK(); + UMTX_UNLOCK(chain); ins = malloc(sizeof(*uq), M_UMTX, M_ZERO | M_WAITOK); - UMTX_LOCK(); + UMTX_LOCK(chain); /* * Some one else could have succeeded while we were blocked * waiting on memory. */ - if ((uq = umtx_lookup(td, umtx)) == NULL) { - head = &queues[UMTX_HASH(pid, umtx)]; + if ((uq = umtx_lookup(td, umtx, chain)) == NULL) { + head = &umtxq_chains[chain].uc_queues; uq = ins; uq->uq_pid = pid; uq->uq_umtx = umtx; @@ -130,14 +162,17 @@ } static void -umtx_remove(struct umtx_q *uq, struct thread *td) +umtx_remove(struct umtx_q *uq, struct thread *td, struct umtx *umtx, + int chain) { TAILQ_REMOVE(&uq->uq_tdq, td, td_umtx); if (TAILQ_EMPTY(&uq->uq_tdq)) { LIST_REMOVE(uq, uq_next); + UMTX_UNLOCK(chain); free(uq, M_UMTX); - } + } else + UMTX_UNLOCK(chain); } int @@ -148,7 +183,8 @@ struct umtx *umtx; intptr_t owner; intptr_t old; - int error; + int chain; + int error = 0; uq = NULL; @@ -157,6 +193,7 @@ * can fault on any access. */ umtx = uap->umtx; + chain = umtx_hash(td->td_proc->p_pid, umtx); for (;;) { /* @@ -165,34 +202,40 @@ owner = casuptr((intptr_t *)&umtx->u_owner, UMTX_UNOWNED, td->td_tid); + /* The acquire succeeded. */ + if (owner == UMTX_UNOWNED) + return (0); + /* The address was invalid. */ if (owner == -1) return (EFAULT); - /* The acquire succeeded. */ - if (owner == UMTX_UNOWNED) - return (0); - /* If no one owns it but it is contested try to acquire it. */ if (owner == UMTX_CONTESTED) { owner = casuptr((intptr_t *)&umtx->u_owner, UMTX_CONTESTED, td->td_tid | UMTX_CONTESTED); + if (owner == UMTX_CONTESTED) + return (0); + /* The address was invalid. */ if (owner == -1) return (EFAULT); - if (owner == UMTX_CONTESTED) - return (0); - /* If this failed the lock has changed, restart. */ continue; } + /* + * If we caught a signal, we have retried and now + * exit immediately. + */ + if (error) + return (error); - UMTX_LOCK(); - uq = umtx_insert(td, umtx); - UMTX_UNLOCK(); + UMTX_LOCK(chain); + uq = umtx_insert(td, umtx, chain); + UMTX_UNLOCK(chain); /* * Set the contested bit so that a release in user space @@ -205,9 +248,8 @@ /* The address was invalid. */ if (old == -1) { - UMTX_LOCK(); - umtx_remove(uq, td); - UMTX_UNLOCK(); + UMTX_LOCK(chain); + umtx_remove(uq, td, umtx, chain); return (EFAULT); } @@ -216,24 +258,28 @@ * and we need to retry or we lost a race to the thread * unlocking the umtx. */ - PROC_LOCK(td->td_proc); + UMTX_LOCK(chain); if (old == owner && (td->td_flags & TDF_UMTXWAKEUP) == 0) - error = msleep(td, &td->td_proc->p_mtx, + error = msleep(td, UMTX_MUTEX(chain), td->td_priority | PCATCH, "umtx", 0); else error = 0; - mtx_lock_spin(&sched_lock); - td->td_flags &= ~TDF_UMTXWAKEUP; - mtx_unlock_spin(&sched_lock); - PROC_UNLOCK(td->td_proc); + umtx_remove(uq, td, umtx, chain); - UMTX_LOCK(); - umtx_remove(uq, td); - UMTX_UNLOCK(); + if (td->td_flags & TDF_UMTXWAKEUP) { + /* + * if we were resumed by umtx_unlock, we should retry + * to avoid a race. + */ + mtx_lock_spin(&sched_lock); + td->td_flags &= ~TDF_UMTXWAKEUP; + mtx_unlock_spin(&sched_lock); + continue; + } /* - * If we caught a signal we might have to retry or exit - * immediately. + * If we caught a signal without resumed by umtx_unlock, + * exit immediately. */ if (error) return (error); @@ -246,11 +292,12 @@ _umtx_unlock(struct thread *td, struct _umtx_unlock_args *uap) /* struct umtx *umtx */ { - struct thread *blocked; + struct thread *blocked, *blocked2; struct umtx *umtx; struct umtx_q *uq; intptr_t owner; intptr_t old; + int chain; umtx = uap->umtx; @@ -269,63 +316,72 @@ /* We should only ever be in here for contested locks */ if ((owner & UMTX_CONTESTED) == 0) return (EINVAL); - blocked = NULL; /* * When unlocking the umtx, it must be marked as unowned if * there is zero or one thread only waiting for it. * Otherwise, it must be marked as contested. */ - UMTX_LOCK(); - uq = umtx_lookup(td, umtx); - if (uq == NULL || - (uq != NULL && (blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL && - TAILQ_NEXT(blocked, td_umtx) == NULL)) { - UMTX_UNLOCK(); - old = casuptr((intptr_t *)&umtx->u_owner, owner, - UMTX_UNOWNED); - if (old == -1) - return (EFAULT); - if (old != owner) - return (EINVAL); + old = casuptr((intptr_t *)&umtx->u_owner, owner, UMTX_UNOWNED); + if (old == -1) + return (EFAULT); + if (old != owner) + return (EINVAL); + + chain = umtx_hash(td->td_proc->p_pid, umtx); + + /* + * At the point, a new thread can lock the umtx before we + * reach here, so contested bit will not be set, if there + * are two or more threads on wait queue, we should set + * contensted bit for them. + */ + blocked = NULL; + UMTX_LOCK(chain); + uq = umtx_lookup(td, umtx, chain); + if (uq == NULL) { + UMTX_UNLOCK(chain); + return (0); + } + blocked2 = NULL; + if ((blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL) { + mtx_lock_spin(&sched_lock); + blocked->td_flags |= TDF_UMTXWAKEUP; + mtx_unlock_spin(&sched_lock); + blocked2 = TAILQ_NEXT(blocked, td_umtx); + } + UMTX_UNLOCK(chain); + /* + * If there is second thread waiting on umtx, set contested bit, + * if they are resumed before we reach here, it is harmless, + * just a bit nonefficient. + */ + if (blocked2 != NULL) { + owner = UMTX_UNOWNED; + for (;;) { + old = casuptr((intptr_t *)&umtx->u_owner, owner, + owner | UMTX_CONTESTED); + if (old == -1) + return (EFAULT); + if (old == owner) + break; + owner = old; + } /* - * Recheck the umtx queue to make sure another thread - * didn't put itself on it after it was unlocked. + * Another thread locked the umtx before us, so don't bother + * to wake more threads, that thread will do it when it unlocks + * the umtx. */ - UMTX_LOCK(); - uq = umtx_lookup(td, umtx); - if (uq != NULL && - ((blocked = TAILQ_FIRST(&uq->uq_tdq)) != NULL && - TAILQ_NEXT(blocked, td_umtx) != NULL)) { - UMTX_UNLOCK(); - old = casuptr((intptr_t *)&umtx->u_owner, - UMTX_UNOWNED, UMTX_CONTESTED); - } else { - UMTX_UNLOCK(); - } - } else { - UMTX_UNLOCK(); - old = casuptr((intptr_t *)&umtx->u_owner, - owner, UMTX_CONTESTED); - if (old != -1 && old != owner) - return (EINVAL); + if ((owner & ~UMTX_CONTESTED) != 0) + return (0); } - if (old == -1) - return (EFAULT); - /* * If there is a thread waiting on the umtx, wake it up. */ - if (blocked != NULL) { - PROC_LOCK(blocked->td_proc); - mtx_lock_spin(&sched_lock); - blocked->td_flags |= TDF_UMTXWAKEUP; - mtx_unlock_spin(&sched_lock); - PROC_UNLOCK(blocked->td_proc); + if (blocked != NULL) wakeup(blocked); - } return (0); } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 02:15:56 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EEA4916A4D0; Sat, 20 Nov 2004 02:15:55 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CAE4E16A4CE for ; Sat, 20 Nov 2004 02:15:55 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id A3E7D43D1F for ; Sat, 20 Nov 2004 02:15:55 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK2Ft1K099217 for ; Sat, 20 Nov 2004 02:15:55 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK2FtOF099214 for perforce@freebsd.org; Sat, 20 Nov 2004 02:15:55 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 02:15:55 GMT Message-Id: <200411200215.iAK2FtOF099214@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65487 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 02:15:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=65487 Change 65487 by davidxu@davidxu_alona on 2004/11/20 02:15:39 wakeup_one is an evil. it may wake wrong thread. Affected files ... .. //depot/projects/davidxu_thread/src/sys/kern/kern_thr.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/sys/kern/kern_thr.c#2 (text+ko) ==== @@ -295,7 +295,7 @@ mtx_lock_spin(&sched_lock); ttd->td_flags |= TDF_THRWAKEUP; mtx_unlock_spin(&sched_lock); - wakeup_one((void *)ttd); + wakeup((void *)ttd); PROC_UNLOCK(td->td_proc); return (0); } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 02:19:00 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0DFC516A4D0; Sat, 20 Nov 2004 02:19:00 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id DE41416A4CE for ; Sat, 20 Nov 2004 02:18:59 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id CD84443D41 for ; Sat, 20 Nov 2004 02:18:59 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK2IxOY099257 for ; Sat, 20 Nov 2004 02:18:59 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK2IxFY099254 for perforce@freebsd.org; Sat, 20 Nov 2004 02:18:59 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 02:18:59 GMT Message-Id: <200411200218.iAK2IxFY099254@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65488 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 02:19:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=65488 Change 65488 by davidxu@davidxu_alona on 2004/11/20 02:18:27 if a thread is resumed by thr_wake, it should return 0, for example, a signal can cause ERESTART to be returned, this will cause the wakeup to be lost. Affected files ... .. //depot/projects/davidxu_thread/src/sys/kern/kern_thr.c#3 edit Differences ... ==== //depot/projects/davidxu_thread/src/sys/kern/kern_thr.c#3 (text+ko) ==== @@ -270,11 +270,21 @@ if ((td->td_flags & TDF_THRWAKEUP) == 0) error = msleep((void *)td, &td->td_proc->p_mtx, td->td_priority | PCATCH, "lthr", hz); - mtx_lock_spin(&sched_lock); - td->td_flags &= ~TDF_THRWAKEUP; - mtx_unlock_spin(&sched_lock); + if (td->td_flags & TDF_THRWAKEUP) { + mtx_lock_spin(&sched_lock); + td->td_flags &= ~TDF_THRWAKEUP; + mtx_unlock_spin(&sched_lock); + PROC_UNLOCK(td->td_proc); + return (0); + } PROC_UNLOCK(td->td_proc); - return (error == EWOULDBLOCK ? ETIMEDOUT : error); + if (error == EWOULDBLOCK) + error = ETIMEDOUT; + else if (error == ERESTART) { + if (hz != 0) + error = EINTR; + } + return (error); } int From owner-p4-projects@FreeBSD.ORG Sat Nov 20 02:27:11 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 022DB16A4D0; Sat, 20 Nov 2004 02:27:10 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BA28C16A4CE for ; Sat, 20 Nov 2004 02:27:10 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 45CC343D49 for ; Sat, 20 Nov 2004 02:27:10 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK2RAwa000230 for ; Sat, 20 Nov 2004 02:27:10 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK2R9fx000227 for perforce@freebsd.org; Sat, 20 Nov 2004 02:27:09 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 02:27:09 GMT Message-Id: <200411200227.iAK2R9fx000227@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65489 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 02:27:11 -0000 http://perforce.freebsd.org/chv.cgi?CH=65489 Change 65489 by davidxu@davidxu_alona on 2004/11/20 02:26:20 fork libpthread. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/Makefile#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/alpha/context.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/alpha/enter_uts.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/alpha/pthread_md.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/include/atomic_ops.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/include/pthread_md.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/amd64/context.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/amd64/enter_uts.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/amd64/pthread_md.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/include/atomic_ops.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/include/pthread_md.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/arm/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/arm/arm/context.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/arm/arm/pthread_md.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/arm/include/atomic_ops.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/arm/include/pthread_md.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/i386/pthread_md.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/i386/thr_enter_uts.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/i386/thr_getcontext.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/include/atomic_ops.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/include/pthread_md.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/ia64/context.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/ia64/enter_uts.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/ia64/pthread_md.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/include/atomic_ops.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/include/pthread_md.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/powerpc/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/powerpc/include/atomic_ops.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/powerpc/include/pthread_md.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/powerpc/powerpc/assym.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/powerpc/powerpc/assym.s#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/powerpc/powerpc/context.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/powerpc/powerpc/enter_uts.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/powerpc/powerpc/pthread_md.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/include/atomic_ops.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/include/pthread_md.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/sparc64/assym.s#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/sparc64/pthread_md.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/sparc64/thr_getcontext.S#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/pthread.map#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/support/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/support/thr_support.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/sys/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/sys/lock.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/sys/lock.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/sys/thr_error.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/Makefile#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/README#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/guard_b.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/guard_b.exp#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/guard_s.pl#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/hello_b.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/hello_d.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/hello_d.exp#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/hello_s.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/join_leak_d.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/join_leak_d.exp#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/mutex_d.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/mutex_d.exp#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/propagate_s.pl#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/sem_d.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/sem_d.exp#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/sigsuspend_d.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/sigsuspend_d.exp#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/sigwait_d.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/sigwait_d.exp#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/test/verify#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/Makefile.inc#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_accept.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_aio_suspend.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_atfork.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_destroy.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_get_np.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_getdetachstate.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_getguardsize.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_getinheritsched.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_getschedparam.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_getschedpolicy.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_getscope.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_getstack.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_getstackaddr.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_getstacksize.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_init.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setcreatesuspend_np.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setdetachstate.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setguardsize.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setinheritsched.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setschedparam.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setschedpolicy.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setscope.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setstack.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setstackaddr.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setstacksize.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_autoinit.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_barrier.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_barrierattr.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_cancel.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_clean.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_close.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_concurrency.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_cond.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_condattr_destroy.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_condattr_init.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_connect.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_creat.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_create.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_detach.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_equal.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_execve.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_exit.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_fcntl.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_find_thread.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_fork.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_fsync.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_getprio.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_getschedparam.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_info.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_init.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_join.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_kern.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_kill.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_main_np.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_mattr_init.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_mattr_kind_np.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_msync.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_multi_np.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_mutex.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_mutex_prioceiling.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_mutex_protocol.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_mutexattr_destroy.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_nanosleep.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_once.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_open.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_pause.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_poll.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_printf.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_priority_queue.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_private.h#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_pselect.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_pspinlock.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_raise.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_read.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_readv.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_resume_np.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_rtld.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_rwlock.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_rwlockattr.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_select.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_self.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sem.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_seterrno.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_setprio.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_setschedparam.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sig.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigaction.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigaltstack.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigmask.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigpending.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigprocmask.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigsuspend.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigwait.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_single_np.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sleep.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_spec.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_spinlock.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_stack.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_suspend_np.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_switch_np.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_symbols.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_system.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_tcdrain.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_vfork.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_wait.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_wait4.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_waitpid.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_write.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_writev.c#1 branch .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_yield.c#1 branch Differences ... From owner-p4-projects@FreeBSD.ORG Sat Nov 20 02:39:28 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id D533D16A4E6; Sat, 20 Nov 2004 02:39:27 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 94F1A16A4D6 for ; Sat, 20 Nov 2004 02:39:27 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 240FE43D48 for ; Sat, 20 Nov 2004 02:39:27 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK2dRoK001859 for ; Sat, 20 Nov 2004 02:39:27 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK2dQf1001856 for perforce@freebsd.org; Sat, 20 Nov 2004 02:39:26 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 02:39:26 GMT Message-Id: <200411200239.iAK2dQf1001856@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65493 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 02:39:28 -0000 http://perforce.freebsd.org/chv.cgi?CH=65493 Change 65493 by davidxu@davidxu_alona on 2004/11/20 02:38:56 1:1 threading only needs tcb, remove kcb. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/Makefile.inc#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/amd64/pthread_md.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/include/pthread_md.h#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/Makefile.inc#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/i386/pthread_md.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/include/pthread_md.h#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/Makefile.inc#2 (text+ko) ==== @@ -2,4 +2,4 @@ .PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/${MACHINE_ARCH} -SRCS+= context.S enter_uts.S pthread_md.c +SRCS+= pthread_md.c ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/amd64/pthread_md.c#2 (text+ko) ==== @@ -49,7 +49,6 @@ tcb = _rtld_allocate_tls(oldtls, sizeof(struct tcb), 16); if (tcb) { tcb->tcb_thread = thread; - bzero(&tcb->tcb_tmbx, sizeof(tcb->tcb_tmbx)); } return (tcb); @@ -60,23 +59,3 @@ { _rtld_free_tls(tcb, sizeof(struct tcb), 16); } - -struct kcb * -_kcb_ctor(struct kse *kse) -{ - struct kcb *kcb; - - kcb = malloc(sizeof(struct kcb)); - if (kcb != NULL) { - bzero(kcb, sizeof(struct kcb)); - kcb->kcb_self = kcb; - kcb->kcb_kse = kse; - } - return (kcb); -} - -void -_kcb_dtor(struct kcb *kcb) -{ - free(kcb); -} ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/include/pthread_md.h#2 (text+ko) ==== @@ -38,231 +38,75 @@ #include #include -#define KSE_STACKSIZE 16384 #define DTV_OFFSET offsetof(struct tcb, tcb_dtv) -#define THR_GETCONTEXT(ucp) \ - (void)_amd64_save_context(&(ucp)->uc_mcontext) -#define THR_SETCONTEXT(ucp) \ - (void)_amd64_restore_context(&(ucp)->uc_mcontext, 0, NULL) - -#define PER_KSE -#undef PER_THREAD - -struct kse; struct pthread; struct tdv; /* - * %fs points to a struct kcb. + * %fs points to a struct tcb. */ -struct kcb { - struct tcb *kcb_curtcb; - struct kcb *kcb_self; /* self reference */ - struct kse *kcb_kse; - struct kse_mailbox kcb_kmbx; -}; struct tcb { struct tcb *tcb_self; /* required by rtld */ void *tcb_dtv; /* required by rtld */ struct pthread *tcb_thread; void *tcb_spare[1]; /* align tcb_tmbx to 16 bytes */ - struct kse_thr_mailbox tcb_tmbx; }; /* * Evaluates to the byte offset of the per-kse variable name. */ -#define __kcb_offset(name) __offsetof(struct kcb, name) +#define __tcb_offset(name) __offsetof(struct tcb, name) /* * Evaluates to the type of the per-kse variable name. */ -#define __kcb_type(name) __typeof(((struct kcb *)0)->name) +#define __tcb_type(name) __typeof(((struct tcb *)0)->name) /* * Evaluates to the value of the per-kse variable name. */ -#define KCB_GET64(name) ({ \ - __kcb_type(name) __result; \ +#define TCB_GET64(name) ({ \ + __tcb_type(name) __result; \ \ u_long __i; \ __asm __volatile("movq %%fs:%1, %0" \ : "=r" (__i) \ - : "m" (*(u_long *)(__kcb_offset(name)))); \ - __result = (__kcb_type(name))__i; \ - \ - __result; \ -}) - -/* - * Sets the value of the per-kse variable name to value val. - */ -#define KCB_SET64(name, val) ({ \ - __kcb_type(name) __val = (val); \ - \ - u_long __i; \ - __i = (u_long)__val; \ - __asm __volatile("movq %1,%%fs:%0" \ - : "=m" (*(u_long *)(__kcb_offset(name))) \ - : "r" (__i)); \ -}) - -static __inline u_long -__kcb_readandclear64(volatile u_long *addr) -{ - u_long result; - - __asm __volatile ( - " xorq %0, %0;" - " xchgq %%fs:%1, %0;" - "# __kcb_readandclear64" - : "=&r" (result) - : "m" (*addr)); - return (result); -} - -#define KCB_READANDCLEAR64(name) ({ \ - __kcb_type(name) __result; \ + : "m" (*(u_long *)(__tcb_offset(name)))); \ + __result = (__tcb_type(name))__i; \ \ - __result = (__kcb_type(name)) \ - __kcb_readandclear64((u_long *)__kcb_offset(name)); \ __result; \ }) - -#define _kcb_curkcb() KCB_GET64(kcb_self) -#define _kcb_curtcb() KCB_GET64(kcb_curtcb) -#define _kcb_curkse() ((struct kse *)KCB_GET64(kcb_kmbx.km_udata)) -#define _kcb_get_tmbx() KCB_GET64(kcb_kmbx.km_curthread) -#define _kcb_set_tmbx(value) KCB_SET64(kcb_kmbx.km_curthread, (void *)value) -#define _kcb_readandclear_tmbx() KCB_READANDCLEAR64(kcb_kmbx.km_curthread) - /* * The constructors. */ struct tcb *_tcb_ctor(struct pthread *, int); void _tcb_dtor(struct tcb *tcb); -struct kcb *_kcb_ctor(struct kse *); -void _kcb_dtor(struct kcb *); /* Called from the KSE to set its private data. */ static __inline void -_kcb_set(struct kcb *kcb) +_tcb_set(struct tcb *tcb) { - amd64_set_fsbase(kcb); + amd64_set_fsbase(tcb); } /* Get the current kcb. */ -static __inline struct kcb * -_kcb_get(void) -{ - return (_kcb_curkcb()); -} - -static __inline struct kse_thr_mailbox * -_kcb_critical_enter(void) -{ - struct kse_thr_mailbox *crit; - - crit = _kcb_readandclear_tmbx(); - return (crit); -} - -static __inline void -_kcb_critical_leave(struct kse_thr_mailbox *crit) -{ - _kcb_set_tmbx(crit); -} - -static __inline int -_kcb_in_critical(void) -{ - return (_kcb_get_tmbx() == NULL); -} - -static __inline void -_tcb_set(struct kcb *kcb, struct tcb *tcb) -{ - kcb->kcb_curtcb = tcb; -} - static __inline struct tcb * _tcb_get(void) { - return (_kcb_curtcb()); + return TCB_GET64(tcb_self); } +extern int _thread_inited; + +/* Get the current thread. */ static __inline struct pthread * _get_curthread(void) { - struct tcb *tcb; - - tcb = _kcb_curtcb(); - if (tcb != NULL) - return (tcb->tcb_thread); - else - return (NULL); -} - -static __inline struct kse * -_get_curkse(void) -{ - return ((struct kse *)_kcb_curkse()); -} - -void _amd64_enter_uts(struct kse_mailbox *km, kse_func_t uts, void *stack, - size_t stacksz); -int _amd64_restore_context(mcontext_t *mc, intptr_t val, intptr_t *loc); -int _amd64_save_context(mcontext_t *mc); - -static __inline int -_thread_enter_uts(struct tcb *tcb, struct kcb *kcb) -{ - int ret; - - ret = _amd64_save_context(&tcb->tcb_tmbx.tm_context.uc_mcontext); - if (ret == 0) { - _amd64_enter_uts(&kcb->kcb_kmbx, kcb->kcb_kmbx.km_func, - kcb->kcb_kmbx.km_stack.ss_sp, - kcb->kcb_kmbx.km_stack.ss_size); - /* We should not reach here. */ - return (-1); - } - else if (ret < 0) - return (-1); - return (0); -} - -static __inline int -_thread_switch(struct kcb *kcb, struct tcb *tcb, int setmbox) -{ - extern int _libkse_debug; - - if ((kcb == NULL) || (tcb == NULL)) - return (-1); - kcb->kcb_curtcb = tcb; - - if (_libkse_debug == 0) { - tcb->tcb_tmbx.tm_lwp = kcb->kcb_kmbx.km_lwp; - if (setmbox != 0) - _amd64_restore_context( - &tcb->tcb_tmbx.tm_context.uc_mcontext, - (intptr_t)&tcb->tcb_tmbx, - (intptr_t *)&kcb->kcb_kmbx.km_curthread); - else - _amd64_restore_context( - &tcb->tcb_tmbx.tm_context.uc_mcontext, - 0, NULL); - /* We should not reach here. */ - } else { - if (setmbox) - kse_switchin(&tcb->tcb_tmbx, KSE_SWITCHIN_SETTMBX); - else - kse_switchin(&tcb->tcb_tmbx, 0); - } - - return (-1); + if (_thread_inited) + return TCB_GET64(tcb_thread); + return NULL; } #endif ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/Makefile.inc#2 (text+ko) ==== @@ -2,4 +2,4 @@ .PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/${MACHINE_ARCH} -SRCS+= thr_enter_uts.S thr_getcontext.S pthread_md.c +SRCS+= pthread_md.c ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/i386/pthread_md.c#2 (text+ko) ==== @@ -37,7 +37,6 @@ #include #include #include -#include #include "rtld_tls.h" #include "pthread_md.h" @@ -45,76 +44,47 @@ struct tcb * _tcb_ctor(struct pthread *thread, int initial) { +#ifndef COMPAT_32BIT + union descriptor ldt; +#endif struct tcb *tcb; void *oldtls; - if (initial) { + if (initial) __asm __volatile("movl %%gs:0, %0" : "=r" (oldtls)); - } else { + else oldtls = NULL; - } tcb = _rtld_allocate_tls(oldtls, sizeof(struct tcb), 16); if (tcb) { tcb->tcb_thread = thread; - tcb->tcb_spare = 0; - bzero(&tcb->tcb_tmbx, sizeof(tcb->tcb_tmbx)); - } - - return (tcb); -} - -void -_tcb_dtor(struct tcb *tcb) -{ - _rtld_free_tls(tcb, sizeof(struct tcb), 16); -} - -/* - * Initialize KSD. This also includes setting up the LDT. - */ -struct kcb * -_kcb_ctor(struct kse *kse) -{ #ifndef COMPAT_32BIT - union descriptor ldt; -#endif - struct kcb *kcb; - - kcb = malloc(sizeof(struct kcb)); - if (kcb != NULL) { - bzero(kcb, sizeof(struct kcb)); - kcb->kcb_self = kcb; - kcb->kcb_kse = kse; -#ifndef COMPAT_32BIT - ldt.sd.sd_hibase = (unsigned int)kcb >> 24; - ldt.sd.sd_lobase = (unsigned int)kcb & 0xFFFFFF; - ldt.sd.sd_hilimit = (sizeof(struct kcb) >> 16) & 0xF; - ldt.sd.sd_lolimit = sizeof(struct kcb) & 0xFFFF; + ldt.sd.sd_hibase = (unsigned int)tcb >> 24; + ldt.sd.sd_lobase = (unsigned int)tcb & 0xFFFFFF; + ldt.sd.sd_hilimit = (sizeof(struct tcb) >> 16) & 0xF; + ldt.sd.sd_lolimit = sizeof(struct tcb) & 0xFFFF; ldt.sd.sd_type = SDT_MEMRWA; ldt.sd.sd_dpl = SEL_UPL; ldt.sd.sd_p = 1; ldt.sd.sd_xx = 0; ldt.sd.sd_def32 = 1; ldt.sd.sd_gran = 0; /* no more than 1M */ - kcb->kcb_ldt = i386_set_ldt(LDT_AUTO_ALLOC, &ldt, 1); - if (kcb->kcb_ldt < 0) { - free(kcb); - return (NULL); + tcb->tcb_ldt = i386_set_ldt(LDT_AUTO_ALLOC, &ldt, 1); + if (tcb->tcb_ldt < 0) { + free(tcb); + tcb = NULL; } #endif } - return (kcb); + return (tcb); } void -_kcb_dtor(struct kcb *kcb) +_tcb_dtor(struct tcb *tcb) { #ifndef COMPAT_32BIT - if (kcb->kcb_ldt >= 0) { - i386_set_ldt(kcb->kcb_ldt, NULL, 1); - kcb->kcb_ldt = -1; /* just in case */ - } + if (tcb->tcb_ldt >= 0) + i386_set_ldt(tcb->tcb_ldt, NULL, 1); #endif - free(kcb); + _rtld_free_tls(tcb, sizeof(struct tcb), 16); } ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/include/pthread_md.h#2 (text+ko) ==== @@ -1,5 +1,6 @@ /*- * Copyright (c) 2002 Daniel Eischen . + * Copyright (c) 2005 David Xu . * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -33,241 +34,83 @@ #include #include -#include #include -#include -extern int _thr_setcontext(mcontext_t *, intptr_t, intptr_t *); -extern int _thr_getcontext(mcontext_t *); - -#define KSE_STACKSIZE 16384 #define DTV_OFFSET offsetof(struct tcb, tcb_dtv) -#define THR_GETCONTEXT(ucp) _thr_getcontext(&(ucp)->uc_mcontext) -#define THR_SETCONTEXT(ucp) _thr_setcontext(&(ucp)->uc_mcontext, 0, NULL) - -#define PER_KSE -#undef PER_THREAD - -struct kse; struct pthread; /* - * %gs points to a struct kcb. + * %gs points to a struct tcb. */ -struct kcb { - struct tcb *kcb_curtcb; - struct kcb *kcb_self; /* self reference */ - int kcb_ldt; - struct kse *kcb_kse; - struct kse_mailbox kcb_kmbx; -}; - struct tcb { struct tcb *tcb_self; /* required by rtld */ void *tcb_dtv; /* required by rtld */ struct pthread *tcb_thread; - void *tcb_spare; /* align tcb_tmbx to 16 bytes */ - struct kse_thr_mailbox tcb_tmbx; + int tcb_ldt; }; /* - * Evaluates to the byte offset of the per-kse variable name. + * Evaluates to the byte offset of the per-thread variable name. */ -#define __kcb_offset(name) __offsetof(struct kcb, name) +#define __tcb_offset(name) __offsetof(struct tcb, name) /* - * Evaluates to the type of the per-kse variable name. + * Evaluates to the type of the per-thread variable name. */ -#define __kcb_type(name) __typeof(((struct kcb *)0)->name) +#define __tcb_type(name) __typeof(((struct tcb *)0)->name) /* * Evaluates to the value of the per-kse variable name. */ -#define KCB_GET32(name) ({ \ - __kcb_type(name) __result; \ +#define TCB_GET32(name) ({ \ + __tcb_type(name) __result; \ \ u_int __i; \ __asm __volatile("movl %%gs:%1, %0" \ : "=r" (__i) \ - : "m" (*(u_int *)(__kcb_offset(name)))); \ - __result = (__kcb_type(name))__i; \ + : "m" (*(u_int *)(__tcb_offset(name)))); \ + __result = (__tcb_type(name))__i; \ \ __result; \ }) /* - * Sets the value of the per-kse variable name to value val. - */ -#define KCB_SET32(name, val) ({ \ - __kcb_type(name) __val = (val); \ - \ - u_int __i; \ - __i = (u_int)__val; \ - __asm __volatile("movl %1,%%gs:%0" \ - : "=m" (*(u_int *)(__kcb_offset(name))) \ - : "r" (__i)); \ -}) - -static __inline u_long -__kcb_readandclear32(volatile u_long *addr) -{ - u_long result; - - __asm __volatile ( - " xorl %0, %0;" - " xchgl %%gs:%1, %0;" - "# __kcb_readandclear32" - : "=&r" (result) - : "m" (*addr)); - return (result); -} - -#define KCB_READANDCLEAR32(name) ({ \ - __kcb_type(name) __result; \ - \ - __result = (__kcb_type(name)) \ - __kcb_readandclear32((u_long *)__kcb_offset(name)); \ - __result; \ -}) - - -#define _kcb_curkcb() KCB_GET32(kcb_self) -#define _kcb_curtcb() KCB_GET32(kcb_curtcb) -#define _kcb_curkse() ((struct kse *)KCB_GET32(kcb_kmbx.km_udata)) -#define _kcb_get_tmbx() KCB_GET32(kcb_kmbx.km_curthread) -#define _kcb_set_tmbx(value) KCB_SET32(kcb_kmbx.km_curthread, (void *)value) -#define _kcb_readandclear_tmbx() KCB_READANDCLEAR32(kcb_kmbx.km_curthread) - - -/* * The constructors. */ struct tcb *_tcb_ctor(struct pthread *, int); void _tcb_dtor(struct tcb *tcb); -struct kcb *_kcb_ctor(struct kse *); -void _kcb_dtor(struct kcb *); -/* Called from the KSE to set its private data. */ +/* Called from the thread to set its private data. */ static __inline void -_kcb_set(struct kcb *kcb) +_tcb_set(struct tcb *tcb) { #ifndef COMPAT_32BIT int val; - val = (kcb->kcb_ldt << 3) | 7; + val = (tcb->tcb_ldt << 3) | 7; __asm __volatile("movl %0, %%gs" : : "r" (val)); #else - _amd64_set_gsbase(kcb); + _amd64_set_gsbase(tcb); #endif } /* Get the current kcb. */ -static __inline struct kcb * -_kcb_get(void) -{ - return (_kcb_curkcb()); -} - -static __inline struct kse_thr_mailbox * -_kcb_critical_enter(void) -{ - struct kse_thr_mailbox *crit; - - crit = _kcb_readandclear_tmbx(); - return (crit); -} - -static __inline void -_kcb_critical_leave(struct kse_thr_mailbox *crit) -{ - _kcb_set_tmbx(crit); -} - -static __inline int -_kcb_in_critical(void) -{ - return (_kcb_get_tmbx() == NULL); -} - -static __inline void -_tcb_set(struct kcb *kcb, struct tcb *tcb) -{ - kcb->kcb_curtcb = tcb; -} - static __inline struct tcb * _tcb_get(void) { - return (_kcb_curtcb()); + return TCB_GET32(tcb_self); } +extern int _thread_inited; + +/* Get the current thread. */ static __inline struct pthread * _get_curthread(void) { - struct tcb *tcb; - - tcb = _kcb_curtcb(); - if (tcb != NULL) - return (tcb->tcb_thread); - else - return (NULL); -} - -static __inline struct kse * -_get_curkse(void) -{ - return ((struct kse *)_kcb_curkse()); + if (_thread_inited) + return TCB_GET32(tcb_thread); + return NULL; } - -void _i386_enter_uts(struct kse_mailbox *km, kse_func_t uts, void *stack, - size_t stacksz); - -static __inline int -_thread_enter_uts(struct tcb *tcb, struct kcb *kcb) -{ - int ret; - - ret = _thr_getcontext(&tcb->tcb_tmbx.tm_context.uc_mcontext); - if (ret == 0) { - _i386_enter_uts(&kcb->kcb_kmbx, kcb->kcb_kmbx.km_func, - kcb->kcb_kmbx.km_stack.ss_sp, - kcb->kcb_kmbx.km_stack.ss_size); - /* We should not reach here. */ - return (-1); - } - else if (ret < 0) - return (-1); - return (0); -} - -static __inline int -_thread_switch(struct kcb *kcb, struct tcb *tcb, int setmbox) -{ - extern int _libkse_debug; - - if ((kcb == NULL) || (tcb == NULL)) - return (-1); - kcb->kcb_curtcb = tcb; - if (_libkse_debug == 0) { - tcb->tcb_tmbx.tm_lwp = kcb->kcb_kmbx.km_lwp; - if (setmbox != 0) - _thr_setcontext(&tcb->tcb_tmbx.tm_context.uc_mcontext, - (intptr_t)&tcb->tcb_tmbx, - (intptr_t *)&kcb->kcb_kmbx.km_curthread); - else - _thr_setcontext(&tcb->tcb_tmbx.tm_context.uc_mcontext, - 0, NULL); - } else { - if (setmbox) - kse_switchin(&tcb->tcb_tmbx, KSE_SWITCHIN_SETTMBX); - else - kse_switchin(&tcb->tcb_tmbx, 0); - } - - /* We should not reach here. */ - return (-1); -} - #endif From owner-p4-projects@FreeBSD.ORG Sat Nov 20 02:45:35 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 768F516A4D0; Sat, 20 Nov 2004 02:45:35 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 3A75E16A4CE for ; Sat, 20 Nov 2004 02:45:35 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id F3F5743D1F for ; Sat, 20 Nov 2004 02:45:34 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK2jY4r002189 for ; Sat, 20 Nov 2004 02:45:34 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK2jY1K002186 for perforce@freebsd.org; Sat, 20 Nov 2004 02:45:34 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 02:45:34 GMT Message-Id: <200411200245.iAK2jY1K002186@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65494 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 02:45:36 -0000 http://perforce.freebsd.org/chv.cgi?CH=65494 Change 65494 by davidxu@davidxu_alona on 2004/11/20 02:45:26 Use umtx for low level lock. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/sys/lock.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/sys/lock.h#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/sys/lock.c#2 (text+ko) ==== @@ -26,319 +26,4 @@ * $FreeBSD: src/lib/libpthread/sys/lock.c,v 1.8 2003/11/04 20:01:38 deischen Exp $ */ -#include -#include -#include -#include - -#include "atomic_ops.h" #include "lock.h" - -#ifdef _LOCK_DEBUG -#define LCK_ASSERT(e) assert(e) -#else -#define LCK_ASSERT(e) -#endif - -#define MAX_SPINS 500 - -void -_lock_destroy(struct lock *lck) -{ - if ((lck != NULL) && (lck->l_head != NULL)) { - free(lck->l_head); - lck->l_head = NULL; - lck->l_tail = NULL; - } -} - -int -_lock_init(struct lock *lck, enum lock_type ltype, - lock_handler_t *waitfunc, lock_handler_t *wakeupfunc) -{ - if (lck == NULL) - return (-1); - else if ((lck->l_head = malloc(sizeof(struct lockreq))) == NULL) - return (-1); - else { - lck->l_type = ltype; - lck->l_wait = waitfunc; - lck->l_wakeup = wakeupfunc; - lck->l_head->lr_locked = 0; - lck->l_head->lr_watcher = NULL; - lck->l_head->lr_owner = NULL; - lck->l_head->lr_active = 1; - lck->l_tail = lck->l_head; - } - return (0); -} - -int -_lock_reinit(struct lock *lck, enum lock_type ltype, - lock_handler_t *waitfunc, lock_handler_t *wakeupfunc) -{ - if (lck == NULL) - return (-1); - else if (lck->l_head == NULL) - return (_lock_init(lck, ltype, waitfunc, wakeupfunc)); - else { - lck->l_head->lr_locked = 0; - lck->l_head->lr_watcher = NULL; - lck->l_head->lr_owner = NULL; - lck->l_head->lr_active = 1; - lck->l_tail = lck->l_head; - } - return (0); -} - -int -_lockuser_init(struct lockuser *lu, void *priv) -{ - if (lu == NULL) - return (-1); - else if ((lu->lu_myreq == NULL) && - ((lu->lu_myreq = malloc(sizeof(struct lockreq))) == NULL)) - return (-1); - else { - lu->lu_myreq->lr_locked = 1; - lu->lu_myreq->lr_watcher = NULL; - lu->lu_myreq->lr_owner = lu; - lu->lu_myreq->lr_active = 0; - lu->lu_watchreq = NULL; - lu->lu_priority = 0; - lu->lu_private = priv; - lu->lu_private2 = NULL; - } - return (0); -} - -int -_lockuser_reinit(struct lockuser *lu, void *priv) -{ - if (lu == NULL) - return (-1); - /* - * All lockusers keep their watch request and drop their - * own (lu_myreq) request. Their own request is either - * some other lockuser's watch request or is the head of - * the lock. - */ - lu->lu_myreq = lu->lu_watchreq; - if (lu->lu_myreq == NULL) - return (_lockuser_init(lu, priv)); - else { - lu->lu_myreq->lr_locked = 1; - lu->lu_myreq->lr_watcher = NULL; - lu->lu_myreq->lr_owner = lu; - lu->lu_myreq->lr_active = 0; - lu->lu_watchreq = NULL; - lu->lu_priority = 0; - lu->lu_private = priv; - lu->lu_private2 = NULL; - } - return (0); -} - -void -_lockuser_destroy(struct lockuser *lu) -{ - if ((lu != NULL) && (lu->lu_myreq != NULL)) - free(lu->lu_myreq); -} - -/* - * Acquire a lock waiting (spin or sleep) for it to become available. - */ -void -_lock_acquire(struct lock *lck, struct lockuser *lu, int prio) -{ - int i; - int lval; - - /** - * XXX - We probably want to remove these checks to optimize - * performance. It is also a bug if any one of the - * checks fail, so it's probably better to just let it - * SEGV and fix it. - */ -#if 0 - if (lck == NULL || lu == NULL || lck->l_head == NULL) - return; -#endif - if ((lck->l_type & LCK_PRIORITY) != 0) { - LCK_ASSERT(lu->lu_myreq->lr_locked == 1); - LCK_ASSERT(lu->lu_myreq->lr_watcher == NULL); - LCK_ASSERT(lu->lu_myreq->lr_owner == lu); - LCK_ASSERT(lu->lu_watchreq == NULL); - - lu->lu_priority = prio; - } - /* - * Atomically swap the head of the lock request with - * this request. - */ - atomic_swap_ptr(&lck->l_head, lu->lu_myreq, &lu->lu_watchreq); - - if (lu->lu_watchreq->lr_locked != 0) { - atomic_store_rel_ptr(&lu->lu_watchreq->lr_watcher, lu); - if ((lck->l_wait == NULL) || - ((lck->l_type & LCK_ADAPTIVE) == 0)) { - while (lu->lu_watchreq->lr_locked == 0) - ; /* spin, then yield? */ - } else { - /* - * Spin for a bit before invoking the wait function. - * - * We should be a little smarter here. If we're - * running on a single processor, then the lock - * owner got preempted and spinning will accomplish - * nothing but waste time. If we're running on - * multiple processors, the owner could be running - * on another CPU and we might acquire the lock if - * we spin for a bit. - * - * The other thing to keep in mind is that threads - * acquiring these locks are considered to be in - * critical regions; they will not be preempted by - * the _UTS_ until they release the lock. It is - * therefore safe to assume that if a lock can't - * be acquired, it is currently held by a thread - * running in another KSE. - */ - for (i = 0; i < MAX_SPINS; i++) { - if (lu->lu_watchreq->lr_locked == 0) - return; - if (lu->lu_watchreq->lr_active == 0) - break; - } - atomic_swap_int((int *)&lu->lu_watchreq->lr_locked, - 2, &lval); - if (lval == 0) - lu->lu_watchreq->lr_locked = 0; - else - lck->l_wait(lck, lu); - - } - } - lu->lu_myreq->lr_active = 1; -} - -/* - * Release a lock. - */ -void -_lock_release(struct lock *lck, struct lockuser *lu) -{ - struct lockuser *lu_tmp, *lu_h; - struct lockreq *myreq; - int prio_h; - int lval; - - /** - * XXX - We probably want to remove these checks to optimize - * performance. It is also a bug if any one of the - * checks fail, so it's probably better to just let it - * SEGV and fix it. - */ -#if 0 - if ((lck == NULL) || (lu == NULL)) - return; -#endif - if ((lck->l_type & LCK_PRIORITY) != 0) { - prio_h = 0; - lu_h = NULL; - - /* Update tail if our request is last. */ - if (lu->lu_watchreq->lr_owner == NULL) { - atomic_store_rel_ptr(&lck->l_tail, lu->lu_myreq); - atomic_store_rel_ptr(&lu->lu_myreq->lr_owner, NULL); - } else { - /* Remove ourselves from the list. */ - atomic_store_rel_ptr(&lu->lu_myreq->lr_owner, - lu->lu_watchreq->lr_owner); - atomic_store_rel_ptr( - &lu->lu_watchreq->lr_owner->lu_myreq, lu->lu_myreq); - } - /* - * The watch request now becomes our own because we've - * traded away our previous request. Save our previous - * request so that we can grant the lock. - */ - myreq = lu->lu_myreq; - lu->lu_myreq = lu->lu_watchreq; - lu->lu_watchreq = NULL; - lu->lu_myreq->lr_locked = 1; - lu->lu_myreq->lr_owner = lu; - lu->lu_myreq->lr_watcher = NULL; - /* - * Traverse the list of lock requests in reverse order - * looking for the user with the highest priority. - */ - for (lu_tmp = lck->l_tail->lr_watcher; lu_tmp != NULL; - lu_tmp = lu_tmp->lu_myreq->lr_watcher) { - if (lu_tmp->lu_priority > prio_h) { - lu_h = lu_tmp; - prio_h = lu_tmp->lu_priority; - } - } - if (lu_h != NULL) { - /* Give the lock to the highest priority user. */ - if (lck->l_wakeup != NULL) { - atomic_swap_int( - (int *)&lu_h->lu_watchreq->lr_locked, - 0, &lval); - if (lval == 2) - /* Notify the sleeper */ - lck->l_wakeup(lck, - lu_h->lu_myreq->lr_watcher); - } - else - atomic_store_rel_int( - &lu_h->lu_watchreq->lr_locked, 0); - } else { - if (lck->l_wakeup != NULL) { - atomic_swap_int((int *)&myreq->lr_locked, - 0, &lval); - if (lval == 2) - /* Notify the sleeper */ - lck->l_wakeup(lck, myreq->lr_watcher); - } - else - /* Give the lock to the previous request. */ - atomic_store_rel_int(&myreq->lr_locked, 0); - } - } else { - /* - * The watch request now becomes our own because we've - * traded away our previous request. Save our previous - * request so that we can grant the lock. - */ - myreq = lu->lu_myreq; - lu->lu_myreq = lu->lu_watchreq; - lu->lu_watchreq = NULL; - lu->lu_myreq->lr_locked = 1; - if (lck->l_wakeup) { - atomic_swap_int((int *)&myreq->lr_locked, 0, &lval); - if (lval == 2) - /* Notify the sleeper */ - lck->l_wakeup(lck, myreq->lr_watcher); - } - else - /* Give the lock to the previous request. */ - atomic_store_rel_int(&myreq->lr_locked, 0); - } - lu->lu_myreq->lr_active = 0; -} - -void -_lock_grant(struct lock *lck /* unused */, struct lockuser *lu) -{ - atomic_store_rel_int(&lu->lu_watchreq->lr_locked, 3); -} - -void -_lockuser_setactive(struct lockuser *lu, int active) -{ - lu->lu_myreq->lr_active = active; -} - ==== //depot/projects/davidxu_thread/src/lib/libthread/sys/lock.h#2 (text+ko) ==== @@ -1,5 +1,6 @@ /* * Copyright (c) 2001, 2003 Daniel Eischen . + * Copyright (c) 2005 David Xu . * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,69 +28,63 @@ */ #ifndef _LOCK_H_ -#define _LOCK_H_ +#define _LOCK_H_ + +#include +#include +#include +#include -struct lockreq; -struct lockuser; -struct lock; +extern void _thr_exit(char *fname, int lineno, char *msg); -enum lock_type { - LCK_DEFAULT = 0x0000, /* default is FIFO spin locks */ - LCK_PRIORITY = 0x0001, - LCK_ADAPTIVE = 0x0002 /* call user-supplied handlers */ +struct lock { + struct umtx l_mtx; }; -typedef void lock_handler_t(struct lock *, struct lockuser *); +#define _LOCK_INITIALIZER(lck) { {UMTX_UNOWNED} } -struct lock { - struct lockreq *l_head; - struct lockreq *l_tail; /* only used for priority locks */ - enum lock_type l_type; - lock_handler_t *l_wait; /* only used for adaptive locks */ - lock_handler_t *l_wakeup; /* only used for adaptive locks */ -}; +static inline int +_lock_init(struct lock *lck) +{ + lck->l_mtx.u_owner = UMTX_UNOWNED; + return (0); +} -/* Try to make this >= CACHELINESIZE */ -struct lockreq { - struct lockuser *lr_watcher; /* only used for priority locks */ - struct lockuser *lr_owner; /* only used for priority locks */ - volatile int lr_locked; /* lock granted = 0, busy otherwise */ - volatile int lr_active; /* non-zero if the lock is last lock for thread */ -}; +static inline int +_lock_reinit(struct lock *lck) +{ + lck->l_mtx.u_owner = UMTX_UNOWNED; + return (0); +} -struct lockuser { - struct lockreq *lu_myreq; /* request to give up/trade */ - struct lockreq *lu_watchreq; /* watch this request */ - int lu_priority; /* only used for priority locks */ - void *lu_private1; /* private{1,2} are initialized to */ - void *lu_private2; /* NULL and can be used by caller */ -#define lu_private lu_private1 -}; +static inline void +_lock_destroy(struct lock *lck __unused) +{ +} -#define _LCK_INITIALIZER(lck_req) { &lck_req, NULL, LCK_DEFAULT, \ - NULL, NULL } -#define _LCK_REQUEST_INITIALIZER { 0, NULL, NULL, 0 } +static inline void +_lock_acquire(struct lock *lck, long tid) +{ + int err; -#define _LCK_BUSY(lu) ((lu)->lu_watchreq->lr_locked != 0) -#define _LCK_ACTIVE(lu) ((lu)->lu_watchreq->lr_active != 0) -#define _LCK_GRANTED(lu) ((lu)->lu_watchreq->lr_locked == 3) + while ((err = umtx_lock(&lck->l_mtx, tid)) != 0) { + if (err != EINTR && err != EAGAIN) + _thr_exit(__FILE__, __LINE__, "umtx_lock failed.\n"); + } +} -#define _LCK_SET_PRIVATE(lu, p) (lu)->lu_private = (void *)(p) -#define _LCK_GET_PRIVATE(lu) (lu)->lu_private -#define _LCK_SET_PRIVATE2(lu, p) (lu)->lu_private2 = (void *)(p) -#define _LCK_GET_PRIVATE2(lu) (lu)->lu_private2 +static inline int +_lock_trylock(struct lock *lck, long tid) +{ + return umtx_trylock(&lck->l_mtx, tid); +} -void _lock_acquire(struct lock *, struct lockuser *, int); -void _lock_destroy(struct lock *); -void _lock_grant(struct lock *, struct lockuser *); -int _lock_init(struct lock *, enum lock_type, - lock_handler_t *, lock_handler_t *); -int _lock_reinit(struct lock *, enum lock_type, - lock_handler_t *, lock_handler_t *); -void _lock_release(struct lock *, struct lockuser *); -int _lockuser_init(struct lockuser *lu, void *priv); -void _lockuser_destroy(struct lockuser *lu); -int _lockuser_reinit(struct lockuser *lu, void *priv); -void _lockuser_setactive(struct lockuser *lu, int active); +static inline void +_lock_release(struct lock *lck, long tid) +{ + if (umtx_unlock(&lck->l_mtx, tid)) { + _thr_exit(__FILE__, __LINE__, "umtx_unlock failed.\n"); + } +} #endif From owner-p4-projects@FreeBSD.ORG Sat Nov 20 02:51:43 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 20CE316A4D0; Sat, 20 Nov 2004 02:51:43 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id EEC3C16A4CE for ; Sat, 20 Nov 2004 02:51:42 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id DC24143D53 for ; Sat, 20 Nov 2004 02:51:42 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK2pg8M002379 for ; Sat, 20 Nov 2004 02:51:42 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK2pgpY002376 for perforce@freebsd.org; Sat, 20 Nov 2004 02:51:42 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 02:51:42 GMT Message-Id: <200411200251.iAK2pgpY002376@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65495 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 02:51:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=65495 Change 65495 by davidxu@davidxu_alona on 2004/11/20 02:51:18 Minor style fixes. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/include/pthread_md.h#3 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/include/pthread_md.h#3 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/include/pthread_md.h#3 (text+ko) ==== @@ -96,7 +96,7 @@ static __inline struct tcb * _tcb_get(void) { - return TCB_GET64(tcb_self); + return (TCB_GET64(tcb_self)); } extern int _thread_inited; @@ -106,7 +106,7 @@ _get_curthread(void) { if (_thread_inited) - return TCB_GET64(tcb_thread); - return NULL; + return (TCB_GET64(tcb_thread)); + return (NULL); } #endif ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/include/pthread_md.h#3 (text+ko) ==== @@ -100,7 +100,7 @@ static __inline struct tcb * _tcb_get(void) { - return TCB_GET32(tcb_self); + return (TCB_GET32(tcb_self)); } extern int _thread_inited; @@ -110,7 +110,7 @@ _get_curthread(void) { if (_thread_inited) - return TCB_GET32(tcb_thread); - return NULL; + return (TCB_GET32(tcb_thread)); + return (NULL); } #endif From owner-p4-projects@FreeBSD.ORG Sat Nov 20 02:58:52 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5776016A4D0; Sat, 20 Nov 2004 02:58:52 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 2F1A216A4CE for ; Sat, 20 Nov 2004 02:58:52 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id EB05243D1F for ; Sat, 20 Nov 2004 02:58:51 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK2wpTS002608 for ; Sat, 20 Nov 2004 02:58:51 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK2wp4p002605 for perforce@freebsd.org; Sat, 20 Nov 2004 02:58:51 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 02:58:51 GMT Message-Id: <200411200258.iAK2wp4p002605@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65496 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 02:58:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=65496 Change 65496 by davidxu@davidxu_alona on 2004/11/20 02:58:04 remove sched queue. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_private.h#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_private.h#2 (text+ko) ==== @@ -43,21 +43,19 @@ #include #include #include -#include +#include +#include +#include #include #include #include -#include -#include -#include -#include +#include +#include #include #include -#ifndef LIBTHREAD_DB #include "lock.h" #include "pthread_md.h" -#endif /* * Evaluate the storage class specifier. @@ -75,14 +73,10 @@ */ #define PANIC(string) _thr_exit(__FILE__,__LINE__,string) - /* Output debug messages like this: */ #define stdout_debug(args...) _thread_printf(STDOUT_FILENO, ##args) #define stderr_debug(args...) _thread_printf(STDOUT_FILENO, ##args) -#define DBG_MUTEX 0x0001 -#define DBG_SIG 0x0002 - #ifdef _PTHREADS_INVARIANTS #define THR_ASSERT(cond, msg) do { \ if (!(cond)) \ @@ -122,179 +116,6 @@ } \ } while (0) -/* - * Priority queues. - * - * XXX It'd be nice if these were contained in uthread_priority_queue.[ch]. - */ -typedef struct pq_list { - TAILQ_HEAD(, pthread) pl_head; /* list of threads at this priority */ - TAILQ_ENTRY(pq_list) pl_link; /* link for queue of priority lists */ - int pl_prio; /* the priority of this list */ - int pl_queued; /* is this in the priority queue */ -} pq_list_t; - -typedef struct pq_queue { - TAILQ_HEAD(, pq_list) pq_queue; /* queue of priority lists */ - pq_list_t *pq_lists; /* array of all priority lists */ - int pq_size; /* number of priority lists */ -#define PQF_ACTIVE 0x0001 - int pq_flags; - int pq_threads; -} pq_queue_t; - -/* - * Each KSEG has a scheduling queue. For now, threads that exist in their - * own KSEG (system scope) will get a full priority queue. In the future - * this can be optimized for the single thread per KSEG case. - */ -struct sched_queue { - pq_queue_t sq_runq; - TAILQ_HEAD(, pthread) sq_waitq; /* waiting in userland */ -}; - -typedef struct kse_thr_mailbox *kse_critical_t; - -struct kse_group; - -#define MAX_KSE_LOCKLEVEL 5 -struct kse { - /* -- location and order specific items for gdb -- */ - struct kcb *k_kcb; - struct pthread *k_curthread; /* current thread */ - struct kse_group *k_kseg; /* parent KSEG */ - struct sched_queue *k_schedq; /* scheduling queue */ - /* -- end of location and order specific items -- */ - TAILQ_ENTRY(kse) k_qe; /* KSE list link entry */ - TAILQ_ENTRY(kse) k_kgqe; /* KSEG's KSE list entry */ - /* - * Items that are only modified by the kse, or that otherwise - * don't need to be locked when accessed - */ - struct lock k_lock; - struct lockuser k_lockusers[MAX_KSE_LOCKLEVEL]; - int k_locklevel; - stack_t k_stack; - int k_flags; -#define KF_STARTED 0x0001 /* kernel kse created */ -#define KF_INITIALIZED 0x0002 /* initialized on 1st upcall */ -#define KF_TERMINATED 0x0004 /* kse is terminated */ -#define KF_IDLE 0x0008 /* kse is idle */ -#define KF_SWITCH 0x0010 /* thread switch in UTS */ - int k_error; /* syscall errno in critical */ - int k_cpu; /* CPU ID when bound */ - int k_sigseqno; /* signal buffered count */ -}; - -#define KSE_SET_IDLE(kse) ((kse)->k_flags |= KF_IDLE) -#define KSE_CLEAR_IDLE(kse) ((kse)->k_flags &= ~KF_IDLE) -#define KSE_IS_IDLE(kse) (((kse)->k_flags & KF_IDLE) != 0) -#define KSE_SET_SWITCH(kse) ((kse)->k_flags |= KF_SWITCH) -#define KSE_CLEAR_SWITCH(kse) ((kse)->k_flags &= ~KF_SWITCH) -#define KSE_IS_SWITCH(kse) (((kse)->k_flags & KF_SWITCH) != 0) - -/* - * Each KSE group contains one or more KSEs in which threads can run. - * At least for now, there is one scheduling queue per KSE group; KSEs - * within the same KSE group compete for threads from the same scheduling - * queue. A scope system thread has one KSE in one KSE group; the group - * does not use its scheduling queue. - */ -struct kse_group { - TAILQ_HEAD(, kse) kg_kseq; /* list of KSEs in group */ - TAILQ_HEAD(, pthread) kg_threadq; /* list of threads in group */ - TAILQ_ENTRY(kse_group) kg_qe; /* link entry */ - struct sched_queue kg_schedq; /* scheduling queue */ - struct lock kg_lock; - int kg_threadcount; /* # of assigned threads */ - int kg_ksecount; /* # of assigned KSEs */ - int kg_idle_kses; - int kg_flags; -#define KGF_SINGLE_THREAD 0x0001 /* scope system kse group */ -#define KGF_SCHEDQ_INITED 0x0002 /* has an initialized schedq */ -}; - -/* - * Add/remove threads from a KSE's scheduling queue. - * For now the scheduling queue is hung off the KSEG. - */ -#define KSEG_THRQ_ADD(kseg, thr) \ -do { \ - TAILQ_INSERT_TAIL(&(kseg)->kg_threadq, thr, kle);\ - (kseg)->kg_threadcount++; \ -} while (0) - -#define KSEG_THRQ_REMOVE(kseg, thr) \ -do { \ - TAILQ_REMOVE(&(kseg)->kg_threadq, thr, kle); \ - (kseg)->kg_threadcount--; \ -} while (0) - - -/* - * Lock acquire and release for KSEs. - */ -#define KSE_LOCK_ACQUIRE(kse, lck) \ -do { \ - if ((kse)->k_locklevel < MAX_KSE_LOCKLEVEL) { \ - (kse)->k_locklevel++; \ - _lock_acquire((lck), \ - &(kse)->k_lockusers[(kse)->k_locklevel - 1], 0); \ - } \ - else \ - PANIC("Exceeded maximum lock level"); \ -} while (0) - -#define KSE_LOCK_RELEASE(kse, lck) \ -do { \ - if ((kse)->k_locklevel > 0) { \ - _lock_release((lck), \ - &(kse)->k_lockusers[(kse)->k_locklevel - 1]); \ - (kse)->k_locklevel--; \ - } \ -} while (0) - -/* - * Lock our own KSEG. - */ -#define KSE_LOCK(curkse) \ - KSE_LOCK_ACQUIRE(curkse, &(curkse)->k_kseg->kg_lock) -#define KSE_UNLOCK(curkse) \ - KSE_LOCK_RELEASE(curkse, &(curkse)->k_kseg->kg_lock) - -/* - * Lock a potentially different KSEG. - */ -#define KSE_SCHED_LOCK(curkse, kseg) \ - KSE_LOCK_ACQUIRE(curkse, &(kseg)->kg_lock) -#define KSE_SCHED_UNLOCK(curkse, kseg) \ - KSE_LOCK_RELEASE(curkse, &(kseg)->kg_lock) - -/* - * Waiting queue manipulation macros (using pqe link): - */ -#define KSE_WAITQ_REMOVE(kse, thrd) \ -do { \ - if (((thrd)->flags & THR_FLAGS_IN_WAITQ) != 0) { \ - TAILQ_REMOVE(&(kse)->k_schedq->sq_waitq, thrd, pqe); \ - (thrd)->flags &= ~THR_FLAGS_IN_WAITQ; \ - } \ -} while (0) -#define KSE_WAITQ_INSERT(kse, thrd) kse_waitq_insert(thrd) -#define KSE_WAITQ_FIRST(kse) TAILQ_FIRST(&(kse)->k_schedq->sq_waitq) - -#define KSE_WAKEUP(kse) kse_wakeup(&(kse)->k_kcb->kcb_kmbx) - -/* - * TailQ initialization values. - */ -#define TAILQ_INITIALIZER { NULL, NULL } - -/* - * lock initialization values. - */ -#define LCK_INITIALIZER { NULL, NULL, LCK_DEFAULT } - struct pthread_mutex { /* * Lock for accesses to this structure. @@ -335,14 +156,6 @@ #define MUTEX_FLAGS_INITED 0x02 #define MUTEX_FLAGS_BUSY 0x04 -/* - * Static mutex initialization values. - */ -#define PTHREAD_MUTEX_STATIC_INITIALIZER \ - { LCK_INITIALIZER, PTHREAD_MUTEX_DEFAULT, PTHREAD_PRIO_NONE, \ - TAILQ_INITIALIZER, NULL, MUTEX_FLAGS_PRIVATE, 0, 0, 0, 0, \ - TAILQ_INITIALIZER } - struct pthread_mutex_attr { enum pthread_mutextype m_type; int m_protocol; @@ -391,8 +204,7 @@ }; struct pthread_spinlock { - volatile int s_lock; - pthread_t s_owner; + struct lock s_lock; }; /* @@ -403,18 +215,11 @@ #define COND_FLAGS_BUSY 0x04 /* - * Static cond initialization values. - */ -#define PTHREAD_COND_STATIC_INITIALIZER \ - { LCK_INITIALIZER, COND_TYPE_FAST, TAILQ_INITIALIZER, \ - NULL, NULL, 0, 0 } - -/* * Cleanup definitions. */ struct pthread_cleanup { struct pthread_cleanup *next; - void (*routine) (); + void (*routine)(); void *routine_arg; }; @@ -435,7 +240,7 @@ #define THR_SIGNAL_THREAD 0x200 /* This is a signal thread */ int flags; void *arg_attr; - void (*cleanup_attr) (); + void (*cleanup_attr)(); void *stackaddr_attr; size_t stacksize_attr; size_t guardsize_attr; @@ -484,28 +289,10 @@ #define THR_BASE_PRIORITY(prio) ((prio) & THR_MAX_PRIORITY) /* - * Clock resolution in microseconds. - */ -#define CLOCK_RES_USEC 10000 - -/* * Time slice period in microseconds. */ #define TIMESLICE_USEC 20000 -/* - * XXX - Define a thread-safe macro to get the current time of day - * which is updated at regular intervals by something. - * - * For now, we just make the system call to get the time. - */ -#define KSE_GET_TOD(curkse, tsp) \ -do { \ - *tsp = (curkse)->k_kcb->kcb_kmbx.km_timeofday; \ - if ((tsp)->tv_sec == 0) \ - clock_gettime(CLOCK_REALTIME, tsp); \ -} while (0) - struct pthread_rwlockattr { int pshared; }; @@ -523,12 +310,8 @@ */ enum pthread_state { PS_RUNNING, - PS_LOCKWAIT, PS_MUTEX_WAIT, PS_COND_WAIT, - PS_SLEEP_WAIT, - PS_SIGSUSPEND, - PS_SIGWAIT, PS_JOIN, PS_SUSPENDED, PS_DEAD, @@ -536,23 +319,16 @@ PS_STATE_MAX }; -struct sigwait_data { - sigset_t *waitset; - siginfo_t *siginfo; /* used to save siginfo for sigwaitinfo() */ -}; - union pthread_wait_data { pthread_mutex_t mutex; pthread_cond_t cond; - struct lock *lock; - struct sigwait_data *sigwait; }; /* * Define a continuation routine that can be used to perform a * transfer of control: */ -typedef void (*thread_continuation_t) (void *); +typedef void (*thread_continuation_t)(void *); /* * This stores a thread's state prior to running a signal handler. @@ -561,18 +337,14 @@ * state is restored from here. */ struct pthread_sigframe { - int psf_valid; int psf_flags; int psf_cancelflags; int psf_interrupted; int psf_timeout; - int psf_signo; enum pthread_state psf_state; union pthread_wait_data psf_wait_data; struct timespec psf_wakeup_time; - sigset_t psf_sigset; - sigset_t psf_sigmask; - int psf_seqno; + thread_continuation_t psf_continuation; }; struct join_status { @@ -590,17 +362,13 @@ volatile int allocated; volatile int count; int seqno; - void (*destructor) (void *); + void (*destructor)(void *); }; -#define MAX_THR_LOCKLEVEL 5 /* * Thread structure. */ struct pthread { - /* Thread control block */ - struct tcb *tcb; - /* * Magic value to help recognize a valid thread structure * from an invalid one: @@ -610,25 +378,40 @@ char *name; u_int64_t uniqueid; /* for gdb */ - /* Queue entry for list of all threads: */ + /* How many low level locks the thread held. */ + int locklevel; + + /* + * Lock for accesses to this thread structure. + */ + struct lock lock; + + /* Kernel thread id. */ + long tid; + + /* Thread exits in kernel, written by kernel. */ + long isdead; + + /* How many signals were received. */ + int sigseqno; + + /* Thread lock held and switching state. */ + int lock_switch; + + /* Thread is waiting. */ + int idle; + + /* Queue entry for list of all threads. */ TAILQ_ENTRY(pthread) tle; /* link for all threads in process */ - TAILQ_ENTRY(pthread) kle; /* link for all threads in KSE/KSEG */ - /* Queue entry for GC lists: */ + /* Queue entry for GC lists. */ TAILQ_ENTRY(pthread) gcle; - /* Hash queue entry */ + /* Hash queue entry. */ LIST_ENTRY(pthread) hle; - /* - * Lock for accesses to this thread structure. - */ - struct lock lock; - struct lockuser lockusers[MAX_THR_LOCKLEVEL]; - int locklevel; - kse_critical_t critical[MAX_KSE_LOCKLEVEL]; - struct kse *kse; - struct kse_group *kseg; + /* Threads reference count. */ + int refcount; /* * Thread start routine, argument, stack pointer and thread @@ -638,15 +421,8 @@ void *arg; struct pthread_attr attr; - int active; /* thread running */ - int blocked; /* thread blocked in kernel */ - int need_switchout; - - /* - * Used for tracking delivery of signal handlers. - */ - struct pthread_sigframe *curframe; - siginfo_t *siginfo; + /* backout routine must be invoke before handling signal. */ + thread_continuation_t sigbackout; /* * Cancelability flags - the lower 2 bits are used by cancel @@ -659,27 +435,18 @@ thread_continuation_t continuation; - /* - * The thread's base and pending signal masks. The active - * signal mask is stored in the thread's context (in mailbox). - */ + /* Thread's temporary signal masks. */ sigset_t sigmask; + + /* Used for tracking delivery of signal handlers. */ sigset_t sigpend; - sigset_t *oldsigmask; + siginfo_t siginfo[_SIG_MAXSIG]; volatile int check_pending; - int refcount; /* Thread state: */ enum pthread_state state; - volatile int lock_switch; /* - * Number of microseconds accumulated by this thread when - * time slicing is active. - */ - long slice_usec; - - /* * Time to wake up thread. This is used for sleeping threads and * for any operation which may time out (such as select). */ @@ -702,8 +469,7 @@ struct join_status join_status; /* - * The current thread can belong to only one scheduling queue at - * a time (ready or waiting queue). It can also belong to: + * The current thread can belong to: * * o A queue of threads waiting for a mutex * o A queue of threads waiting for a condition variable @@ -720,7 +486,6 @@ * sqe for synchronization (mutex, condition variable, and join) * queue links, and qe for all other links. */ - TAILQ_ENTRY(pthread) pqe; /* priority, wait queues link */ TAILQ_ENTRY(pthread) sqe; /* synchronization queue link */ /* Wait data. */ @@ -738,20 +503,12 @@ */ int critical_count; - /* - * Set to TRUE if this thread should yield after leaving a - * critical region to check for signals, messages, etc. - */ - int critical_yield; - int sflags; #define THR_FLAGS_IN_SYNCQ 0x0001 /* Miscellaneous flags; only set with scheduling lock held. */ int flags; #define THR_FLAGS_PRIVATE 0x0001 -#define THR_FLAGS_IN_WAITQ 0x0002 /* in waiting queue using pqe link */ -#define THR_FLAGS_IN_RUNQ 0x0004 /* in run queue using pqe link */ #define THR_FLAGS_EXITING 0x0008 /* thread is exiting */ #define THR_FLAGS_SUSPENDED 0x0010 /* thread is suspended */ @@ -790,9 +547,6 @@ /* Number of priority ceiling or protection mutexes owned. */ int priority_mutex_count; - /* Number rwlocks rdlocks held. */ - int rdlock_count; - /* * Queue of currently owned mutexes. */ @@ -802,18 +556,24 @@ struct pthread_specific_elem *specific; int specific_data_count; - /* Alternative stack for sigaltstack() */ - stack_t sigstk; + /* Number rwlocks rdlocks held. */ + int rdlock_count; /* - * Current locks bitmap for rtld. - */ - int rtld_bits; + * Current locks bitmap for rtld. */ + int rtld_bits; + + /* Thread control block */ + struct tcb *tcb; /* Cleanup handlers Link List */ struct pthread_cleanup *cleanup; - char *fname; /* Ptr to source file name */ - int lineno; /* Source line number. */ + + /* Ptr to source file name*/ + char *fname; + + /* Source line number. */ + int lineno; }; /* @@ -829,10 +589,6 @@ #define THR_YIELD_CHECK(thrd) \ do { \ if (!THR_IN_CRITICAL(thrd)) { \ - if (__predict_false(_libkse_debug)) \ - _thr_debug_check_yield(thrd); \ - if ((thrd)->critical_yield != 0) \ - _thr_sched_switch(thrd); \ if ((thrd)->check_pending != 0) \ _thr_sig_check_pending(thrd); \ } \ @@ -840,64 +596,28 @@ #define THR_LOCK_ACQUIRE(thrd, lck) \ do { \ - if ((thrd)->locklevel < MAX_THR_LOCKLEVEL) { \ - THR_DEACTIVATE_LAST_LOCK(thrd); \ - (thrd)->locklevel++; \ - _lock_acquire((lck), \ - &(thrd)->lockusers[(thrd)->locklevel - 1], \ - (thrd)->active_priority); \ - } else \ - PANIC("Exceeded maximum lock level"); \ + (thrd)->locklevel++; \ + _lock_acquire((lck), (thrd)->tid); \ } while (0) #define THR_LOCK_RELEASE(thrd, lck) \ do { \ if ((thrd)->locklevel > 0) { \ - _lock_release((lck), \ - &(thrd)->lockusers[(thrd)->locklevel - 1]); \ + _lock_release((lck), (thrd)->tid); \ (thrd)->locklevel--; \ - THR_ACTIVATE_LAST_LOCK(thrd); \ if ((thrd)->locklevel == 0) \ THR_YIELD_CHECK(thrd); \ + } else { \ + PANIC("locklevel <= 0"); \ } \ } while (0) -#define THR_ACTIVATE_LAST_LOCK(thrd) \ -do { \ - if ((thrd)->locklevel > 0) \ - _lockuser_setactive( \ - &(thrd)->lockusers[(thrd)->locklevel - 1], 1); \ -} while (0) - -#define THR_DEACTIVATE_LAST_LOCK(thrd) \ -do { \ - if ((thrd)->locklevel > 0) \ - _lockuser_setactive( \ - &(thrd)->lockusers[(thrd)->locklevel - 1], 0); \ -} while (0) - -/* - * For now, threads will have their own lock separate from their - * KSE scheduling lock. - */ #define THR_LOCK(thr) THR_LOCK_ACQUIRE(thr, &(thr)->lock) #define THR_UNLOCK(thr) THR_LOCK_RELEASE(thr, &(thr)->lock) #define THR_THREAD_LOCK(curthrd, thr) THR_LOCK_ACQUIRE(curthrd, &(thr)->lock) #define THR_THREAD_UNLOCK(curthrd, thr) THR_LOCK_RELEASE(curthrd, &(thr)->lock) /* - * Priority queue manipulation macros (using pqe link). We use - * the thread's kseg link instead of the kse link because a thread - * does not (currently) have a statically assigned kse. - */ -#define THR_RUNQ_INSERT_HEAD(thrd) \ - _pq_insert_head(&(thrd)->kseg->kg_schedq.sq_runq, thrd) -#define THR_RUNQ_INSERT_TAIL(thrd) \ - _pq_insert_tail(&(thrd)->kseg->kg_schedq.sq_runq, thrd) -#define THR_RUNQ_REMOVE(thrd) \ - _pq_remove(&(thrd)->kseg->kg_schedq.sq_runq, thrd) - -/* * Macros to insert/remove threads to the all thread list and * the gc list. */ @@ -932,71 +652,43 @@ #define GC_NEEDED() (atomic_load_acq_int(&_gc_count) >= 5) -/* - * Locking the scheduling queue for another thread uses that thread's - * KSEG lock. - */ -#define THR_SCHED_LOCK(curthr, thr) do { \ - (curthr)->critical[(curthr)->locklevel] = _kse_critical_enter(); \ - (curthr)->locklevel++; \ - KSE_SCHED_LOCK((curthr)->kse, (thr)->kseg); \ -} while (0) - -#define THR_SCHED_UNLOCK(curthr, thr) do { \ - KSE_SCHED_UNLOCK((curthr)->kse, (thr)->kseg); \ - (curthr)->locklevel--; \ - _kse_critical_leave((curthr)->critical[(curthr)->locklevel]); \ -} while (0) - /* Take the scheduling lock with the intent to call the scheduler. */ #define THR_LOCK_SWITCH(curthr) do { \ - (void)_kse_critical_enter(); \ - KSE_SCHED_LOCK((curthr)->kse, (curthr)->kseg); \ + curthread->lock_switch++; \ + _lock_acquire(&(curthr->lock), (curthr)->tid); \ } while (0) #define THR_UNLOCK_SWITCH(curthr) do { \ - KSE_SCHED_UNLOCK((curthr)->kse, (curthr)->kseg);\ + _lock_release(&(curthr->lock), (curthr)->tid); \ + curthread->lock_switch--; \ + THR_YIELD_CHECK(curthr); \ } while (0) #define THR_CRITICAL_ENTER(thr) (thr)->critical_count++ #define THR_CRITICAL_LEAVE(thr) do { \ (thr)->critical_count--; \ - if (((thr)->critical_yield != 0) && \ - ((thr)->critical_count == 0)) { \ - (thr)->critical_yield = 0; \ - _thr_sched_switch(thr); \ + if ((thr)->critical_count == 0) { \ + THR_YIELD_CHECK(thr); \ } \ } while (0) -#define THR_IS_ACTIVE(thrd) \ - ((thrd)->kse != NULL) && ((thrd)->kse->k_curthread == (thrd)) - #define THR_IN_SYNCQ(thrd) (((thrd)->sflags & THR_FLAGS_IN_SYNCQ) != 0) #define THR_IS_SUSPENDED(thrd) \ (((thrd)->state == PS_SUSPENDED) || \ (((thrd)->flags & THR_FLAGS_SUSPENDED) != 0)) #define THR_IS_EXITING(thrd) (((thrd)->flags & THR_FLAGS_EXITING) != 0) -#define DBG_CAN_RUN(thrd) (((thrd)->tcb->tcb_tmbx.tm_dflags & \ - TMDF_SUSPEND) == 0) extern int __isthreaded; -static inline int -_kse_isthreaded(void) -{ - return (__isthreaded != 0); -} - /* * Global variables for the pthread kernel. */ SCLASS void *_usrstack SCLASS_PRESET(NULL); -SCLASS struct kse *_kse_initial SCLASS_PRESET(NULL); SCLASS struct pthread *_thr_initial SCLASS_PRESET(NULL); /* For debugger */ -SCLASS int _libkse_debug SCLASS_PRESET(0); -SCLASS int _thread_activated SCLASS_PRESET(0); +SCLASS int _libkse2_debug SCLASS_PRESET(0); +SCLASS int _thread_inited SCLASS_PRESET(0); SCLASS int _thread_scope_system SCLASS_PRESET(0); /* List of all threads: */ @@ -1016,7 +708,7 @@ SCLASS struct pthread_attr _pthread_attr_default SCLASS_PRESET({ SCHED_RR, 0, TIMESLICE_USEC, THR_DEFAULT_PRIORITY, - THR_CREATE_RUNNING, PTHREAD_CREATE_JOINABLE, NULL, + THR_CREATE_RUNNING, 0, NULL, NULL, NULL, THR_STACK_DEFAULT, /* guardsize */0 }); @@ -1028,76 +720,40 @@ SCLASS struct pthread_cond_attr _pthread_condattr_default SCLASS_PRESET({COND_TYPE_FAST, 0}); -/* Clock resolution in usec. */ -SCLASS int _clock_res_usec SCLASS_PRESET(CLOCK_RES_USEC); - /* Array of signal actions for this process: */ SCLASS struct sigaction _thread_sigact[_SIG_MAXSIG]; -/* - * Lock for above count of dummy handlers and for the process signal - * mask and pending signal sets. - */ -SCLASS struct lock _thread_signal_lock; - -/* Pending signals and mask for this process: */ -SCLASS sigset_t _thr_proc_sigpending; -SCLASS siginfo_t _thr_proc_siginfo[_SIG_MAXSIG]; - SCLASS pid_t _thr_pid SCLASS_PRESET(0); +SCLASS int _thr_guard_default; +SCLASS int _thr_page_size; +/* Garbage thread count. */ +SCLASS int _gc_count SCLASS_PRESET(0); -/* Garbage collector lock. */ -SCLASS struct lock _gc_lock; -SCLASS int _gc_check SCLASS_PRESET(0); -SCLASS int _gc_count SCLASS_PRESET(0); - SCLASS struct lock _mutex_static_lock; +SCLASS struct lock _cond_static_lock; SCLASS struct lock _rwlock_static_lock; SCLASS struct lock _keytable_lock; SCLASS struct lock _thread_list_lock; -SCLASS int _thr_guard_default; -SCLASS int _thr_page_size; -SCLASS pthread_t _thr_sig_daemon; -SCLASS int _thr_debug_flags SCLASS_PRESET(0); +SCLASS struct lock _thread_signal_lock; /* Undefine the storage class and preset specifiers: */ #undef SCLASS #undef SCLASS_PRESET - /* * Function prototype definitions. */ __BEGIN_DECLS int _cond_reinit(pthread_cond_t *); -void _cond_wait_backout(struct pthread *); -struct kse *_kse_alloc(struct pthread *, int sys_scope); -kse_critical_t _kse_critical_enter(void); -void _kse_critical_leave(kse_critical_t); -int _kse_in_critical(void); -void _kse_free(struct pthread *, struct kse *); -void _kse_init(); -struct kse_group *_kseg_alloc(struct pthread *); -void _kse_lock_wait(struct lock *, struct lockuser *lu); -void _kse_lock_wakeup(struct lock *, struct lockuser *lu); -void _kse_single_thread(struct pthread *); -int _kse_setthreaded(int); -void _kseg_free(struct kse_group *); +void _thr_kern_init(); +void _thr_single_thread(struct pthread *); +int _thr_setthreaded(int); int _mutex_cv_lock(pthread_mutex_t *); int _mutex_cv_unlock(pthread_mutex_t *); -void _mutex_lock_backout(struct pthread *); void _mutex_notify_priochange(struct pthread *, struct pthread *, int); int _mutex_reinit(struct pthread_mutex *); void _mutex_unlock_private(struct pthread *); void _libpthread_init(struct pthread *); -int _pq_alloc(struct pq_queue *, int, int); -void _pq_free(struct pq_queue *); -int _pq_init(struct pq_queue *); -void _pq_remove(struct pq_queue *pq, struct pthread *); -void _pq_insert_head(struct pq_queue *pq, struct pthread *); -void _pq_insert_tail(struct pq_queue *pq, struct pthread *); -struct pthread *_pq_first(struct pq_queue *pq); -struct pthread *_pq_first_debug(struct pq_queue *pq); void *_pthread_getspecific(pthread_key_t); int _pthread_key_create(pthread_key_t *, void (*) (void *)); int _pthread_key_delete(pthread_key_t); @@ -1120,56 +776,43 @@ struct pthread *_thr_alloc(struct pthread *); void _thr_exit(char *, int, char *); void _thr_exit_cleanup(void); -void _thr_lock_wait(struct lock *lock, struct lockuser *lu); -void _thr_lock_wakeup(struct lock *lock, struct lockuser *lu); -void _thr_mutex_reinit(pthread_mutex_t *); +void _thr_mutex_reinit(struct pthread *, pthread_mutex_t *); int _thr_ref_add(struct pthread *, struct pthread *, int); void _thr_ref_delete(struct pthread *, struct pthread *); void _thr_rtld_init(void); void _thr_rtld_fini(void); -int _thr_schedule_add(struct pthread *, struct pthread *); -void _thr_schedule_remove(struct pthread *, struct pthread *); void _thr_setrunnable(struct pthread *curthread, struct pthread *thread); -struct kse_mailbox *_thr_setrunnable_unlocked(struct pthread *thread); -struct kse_mailbox *_thr_sig_add(struct pthread *, int, siginfo_t *); -void _thr_sig_dispatch(struct kse *, int, siginfo_t *); +long _thr_setrunnable_unlocked(struct pthread *thread); +long _thr_sig_add(struct pthread *, int, siginfo_t *); int _thr_stack_alloc(struct pthread_attr *); void _thr_stack_free(struct pthread_attr *); void _thr_exit_cleanup(void); void _thr_free(struct pthread *, struct pthread *); void _thr_gc(struct pthread *); -void _thr_panic_exit(char *, int, char *); void _thread_cleanupspecific(void); void _thread_dump_info(void); void _thread_printf(int, const char *, ...); void _thr_sched_switch(struct pthread *); void _thr_sched_switch_unlocked(struct pthread *); void _thr_set_timeout(const struct timespec *); -void _thr_seterrno(struct pthread *, int); void _thr_sig_handler(int, siginfo_t *, ucontext_t *); void _thr_sig_check_pending(struct pthread *); -void _thr_sig_rundown(struct pthread *, ucontext_t *, - struct pthread_sigframe *); +void _thr_sig_rundown(struct pthread *); void _thr_sig_send(struct pthread *pthread, int sig); void _thr_sigframe_restore(struct pthread *thread, struct pthread_sigframe *psf); void _thr_spinlock_init(void); void _thr_cancel_enter(struct pthread *); void _thr_cancel_leave(struct pthread *, int); -int _thr_setconcurrency(int new_level); -int _thr_setmaxconcurrency(void); void _thr_critical_enter(struct pthread *); void _thr_critical_leave(struct pthread *); -int _thr_start_sig_daemon(void); -int _thr_getprocsig(int sig, siginfo_t *siginfo); -int _thr_getprocsig_unlocked(int sig, siginfo_t *siginfo); void _thr_signal_init(void); void _thr_signal_deinit(void); void _thr_hash_add(struct pthread *); void _thr_hash_remove(struct pthread *); struct pthread *_thr_hash_find(struct pthread *); void _thr_finish_cancellation(void *arg); -int _thr_sigonstack(void *sp); -void _thr_debug_check_yield(struct pthread *); +void _thr_link(struct pthread *curthread, struct pthread *thread); +void _thr_unlink(struct pthread *curthread, struct pthread *thread); /* * Aliases for _pthread functions. Should be called instead of @@ -1180,9 +823,9 @@ int _thr_cond_wait(pthread_cond_t *, pthread_mutex_t *); int _thr_mutex_lock(pthread_mutex_t *); int _thr_mutex_unlock(pthread_mutex_t *); -int _thr_rwlock_rdlock (pthread_rwlock_t *); -int _thr_rwlock_wrlock (pthread_rwlock_t *); -int _thr_rwlock_unlock (pthread_rwlock_t *); +int _thr_rwlock_rdlock(pthread_rwlock_t *); +int _thr_rwlock_wrlock(pthread_rwlock_t *); +int _thr_rwlock_unlock(pthread_rwlock_t *); /* #include */ #ifdef _SYS_AIO_H_ @@ -1247,7 +890,9 @@ ssize_t __sys_write(int, const void *, size_t); void __sys_exit(int); int __sys_sigwait(const sigset_t *, int *); -int __sys_sigtimedwait(sigset_t *, siginfo_t *, struct timespec *); +int __sys_sigtimedwait(const sigset_t *, siginfo_t *, + const struct timespec *); +int __sys_sigwaitinfo(const sigset_t *set, siginfo_t *info); #endif /* #include */ @@ -1260,4 +905,25 @@ int __sys_msync(void *, size_t, int); #endif +__END_DECLS + +static inline int +_thr_isthreaded(void) +{ + return (__isthreaded != 0); +} + +static inline int +_thr_is_inited(void) +{ + return _thread_inited; +} + +static inline void +_thr_check_init(void) +{ + if (_thread_inited == 0) + _libpthread_init(0); +} + #endif /* !_THR_PRIVATE_H */ From owner-p4-projects@FreeBSD.ORG Sat Nov 20 03:05:03 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 18DF216A4D0; Sat, 20 Nov 2004 03:05:02 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B8E4C16A4CE for ; Sat, 20 Nov 2004 03:05:01 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7DF6D43D2F for ; Sat, 20 Nov 2004 03:05:01 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK3510h003057 for ; Sat, 20 Nov 2004 03:05:01 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK351eT003054 for perforce@freebsd.org; Sat, 20 Nov 2004 03:05:01 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 03:05:01 GMT Message-Id: <200411200305.iAK351eT003054@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65498 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 03:05:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=65498 Change 65498 by davidxu@davidxu_alona on 2004/11/20 03:04:34 follow the change in thr_private.h, no sched queue anymore. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_kern.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_kern.c#2 (text+ko) ==== @@ -36,23 +36,15 @@ __FBSDID("$FreeBSD: src/lib/libpthread/thread/thr_kern.c,v 1.115 2004/10/23 23:28:36 davidxu Exp $"); #include -#include -#include #include #include -#include -#include -#include -#include #include #include #include #include -#include #include -#include "atomic_ops.h" #include "thr_private.h" #include "libc_private.h" @@ -78,29 +70,6 @@ #define MAX_CACHED_KSES ((_thread_scope_system <= 0) ? 50 : 100) #define MAX_CACHED_KSEGS ((_thread_scope_system <= 0) ? 50 : 100) -#define KSE_SET_MBOX(kse, thrd) \ - (kse)->k_kcb->kcb_kmbx.km_curthread = &(thrd)->tcb->tcb_tmbx - -#define KSE_SET_EXITED(kse) (kse)->k_flags |= KF_EXITED - -/* - * Macros for manipulating the run queues. The priority queue - * routines use the thread's pqe link and also handle the setting - * and clearing of the thread's THR_FLAGS_IN_RUNQ flag. - */ -#define KSE_RUNQ_INSERT_HEAD(kse, thrd) \ - _pq_insert_head(&(kse)->k_schedq->sq_runq, thrd) -#define KSE_RUNQ_INSERT_TAIL(kse, thrd) \ - _pq_insert_tail(&(kse)->k_schedq->sq_runq, thrd) -#define KSE_RUNQ_REMOVE(kse, thrd) \ - _pq_remove(&(kse)->k_schedq->sq_runq, thrd) -#define KSE_RUNQ_FIRST(kse) \ - ((_libkse_debug == 0) ? \ - _pq_first(&(kse)->k_schedq->sq_runq) : \ - _pq_first_debug(&(kse)->k_schedq->sq_runq)) - -#define KSE_RUNQ_THREADS(kse) ((kse)->k_schedq->sq_runq.pq_threads) - #define THR_NEED_CANCEL(thrd) \ (((thrd)->cancelflags & THR_CANCELLING) != 0 && \ ((thrd)->cancelflags & PTHREAD_CANCEL_DISABLE) == 0 && \ @@ -118,78 +87,26 @@ * to have a speedy free list, but also so they can be deallocated * after a fork(). */ -static TAILQ_HEAD(, kse) active_kseq; -static TAILQ_HEAD(, kse) free_kseq; -static TAILQ_HEAD(, kse_group) free_kse_groupq; -static TAILQ_HEAD(, kse_group) active_kse_groupq; -static TAILQ_HEAD(, kse_group) gc_ksegq; -static struct lock kse_lock; /* also used for kseg queue */ -static int free_kse_count = 0; -static int free_kseg_count = 0; static TAILQ_HEAD(, pthread) free_threadq; -static struct lock thread_lock; +static struct lock free_thread_lock; static int free_thread_count = 0; static int inited = 0; -static int active_kse_count = 0; -static int active_kseg_count = 0; static u_int64_t next_uniqueid = 1; LIST_HEAD(thread_hash_head, pthread); -#define THREAD_HASH_QUEUES 127 -static struct thread_hash_head thr_hashtable[THREAD_HASH_QUEUES]; -#define THREAD_HASH(thrd) ((unsigned long)thrd % THREAD_HASH_QUEUES) +#define HASH_QUEUES 128 +static struct thread_hash_head thr_hashtable[HASH_QUEUES]; +#define THREAD_HASH(thrd) (((unsigned long)thrd >> 12) % HASH_QUEUES) /* Lock for thread tcb constructor/destructor */ -static pthread_mutex_t _tcb_mutex; +static struct lock tcb_lock; -#ifdef DEBUG_THREAD_KERN -static void dump_queues(struct kse *curkse); -#endif -static void kse_check_completed(struct kse *kse); -static void kse_check_waitq(struct kse *kse); -static void kse_fini(struct kse *curkse); -static void kse_reinit(struct kse *kse, int sys_scope); -static void kse_sched_multi(struct kse_mailbox *kmbx); -static void kse_sched_single(struct kse_mailbox *kmbx); -static void kse_switchout_thread(struct kse *kse, struct pthread *thread); -static void kse_wait(struct kse *kse, struct pthread *td_wait, int sigseq); -static void kse_free_unlocked(struct kse *kse); -static void kse_destroy(struct kse *kse); -static void kseg_free_unlocked(struct kse_group *kseg); -static void kseg_init(struct kse_group *kseg); -static void kseg_reinit(struct kse_group *kseg); -static void kseg_destroy(struct kse_group *kseg); -static void kse_waitq_insert(struct pthread *thread); -static void kse_wakeup_multi(struct kse *curkse); -static struct kse_mailbox *kse_wakeup_one(struct pthread *thread); -static void thr_cleanup(struct kse *kse, struct pthread *curthread); -static void thr_link(struct pthread *thread); -static void thr_resume_wrapper(int sig, siginfo_t *, ucontext_t *); -static void thr_resume_check(struct pthread *curthread, ucontext_t *ucp, - struct pthread_sigframe *psf); +static void thr_wait(struct pthread *td_wait, int sigseq); +static void thr_cleanup(struct pthread *curthread); static int thr_timedout(struct pthread *thread, struct timespec *curtime); -static void thr_unlink(struct pthread *thread); static void thr_destroy(struct pthread *curthread, struct pthread *thread); static void thread_gc(struct pthread *thread); -static void kse_gc(struct pthread *thread); -static void kseg_gc(struct pthread *thread); -static void __inline -thr_accounting(struct pthread *thread) -{ - if ((thread->slice_usec != -1) && - (thread->slice_usec <= TIMESLICE_USEC) && - (thread->attr.sched_policy != SCHED_FIFO)) { - thread->slice_usec += (thread->tcb->tcb_tmbx.tm_uticks - + thread->tcb->tcb_tmbx.tm_sticks) * _clock_res_usec; - /* Check for time quantum exceeded: */ - if (thread->slice_usec > TIMESLICE_USEC) - thread->slice_usec = -1; - } - thread->tcb->tcb_tmbx.tm_uticks = 0; - thread->tcb->tcb_tmbx.tm_sticks = 0; -} - /* * This is called after a fork(). * No locks need to be taken here since we are guaranteed to be @@ -205,160 +122,15 @@ * structures may be in inconsistent state. */ void -_kse_single_thread(struct pthread *curthread) +_thr_single_thread(struct pthread *curthread) { -#ifdef NOTYET - struct kse *kse; - struct kse_group *kseg; - struct pthread *thread; - kse_critical_t crit; - int i; - - if (__isthreaded) { - _thr_rtld_fini(); - _thr_signal_deinit(); - } - __isthreaded = 0; - /* - * Restore signal mask early, so any memory problems could - * dump core. - */ - sigprocmask(SIG_SETMASK, &curthread->sigmask, NULL); - _thread_active_threads = 1; - - /* - * Enter a loop to remove and free all threads other than - * the running thread from the active thread list: - */ - while ((thread = TAILQ_FIRST(&_thread_list)) != NULL) { - THR_GCLIST_REMOVE(thread); - /* - * Remove this thread from the list (the current - * thread will be removed but re-added by libpthread - * initialization. - */ - TAILQ_REMOVE(&_thread_list, thread, tle); - /* Make sure this isn't the running thread: */ - if (thread != curthread) { - _thr_stack_free(&thread->attr); - if (thread->specific != NULL) - free(thread->specific); - thr_destroy(curthread, thread); - } - } - - TAILQ_INIT(&curthread->mutexq); /* initialize mutex queue */ - curthread->joiner = NULL; /* no joining threads yet */ - curthread->refcount = 0; - SIGEMPTYSET(curthread->sigpend); /* clear pending signals */ - if (curthread->specific != NULL) { - free(curthread->specific); - curthread->specific = NULL; - curthread->specific_data_count = 0; - } - - /* Free the free KSEs: */ - while ((kse = TAILQ_FIRST(&free_kseq)) != NULL) { - TAILQ_REMOVE(&free_kseq, kse, k_qe); - kse_destroy(kse); - } - free_kse_count = 0; - - /* Free the active KSEs: */ - while ((kse = TAILQ_FIRST(&active_kseq)) != NULL) { - TAILQ_REMOVE(&active_kseq, kse, k_qe); - kse_destroy(kse); - } - active_kse_count = 0; - - /* Free the free KSEGs: */ - while ((kseg = TAILQ_FIRST(&free_kse_groupq)) != NULL) { - TAILQ_REMOVE(&free_kse_groupq, kseg, kg_qe); - kseg_destroy(kseg); - } - free_kseg_count = 0; - - /* Free the active KSEGs: */ - while ((kseg = TAILQ_FIRST(&active_kse_groupq)) != NULL) { - TAILQ_REMOVE(&active_kse_groupq, kseg, kg_qe); - kseg_destroy(kseg); - } - active_kseg_count = 0; - - /* Free the free threads. */ - while ((thread = TAILQ_FIRST(&free_threadq)) != NULL) { - TAILQ_REMOVE(&free_threadq, thread, tle); - thr_destroy(curthread, thread); - } - free_thread_count = 0; - - /* Free the to-be-gc'd threads. */ - while ((thread = TAILQ_FIRST(&_thread_gc_list)) != NULL) { - TAILQ_REMOVE(&_thread_gc_list, thread, gcle); - thr_destroy(curthread, thread); - } - TAILQ_INIT(&gc_ksegq); - _gc_count = 0; - - if (inited != 0) { - /* - * Destroy these locks; they'll be recreated to assure they - * are in the unlocked state. - */ - _lock_destroy(&kse_lock); - _lock_destroy(&thread_lock); - _lock_destroy(&_thread_list_lock); - inited = 0; - } - - /* - * After a fork(), the leftover thread goes back to being - * scope process. - */ - curthread->attr.flags &= ~PTHREAD_SCOPE_SYSTEM; - curthread->attr.flags |= PTHREAD_SCOPE_PROCESS; - - /* - * After a fork, we are still operating on the thread's original - * stack. Don't clear the THR_FLAGS_USER from the thread's - * attribute flags. - */ - - /* Initialize the threads library. */ - curthread->kse = NULL; - curthread->kseg = NULL; - _kse_initial = NULL; _libpthread_init(curthread); -#else - int i; - - /* Reset the current thread and KSE lock data. */ - for (i = 0; i < curthread->locklevel; i++) { - _lockuser_reinit(&curthread->lockusers[i], (void *)curthread); - } - curthread->locklevel = 0; - for (i = 0; i < curthread->kse->k_locklevel; i++) { - _lockuser_reinit(&curthread->kse->k_lockusers[i], - (void *)curthread->kse); - _LCK_SET_PRIVATE2(&curthread->kse->k_lockusers[i], NULL); - } - curthread->kse->k_locklevel = 0; - _thr_spinlock_init(); +#if 0 if (__isthreaded) { _thr_rtld_fini(); - _thr_signal_deinit(); } +#endif __isthreaded = 0; - curthread->kse->k_kcb->kcb_kmbx.km_curthread = NULL; - curthread->attr.flags |= PTHREAD_SCOPE_SYSTEM; - - /* - * Restore signal mask early, so any memory problems could - * dump core. - */ - sigprocmask(SIG_SETMASK, &curthread->sigmask, NULL); - _thread_active_threads = 1; -#endif } /* @@ -366,29 +138,21 @@ * KSD for the KSE. */ void -_kse_init(void) +_thr_kern_init(void) { + TAILQ_INIT(&free_threadq); + _gc_count = 0; if (inited == 0) { - TAILQ_INIT(&active_kseq); - TAILQ_INIT(&active_kse_groupq); - TAILQ_INIT(&free_kseq); - TAILQ_INIT(&free_kse_groupq); - TAILQ_INIT(&free_threadq); - TAILQ_INIT(&gc_ksegq); - if (_lock_init(&kse_lock, LCK_ADAPTIVE, - _kse_lock_wait, _kse_lock_wakeup) != 0) - PANIC("Unable to initialize free KSE queue lock"); - if (_lock_init(&thread_lock, LCK_ADAPTIVE, - _kse_lock_wait, _kse_lock_wakeup) != 0) + if (_lock_init(&free_thread_lock) != 0) PANIC("Unable to initialize free thread queue lock"); - if (_lock_init(&_thread_list_lock, LCK_ADAPTIVE, - _kse_lock_wait, _kse_lock_wakeup) != 0) - PANIC("Unable to initialize thread list lock"); - _pthread_mutex_init(&_tcb_mutex, NULL); - active_kse_count = 0; - active_kseg_count = 0; - _gc_count = 0; + if (_lock_init(&tcb_lock) != 0) + PANIC("Unable to initialize tcb lock"); inited = 1; + } else { + if (_lock_reinit(&free_thread_lock) != 0) + PANIC("Unable to reinitialize free thread queue lock"); + if (_lock_reinit(&tcb_lock) != 0) + PANIC("Unable to reinitialize tcb lock"); } } @@ -397,193 +161,22 @@ * thread) is created. */ int -_kse_setthreaded(int threaded) +_thr_setthreaded(int threaded) { - sigset_t sigset; - if ((threaded != 0) && (__isthreaded == 0)) { - SIGFILLSET(sigset); - __sys_sigprocmask(SIG_SETMASK, &sigset, &_thr_initial->sigmask); - - /* - * Tell the kernel to create a KSE for the initial thread - * and enable upcalls in it. - */ - _kse_initial->k_flags |= KF_STARTED; - - if (_thread_scope_system <= 0) { - _thr_initial->attr.flags &= ~PTHREAD_SCOPE_SYSTEM; - _kse_initial->k_kseg->kg_flags &= ~KGF_SINGLE_THREAD; - _kse_initial->k_kcb->kcb_kmbx.km_curthread = NULL; - } - else { - /* - * For bound thread, kernel reads mailbox pointer - * once, we'd set it here before calling kse_create. - */ - _tcb_set(_kse_initial->k_kcb, _thr_initial->tcb); - KSE_SET_MBOX(_kse_initial, _thr_initial); - _kse_initial->k_kcb->kcb_kmbx.km_flags |= KMF_BOUND; - } - +#if 0 /* * Locking functions in libc are required when there are * threads other than the initial thread. */ _thr_rtld_init(); - +#endif __isthreaded = 1; - if (kse_create(&_kse_initial->k_kcb->kcb_kmbx, 0) != 0) { - _kse_initial->k_flags &= ~KF_STARTED; - __isthreaded = 0; - PANIC("kse_create() failed\n"); - return (-1); - } - _thr_initial->tcb->tcb_tmbx.tm_lwp = - _kse_initial->k_kcb->kcb_kmbx.km_lwp; - _thread_activated = 1; - -#ifndef SYSTEM_SCOPE_ONLY - if (_thread_scope_system <= 0) { - /* Set current thread to initial thread */ - _tcb_set(_kse_initial->k_kcb, _thr_initial->tcb); - KSE_SET_MBOX(_kse_initial, _thr_initial); - _thr_start_sig_daemon(); - _thr_setmaxconcurrency(); - } - else -#endif - __sys_sigprocmask(SIG_SETMASK, &_thr_initial->sigmask, - NULL); } return (0); } -/* - * Lock wait and wakeup handlers for KSE locks. These are only used by - * KSEs, and should never be used by threads. KSE locks include the - * KSE group lock (used for locking the scheduling queue) and the - * kse_lock defined above. - * - * When a KSE lock attempt blocks, the entire KSE blocks allowing another - * KSE to run. For the most part, it doesn't make much sense to try and - * schedule another thread because you need to lock the scheduling queue - * in order to do that. And since the KSE lock is used to lock the scheduling - * queue, you would just end up blocking again. - */ -void -_kse_lock_wait(struct lock *lock, struct lockuser *lu) -{ - struct kse *curkse = (struct kse *)_LCK_GET_PRIVATE(lu); - struct timespec ts; - int saved_flags; - - if (curkse->k_kcb->kcb_kmbx.km_curthread != NULL) - PANIC("kse_lock_wait does not disable upcall.\n"); - /* - * Enter a loop to wait until we get the lock. - */ - ts.tv_sec = 0; - ts.tv_nsec = 1000000; /* 1 sec */ - while (!_LCK_GRANTED(lu)) { - /* - * Yield the kse and wait to be notified when the lock - * is granted. - */ - saved_flags = curkse->k_kcb->kcb_kmbx.km_flags; - curkse->k_kcb->kcb_kmbx.km_flags |= KMF_NOUPCALL | - KMF_NOCOMPLETED; - kse_release(&ts); - curkse->k_kcb->kcb_kmbx.km_flags = saved_flags; - } -} - -void -_kse_lock_wakeup(struct lock *lock, struct lockuser *lu) -{ - struct kse *curkse; - struct kse *kse; - struct kse_mailbox *mbx; - - curkse = _get_curkse(); - kse = (struct kse *)_LCK_GET_PRIVATE(lu); - - if (kse == curkse) - PANIC("KSE trying to wake itself up in lock"); - else { - mbx = &kse->k_kcb->kcb_kmbx; - _lock_grant(lock, lu); - /* - * Notify the owning kse that it has the lock. - * It is safe to pass invalid address to kse_wakeup - * even if the mailbox is not in kernel at all, - * and waking up a wrong kse is also harmless. - */ - kse_wakeup(mbx); - } -} - -/* - * Thread wait and wakeup handlers for thread locks. These are only used - * by threads, never by KSEs. Thread locks include the per-thread lock - * (defined in its structure), and condition variable and mutex locks. - */ -void -_thr_lock_wait(struct lock *lock, struct lockuser *lu) -{ - struct pthread *curthread = (struct pthread *)lu->lu_private; - - do { - THR_LOCK_SWITCH(curthread); - THR_SET_STATE(curthread, PS_LOCKWAIT); - _thr_sched_switch_unlocked(curthread); - } while (!_LCK_GRANTED(lu)); -} - -void -_thr_lock_wakeup(struct lock *lock, struct lockuser *lu) -{ - struct pthread *thread; - struct pthread *curthread; - struct kse_mailbox *kmbx; - - curthread = _get_curthread(); - thread = (struct pthread *)_LCK_GET_PRIVATE(lu); - - THR_SCHED_LOCK(curthread, thread); - _lock_grant(lock, lu); - kmbx = _thr_setrunnable_unlocked(thread); - THR_SCHED_UNLOCK(curthread, thread); - if (kmbx != NULL) - kse_wakeup(kmbx); -} - -kse_critical_t -_kse_critical_enter(void) -{ - kse_critical_t crit; - - crit = (kse_critical_t)_kcb_critical_enter(); - return (crit); -} - void -_kse_critical_leave(kse_critical_t crit) -{ - struct pthread *curthread; - - _kcb_critical_leave((struct kse_thr_mailbox *)crit); - if ((crit != NULL) && ((curthread = _get_curthread()) != NULL)) - THR_YIELD_CHECK(curthread); -} - -int -_kse_in_critical(void) -{ - return (_kcb_in_critical()); -} - -void _thr_critical_enter(struct pthread *thread) { thread->critical_count++; @@ -599,162 +192,25 @@ void _thr_sched_switch(struct pthread *curthread) { - struct kse *curkse; - - (void)_kse_critical_enter(); - curkse = _get_curkse(); - KSE_SCHED_LOCK(curkse, curkse->k_kseg); + THR_LOCK_SWITCH(curthread); _thr_sched_switch_unlocked(curthread); } /* - * XXX - We may need to take the scheduling lock before calling - * this, or perhaps take the lock within here before - * doing anything else. + * Must hold thread lock before calling this function. */ void _thr_sched_switch_unlocked(struct pthread *curthread) { - struct pthread_sigframe psf; - struct kse *curkse; - volatile int resume_once = 0; - ucontext_t *uc; - - /* We're in the scheduler, 5 by 5: */ - curkse = _get_curkse(); - - curthread->need_switchout = 1; /* The thread yielded on its own. */ - curthread->critical_yield = 0; /* No need to yield anymore. */ - - /* Thread can unlock the scheduler lock. */ - curthread->lock_switch = 1; - - /* - * The signal frame is allocated off the stack because - * a thread can be interrupted by other signals while - * it is running down pending signals. - */ - psf.psf_valid = 0; - curthread->curframe = &psf; - - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - kse_sched_single(&curkse->k_kcb->kcb_kmbx); - else { - if (__predict_false(_libkse_debug != 0)) { - /* - * Because debugger saves single step status in thread - * mailbox's tm_dflags, we can safely clear single - * step status here. the single step status will be - * restored by kse_switchin when the thread is - * switched in again. This also lets uts run in full - * speed. - */ - ptrace(PT_CLEARSTEP, curkse->k_kcb->kcb_kmbx.km_lwp, - (caddr_t) 1, 0); - } - - KSE_SET_SWITCH(curkse); - _thread_enter_uts(curthread->tcb, curkse->k_kcb); - } - - /* - * It is ugly we must increase critical count, because we - * have a frame saved, we must backout state in psf - * before we can process signals. - */ - curthread->critical_count += psf.psf_valid; - - /* - * Unlock the scheduling queue and leave the - * critical region. - */ - /* Don't trust this after a switch! */ - curkse = _get_curkse(); - - curthread->lock_switch = 0; - KSE_SCHED_UNLOCK(curkse, curkse->k_kseg); - _kse_critical_leave(&curthread->tcb->tcb_tmbx); - - /* - * This thread is being resumed; check for cancellations. - */ - if ((psf.psf_valid || - ((curthread->check_pending || THR_NEED_ASYNC_CANCEL(curthread)) - && !THR_IN_CRITICAL(curthread)))) { - uc = alloca(sizeof(ucontext_t)); - resume_once = 0; - THR_GETCONTEXT(uc); - if (resume_once == 0) { - resume_once = 1; - curthread->check_pending = 0; - thr_resume_check(curthread, uc, &psf); - } - } - THR_ACTIVATE_LAST_LOCK(curthread); -} - -/* - * This is the scheduler for a KSE which runs a scope system thread. - * The multi-thread KSE scheduler should also work for a single threaded - * KSE, but we use a separate scheduler so that it can be fine-tuned - * to be more efficient (and perhaps not need a separate stack for - * the KSE, allowing it to use the thread's stack). - */ - -static void -kse_sched_single(struct kse_mailbox *kmbx) -{ - struct kse *curkse; - struct pthread *curthread; struct timespec ts; sigset_t sigmask; - int i, sigseqno, level, first = 0; + int i, sigseqno; - curkse = (struct kse *)kmbx->km_udata; - curthread = curkse->k_curthread; - - if (__predict_false((curkse->k_flags & KF_INITIALIZED) == 0)) { - /* Setup this KSEs specific data. */ - _kcb_set(curkse->k_kcb); - _tcb_set(curkse->k_kcb, curthread->tcb); - curkse->k_flags |= KF_INITIALIZED; - first = 1; - curthread->active = 1; - - /* Setup kernel signal masks for new thread. */ - __sys_sigprocmask(SIG_SETMASK, &curthread->sigmask, NULL); - /* - * Enter critical region, this is meanless for bound thread, - * It is used to let other code work, those code want mailbox - * to be cleared. - */ - (void)_kse_critical_enter(); - } else { - /* - * Bound thread always has tcb set, this prevent some - * code from blindly setting bound thread tcb to NULL, - * buggy code ? - */ - _tcb_set(curkse->k_kcb, curthread->tcb); - } - - curthread->critical_yield = 0; - curthread->need_switchout = 0; - - /* - * Lock the scheduling queue. - * - * There is no scheduling queue for single threaded KSEs, - * but we need a lock for protection regardless. - */ - if (curthread->lock_switch == 0) - KSE_SCHED_LOCK(curkse, curkse->k_kseg); - + THR_ASSERT(curthread->lock_switch == 1, "lockswitch?"); /* * This has to do the job of kse_switchout_thread(), only * for a single threaded KSE/KSEG. */ - switch (curthread->state) { case PS_MUTEX_WAIT: case PS_COND_WAIT: @@ -765,23 +221,10 @@ } break; - case PS_LOCKWAIT: - /* - * This state doesn't timeout. - */ - curthread->wakeup_time.tv_sec = -1; - curthread->wakeup_time.tv_nsec = -1; - level = curthread->locklevel - 1; - if (_LCK_GRANTED(&curthread->lockusers[level])) - THR_SET_STATE(curthread, PS_RUNNING); - break; - case PS_DEAD: curthread->check_pending = 0; - /* Unlock the scheduling queue and exit the KSE and thread. */ - thr_cleanup(curkse, curthread); - KSE_SCHED_UNLOCK(curkse, curkse->k_kseg); - PANIC("bound thread shouldn't get here\n"); + /* exit thread. */ + thr_cleanup(curthread); break; case PS_JOIN: @@ -822,15 +265,6 @@ } break; - case PS_SIGWAIT: - PANIC("bound thread does not have SIGWAIT state\n"); - - case PS_SLEEP_WAIT: - PANIC("bound thread does not have SLEEP_WAIT state\n"); - - case PS_SIGSUSPEND: - PANIC("bound thread does not have SIGSUSPEND state\n"); - case PS_DEADLOCK: /* * These states don't timeout and don't need @@ -846,7 +280,7 @@ } while (curthread->state != PS_RUNNING) { - sigseqno = curkse->k_sigseqno; + sigseqno = curthread->sigseqno; if (curthread->check_pending != 0) { /* * Install pending signals into the frame, possible @@ -874,11 +308,9 @@ if (curthread->state == PS_RUNNING) break; } - THR_DEACTIVATE_LAST_LOCK(curthread); - kse_wait(curkse, curthread, sigseqno); - THR_ACTIVATE_LAST_LOCK(curthread); + thr_wait(curthread, sigseqno); if (curthread->wakeup_time.tv_sec >= 0) { - KSE_GET_TOD(curkse, &ts); + clock_gettime(CLOCK_REALTIME, &ts); if (thr_timedout(curthread, &ts)) { /* Indicate the thread timedout: */ curthread->timeout = 1; @@ -888,386 +320,80 @@ } } - /* Remove the frame reference. */ - curthread->curframe = NULL; - - if (curthread->lock_switch == 0) { - /* Unlock the scheduling queue. */ - KSE_SCHED_UNLOCK(curkse, curkse->k_kseg); - } - - DBG_MSG("Continuing bound thread %p\n", curthread); - if (first) { - _kse_critical_leave(&curthread->tcb->tcb_tmbx); - pthread_exit(curthread->start_routine(curthread->arg)); - } -} - -#ifdef DEBUG_THREAD_KERN -static void -dump_queues(struct kse *curkse) -{ - struct pthread *thread; - - DBG_MSG("Threads in waiting queue:\n"); - TAILQ_FOREACH(thread, &curkse->k_kseg->kg_schedq.sq_waitq, pqe) { - DBG_MSG(" thread %p, state %d, blocked %d\n", - thread, thread->state, thread->blocked); - } -} -#endif - -/* - * This is the scheduler for a KSE which runs multiple threads. - */ -static void -kse_sched_multi(struct kse_mailbox *kmbx) -{ - struct kse *curkse; - struct pthread *curthread, *td_wait; - struct pthread_sigframe *curframe; - int ret; - - curkse = (struct kse *)kmbx->km_udata; - THR_ASSERT(curkse->k_kcb->kcb_kmbx.km_curthread == NULL, - "Mailbox not null in kse_sched_multi"); + THR_UNLOCK_SWITCH(curthread); - /* Check for first time initialization: */ - if (__predict_false((curkse->k_flags & KF_INITIALIZED) == 0)) { - /* Setup this KSEs specific data. */ - _kcb_set(curkse->k_kcb); - - /* Set this before grabbing the context. */ - curkse->k_flags |= KF_INITIALIZED; - } - /* - * No current thread anymore, calling _get_curthread in UTS - * should dump core + * This thread is being resumed; check for cancellations. */ - _tcb_set(curkse->k_kcb, NULL); - - /* If this is an upcall; take the scheduler lock. */ - if (!KSE_IS_SWITCH(curkse)) - KSE_SCHED_LOCK(curkse, curkse->k_kseg); - else - KSE_CLEAR_SWITCH(curkse); - - if (KSE_IS_IDLE(curkse)) { - KSE_CLEAR_IDLE(curkse); - curkse->k_kseg->kg_idle_kses--; - } - - /* - * Now that the scheduler lock is held, get the current - * thread. The KSE's current thread cannot be safely - * examined without the lock because it could have returned - * as completed on another KSE. See kse_check_completed(). - */ - curthread = curkse->k_curthread; - - /* - * If the current thread was completed in another KSE, then - * it will be in the run queue. Don't mark it as being blocked. - */ - if ((curthread != NULL) && - ((curthread->flags & THR_FLAGS_IN_RUNQ) == 0) && - (curthread->need_switchout == 0)) { - /* - * Assume the current thread is blocked; when the - * completed threads are checked and if the current - * thread is among the completed, the blocked flag - * will be cleared. - */ - curthread->blocked = 1; - } - - /* Check for any unblocked threads in the kernel. */ - kse_check_completed(curkse); - - /* - * Check for threads that have timed-out. - */ - kse_check_waitq(curkse); - - /* - * Switchout the current thread, if necessary, as the last step - * so that it is inserted into the run queue (if it's runnable) - * _after_ any other threads that were added to it above. - */ - if (curthread == NULL) - ; /* Nothing to do here. */ - else if ((curthread->need_switchout == 0) && DBG_CAN_RUN(curthread) && - (curthread->blocked == 0) && (THR_IN_CRITICAL(curthread))) { - /* - * Resume the thread and tell it to yield when - * it leaves the critical region. - */ - curthread->critical_yield = 1; - curthread->active = 1; - if ((curthread->flags & THR_FLAGS_IN_RUNQ) != 0) - KSE_RUNQ_REMOVE(curkse, curthread); - curkse->k_curthread = curthread; - curthread->kse = curkse; - DBG_MSG("Continuing thread %p in critical region\n", - curthread); - kse_wakeup_multi(curkse); - KSE_SCHED_UNLOCK(curkse, curkse->k_kseg); - ret = _thread_switch(curkse->k_kcb, curthread->tcb, 1); - if (ret != 0) - PANIC("Can't resume thread in critical region\n"); - } - else if ((curthread->flags & THR_FLAGS_IN_RUNQ) == 0) { - curthread->tcb->tcb_tmbx.tm_lwp = 0; - kse_switchout_thread(curkse, curthread); - } - curkse->k_curthread = NULL; - -#ifdef DEBUG_THREAD_KERN - dump_queues(curkse); -#endif - - /* Check if there are no threads ready to run: */ - while (((curthread = KSE_RUNQ_FIRST(curkse)) == NULL) && - (curkse->k_kseg->kg_threadcount != 0) && - ((curkse->k_flags & KF_TERMINATED) == 0)) { - /* - * Wait for a thread to become active or until there are - * no more threads. - */ - td_wait = KSE_WAITQ_FIRST(curkse); - kse_wait(curkse, td_wait, 0); - kse_check_completed(curkse); - kse_check_waitq(curkse); - } - - /* Check for no more threads: */ - if ((curkse->k_kseg->kg_threadcount == 0) || - ((curkse->k_flags & KF_TERMINATED) != 0)) { - /* - * Normally this shouldn't return, but it will if there - * are other KSEs running that create new threads that - * are assigned to this KSE[G]. For instance, if a scope - * system thread were to create a scope process thread - * and this kse[g] is the initial kse[g], then that newly - * created thread would be assigned to us (the initial - * kse[g]). - */ - kse_wakeup_multi(curkse); - KSE_SCHED_UNLOCK(curkse, curkse->k_kseg); - kse_fini(curkse); - /* never returns */ - } - - THR_ASSERT(curthread != NULL, - "Return from kse_wait/fini without thread."); - THR_ASSERT(curthread->state != PS_DEAD, - "Trying to resume dead thread!"); - KSE_RUNQ_REMOVE(curkse, curthread); - - /* - * Make the selected thread the current thread. - */ - curkse->k_curthread = curthread; - - /* - * Make sure the current thread's kse points to this kse. - */ - curthread->kse = curkse; - - /* - * Reset the time slice if this thread is running for the first - * time or running again after using its full time slice allocation. - */ - if (curthread->slice_usec == -1) - curthread->slice_usec = 0; - - /* Mark the thread active. */ - curthread->active = 1; - - /* Remove the frame reference. */ - curframe = curthread->curframe; - curthread->curframe = NULL; - - /* - * The thread's current signal frame will only be NULL if it - * is being resumed after being blocked in the kernel. In - * this case, and if the thread needs to run down pending - * signals or needs a cancellation check, we need to add a - * signal frame to the thread's context. - */ >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Nov 20 03:17:18 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B440016A4D0; Sat, 20 Nov 2004 03:17:17 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7938116A4CE for ; Sat, 20 Nov 2004 03:17:17 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4F36043D45 for ; Sat, 20 Nov 2004 03:17:17 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK3HHfw003532 for ; Sat, 20 Nov 2004 03:17:17 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK3HGUl003529 for perforce@freebsd.org; Sat, 20 Nov 2004 03:17:16 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 03:17:16 GMT Message-Id: <200411200317.iAK3HGUl003529@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65500 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 03:17:18 -0000 http://perforce.freebsd.org/chv.cgi?CH=65500 Change 65500 by davidxu@davidxu_alona on 2004/11/20 03:16:17 1. no sched queue. 2. init default pthread attribute's stack guard size to page size, buggy libpthread left it zero, and no protection for thread use default pthread attr. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_init.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_init.c#2 (text+ko) ==== @@ -211,7 +211,8 @@ void _libpthread_init(struct pthread *curthread) { - int fd; + int fd, first = 0; + sigset_t sigset, oldset; /* Check if this function has already been called: */ if ((_thr_initial != NULL) && (curthread == NULL)) @@ -259,63 +260,36 @@ /* Initialize pthread private data. */ init_private(); - _kse_init(); + _thr_kern_init(); - /* Initialize the initial kse and kseg. */ - _kse_initial = _kse_alloc(NULL, _thread_scope_system > 0); - if (_kse_initial == NULL) - PANIC("Can't allocate initial kse."); - _kse_initial->k_kseg = _kseg_alloc(NULL); - if (_kse_initial->k_kseg == NULL) - PANIC("Can't allocate initial kseg."); - _kse_initial->k_kseg->kg_flags |= KGF_SINGLE_THREAD; - _kse_initial->k_schedq = &_kse_initial->k_kseg->kg_schedq; - - TAILQ_INSERT_TAIL(&_kse_initial->k_kseg->kg_kseq, _kse_initial, k_kgqe); - _kse_initial->k_kseg->kg_ksecount = 1; - /* Set the initial thread. */ if (curthread == NULL) { + first = 1; /* Create and initialize the initial thread. */ curthread = _thr_alloc(NULL); if (curthread == NULL) PANIC("Can't allocate initial thread"); - _thr_initial = curthread; init_main_thread(curthread); - } else { - /* - * The initial thread is the current thread. It is - * assumed that the current thread is already initialized - * because it is left over from a fork(). - */ - _thr_initial = curthread; } - _kse_initial->k_kseg->kg_threadcount = 0; - _thr_initial->kse = _kse_initial; - _thr_initial->kseg = _kse_initial->k_kseg; - _thr_initial->active = 1; /* * Add the thread to the thread list and to the KSEG's thread * queue. */ - THR_LIST_ADD(_thr_initial); - KSEG_THRQ_ADD(_kse_initial->k_kseg, _thr_initial); + THR_LIST_ADD(curthread); + _thread_active_threads = 1; - /* Setup the KSE/thread specific data for the current KSE/thread. */ - _thr_initial->kse->k_curthread = _thr_initial; - _kcb_set(_thr_initial->kse->k_kcb); - _tcb_set(_thr_initial->kse->k_kcb, _thr_initial->tcb); - _thr_initial->kse->k_flags |= KF_INITIALIZED; + /* Setup the thread specific data */ + _tcb_set(curthread->tcb); - _thr_signal_init(); - _kse_critical_leave(&_thr_initial->tcb->tcb_tmbx); - /* - * activate threaded mode as soon as possible if we are - * being debugged - */ - if (_libkse_debug) - _kse_setthreaded(1); + if (first) { + _thr_initial = curthread; + SIGFILLSET(sigset); + __sys_sigprocmask(SIG_SETMASK, &sigset, &oldset); + _thr_signal_init(); + _thread_inited = 1; + __sys_sigprocmask(SIG_SETMASK, &oldset, NULL); + } } /* @@ -326,8 +300,8 @@ init_main_thread(struct pthread *thread) { /* Setup the thread attributes. */ + thr_self(&thread->tid); thread->attr = _pthread_attr_default; - thread->attr.flags |= PTHREAD_SCOPE_SYSTEM; /* * Set up the thread stack. * @@ -362,23 +336,12 @@ */ thread->magic = THR_MAGIC; - thread->slice_usec = -1; thread->cancelflags = PTHREAD_CANCEL_ENABLE | PTHREAD_CANCEL_DEFERRED; thread->name = strdup("initial thread"); /* Initialize the thread for signals: */ SIGEMPTYSET(thread->sigmask); - /* - * Set up the thread mailbox. The threads saved context - * is also in the mailbox. - */ - thread->tcb->tcb_tmbx.tm_udata = thread; - thread->tcb->tcb_tmbx.tm_context.uc_stack.ss_size = - thread->attr.stacksize_attr; - thread->tcb->tcb_tmbx.tm_context.uc_stack.ss_sp = - thread->attr.stackaddr_attr; - /* Default the priority of the initial thread: */ thread->base_priority = THR_DEFAULT_PRIORITY; thread->active_priority = THR_DEFAULT_PRIORITY; @@ -391,7 +354,9 @@ thread->specific = NULL; thread->cleanup = NULL; thread->flags = 0; + thread->sigbackout = NULL; thread->continuation = NULL; + thread->wakeup_time.tv_sec = -1; thread->state = PS_RUNNING; thread->uniqueid = 0; @@ -400,10 +365,12 @@ static void init_private(void) { - struct clockinfo clockinfo; size_t len; int mib[2]; + TAILQ_INIT(&_thread_list); + TAILQ_INIT(&_thread_gc_list); + /* * Avoid reinitializing some things if they don't need to be, * e.g. after a fork(). @@ -415,57 +382,34 @@ len = sizeof (_usrstack); if (sysctl(mib, 2, &_usrstack, &len, NULL, 0) == -1) PANIC("Cannot get kern.usrstack from sysctl"); - /* Get the kernel clockrate: */ - mib[0] = CTL_KERN; - mib[1] = KERN_CLOCKRATE; - len = sizeof (struct clockinfo); - if (sysctl(mib, 2, &clockinfo, &len, NULL, 0) == 0) - _clock_res_usec = clockinfo.tick; - else - _clock_res_usec = CLOCK_RES_USEC; - _thr_page_size = getpagesize(); _thr_guard_default = _thr_page_size; - init_once = 1; /* Don't do this again. */ + _pthread_attr_default.guardsize_attr = _thr_guard_default; + + TAILQ_INIT(&_thr_atfork_list); + + _lock_init(&_thread_signal_lock); + _lock_init(&_mutex_static_lock); + _lock_init(&_cond_static_lock); + _lock_init(&_rwlock_static_lock); + _lock_init(&_keytable_lock); + _lock_init(&_thread_list_lock); + _thr_spinlock_init(); + _pthread_mutex_init(&_thr_atfork_mutex, NULL); } else { - /* - * Destroy the locks before creating them. We don't - * know what state they are in so it is better to just - * recreate them. - */ - _lock_destroy(&_thread_signal_lock); - _lock_destroy(&_mutex_static_lock); - _lock_destroy(&_rwlock_static_lock); - _lock_destroy(&_keytable_lock); + _lock_reinit(&_thread_signal_lock); + _lock_reinit(&_mutex_static_lock); + _lock_reinit(&_cond_static_lock); + _lock_reinit(&_rwlock_static_lock); + _lock_reinit(&_keytable_lock); + _lock_reinit(&_thread_list_lock); + /* reinitialized in thr_fork.c */ +#if 0 + _thr_spinlock_init(); + _thr_mutex_reinit(&_thr_atfork_mutex); +#endif } - /* Initialize everything else. */ - TAILQ_INIT(&_thread_list); - TAILQ_INIT(&_thread_gc_list); - TAILQ_INIT(&_thr_atfork_list); - _pthread_mutex_init(&_thr_atfork_mutex, NULL); - - /* - * Initialize the lock for temporary installation of signal - * handlers (to support sigwait() semantics) and for the - * process signal mask and pending signal sets. - */ - if (_lock_init(&_thread_signal_lock, LCK_ADAPTIVE, - _kse_lock_wait, _kse_lock_wakeup) != 0) - PANIC("Cannot initialize _thread_signal_lock"); - if (_lock_init(&_mutex_static_lock, LCK_ADAPTIVE, - _thr_lock_wait, _thr_lock_wakeup) != 0) - PANIC("Cannot initialize mutex static init lock"); - if (_lock_init(&_rwlock_static_lock, LCK_ADAPTIVE, - _thr_lock_wait, _thr_lock_wakeup) != 0) - PANIC("Cannot initialize rwlock static init lock"); - if (_lock_init(&_keytable_lock, LCK_ADAPTIVE, - _thr_lock_wait, _thr_lock_wakeup) != 0) - PANIC("Cannot initialize thread specific keytable lock"); - _thr_spinlock_init(); - - /* Clear pending signals and get the process signal mask. */ - SIGEMPTYSET(_thr_proc_sigpending); /* Are we in M:N mode (default) or 1:1 mode? */ #ifdef SYSTEM_SCOPE_ONLY @@ -476,9 +420,9 @@ else if (getenv("LIBPTHREAD_PROCESS_SCOPE") != NULL) _thread_scope_system = -1; #endif - /* - * _thread_list_lock and _kse_count are initialized - * by _kse_init() + * _thread_list_lock is initialized + * by _thr_init() */ + init_once = 1; } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 03:34:39 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2F78316A4D0; Sat, 20 Nov 2004 03:34:39 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CC1F216A4CE for ; Sat, 20 Nov 2004 03:34:38 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8A83343D1D for ; Sat, 20 Nov 2004 03:34:38 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK3YcUb004026 for ; Sat, 20 Nov 2004 03:34:38 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK3YciD004023 for perforce@freebsd.org; Sat, 20 Nov 2004 03:34:38 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 03:34:38 GMT Message-Id: <200411200334.iAK3YciD004023@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65501 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 03:34:39 -0000 http://perforce.freebsd.org/chv.cgi?CH=65501 Change 65501 by davidxu@davidxu_alona on 2004/11/20 03:34:36 simplify signal code. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sig.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sig.c#2 (text+ko) ==== @@ -1,5 +1,6 @@ /* * Copyright (c) 1995-1998 John Birrell + * Copyright (c) 2005 David Xu * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -43,56 +44,12 @@ #include "thr_private.h" /* Prototypes: */ -static void build_siginfo(siginfo_t *info, int signo); -#ifndef SYSTEM_SCOPE_ONLY -static struct pthread *thr_sig_find(struct kse *curkse, int sig, - siginfo_t *info); -static void handle_special_signals(struct kse *curkse, int sig); -#endif -static void thr_sigframe_add(struct pthread *thread); -static void thr_sigframe_restore(struct pthread *thread, - struct pthread_sigframe *psf); -static void thr_sigframe_save(struct pthread *thread, - struct pthread_sigframe *psf); +static inline void build_siginfo(siginfo_t *info, int signo); +static inline void thr_sigframe_restore(struct pthread *thread, + struct pthread_sigframe *psf); +static inline void thr_sigframe_save(struct pthread *thread, + struct pthread_sigframe *psf); -#define SA_KILL 0x01 /* terminates process by default */ -#define SA_STOP 0x02 -#define SA_CONT 0x04 - -static int sigproptbl[NSIG] = { - SA_KILL, /* SIGHUP */ - SA_KILL, /* SIGINT */ - SA_KILL, /* SIGQUIT */ - SA_KILL, /* SIGILL */ - SA_KILL, /* SIGTRAP */ - SA_KILL, /* SIGABRT */ - SA_KILL, /* SIGEMT */ - SA_KILL, /* SIGFPE */ - SA_KILL, /* SIGKILL */ - SA_KILL, /* SIGBUS */ - SA_KILL, /* SIGSEGV */ - SA_KILL, /* SIGSYS */ - SA_KILL, /* SIGPIPE */ - SA_KILL, /* SIGALRM */ - SA_KILL, /* SIGTERM */ - 0, /* SIGURG */ - SA_STOP, /* SIGSTOP */ - SA_STOP, /* SIGTSTP */ - SA_CONT, /* SIGCONT */ - 0, /* SIGCHLD */ - SA_STOP, /* SIGTTIN */ - SA_STOP, /* SIGTTOU */ - 0, /* SIGIO */ - SA_KILL, /* SIGXCPU */ - SA_KILL, /* SIGXFSZ */ - SA_KILL, /* SIGVTALRM */ - SA_KILL, /* SIGPROF */ - 0, /* SIGWINCH */ - 0, /* SIGINFO */ - SA_KILL, /* SIGUSR1 */ - SA_KILL /* SIGUSR2 */ -}; - /* #define DEBUG_SIGNAL */ #ifdef DEBUG_SIGNAL #define DBG_MSG stdout_debug @@ -100,263 +57,69 @@ #define DBG_MSG(x...) #endif -/* - * Signal setup and delivery. - * - * 1) Delivering signals to threads in the same KSE. - * These signals are sent by upcall events and are set in the - * km_sigscaught field of the KSE mailbox. Since these signals - * are received while operating on the KSE stack, they can be - * delivered either by using signalcontext() to add a stack frame - * to the target thread's stack, or by adding them in the thread's - * pending set and having the thread run them down after it - * 2) Delivering signals to threads in other KSEs/KSEGs. - * 3) Delivering signals to threads in critical regions. - * 4) Delivering signals to threads after they change their signal masks. - * - * Methods of delivering signals. - * - * 1) Add a signal frame to the thread's saved context. - * 2) Add the signal to the thread structure, mark the thread as - * having signals to handle, and let the thread run them down - * after it resumes from the KSE scheduler. - * - * Problem with 1). You can't do this to a running thread or a - * thread in a critical region. - * - * Problem with 2). You can't do this to a thread that doesn't - * yield in some way (explicitly enters the scheduler). A thread - * blocked in the kernel or a CPU hungry thread will not see the - * signal without entering the scheduler. - * - * The solution is to use both 1) and 2) to deliver signals: - * - * o Thread in critical region - use 2). When the thread - * leaves the critical region it will check to see if it - * has pending signals and run them down. - * - * o Thread enters scheduler explicitly - use 2). The thread - * can check for pending signals after it returns from the - * the scheduler. - * - * o Thread is running and not current thread - use 2). When the - * thread hits a condition specified by one of the other bullets, - * the signal will be delivered. - * - * o Thread is running and is current thread (e.g., the thread - * has just changed its signal mask and now sees that it has - * pending signals) - just run down the pending signals. - * - * o Thread is swapped out due to quantum expiration - use 1) - * - * o Thread is blocked in kernel - kse_thr_wakeup() and then - * use 1) - */ - -/* - * Rules for selecting threads for signals received: - * - * 1) If the signal is a sychronous signal, it is delivered to - * the generating (current thread). If the thread has the - * signal masked, it is added to the threads pending signal - * set until the thread unmasks it. - * - * 2) A thread in sigwait() where the signal is in the thread's - * waitset. - * - * 3) A thread in sigsuspend() where the signal is not in the - * thread's suspended signal mask. - * - * 4) Any thread (first found/easiest to deliver) that has the - * signal unmasked. - */ - -#ifndef SYSTEM_SCOPE_ONLY - -static void * -sig_daemon(void *arg /* Unused */) -{ - int i; - kse_critical_t crit; - struct timespec ts; - sigset_t set; - struct kse *curkse; - struct pthread *curthread = _get_curthread(); - - DBG_MSG("signal daemon started(%p)\n", curthread); - - curthread->name = strdup("signal thread"); - crit = _kse_critical_enter(); - curkse = _get_curkse(); - - /* - * Daemon thread is a bound thread and we must be created with - * all signals masked - */ -#if 0 - SIGFILLSET(set); - __sys_sigprocmask(SIG_SETMASK, &set, NULL); -#endif - __sys_sigpending(&set); - ts.tv_sec = 0; - ts.tv_nsec = 0; - while (1) { - KSE_LOCK_ACQUIRE(curkse, &_thread_signal_lock); - _thr_proc_sigpending = set; - KSE_LOCK_RELEASE(curkse, &_thread_signal_lock); - for (i = 1; i <= _SIG_MAXSIG; i++) { - if (SIGISMEMBER(set, i) != 0) - _thr_sig_dispatch(curkse, i, - NULL /* no siginfo */); - } - ts.tv_sec = 30; - ts.tv_nsec = 0; - curkse->k_kcb->kcb_kmbx.km_flags = - KMF_NOUPCALL | KMF_NOCOMPLETED | KMF_WAITSIGEVENT; - kse_release(&ts); - curkse->k_kcb->kcb_kmbx.km_flags = 0; - set = curkse->k_kcb->kcb_kmbx.km_sigscaught; - } - return (0); -} - - -/* Utility function to create signal daemon thread */ -int -_thr_start_sig_daemon(void) -{ - pthread_attr_t attr; - sigset_t sigset, oldset; - - SIGFILLSET(sigset); - pthread_sigmask(SIG_SETMASK, &sigset, &oldset); - pthread_attr_init(&attr); - pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); - attr->flags |= THR_SIGNAL_THREAD; - /* sigmask will be inherited */ - if (pthread_create(&_thr_sig_daemon, &attr, sig_daemon, NULL)) - PANIC("can not create signal daemon thread!\n"); - pthread_attr_destroy(&attr); - pthread_sigmask(SIG_SETMASK, &oldset, NULL); - return (0); -} - -/* - * This signal handler only delivers asynchronous signals. - * This must be called with upcalls disabled and without - * holding any locks. - */ -void -_thr_sig_dispatch(struct kse *curkse, int sig, siginfo_t *info) -{ - struct kse_mailbox *kmbx; - struct pthread *thread; - - DBG_MSG(">>> _thr_sig_dispatch(%d)\n", sig); - - /* Some signals need special handling: */ - handle_special_signals(curkse, sig); - - /* Check if the signal requires a dump of thread information: */ - if (sig == SIGINFO) { - /* Dump thread information to file: */ - _thread_dump_info(); - } - - while ((thread = thr_sig_find(curkse, sig, info)) != NULL) { - /* - * Setup the target thread to receive the signal: - */ - DBG_MSG("Got signal %d, selecting thread %p\n", sig, thread); - KSE_SCHED_LOCK(curkse, thread->kseg); - if ((thread->state == PS_DEAD) || - (thread->state == PS_DEADLOCK) || - THR_IS_EXITING(thread) || THR_IS_SUSPENDED(thread)) { - KSE_SCHED_UNLOCK(curkse, thread->kseg); - _thr_ref_delete(NULL, thread); - } else if (SIGISMEMBER(thread->sigmask, sig)) { - KSE_SCHED_UNLOCK(curkse, thread->kseg); - _thr_ref_delete(NULL, thread); - } else { - kmbx = _thr_sig_add(thread, sig, info); - KSE_SCHED_UNLOCK(curkse, thread->kseg); - _thr_ref_delete(NULL, thread); - if (kmbx != NULL) - kse_wakeup(kmbx); - break; - } - } - DBG_MSG("<<< _thr_sig_dispatch\n"); -} - -#endif /* ! SYSTEM_SCOPE_ONLY */ - -static __inline int -sigprop(int sig) -{ - - if (sig > 0 && sig < NSIG) - return (sigproptbl[_SIG_IDX(sig)]); - return (0); -} - typedef void (*ohandler)(int sig, int code, struct sigcontext *scp, char *addr, __sighandler_t *catcher); void _thr_sig_handler(int sig, siginfo_t *info, ucontext_t *ucp) { + struct pthread_sigframe psf; __siginfohandler_t *sigfunc; struct pthread *curthread; - struct kse *curkse; struct sigaction act; - int sa_flags, err_save, intr_save, timeout_save; + int sa_flags, err_save; + + err_save = errno; DBG_MSG(">>> _thr_sig_handler(%d)\n", sig); curthread = _get_curthread(); if (curthread == NULL) PANIC("No current thread.\n"); - if (!(curthread->attr.flags & PTHREAD_SCOPE_SYSTEM)) - PANIC("Thread is not system scope.\n"); - if (curthread->flags & THR_FLAGS_EXITING) + if (curthread->flags & THR_FLAGS_EXITING) { + errno = err_save; return; - curkse = _get_curkse(); + } + /* * If thread is in critical region or if thread is on * the way of state transition, then latch signal into buffer. */ - if (_kse_in_critical() || THR_IN_CRITICAL(curthread) || - (curthread->state != PS_RUNNING && curthread->curframe == NULL)) { + if (THR_IN_CRITICAL(curthread) || curthread->state != PS_RUNNING || + curthread->lock_switch != 0 || curthread->idle != 0) { DBG_MSG(">>> _thr_sig_handler(%d) in critical\n", sig); curthread->siginfo[sig-1] = *info; curthread->check_pending = 1; - curkse->k_sigseqno++; + curthread->sigseqno++; SIGADDSET(curthread->sigpend, sig); /* - * If the kse is on the way to idle itself, but + * If the thread is on the way to idle itself, but * we have signal ready, we should prevent it * to sleep, kernel will latch the wakeup request, - * so kse_release will return from kernel immediately. + * so thr_suspend will return from kernel immediately. */ - if (KSE_IS_IDLE(curkse)) - kse_wakeup(&curkse->k_kcb->kcb_kmbx); + if (curthread->idle) + thr_wake(curthread->tid); + errno = err_save; return; } - /* It is now safe to invoke signal handler */ - err_save = errno; - timeout_save = curthread->timeout; - intr_save = curthread->interrupted; /* Check if the signal requires a dump of thread information: */ if (sig == SIGINFO) { /* Dump thread information to file: */ _thread_dump_info(); } - _kse_critical_enter(); - /* Get a fresh copy of signal mask */ - __sys_sigprocmask(SIG_BLOCK, NULL, &curthread->sigmask); - KSE_LOCK_ACQUIRE(curkse, &_thread_signal_lock); + + /* Check the threads previous state: */ + curthread->critical_count++; + if (curthread->sigbackout != NULL) + curthread->sigbackout((void *)curthread); + curthread->critical_count--; + thr_sigframe_save(curthread, &psf); + + THR_ASSERT(!(curthread->sigbackout), "sigbackout was not cleared."); + + THR_LOCK_ACQUIRE(curthread, &_thread_signal_lock); sigfunc = _thread_sigact[sig - 1].sa_sigaction; sa_flags = _thread_sigact[sig - 1].sa_flags; if (sa_flags & SA_RESETHAND) { @@ -366,8 +129,7 @@ __sys_sigaction(sig, &act, NULL); __sys_sigaction(sig, NULL, &_thread_sigact[sig - 1]); } - KSE_LOCK_RELEASE(curkse, &_thread_signal_lock); - _kse_critical_leave(&curthread->tcb->tcb_tmbx); + THR_LOCK_RELEASE(curthread, &_thread_signal_lock); /* Now invoke real handler */ if (((__sighandler_t *)sigfunc != SIG_DFL) && @@ -380,379 +142,18 @@ sig, info->si_code, (struct sigcontext *)ucp, info->si_addr, (__sighandler_t *)sigfunc); } - } else { - if ((__sighandler_t *)sigfunc == SIG_DFL) { - if (sigprop(sig) & SA_KILL) { - if (_kse_isthreaded()) - kse_thr_interrupt(NULL, - KSE_INTR_SIGEXIT, sig); - else - kill(getpid(), sig); - } -#ifdef NOTYET - else if (sigprop(sig) & SA_STOP) - kse_thr_interrupt(NULL, KSE_INTR_JOBSTOP, sig); -#endif - } + } else if ((__sighandler_t *)sigfunc == SIG_DFL) { + thr_kill(curthread->tid, sig); } - errno = err_save; - curthread->timeout = timeout_save; - curthread->interrupted = intr_save; - _kse_critical_enter(); - curthread->sigmask = ucp->uc_sigmask; - SIG_CANTMASK(curthread->sigmask); - _kse_critical_leave(&curthread->tcb->tcb_tmbx); - DBG_MSG("<<< _thr_sig_handler(%d)\n", sig); -} -struct sighandle_info { - __siginfohandler_t *sigfunc; - int sa_flags; - int sig; - siginfo_t *info; - ucontext_t *ucp; -}; + thr_sigframe_restore(curthread, &psf); -static void handle_signal(struct pthread *curthread, - struct sighandle_info *shi); -static void handle_signal_altstack(struct pthread *curthread, - struct sighandle_info *shi); + DBG_MSG("<<< _thr_sig_handler(%d)\n", sig); -/* Must be called with signal lock and schedule lock held in order */ -static void -thr_sig_invoke_handler(struct pthread *curthread, int sig, siginfo_t *info, - ucontext_t *ucp) -{ - __siginfohandler_t *sigfunc; - sigset_t sigmask; - int sa_flags; - int onstack; - struct sigaction act; - struct kse *curkse; - struct sighandle_info shi; - - /* - * Invoke the signal handler without going through the scheduler: - */ - DBG_MSG("Got signal %d, calling handler for current thread %p\n", - sig, curthread); - - if (!_kse_in_critical()) - PANIC("thr_sig_invoke_handler without in critical\n"); - curkse = _get_curkse(); - /* - * Check that a custom handler is installed and if - * the signal is not blocked: - */ - sigfunc = _thread_sigact[sig - 1].sa_sigaction; - sa_flags = _thread_sigact[sig - 1].sa_flags; - sigmask = curthread->sigmask; - SIGSETOR(curthread->sigmask, _thread_sigact[sig - 1].sa_mask); - if (!(sa_flags & (SA_NODEFER | SA_RESETHAND))) - SIGADDSET(curthread->sigmask, sig); - if ((sig != SIGILL) && (sa_flags & SA_RESETHAND)) { - act.sa_handler = SIG_DFL; - act.sa_flags = SA_RESTART; - SIGEMPTYSET(act.sa_mask); - __sys_sigaction(sig, &act, NULL); - __sys_sigaction(sig, NULL, &_thread_sigact[sig - 1]); - } - KSE_LOCK_RELEASE(curkse, &_thread_signal_lock); - KSE_SCHED_UNLOCK(curkse, curkse->k_kseg); - /* - * We are processing buffered signals, synchronize working - * signal mask into kernel. - */ - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - __sys_sigprocmask(SIG_SETMASK, &curthread->sigmask, NULL); - onstack = _thr_sigonstack(&sigfunc); - ucp->uc_stack = curthread->sigstk; - ucp->uc_stack.ss_flags = (curthread->sigstk.ss_flags & SS_DISABLE) - ? SS_DISABLE : ((onstack) ? SS_ONSTACK : 0); - if (curthread->oldsigmask) { - ucp->uc_sigmask = *(curthread->oldsigmask); - curthread->oldsigmask = NULL; - } else - ucp->uc_sigmask = sigmask; - shi.sigfunc = sigfunc; - shi.sig = sig; - shi.sa_flags = sa_flags; - shi.info = info; - shi.ucp = ucp; - if ((curthread->sigstk.ss_flags & SS_DISABLE) == 0) { - /* Deliver signal on alternative stack */ - if (sa_flags & SA_ONSTACK && !onstack) - handle_signal_altstack(curthread, &shi); - else - handle_signal(curthread, &shi); - } else { - handle_signal(curthread, &shi); - } - - _kse_critical_enter(); - /* Don't trust after critical leave/enter */ - curkse = _get_curkse(); - - /* - * Restore the thread's signal mask. - */ - curthread->sigmask = ucp->uc_sigmask; - SIG_CANTMASK(curthread->sigmask); - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - __sys_sigprocmask(SIG_SETMASK, &ucp->uc_sigmask, NULL); - KSE_SCHED_LOCK(curkse, curkse->k_kseg); - KSE_LOCK_ACQUIRE(curkse, &_thread_signal_lock); - - DBG_MSG("Got signal %d, handler returned %p\n", sig, curthread); + errno = err_save; } -static void -handle_signal(struct pthread *curthread, struct sighandle_info *shi) -{ - _kse_critical_leave(&curthread->tcb->tcb_tmbx); - - /* Check if the signal requires a dump of thread information: */ - if (shi->sig == SIGINFO) { - /* Dump thread information to file: */ - _thread_dump_info(); - } - - if (((__sighandler_t *)shi->sigfunc != SIG_DFL) && - ((__sighandler_t *)shi->sigfunc != SIG_IGN)) { - if ((shi->sa_flags & SA_SIGINFO) != 0 || shi->info == NULL) - (*(shi->sigfunc))(shi->sig, shi->info, shi->ucp); - else { - ((ohandler)(*shi->sigfunc))( - shi->sig, shi->info->si_code, - (struct sigcontext *)shi->ucp, - shi->info->si_addr, - (__sighandler_t *)shi->sigfunc); - } - } else { - if ((__sighandler_t *)shi->sigfunc == SIG_DFL) { - if (sigprop(shi->sig) & SA_KILL) { - if (_kse_isthreaded()) - kse_thr_interrupt(NULL, - KSE_INTR_SIGEXIT, shi->sig); - else - kill(getpid(), shi->sig); - } -#ifdef NOTYET - else if (sigprop(shi->sig) & SA_STOP) - kse_thr_interrupt(NULL, KSE_INTR_JOBSTOP, - shi->sig); -#endif - } - } -} - -static void -handle_signal_wrapper(struct pthread *curthread, ucontext_t *ret_uc, - struct sighandle_info *shi) -{ - shi->ucp->uc_stack.ss_flags = SS_ONSTACK; - handle_signal(curthread, shi); - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - setcontext(ret_uc); - else { - /* Work around for ia64, THR_SETCONTEXT does not work */ - _kse_critical_enter(); - curthread->tcb->tcb_tmbx.tm_context = *ret_uc; - _thread_switch(curthread->kse->k_kcb, curthread->tcb, 1); - /* THR_SETCONTEXT */ - } -} - -/* - * Jump to stack set by sigaltstack before invoking signal handler - */ -static void -handle_signal_altstack(struct pthread *curthread, struct sighandle_info *shi) -{ - volatile int once; - ucontext_t uc1, *uc2; - - THR_ASSERT(_kse_in_critical(), "Not in critical"); - - once = 0; - THR_GETCONTEXT(&uc1); - if (once == 0) { - once = 1; - /* XXX - * We are still in critical region, it is safe to operate thread - * context - */ - uc2 = &curthread->tcb->tcb_tmbx.tm_context; - uc2->uc_stack = curthread->sigstk; - makecontext(uc2, (void (*)(void))handle_signal_wrapper, - 3, curthread, &uc1, shi); - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - setcontext(uc2); - else { - _thread_switch(curthread->kse->k_kcb, curthread->tcb, 1); - /* THR_SETCONTEXT(uc2); */ - } - } -} - -int -_thr_getprocsig(int sig, siginfo_t *siginfo) -{ - kse_critical_t crit; - struct kse *curkse; - int ret; - - DBG_MSG(">>> _thr_getprocsig\n"); - - crit = _kse_critical_enter(); - curkse = _get_curkse(); - KSE_LOCK_ACQUIRE(curkse, &_thread_signal_lock); - ret = _thr_getprocsig_unlocked(sig, siginfo); - KSE_LOCK_RELEASE(curkse, &_thread_signal_lock); - _kse_critical_leave(crit); - - DBG_MSG("<<< _thr_getprocsig\n"); - return (ret); -} - -int -_thr_getprocsig_unlocked(int sig, siginfo_t *siginfo) -{ - sigset_t sigset; - struct timespec ts; - - /* try to retrieve signal from kernel */ - SIGEMPTYSET(sigset); - SIGADDSET(sigset, sig); - ts.tv_sec = 0; - ts.tv_nsec = 0; - SIGDELSET(_thr_proc_sigpending, sig); - if (__sys_sigtimedwait(&sigset, siginfo, &ts) > 0) - return (sig); - return (0); -} - -#ifndef SYSTEM_SCOPE_ONLY -/* - * Find a thread that can handle the signal. This must be called - * with upcalls disabled. - */ -struct pthread * -thr_sig_find(struct kse *curkse, int sig, siginfo_t *info) -{ - struct kse_mailbox *kmbx = NULL; - struct pthread *pthread; - struct pthread *suspended_thread, *signaled_thread; - __siginfohandler_t *sigfunc; - siginfo_t si; - - DBG_MSG("Looking for thread to handle signal %d\n", sig); - - /* - * Enter a loop to look for threads that have the signal - * unmasked. POSIX specifies that a thread in a sigwait - * will get the signal over any other threads. Second - * preference will be threads in in a sigsuspend. Third - * preference will be the current thread. If none of the - * above, then the signal is delivered to the first thread - * that is found. Note that if a custom handler is not - * installed, the signal only affects threads in sigwait. - */ - suspended_thread = NULL; - signaled_thread = NULL; - - KSE_LOCK_ACQUIRE(curkse, &_thread_list_lock); - TAILQ_FOREACH(pthread, &_thread_list, tle) { - if (pthread == _thr_sig_daemon) - continue; - /* Signal delivering to bound thread is done by kernel */ - if (pthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - continue; - /* Take the scheduling lock. */ - KSE_SCHED_LOCK(curkse, pthread->kseg); - if ((pthread->state == PS_DEAD) || - (pthread->state == PS_DEADLOCK) || - THR_IS_EXITING(pthread) || - THR_IS_SUSPENDED(pthread)) { - ; /* Skip this thread. */ - } else if (pthread->state == PS_SIGWAIT && - SIGISMEMBER(*(pthread->data.sigwait->waitset), sig)) { - /* - * retrieve signal from kernel, if it is job control - * signal, and sigaction is SIG_DFL, then we will - * be stopped in kernel, we hold lock here, but that - * does not matter, because that's job control, and - * whole process should be stopped. - */ - if (_thr_getprocsig(sig, &si)) { - DBG_MSG("Waking thread %p in sigwait" - " with signal %d\n", pthread, sig); - /* where to put siginfo ? */ - *(pthread->data.sigwait->siginfo) = si; - kmbx = _thr_setrunnable_unlocked(pthread); - } - KSE_SCHED_UNLOCK(curkse, pthread->kseg); - /* - * POSIX doesn't doesn't specify which thread - * will get the signal if there are multiple - * waiters, so we give it to the first thread - * we find. - * - * Do not attempt to deliver this signal - * to other threads and do not add the signal - * to the process pending set. - */ - KSE_LOCK_RELEASE(curkse, &_thread_list_lock); - if (kmbx != NULL) - kse_wakeup(kmbx); - if (suspended_thread != NULL) - _thr_ref_delete(NULL, suspended_thread); - if (signaled_thread != NULL) - _thr_ref_delete(NULL, signaled_thread); - return (NULL); - } else if (!SIGISMEMBER(pthread->sigmask, sig)) { - /* - * If debugger is running, we don't quick exit, - * and give it a chance to check the signal. - */ - if (_libkse_debug == 0) { - sigfunc = _thread_sigact[sig - 1].sa_sigaction; - if ((__sighandler_t *)sigfunc == SIG_DFL) { - if (sigprop(sig) & SA_KILL) { - kse_thr_interrupt(NULL, - KSE_INTR_SIGEXIT, sig); - /* Never reach */ - } - } - } - if (pthread->state == PS_SIGSUSPEND) { - if (suspended_thread == NULL) { - suspended_thread = pthread; - suspended_thread->refcount++; - } - } else if (signaled_thread == NULL) { - signaled_thread = pthread; - signaled_thread->refcount++; - } - } - KSE_SCHED_UNLOCK(curkse, pthread->kseg); - } - KSE_LOCK_RELEASE(curkse, &_thread_list_lock); - - if (suspended_thread != NULL) { - pthread = suspended_thread; - if (signaled_thread) - _thr_ref_delete(NULL, signaled_thread); - } else if (signaled_thread) { - pthread = signaled_thread; - } else { - pthread = NULL; - } - return (pthread); -} -#endif /* ! SYSTEM_SCOPE_ONLY */ - -static void +static inline void build_siginfo(siginfo_t *info, int signo) { bzero(info, sizeof(*info)); @@ -765,120 +166,32 @@ * It should only be called from the context of the thread. */ void -_thr_sig_rundown(struct pthread *curthread, ucontext_t *ucp, - struct pthread_sigframe *psf) +_thr_sig_rundown(struct pthread *curthread) { - int interrupted = curthread->interrupted; - int timeout = curthread->timeout; - siginfo_t siginfo; - int i; - kse_critical_t crit; - struct kse *curkse; + int i, err_save; sigset_t sigmask; + err_save = errno; + DBG_MSG(">>> thr_sig_rundown (%p)\n", curthread); - /* Check the threads previous state: */ - if ((psf != NULL) && (psf->psf_valid != 0)) { - /* - * Do a little cleanup handling for those threads in - * queues before calling the signal handler. Signals - * for these threads are temporarily blocked until - * after cleanup handling. - */ - switch (psf->psf_state) { - case PS_COND_WAIT: - _cond_wait_backout(curthread); - psf->psf_state = PS_RUNNING; - break; - - case PS_MUTEX_WAIT: - _mutex_lock_backout(curthread); - psf->psf_state = PS_RUNNING; - break; - - case PS_RUNNING: - break; - - default: - psf->psf_state = PS_RUNNING; - break; - } - /* XXX see comment in thr_sched_switch_unlocked */ - curthread->critical_count--; - } - /* - * Lower the priority before calling the handler in case - * it never returns (longjmps back): - */ - crit = _kse_critical_enter(); - curkse = _get_curkse(); - KSE_SCHED_LOCK(curkse, curkse->k_kseg); - KSE_LOCK_ACQUIRE(curkse, &_thread_signal_lock); - curthread->active_priority &= ~THR_SIGNAL_PRIORITY; SIGFILLSET(sigmask); - while (1) { - /* - * For bound thread, we mask all signals and get a fresh - * copy of signal mask from kernel - */ - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { - __sys_sigprocmask(SIG_SETMASK, &sigmask, - &curthread->sigmask); - } - for (i = 1; i <= _SIG_MAXSIG; i++) { - if (SIGISMEMBER(curthread->sigmask, i)) - continue; - if (SIGISMEMBER(curthread->sigpend, i)) { - SIGDELSET(curthread->sigpend, i); - siginfo = curthread->siginfo[i-1]; - break; - } - if (!(curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - && SIGISMEMBER(_thr_proc_sigpending, i)) { - if (_thr_getprocsig_unlocked(i, &siginfo)) - break; - } - } - if (i <= _SIG_MAXSIG) - thr_sig_invoke_handler(curthread, i, &siginfo, ucp); - else { - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { - __sys_sigprocmask(SIG_SETMASK, - &curthread->sigmask, NULL); - } - break; - } - } - - if (psf != NULL && psf->psf_valid != 0) - thr_sigframe_restore(curthread, psf); - curkse = _get_curkse(); - KSE_LOCK_RELEASE(curkse, &_thread_signal_lock); - KSE_SCHED_UNLOCK(curkse, curkse->k_kseg); - _kse_critical_leave(&curthread->tcb->tcb_tmbx); - /* repost masked signal to kernel, it hardly happens in real world */ - if ((curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) && - !SIGISEMPTY(curthread->sigpend)) { /* dirty read */ + /* repost signal to kernel */ + if (!SIGISEMPTY(curthread->sigpend)) { __sys_sigprocmask(SIG_SETMASK, &sigmask, &curthread->sigmask); for (i = 1; i <= _SIG_MAXSIG; ++i) { if (SIGISMEMBER(curthread->sigpend, i)) { SIGDELSET(curthread->sigpend, i); - if (!_kse_isthreaded()) + if (!_thr_isthreaded()) kill(getpid(), i); else - kse_thr_interrupt( - &curthread->tcb->tcb_tmbx, - KSE_INTR_SENDSIG, - i); + thr_kill(curthread->tid, i); } } __sys_sigprocmask(SIG_SETMASK, &curthread->sigmask, NULL); } - curthread->interrupted = interrupted; - curthread->timeout = timeout; - DBG_MSG("<<< thr_sig_rundown (%p)\n", curthread); + errno = err_save; } /* @@ -893,56 +206,26 @@ void _thr_sig_check_pending(struct pthread *curthread) { - ucontext_t uc; - volatile int once; int errsave; - if (THR_IN_CRITICAL(curthread)) + /* + * If the thread is in critical region, delay processing signals. + * If the thread state is not PS_RUNNING, it might be switching + * into UTS and but a THR_LOCK_RELEASE saw check_pending, and it + * goes here, in the case we delay processing signals, lets UTS + * process complicated things, normally UTS will call _thr_sig_add + * to resume the thread, so we needn't repeat doing it here. + */ + if (THR_IN_CRITICAL(curthread) || curthread->lock_switch) return; errsave = errno; - once = 0; - THR_GETCONTEXT(&uc); - if (once == 0) { - once = 1; - curthread->check_pending = 0; - _thr_sig_rundown(curthread, &uc, NULL); - } + curthread->check_pending = 0; + _thr_sig_rundown(curthread); errno = errsave; } -#ifndef SYSTEM_SCOPE_ONLY /* - * This must be called with upcalls disabled. - */ -static void -handle_special_signals(struct kse *curkse, int sig) -{ - switch (sig) { - /* - * POSIX says that pending SIGCONT signals are - * discarded when one of these signals occurs. - */ - case SIGTSTP: - case SIGTTIN: - case SIGTTOU: - KSE_LOCK_ACQUIRE(curkse, &_thread_signal_lock); - SIGDELSET(_thr_proc_sigpending, SIGCONT); - KSE_LOCK_RELEASE(curkse, &_thread_signal_lock); - break; - case SIGCONT: - KSE_LOCK_ACQUIRE(curkse, &_thread_signal_lock); - SIGDELSET(_thr_proc_sigpending, SIGTSTP); - SIGDELSET(_thr_proc_sigpending, SIGTTIN); - SIGDELSET(_thr_proc_sigpending, SIGTTOU); - KSE_LOCK_RELEASE(curkse, &_thread_signal_lock); - default: - break; - } -} -#endif /* ! SYSTEM_SCOPE_ONLY */ - -/* * Perform thread specific actions in response to a signal. * This function is only called if there is a handler installed * for the signal, and if the target thread has the signal @@ -950,80 +233,38 @@ * * This must be called with the thread's scheduling lock held. */ -struct kse_mailbox * +long _thr_sig_add(struct pthread *pthread, int sig, siginfo_t *info) { - siginfo_t siginfo; - struct kse *curkse; - struct kse_mailbox *kmbx = NULL; struct pthread *curthread = _get_curthread(); - int restart; + long tid = -1; int suppress_handler = 0; - int fromproc = 0; __sighandler_t *sigfunc; DBG_MSG(">>> _thr_sig_add %p (%d)\n", pthread, sig); - curkse = _get_curkse(); - restart = _thread_sigact[sig - 1].sa_flags & SA_RESTART; sigfunc = _thread_sigact[sig - 1].sa_handler; - fromproc = (curthread == _thr_sig_daemon); if (pthread->state == PS_DEAD || pthread->state == PS_DEADLOCK || pthread->state == PS_STATE_MAX) - return (NULL); /* return false */ + return (-1); /* return false */ - if ((pthread->attr.flags & PTHREAD_SCOPE_SYSTEM) && - (curthread != pthread)) { + if (curthread != pthread) { PANIC("Please use _thr_send_sig for bound thread"); >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Nov 20 03:42:50 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CC54716A4D0; Sat, 20 Nov 2004 03:42:49 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7C10316A4CE for ; Sat, 20 Nov 2004 03:42:49 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5D2BA43D55 for ; Sat, 20 Nov 2004 03:42:49 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK3gnDh004303 for ; Sat, 20 Nov 2004 03:42:49 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK3gncf004300 for perforce@freebsd.org; Sat, 20 Nov 2004 03:42:49 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 03:42:49 GMT Message-Id: <200411200342.iAK3gncf004300@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65503 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 03:42:50 -0000 http://perforce.freebsd.org/chv.cgi?CH=65503 Change 65503 by davidxu@davidxu_alona on 2004/11/20 03:42:00 Nothing to do, just some stubs. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_concurrency.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_concurrency.c#2 (text+ko) ==== @@ -54,112 +54,6 @@ int _pthread_setconcurrency(int new_level) { - int ret; - - if (new_level < 0) - ret = EINVAL; - else if (new_level == level) - ret = 0; - else if (new_level == 0) { - level = 0; - ret = 0; - } else if ((_kse_isthreaded() == 0) && (_kse_setthreaded(1) != 0)) { - DBG_MSG("Can't enable threading.\n"); - ret = EAGAIN; - } else { - ret = _thr_setconcurrency(new_level); - if (ret == 0) - level = new_level; - } - return (ret); -} - -int -_thr_setconcurrency(int new_level) -{ - struct pthread *curthread; - struct kse *newkse, *kse; - kse_critical_t crit; - int kse_count; - int i; - int ret; - - ret = 0; - curthread = _get_curthread(); - /* Race condition, but so what. */ - kse_count = _kse_initial->k_kseg->kg_ksecount; - if (new_level > kse_count) { - for (i = kse_count; i < new_level; i++) { - newkse = _kse_alloc(curthread, 0); - if (newkse == NULL) { - DBG_MSG("Can't alloc new KSE.\n"); - ret = EAGAIN; - break; - } - newkse->k_kseg = _kse_initial->k_kseg; - newkse->k_schedq = _kse_initial->k_schedq; - newkse->k_curthread = NULL; - crit = _kse_critical_enter(); - KSE_SCHED_LOCK(curthread->kse, newkse->k_kseg); - TAILQ_INSERT_TAIL(&newkse->k_kseg->kg_kseq, - newkse, k_kgqe); - newkse->k_kseg->kg_ksecount++; - newkse->k_flags |= KF_STARTED; - KSE_SCHED_UNLOCK(curthread->kse, newkse->k_kseg); - if (kse_create(&newkse->k_kcb->kcb_kmbx, 0) != 0) { - KSE_SCHED_LOCK(curthread->kse, newkse->k_kseg); - TAILQ_REMOVE(&newkse->k_kseg->kg_kseq, - newkse, k_kgqe); - newkse->k_kseg->kg_ksecount--; - KSE_SCHED_UNLOCK(curthread->kse, - newkse->k_kseg); - _kse_critical_leave(crit); - _kse_free(curthread, newkse); - DBG_MSG("kse_create syscall failed.\n"); - ret = EAGAIN; - break; - } else { - _kse_critical_leave(crit); - } - } - } else if (new_level < kse_count) { - kse_count = 0; - crit = _kse_critical_enter(); - KSE_SCHED_LOCK(curthread->kse, _kse_initial->k_kseg); - /* Count the number of active KSEs */ - TAILQ_FOREACH(kse, &_kse_initial->k_kseg->kg_kseq, k_kgqe) { - if ((kse->k_flags & KF_TERMINATED) == 0) - kse_count++; - } - /* Reduce the number of active KSEs appropriately. */ - kse = TAILQ_FIRST(&_kse_initial->k_kseg->kg_kseq); - while ((kse != NULL) && (kse_count > new_level)) { - if ((kse != _kse_initial) && - ((kse->k_flags & KF_TERMINATED) == 0)) { - kse->k_flags |= KF_TERMINATED; - kse_count--; - /* Wakup the KSE in case it is idle. */ - kse_wakeup(&kse->k_kcb->kcb_kmbx); - } - kse = TAILQ_NEXT(kse, k_kgqe); - } - KSE_SCHED_UNLOCK(curthread->kse, _kse_initial->k_kseg); - _kse_critical_leave(crit); - } - return (ret); + level = new_level; + return 0; } - -int -_thr_setmaxconcurrency(void) -{ - int vcpu; - size_t len; - int ret; - - len = sizeof(vcpu); - ret = sysctlbyname("kern.threads.virtual_cpu", &vcpu, &len, NULL, 0); - if (ret == 0 && vcpu > 0) - ret = _thr_setconcurrency(vcpu); - return (ret); -} - From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:02:13 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 344C516A4D0; Sat, 20 Nov 2004 04:02:13 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0F85616A4CE for ; Sat, 20 Nov 2004 04:02:13 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id F24F843D55 for ; Sat, 20 Nov 2004 04:02:12 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK42CVE004925 for ; Sat, 20 Nov 2004 04:02:12 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK42CNC004922 for perforce@freebsd.org; Sat, 20 Nov 2004 04:02:12 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:02:12 GMT Message-Id: <200411200402.iAK42CNC004922@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65504 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:02:13 -0000 http://perforce.freebsd.org/chv.cgi?CH=65504 Change 65504 by davidxu@davidxu_alona on 2004/11/20 04:01:43 1. simplify code. 2. undef errno. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/sys/thr_error.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/sys/thr_error.c#2 (text+ko) ==== @@ -37,22 +37,16 @@ #include "libc_private.h" #include "thr_private.h" +#undef errno extern int errno; int * __error(void) { - struct pthread *curthread; + struct pthread *curthread = _get_curthread(); - if (__isthreaded == 0) + if (curthread != NULL && curthread != _thr_initial) + return (&curthread->error); + else return (&errno); - else if (_kse_in_critical()) - return &(_get_curkse()->k_error); - else { - curthread = _get_curthread(); - if ((curthread == NULL) || (curthread == _thr_initial)) - return (&errno); - else - return (&curthread->error); - } } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:10:24 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5A82D16A4D0; Sat, 20 Nov 2004 04:10:24 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0268716A4CE for ; Sat, 20 Nov 2004 04:10:24 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id DAB3E43D5A for ; Sat, 20 Nov 2004 04:10:23 +0000 (GMT) (envelope-from sam@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4ANSR005161 for ; Sat, 20 Nov 2004 04:10:23 GMT (envelope-from sam@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4ANDP005158 for perforce@freebsd.org; Sat, 20 Nov 2004 04:10:23 GMT (envelope-from sam@freebsd.org) Date: Sat, 20 Nov 2004 04:10:23 GMT Message-Id: <200411200410.iAK4ANDP005158@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to sam@freebsd.org using -f From: Sam Leffler To: Perforce Change Reviews Subject: PERFORCE change 65506 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:10:24 -0000 http://perforce.freebsd.org/chv.cgi?CH=65506 Change 65506 by sam@sam_ebb on 2004/11/20 04:09:53 switch to a single public build Affected files ... .. //depot/projects/wifi/sys/modules/ath_hal/Makefile#3 edit Differences ... ==== //depot/projects/wifi/sys/modules/ath_hal/Makefile#3 (text+ko) ==== @@ -61,10 +61,10 @@ .include "${HAL}/freebsd/Makefile.inc" .else -hal.o: ${HAL}/freebsd/i386-elf.hal.o.uu - uudecode -p < ${HAL}/freebsd/i386-elf.hal.o.uu > ${.TARGET} -opt_ah.h: ${HAL}/freebsd/i386-elf.opt_ah.h - cp ${HAL}/freebsd/i386-elf.opt_ah.h ${.TARGET} +hal.o: ${HAL}/public/i386-elf.hal.o.uu + uudecode -p < ${HAL}/public/i386-elf.hal.o.uu > ${.TARGET} +opt_ah.h: ${HAL}/public/i386-elf.opt_ah.h + cp ${HAL}/public/i386-elf.opt_ah.h ${.TARGET} .endif .include From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:15:31 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7824016A4D1; Sat, 20 Nov 2004 04:15:31 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 50DF516A4CF for ; Sat, 20 Nov 2004 04:15:31 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2C13043D1D for ; Sat, 20 Nov 2004 04:15:31 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4FVhU005438 for ; Sat, 20 Nov 2004 04:15:31 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4FUEQ005435 for perforce@freebsd.org; Sat, 20 Nov 2004 04:15:30 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:15:30 GMT Message-Id: <200411200415.iAK4FUEQ005435@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65508 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:15:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=65508 Change 65508 by davidxu@davidxu_alona on 2004/11/20 04:15:10 1. If thread is exiting, don't return true in checkcancel(). 2. Use thread lock. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_cancel.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_cancel.c#2 (text+ko) ==== @@ -14,15 +14,24 @@ static inline int checkcancel(struct pthread *curthread) { - if (((curthread->cancelflags & PTHREAD_CANCEL_DISABLE) == 0) && - ((curthread->cancelflags & THR_CANCELLING) != 0)) { + if ((curthread->cancelflags & THR_CANCELLING) != 0) { /* * It is possible for this thread to be swapped out * while performing cancellation; do not allow it * to be cancelled again. */ - curthread->cancelflags &= ~THR_CANCELLING; - return (1); + if ((curthread->flags & THR_FLAGS_EXITING) != 0) { + /* + * this may happen once, but after this, it + * shouldn't happen again. + */ + curthread->cancelflags &= ~THR_CANCELLING; + return (0); + } + if ((curthread->cancelflags & PTHREAD_CANCEL_DISABLE) == 0) { + curthread->cancelflags &= ~THR_CANCELLING; + return (1); + } } else return (0); @@ -33,7 +42,7 @@ { if (checkcancel(curthread) != 0) { /* Unlock before exiting: */ - THR_THREAD_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); _thr_exit_cleanup(); pthread_exit(PTHREAD_CANCELED); @@ -46,7 +55,7 @@ { struct pthread *curthread = _get_curthread(); struct pthread *joinee = NULL; - struct kse_mailbox *kmbx = NULL; + long tid = -1; int ret; if ((ret = _thr_ref_add(curthread, pthread, /*include dead*/0)) == 0) { @@ -54,9 +63,7 @@ * Take the thread's lock while we change the cancel flags. */ THR_THREAD_LOCK(curthread, pthread); - THR_SCHED_LOCK(curthread, pthread); if (pthread->flags & THR_FLAGS_EXITING) { - THR_SCHED_UNLOCK(curthread, pthread); THR_THREAD_UNLOCK(curthread, pthread); _thr_ref_delete(curthread, pthread); return (ESRCH); @@ -75,40 +82,15 @@ case PS_RUNNING: /* No need to resume: */ pthread->cancelflags |= THR_CANCELLING; + tid = pthread->tid; break; - case PS_LOCKWAIT: - /* - * These can't be removed from the queue. - * Just mark it as cancelling and tell it - * to yield once it leaves the critical - * region. - */ - pthread->cancelflags |= THR_CANCELLING; - pthread->critical_yield = 1; - break; - - case PS_SLEEP_WAIT: - case PS_SIGSUSPEND: - case PS_SIGWAIT: - /* Interrupt and resume: */ - pthread->interrupted = 1; - pthread->cancelflags |= THR_CANCELLING; - kmbx = _thr_setrunnable_unlocked(pthread); - break; - case PS_JOIN: /* Disconnect the thread from the joinee: */ joinee = pthread->join_status.thread; pthread->join_status.thread = NULL; pthread->cancelflags |= THR_CANCELLING; - kmbx = _thr_setrunnable_unlocked(pthread); - if ((joinee != NULL) && - (pthread->kseg == joinee->kseg)) { - /* Remove the joiner from the joinee. */ - joinee->joiner = NULL; - joinee = NULL; - } + tid = _thr_setrunnable_unlocked(pthread); break; case PS_SUSPENDED: @@ -126,7 +108,7 @@ */ pthread->interrupted = 1; pthread->cancelflags |= THR_CANCEL_NEEDED; - kmbx = _thr_setrunnable_unlocked(pthread); + tid = _thr_setrunnable_unlocked(pthread); pthread->continuation = _thr_finish_cancellation; break; @@ -137,29 +119,27 @@ /* Ignore - only here to silence -Wall: */ break; } - if ((pthread->cancelflags & THR_AT_CANCEL_POINT) && - (pthread->blocked != 0 || - pthread->attr.flags & PTHREAD_SCOPE_SYSTEM)) - kse_thr_interrupt(&pthread->tcb->tcb_tmbx, - KSE_INTR_INTERRUPT, 0); + +#if 0 + thr_interrupt(pthread->tid, 1); +#endif } /* * Release the thread's lock and remove the * reference: */ - THR_SCHED_UNLOCK(curthread, pthread); THR_THREAD_UNLOCK(curthread, pthread); _thr_ref_delete(curthread, pthread); - if (kmbx != NULL) - kse_wakeup(kmbx); + if (tid != -1) + thr_wake(tid); if ((joinee != NULL) && (_thr_ref_add(curthread, joinee, /* include dead */1) == 0)) { /* Remove the joiner from the joinee. */ - THR_SCHED_LOCK(curthread, joinee); + THR_THREAD_LOCK(curthread, joinee); joinee->joiner = NULL; - THR_SCHED_UNLOCK(curthread, joinee); + THR_THREAD_UNLOCK(curthread, joinee); _thr_ref_delete(curthread, joinee); } } @@ -175,7 +155,7 @@ int need_exit = 0; /* Take the thread's lock while fiddling with the state: */ - THR_THREAD_LOCK(curthread, curthread); + THR_LOCK(curthread); ostate = curthread->cancelflags & PTHREAD_CANCEL_DISABLE; @@ -194,7 +174,7 @@ ret = EINVAL; } - THR_THREAD_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); if (need_exit != 0) { _thr_exit_cleanup(); pthread_exit(PTHREAD_CANCELED); @@ -215,7 +195,7 @@ int need_exit = 0; /* Take the thread's lock while fiddling with the state: */ - THR_THREAD_LOCK(curthread, curthread); + THR_LOCK(curthread); otype = curthread->cancelflags & PTHREAD_CANCEL_ASYNCHRONOUS; switch (type) { @@ -232,7 +212,7 @@ ret = EINVAL; } - THR_THREAD_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); if (need_exit != 0) { _thr_exit_cleanup(); pthread_exit(PTHREAD_CANCELED); @@ -249,30 +229,30 @@ { struct pthread *curthread = _get_curthread(); - THR_THREAD_LOCK(curthread, curthread); + THR_LOCK(curthread); testcancel(curthread); - THR_THREAD_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); } void -_thr_cancel_enter(struct pthread *thread) +_thr_cancel_enter(struct pthread *curthread) { /* Look for a cancellation before we block: */ - THR_THREAD_LOCK(thread, thread); - testcancel(thread); - thread->cancelflags |= THR_AT_CANCEL_POINT; - THR_THREAD_UNLOCK(thread, thread); + THR_LOCK(curthread); + testcancel(curthread); + curthread->cancelflags |= THR_AT_CANCEL_POINT; + THR_UNLOCK(curthread); } void -_thr_cancel_leave(struct pthread *thread, int check) +_thr_cancel_leave(struct pthread *curthread, int check) { - THR_THREAD_LOCK(thread, thread); - thread->cancelflags &= ~THR_AT_CANCEL_POINT; + THR_LOCK(curthread); + curthread->cancelflags &= ~THR_AT_CANCEL_POINT; /* Look for a cancellation after we unblock: */ if (check) - testcancel(thread); - THR_THREAD_UNLOCK(thread, thread); + testcancel(curthread); + THR_UNLOCK(curthread); } void @@ -283,12 +263,12 @@ curthread->continuation = NULL; curthread->interrupted = 0; - THR_THREAD_LOCK(curthread, curthread); + THR_LOCK(curthread); if ((curthread->cancelflags & THR_CANCEL_NEEDED) != 0) { curthread->cancelflags &= ~THR_CANCEL_NEEDED; - THR_THREAD_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); _thr_exit_cleanup(); pthread_exit(PTHREAD_CANCELED); } - THR_THREAD_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:21:39 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5B15916A4D0; Sat, 20 Nov 2004 04:21:39 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 206E616A4CE for ; Sat, 20 Nov 2004 04:21:39 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E580043D49 for ; Sat, 20 Nov 2004 04:21:38 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4LcZs005787 for ; Sat, 20 Nov 2004 04:21:38 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4LcEI005784 for perforce@freebsd.org; Sat, 20 Nov 2004 04:21:38 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:21:38 GMT Message-Id: <200411200421.iAK4LcEI005784@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65509 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:21:40 -0000 http://perforce.freebsd.org/chv.cgi?CH=65509 Change 65509 by davidxu@davidxu_alona on 2004/11/20 04:21:13 1. Fix buggy libpthread code, always call fork handler even if there is only one thred. 2. Reinit all mutexs thread holding in child process. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_fork.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_fork.c#2 (text+ko) ==== @@ -57,25 +57,20 @@ sigset_t sigset, oldset; struct pthread *curthread; struct pthread_atfork *af; + struct pthread_mutex *m; pid_t ret; int errsave; - if (!_kse_isthreaded()) + if (!_thr_is_inited()) return (__sys_fork()); curthread = _get_curthread(); /* - * Masks all signals until we reach a safe point in - * _kse_single_thread, and the signal masks will be - * restored in that function, for M:N thread, all - * signals were already masked in kernel atomically, - * we only need to do this for bound thread. + * Masks all signals until we reach a safe point. */ - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { - SIGFILLSET(sigset); - __sys_sigprocmask(SIG_SETMASK, &sigset, &oldset); - } + SIGFILLSET(sigset); + __sys_sigprocmask(SIG_SETMASK, &sigset, &oldset); _pthread_mutex_lock(&_thr_atfork_mutex); @@ -86,30 +81,50 @@ } /* Fork a new process: */ - if ((_kse_isthreaded() != 0) && (__malloc_lock != NULL)) { + if ((_thr_isthreaded() != 0) && (__malloc_lock != NULL)) _spinlock(__malloc_lock); - } + if ((ret = __sys_fork()) == 0) { /* Child process */ - errsave = errno; + errsave = errno; + + /* clear aother thread locked us. */ + _lock_reinit(&curthread->lock); + thr_self(&curthread->tid); + + /* reinitialize libc spinlocks, this includes __malloc_lock. */ + _thr_spinlock_init(); + + /* + * reinitialize all mutexes the curthread owns, these include + * _thr_fork_mutex. + */ + TAILQ_FOREACH(m, &curthread->mutexq, m_qe) { + _thr_mutex_reinit(curthread, &m); + } + /* Reinitialize lib kernel. */ + _thr_single_thread(curthread); + + /* Restore signal mask. */ + __sys_sigprocmask(SIG_SETMASK, &oldset, NULL); - /* Kernel signal mask is restored in _kse_single_thread */ - _kse_single_thread(curthread); + _pthread_mutex_unlock(&_thr_atfork_mutex); /* Run down atfork child handlers. */ TAILQ_FOREACH(af, &_thr_atfork_list, qe) { if (af->child != NULL) af->child(); } - _thr_mutex_reinit(&_thr_atfork_mutex); } else { - if ((_kse_isthreaded() != 0) && (__malloc_lock != NULL)) { + /* Parent process */ + errsave = errno; + + if ((_thr_isthreaded() != 0) && (__malloc_lock != NULL)) _spinunlock(__malloc_lock); - } - errsave = errno; - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { - __sys_sigprocmask(SIG_SETMASK, &oldset, NULL); - } + + /* Restore signal mask. */ + __sys_sigprocmask(SIG_SETMASK, &oldset, NULL); + /* Run down atfork parent handlers. */ TAILQ_FOREACH(af, &_thr_atfork_list, qe) { if (af->parent != NULL) From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:24:43 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8EA4E16A4D0; Sat, 20 Nov 2004 04:24:43 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 507E816A4CE for ; Sat, 20 Nov 2004 04:24:43 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1DDEF43D53 for ; Sat, 20 Nov 2004 04:24:43 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4OhYa005827 for ; Sat, 20 Nov 2004 04:24:43 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4OgJC005824 for perforce@freebsd.org; Sat, 20 Nov 2004 04:24:42 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:24:42 GMT Message-Id: <200411200424.iAK4OgJC005824@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65510 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:24:44 -0000 http://perforce.freebsd.org/chv.cgi?CH=65510 Change 65510 by davidxu@davidxu_alona on 2004/11/20 04:24:16 1. introduce init_static function to init statically initialized cond var. 2. fix famous race condition in cond var. 3. fix signal backout code bug. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_cond.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_cond.c#2 (text+ko) ==== @@ -44,9 +44,13 @@ /* * Prototypes */ -static inline struct pthread *cond_queue_deq(pthread_cond_t); static inline void cond_queue_remove(pthread_cond_t, pthread_t); static inline void cond_queue_enq(pthread_cond_t, pthread_t); +static void cond_wait_backout(void *); +static inline void check_continuation(struct pthread *, + struct pthread_cond *, pthread_mutex_t *); +static int init_static(struct pthread *thread, + pthread_cond_t *cond); /* * Double underscore versions are cancellation points. Single underscore @@ -106,8 +110,7 @@ if ((pcond = (pthread_cond_t) malloc(sizeof(struct pthread_cond))) == NULL) { rval = ENOMEM; - } else if (_lock_init(&pcond->c_lock, LCK_ADAPTIVE, - _thr_lock_wait, _thr_lock_wakeup) != 0) { + } else if (_lock_init(&pcond->c_lock) != 0) { free(pcond); rval = ENOMEM; } else { @@ -128,6 +131,21 @@ return (rval); } +static int +init_static(struct pthread *thread, pthread_cond_t *cond) +{ + int ret; + + THR_LOCK_ACQUIRE(thread, &_cond_static_lock); + if (*cond == NULL) + ret = pthread_cond_init(cond, NULL); + else + ret = 0; + THR_LOCK_RELEASE(thread, &_cond_static_lock); + + return (ret); +} + int _pthread_cond_destroy(pthread_cond_t *cond) { @@ -171,8 +189,7 @@ struct pthread *curthread = _get_curthread(); int rval = 0; int done = 0; - int interrupted = 0; - int unlock_mutex = 1; + int mutex_locked = 1; int seqno; if (cond == NULL) @@ -183,12 +200,9 @@ * perform the dynamic initialization: */ if (*cond == NULL && - (rval = pthread_cond_init(cond, NULL)) != 0) + (rval = init_static(curthread, cond)) != 0) return (rval); - if (!_kse_isthreaded()) - _kse_setthreaded(1); - /* * Enter a loop waiting for a condition signal or broadcast * to wake up this thread. A loop is needed in case the waiting @@ -198,10 +212,11 @@ * and backed out of the waiting queue prior to executing the * signal handler. */ + + /* Lock the condition variable structure: */ + THR_LOCK_ACQUIRE(curthread, &(*cond)->c_lock); + seqno = (*cond)->c_seqno; do { - /* Lock the condition variable structure: */ - THR_LOCK_ACQUIRE(curthread, &(*cond)->c_lock); - /* * If the condvar was statically allocated, properly * initialize the tail queue. @@ -217,9 +232,6 @@ case COND_TYPE_FAST: if ((mutex == NULL) || (((*cond)->c_mutex != NULL) && ((*cond)->c_mutex != *mutex))) { - /* Unlock the condition variable structure: */ - THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); - /* Return invalid argument error: */ rval = EINVAL; } else { @@ -233,15 +245,15 @@ */ cond_queue_enq(*cond, curthread); - /* Remember the mutex and sequence number: */ + /* Remember the mutex: */ (*cond)->c_mutex = *mutex; - seqno = (*cond)->c_seqno; + curthread->sigbackout = cond_wait_backout; /* Wait forever: */ curthread->wakeup_time.tv_sec = -1; /* Unlock the mutex: */ - if ((unlock_mutex != 0) && + if (mutex_locked && ((rval = _mutex_cv_unlock(mutex)) != 0)) { /* * Cannot unlock the mutex, so remove @@ -249,13 +261,11 @@ * variable queue: */ cond_queue_remove(*cond, curthread); + curthread->sigbackout = NULL; /* Check for no more waiters: */ if (TAILQ_FIRST(&(*cond)->c_queue) == NULL) (*cond)->c_mutex = NULL; - - /* Unlock the condition variable structure: */ - THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); } else { /* @@ -264,7 +274,7 @@ * thread has to be requeued after * handling a signal). */ - unlock_mutex = 0; + mutex_locked = 0; /* * This thread is active and is in a @@ -272,21 +282,18 @@ * lock); we should be able to safely * set the state. */ - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK_SWITCH(curthread); THR_SET_STATE(curthread, PS_COND_WAIT); /* Remember the CV: */ curthread->data.cond = *cond; - THR_SCHED_UNLOCK(curthread, curthread); /* Unlock the CV structure: */ THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); /* Schedule the next thread: */ - _thr_sched_switch(curthread); - - curthread->data.cond = NULL; + _thr_sched_switch_unlocked(curthread); /* * XXX - This really isn't a good check @@ -299,41 +306,39 @@ * should be sent "as soon as possible". */ done = (seqno != (*cond)->c_seqno); - - if (THR_IN_SYNCQ(curthread)) { + if (done && !THR_IN_CONDQ(curthread)) { /* - * Lock the condition variable - * while removing the thread. + * The thread is dequeued, so + * it is safe to clear this. */ - THR_LOCK_ACQUIRE(curthread, - &(*cond)->c_lock); + curthread->data.cond = NULL; + curthread->sigbackout = NULL; + check_continuation(curthread, + NULL, mutex); + return (_mutex_cv_lock(mutex)); + } + + /* Relock the CV structure: */ + THR_LOCK_ACQUIRE(curthread, + &(*cond)->c_lock); + + /* + * Clear these after taking the lock to + * prevent a race condition where a + * signal can arrive before dequeueing + * the thread. + */ + curthread->data.cond = NULL; + curthread->sigbackout = NULL; + done = (seqno != (*cond)->c_seqno); + if (THR_IN_CONDQ(curthread)) { cond_queue_remove(*cond, curthread); /* Check for no more waiters: */ if (TAILQ_FIRST(&(*cond)->c_queue) == NULL) (*cond)->c_mutex = NULL; - - THR_LOCK_RELEASE(curthread, - &(*cond)->c_lock); - } - - /* - * Save the interrupted flag; locking - * the mutex may destroy it. - */ - interrupted = curthread->interrupted; - - /* - * Note that even though this thread may - * have been canceled, POSIX requires - * that the mutex be reaquired prior to - * cancellation. - */ - if (done || interrupted) { - rval = _mutex_cv_lock(mutex); - unlock_mutex = 1; } } } @@ -341,18 +346,21 @@ /* Trap invalid condition variable types: */ default: - /* Unlock the condition variable structure: */ - THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); - /* Return an invalid argument error: */ rval = EINVAL; break; } - if ((interrupted != 0) && (curthread->continuation != NULL)) - curthread->continuation((void *) curthread); + check_continuation(curthread, *cond, + mutex_locked ? NULL : mutex); } while ((done == 0) && (rval == 0)); + /* Unlock the condition variable structure: */ + THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); + + if (mutex_locked == 0) + _mutex_cv_lock(mutex); + /* Return the completion status: */ return (rval); } @@ -378,8 +386,7 @@ struct pthread *curthread = _get_curthread(); int rval = 0; int done = 0; - int interrupted = 0; - int unlock_mutex = 1; + int mutex_locked = 1; int seqno; THR_ASSERT(curthread->locklevel == 0, @@ -392,12 +399,9 @@ * If the condition variable is statically initialized, perform dynamic * initialization. */ - if (*cond == NULL && (rval = pthread_cond_init(cond, NULL)) != 0) + if (*cond == NULL && (rval = init_static(curthread, cond)) != 0) return (rval); - if (!_kse_isthreaded()) - _kse_setthreaded(1); - /* * Enter a loop waiting for a condition signal or broadcast * to wake up this thread. A loop is needed in case the waiting @@ -407,10 +411,11 @@ * and backed out of the waiting queue prior to executing the * signal handler. */ + + /* Lock the condition variable structure: */ + THR_LOCK_ACQUIRE(curthread, &(*cond)->c_lock); + seqno = (*cond)->c_seqno; do { - /* Lock the condition variable structure: */ - THR_LOCK_ACQUIRE(curthread, &(*cond)->c_lock); - /* * If the condvar was statically allocated, properly * initialize the tail queue. @@ -428,9 +433,6 @@ ((*cond)->c_mutex != *mutex))) { /* Return invalid argument error: */ rval = EINVAL; - - /* Unlock the condition variable structure: */ - THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); } else { /* Set the wakeup time: */ curthread->wakeup_time.tv_sec = abstime->tv_sec; @@ -449,10 +451,10 @@ /* Remember the mutex and sequence number: */ (*cond)->c_mutex = *mutex; - seqno = (*cond)->c_seqno; + curthread->sigbackout = cond_wait_backout; /* Unlock the mutex: */ - if ((unlock_mutex != 0) && + if (mutex_locked && ((rval = _mutex_cv_unlock(mutex)) != 0)) { /* * Cannot unlock the mutex; remove the @@ -460,13 +462,11 @@ * variable queue: */ cond_queue_remove(*cond, curthread); + curthread->sigbackout = NULL; /* Check for no more waiters: */ if (TAILQ_FIRST(&(*cond)->c_queue) == NULL) (*cond)->c_mutex = NULL; - - /* Unlock the condition variable structure: */ - THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); } else { /* * Don't unlock the mutex the next @@ -474,7 +474,7 @@ * thread has to be requeued after * handling a signal). */ - unlock_mutex = 0; + mutex_locked = 0; /* * This thread is active and is in a @@ -482,21 +482,18 @@ * lock); we should be able to safely * set the state. */ - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK_SWITCH(curthread); THR_SET_STATE(curthread, PS_COND_WAIT); /* Remember the CV: */ curthread->data.cond = *cond; - THR_SCHED_UNLOCK(curthread, curthread); /* Unlock the CV structure: */ THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); /* Schedule the next thread: */ - _thr_sched_switch(curthread); - - curthread->data.cond = NULL; + _thr_sched_switch_unlocked(curthread); /* * XXX - This really isn't a good check @@ -509,38 +506,45 @@ * should be sent "as soon as possible". */ done = (seqno != (*cond)->c_seqno); - - if (THR_IN_CONDQ(curthread)) { + if (done && !THR_IN_CONDQ(curthread)) { /* - * Lock the condition variable - * while removing the thread. + * The thread is dequeued, so + * it is safe to clear this. */ - THR_LOCK_ACQUIRE(curthread, - &(*cond)->c_lock); + curthread->data.cond = NULL; + curthread->sigbackout = NULL; + check_continuation(curthread, + NULL, mutex); + return (_mutex_cv_lock(mutex)); + } + + /* Relock the CV structure: */ + THR_LOCK_ACQUIRE(curthread, + &(*cond)->c_lock); + + /* + * Clear these after taking the lock to + * prevent a race condition where a + * signal can arrive before dequeueing + * the thread. + */ + curthread->data.cond = NULL; + curthread->sigbackout = NULL; + + done = (seqno != (*cond)->c_seqno); + if (THR_IN_CONDQ(curthread)) { cond_queue_remove(*cond, curthread); /* Check for no more waiters: */ if (TAILQ_FIRST(&(*cond)->c_queue) == NULL) (*cond)->c_mutex = NULL; - - THR_LOCK_RELEASE(curthread, - &(*cond)->c_lock); } - /* - * Save the interrupted flag; locking - * the mutex may destroy it. - */ - interrupted = curthread->interrupted; if (curthread->timeout != 0) { /* The wait timedout. */ rval = ETIMEDOUT; - (void)_mutex_cv_lock(mutex); - } else if (interrupted || done) { - rval = _mutex_cv_lock(mutex); - unlock_mutex = 1; } } } @@ -548,18 +552,21 @@ /* Trap invalid condition variable types: */ default: - /* Unlock the condition variable structure: */ - THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); - /* Return an invalid argument error: */ rval = EINVAL; break; } - if ((interrupted != 0) && (curthread->continuation != NULL)) - curthread->continuation((void *)curthread); + check_continuation(curthread, *cond, + mutex_locked ? NULL : mutex); } while ((done == 0) && (rval == 0)); + /* Unlock the condition variable structure: */ + THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); + + if (mutex_locked == 0) + _mutex_cv_lock(mutex); + /* Return the completion status: */ return (rval); } @@ -583,7 +590,7 @@ { struct pthread *curthread = _get_curthread(); struct pthread *pthread; - struct kse_mailbox *kmbx; + long tid = -1; int rval = 0; THR_ASSERT(curthread->locklevel == 0, @@ -594,7 +601,7 @@ * If the condition variable is statically initialized, perform dynamic * initialization. */ - else if (*cond != NULL || (rval = pthread_cond_init(cond, NULL)) == 0) { + else if (*cond != NULL || (rval = init_static(curthread, cond)) == 0) { /* Lock the condition variable structure: */ THR_LOCK_ACQUIRE(curthread, &(*cond)->c_lock); @@ -613,16 +620,11 @@ */ if ((pthread = TAILQ_FIRST(&(*cond)->c_queue)) != NULL) { - THR_SCHED_LOCK(curthread, pthread); + THR_THREAD_LOCK(curthread, pthread); cond_queue_remove(*cond, pthread); - if ((pthread->kseg == curthread->kseg) && - (pthread->active_priority > - curthread->active_priority)) - curthread->critical_yield = 1; - kmbx = _thr_setrunnable_unlocked(pthread); - THR_SCHED_UNLOCK(curthread, pthread); - if (kmbx != NULL) - kse_wakeup(kmbx); + pthread->sigbackout = NULL; + tid = _thr_setrunnable_unlocked(pthread); + THR_THREAD_UNLOCK(curthread, pthread); } /* Check for no more waiters: */ if (TAILQ_FIRST(&(*cond)->c_queue) == NULL) @@ -638,6 +640,8 @@ /* Unlock the condition variable structure: */ THR_LOCK_RELEASE(curthread, &(*cond)->c_lock); + if (tid != -1) + thr_wake(tid); } /* Return the completion status: */ @@ -651,7 +655,7 @@ { struct pthread *curthread = _get_curthread(); struct pthread *pthread; - struct kse_mailbox *kmbx; + long tid = -1; int rval = 0; THR_ASSERT(curthread->locklevel == 0, @@ -679,16 +683,13 @@ */ while ((pthread = TAILQ_FIRST(&(*cond)->c_queue)) != NULL) { - THR_SCHED_LOCK(curthread, pthread); + THR_THREAD_LOCK(curthread, pthread); cond_queue_remove(*cond, pthread); - if ((pthread->kseg == curthread->kseg) && - (pthread->active_priority > - curthread->active_priority)) - curthread->critical_yield = 1; - kmbx = _thr_setrunnable_unlocked(pthread); - THR_SCHED_UNLOCK(curthread, pthread); - if (kmbx != NULL) - kse_wakeup(kmbx); + pthread->sigbackout = NULL; + tid = _thr_setrunnable_unlocked(pthread); + THR_THREAD_UNLOCK(curthread, pthread); + if (tid != -1) + thr_wake(tid); } /* There are no more waiting threads: */ @@ -712,15 +713,38 @@ __strong_reference(_pthread_cond_broadcast, _thr_cond_broadcast); -void -_cond_wait_backout(struct pthread *curthread) +static inline void +check_continuation(struct pthread *curthread, struct pthread_cond *cond, + pthread_mutex_t *mutex) +{ + if ((curthread->interrupted != 0) && + (curthread->continuation != NULL)) { + if (cond != NULL) + /* Unlock the condition variable structure: */ + THR_LOCK_RELEASE(curthread, &cond->c_lock); + /* + * Note that even though this thread may have been + * canceled, POSIX requires that the mutex be + * reaquired prior to cancellation. + */ + if (mutex != NULL) + _mutex_cv_lock(mutex); + curthread->continuation((void *) curthread); + PANIC("continuation returned in pthread_cond_wait.\n"); + } +} + +static void +cond_wait_backout(void *arg) { + struct pthread *curthread = (struct pthread *)arg; pthread_cond_t cond; cond = curthread->data.cond; if (cond != NULL) { /* Lock the condition variable structure: */ THR_LOCK_ACQUIRE(curthread, &cond->c_lock); + curthread->data.cond = NULL; /* Process according to condition variable type: */ switch (cond->c_type) { @@ -740,31 +764,8 @@ /* Unlock the condition variable structure: */ THR_LOCK_RELEASE(curthread, &cond->c_lock); } -} - -/* - * Dequeue a waiting thread from the head of a condition queue in - * descending priority order. - */ -static inline struct pthread * -cond_queue_deq(pthread_cond_t cond) -{ - struct pthread *pthread; - - while ((pthread = TAILQ_FIRST(&cond->c_queue)) != NULL) { - TAILQ_REMOVE(&cond->c_queue, pthread, sqe); - THR_CONDQ_CLEAR(pthread); - if ((pthread->timeout == 0) && (pthread->interrupted == 0)) - /* - * Only exit the loop when we find a thread - * that hasn't timed out or been canceled; - * those threads are already running and don't - * need their run state changed. - */ - break; - } - - return (pthread); + /* No need to call this again. */ + curthread->sigbackout = NULL; } /* From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:27:48 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BA23E16A4D0; Sat, 20 Nov 2004 04:27:47 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7F35616A4CE for ; Sat, 20 Nov 2004 04:27:47 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4EC7043D4C for ; Sat, 20 Nov 2004 04:27:47 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4RlDF005921 for ; Sat, 20 Nov 2004 04:27:47 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4RlwS005918 for perforce@freebsd.org; Sat, 20 Nov 2004 04:27:47 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:27:47 GMT Message-Id: <200411200427.iAK4RlwS005918@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65511 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:27:48 -0000 http://perforce.freebsd.org/chv.cgi?CH=65511 Change 65511 by davidxu@davidxu_alona on 2004/11/20 04:27:09 1. Fix thr_mutex_init to handle current thread as an owner specially. 2. Fix signal backout code bug. 3. Use thr kernel interfaces. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_mutex.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_mutex.c#2 (text+ko) ==== @@ -74,7 +74,7 @@ /* * Prototypes */ -static struct kse_mailbox *mutex_handoff(struct pthread *, +static long mutex_handoff(struct pthread *, struct pthread_mutex *); static inline int mutex_self_trylock(struct pthread *, pthread_mutex_t); static inline int mutex_self_lock(struct pthread *, pthread_mutex_t); @@ -85,8 +85,8 @@ static inline pthread_t mutex_queue_deq(pthread_mutex_t); static inline void mutex_queue_remove(pthread_mutex_t, pthread_t); static inline void mutex_queue_enq(pthread_mutex_t, pthread_t); +static void mutex_lock_backout(void *arg); - static struct pthread_mutex_attr static_mutex_attr = PTHREAD_MUTEXATTR_STATIC_INITIALIZER; static pthread_mutexattr_t static_mattr = &static_mutex_attr; @@ -151,8 +151,7 @@ if ((pmutex = (pthread_mutex_t) malloc(sizeof(struct pthread_mutex))) == NULL) ret = ENOMEM; - else if (_lock_init(&pmutex->m_lock, LCK_ADAPTIVE, - _thr_lock_wait, _thr_lock_wakeup) != 0) { + else if (_lock_init(&pmutex->m_lock) != 0) { free(pmutex); *mutex = NULL; ret = ENOMEM; @@ -207,13 +206,16 @@ } void -_thr_mutex_reinit(pthread_mutex_t *mutex) +_thr_mutex_reinit(struct pthread *curthread, pthread_mutex_t *mutex) { - _lock_reinit(&(*mutex)->m_lock, LCK_ADAPTIVE, - _thr_lock_wait, _thr_lock_wakeup); + _lock_reinit(&(*mutex)->m_lock); TAILQ_INIT(&(*mutex)->m_queue); - (*mutex)->m_owner = NULL; - (*mutex)->m_count = 0; + if (curthread == NULL || + (*mutex)->m_owner != curthread) { + MUTEX_INIT_LINK(*mutex); + (*mutex)->m_owner = NULL; + (*mutex)->m_count = 0; + } (*mutex)->m_refcount = 0; (*mutex)->m_prio = 0; (*mutex)->m_saved_prio = 0; @@ -348,7 +350,7 @@ /* Lock the mutex for the running thread: */ (*mutex)->m_owner = curthread; - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK(curthread); /* Track number of priority mutexes owned: */ curthread->priority_mutex_count++; @@ -360,7 +362,7 @@ (*mutex)->m_saved_prio = curthread->inherited_priority; curthread->inherited_priority = (*mutex)->m_prio; - THR_SCHED_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); /* Add to the list of owned mutexes: */ MUTEX_ASSERT_NOT_OWNED(*mutex); @@ -384,7 +386,7 @@ /* Lock the mutex for the running thread: */ (*mutex)->m_owner = curthread; - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK(curthread); /* Track number of priority mutexes owned: */ curthread->priority_mutex_count++; @@ -398,7 +400,7 @@ curthread->inherited_priority; curthread->inherited_priority = (*mutex)->m_prio; - THR_SCHED_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); /* Add to the list of owned mutexes: */ MUTEX_ASSERT_NOT_OWNED(*mutex); TAILQ_INSERT_TAIL(&curthread->mutexq, @@ -471,7 +473,7 @@ int ret = 0; THR_ASSERT((m != NULL) && (*m != NULL), - "Uninitialized mutex in pthread_mutex_trylock_basic"); + "Uninitialized mutex in mutex_lock_common"); if (abstime != NULL && (abstime->tv_sec < 0 || abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000)) @@ -539,27 +541,32 @@ */ mutex_queue_enq(*m, curthread); curthread->data.mutex = *m; + curthread->sigbackout = mutex_lock_backout; /* * This thread is active and is in a critical * region (holding the mutex lock); we should * be able to safely set the state. */ - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK_SWITCH(curthread); THR_SET_STATE(curthread, PS_MUTEX_WAIT); - THR_SCHED_UNLOCK(curthread, curthread); /* Unlock the mutex structure: */ THR_LOCK_RELEASE(curthread, &(*m)->m_lock); /* Schedule the next thread: */ - _thr_sched_switch(curthread); + _thr_sched_switch_unlocked(curthread); - curthread->data.mutex = NULL; if (THR_IN_MUTEXQ(curthread)) { THR_LOCK_ACQUIRE(curthread, &(*m)->m_lock); mutex_queue_remove(*m, curthread); THR_LOCK_RELEASE(curthread, &(*m)->m_lock); } + /* + * Only clear these after assuring the + * thread is dequeued. + */ + curthread->data.mutex = NULL; + curthread->sigbackout = NULL; } break; @@ -570,7 +577,7 @@ /* Lock the mutex for this thread: */ (*m)->m_owner = curthread; - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK(curthread); /* Track number of priority mutexes owned: */ curthread->priority_mutex_count++; @@ -584,7 +591,7 @@ (*m)->m_saved_prio = curthread->inherited_priority; curthread->inherited_priority = (*m)->m_prio; - THR_SCHED_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); /* Add to the list of owned mutexes: */ MUTEX_ASSERT_NOT_OWNED(*m); @@ -613,6 +620,7 @@ */ mutex_queue_enq(*m, curthread); curthread->data.mutex = *m; + curthread->sigbackout = mutex_lock_backout; /* * This thread is active and is in a critical @@ -623,22 +631,26 @@ /* Adjust priorities: */ mutex_priority_adjust(curthread, *m); - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK_SWITCH(curthread); THR_SET_STATE(curthread, PS_MUTEX_WAIT); - THR_SCHED_UNLOCK(curthread, curthread); /* Unlock the mutex structure: */ THR_LOCK_RELEASE(curthread, &(*m)->m_lock); /* Schedule the next thread: */ - _thr_sched_switch(curthread); + _thr_sched_switch_unlocked(curthread); - curthread->data.mutex = NULL; if (THR_IN_MUTEXQ(curthread)) { THR_LOCK_ACQUIRE(curthread, &(*m)->m_lock); mutex_queue_remove(*m, curthread); THR_LOCK_RELEASE(curthread, &(*m)->m_lock); } + /* + * Only clear these after assuring the + * thread is dequeued. + */ + curthread->data.mutex = NULL; + curthread->sigbackout = NULL; } break; @@ -658,7 +670,7 @@ */ (*m)->m_owner = curthread; - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK(curthread); /* Track number of priority mutexes owned: */ curthread->priority_mutex_count++; @@ -673,7 +685,7 @@ (*m)->m_saved_prio = curthread->inherited_priority; curthread->inherited_priority = (*m)->m_prio; - THR_SCHED_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); /* Add to the list of owned mutexes: */ MUTEX_ASSERT_NOT_OWNED(*m); @@ -702,6 +714,7 @@ */ mutex_queue_enq(*m, curthread); curthread->data.mutex = *m; + curthread->sigbackout = mutex_lock_backout; /* Clear any previous error: */ curthread->error = 0; @@ -712,15 +725,14 @@ * be able to safely set the state. */ - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK_SWITCH(curthread); THR_SET_STATE(curthread, PS_MUTEX_WAIT); - THR_SCHED_UNLOCK(curthread, curthread); /* Unlock the mutex structure: */ THR_LOCK_RELEASE(curthread, &(*m)->m_lock); /* Schedule the next thread: */ - _thr_sched_switch(curthread); + _thr_sched_switch_unlocked(curthread); curthread->data.mutex = NULL; if (THR_IN_MUTEXQ(curthread)) { @@ -728,6 +740,12 @@ mutex_queue_remove(*m, curthread); THR_LOCK_RELEASE(curthread, &(*m)->m_lock); } + /* + * Only clear these after assuring the + * thread is dequeued. + */ + curthread->data.mutex = NULL; + curthread->sigbackout = NULL; /* * The threads priority may have changed while @@ -781,8 +799,7 @@ struct pthread *curthread; int ret = 0; - if (_thr_initial == NULL) - _libpthread_init(NULL); + _thr_check_init(); curthread = _get_curthread(); if (m == NULL) @@ -806,8 +823,8 @@ struct pthread *curthread; int ret = 0; - if (_thr_initial == NULL) - _libpthread_init(NULL); + _thr_check_init(); + curthread = _get_curthread(); if (m == NULL) @@ -831,8 +848,7 @@ struct pthread *curthread; int ret = 0; - if (_thr_initial == NULL) - _libpthread_init(NULL); + _thr_check_init(); curthread = _get_curthread(); if (m == NULL) @@ -855,8 +871,8 @@ struct pthread *curthread; int ret = 0; - if (_thr_initial == NULL) - _libpthread_init(NULL); + _thr_check_init(); + curthread = _get_curthread(); if (m == NULL) @@ -948,15 +964,14 @@ * deadlock on attempts to get a lock you already own. */ - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK_SWITCH(curthread); THR_SET_STATE(curthread, PS_DEADLOCK); - THR_SCHED_UNLOCK(curthread, curthread); /* Unlock the mutex structure: */ THR_LOCK_RELEASE(curthread, &m->m_lock); /* Schedule the next thread: */ - _thr_sched_switch(curthread); + _thr_sched_switch_unlocked(curthread); break; case PTHREAD_MUTEX_RECURSIVE: @@ -976,7 +991,7 @@ mutex_unlock_common(pthread_mutex_t *m, int add_reference) { struct pthread *curthread = _get_curthread(); - struct kse_mailbox *kmbx = NULL; + long tid = -1; int ret = 0; if (m == NULL || *m == NULL) @@ -1016,7 +1031,7 @@ * Hand off the mutex to the next waiting * thread: */ - kmbx = mutex_handoff(curthread, *m); + tid = mutex_handoff(curthread, *m); } break; @@ -1045,7 +1060,7 @@ * not to override changes in the threads base * priority subsequent to locking the mutex). */ - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK(curthread); curthread->inherited_priority = (*m)->m_saved_prio; curthread->active_priority = @@ -1056,7 +1071,7 @@ * This thread now owns one less priority mutex. */ curthread->priority_mutex_count--; - THR_SCHED_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); /* Remove the mutex from the threads queue. */ MUTEX_ASSERT_IS_OWNED(*m); @@ -1068,7 +1083,7 @@ * Hand off the mutex to the next waiting * thread: */ - kmbx = mutex_handoff(curthread, *m); + tid = mutex_handoff(curthread, *m); } break; @@ -1097,7 +1112,7 @@ * not to override changes in the threads base * priority subsequent to locking the mutex). */ - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK(curthread); curthread->inherited_priority = (*m)->m_saved_prio; curthread->active_priority = @@ -1108,7 +1123,7 @@ * This thread now owns one less priority mutex. */ curthread->priority_mutex_count--; - THR_SCHED_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); /* Remove the mutex from the threads queue. */ MUTEX_ASSERT_IS_OWNED(*m); @@ -1120,7 +1135,7 @@ * Hand off the mutex to the next waiting * thread: */ - kmbx = mutex_handoff(curthread, *m); + tid = mutex_handoff(curthread, *m); } break; @@ -1137,8 +1152,8 @@ /* Unlock the mutex structure: */ THR_LOCK_RELEASE(curthread, &(*m)->m_lock); - if (kmbx != NULL) - kse_wakeup(kmbx); + if (tid != -1) + thr_wake(tid); } /* Return the completion status: */ @@ -1207,11 +1222,11 @@ * mutex locks held. The thread's pointer to the wanted * mutex is guaranteed to be valid during this time. */ - THR_SCHED_LOCK(curthread, pthread); + THR_THREAD_LOCK(curthread, pthread); if (((pthread->sflags & THR_FLAGS_IN_SYNCQ) == 0) || ((m = pthread->data.mutex) == NULL)) - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); else { /* * This thread is currently waiting on a mutex; unlock @@ -1219,7 +1234,7 @@ * can't hold both at the same time because the locking * order could cause a deadlock. */ - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); THR_LOCK_ACQUIRE(curthread, &m->m_lock); /* @@ -1456,9 +1471,10 @@ if (active_prio != pthread->active_priority) { /* Lock the thread's scheduling queue: */ - THR_SCHED_LOCK(curthread, pthread); + THR_THREAD_LOCK(curthread, pthread); - if ((pthread->flags & THR_FLAGS_IN_RUNQ) == 0) { + /* if ((pthread->flags & THR_FLAGS_IN_RUNQ) == 0) */ + if (1) { /* * This thread is not in a run queue. Just set * its active priority. @@ -1470,8 +1486,7 @@ * This thread is in a run queue. Remove it from * the queue before changing its priority: */ - THR_RUNQ_REMOVE(pthread); - + /* THR_RUNQ_REMOVE(pthread);*/ /* * POSIX states that if the priority is being * lowered, the thread must be inserted at the @@ -1482,16 +1497,14 @@ (pthread->priority_mutex_count > 0)) { /* Set the new active priority. */ pthread->active_priority = active_prio; - - THR_RUNQ_INSERT_HEAD(pthread); + /* THR_RUNQ_INSERT_HEAD(pthread); */ } else { /* Set the new active priority. */ pthread->active_priority = active_prio; - - THR_RUNQ_INSERT_TAIL(pthread); + /* THR_RUNQ_INSERT_TAIL(pthread);*/ } } - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); } } @@ -1511,9 +1524,10 @@ * This is called by the current thread when it wants to back out of a * mutex_lock in order to run a signal handler. */ -void -_mutex_lock_backout(struct pthread *curthread) +static void +mutex_lock_backout(void *arg) { + struct pthread *curthread = (struct pthread *)arg; struct pthread_mutex *m; if ((curthread->sflags & THR_FLAGS_IN_SYNCQ) != 0) { @@ -1530,8 +1544,8 @@ /* Lock the mutex structure: */ THR_LOCK_ACQUIRE(curthread, &m->m_lock); + curthread->data.mutex = NULL; - /* * Check to make sure this thread doesn't already own * the mutex. Since mutexes are unlocked with direct @@ -1554,6 +1568,8 @@ THR_LOCK_RELEASE(curthread, &m->m_lock); } } + /* No need to call this again. */ + curthread->sigbackout = NULL; } /* @@ -1565,18 +1581,18 @@ * is necessary to lock the thread's scheduling queue while also * holding the mutex lock. */ -static struct kse_mailbox * +static long mutex_handoff(struct pthread *curthread, struct pthread_mutex *mutex) { - struct kse_mailbox *kmbx = NULL; struct pthread *pthread; + long tid = -1; /* Keep dequeueing until we find a valid thread: */ mutex->m_owner = NULL; pthread = TAILQ_FIRST(&mutex->m_queue); while (pthread != NULL) { /* Take the thread's scheduling lock: */ - THR_SCHED_LOCK(curthread, pthread); + THR_THREAD_LOCK(curthread, pthread); /* Remove the thread from the mutex queue: */ TAILQ_REMOVE(&mutex->m_queue, pthread, sqe); @@ -1667,14 +1683,9 @@ } /* Make the thread runnable and unlock the scheduling queue: */ - kmbx = _thr_setrunnable_unlocked(pthread); + tid = _thr_setrunnable_unlocked(pthread); - /* Add a preemption point. */ - if ((curthread->kseg == pthread->kseg) && - (pthread->active_priority > curthread->active_priority)) - curthread->critical_yield = 1; - - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); if (mutex->m_owner == pthread) /* We're done; a valid owner was found. */ break; @@ -1686,7 +1697,7 @@ if ((pthread == NULL) && (mutex->m_protocol == PTHREAD_PRIO_INHERIT)) /* This mutex has no priority: */ mutex->m_prio = 0; - return (kmbx); + return (tid); } /* From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:31:53 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3358516A4D0; Sat, 20 Nov 2004 04:31:53 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1054216A4CE for ; Sat, 20 Nov 2004 04:31:53 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C855643D5A for ; Sat, 20 Nov 2004 04:31:52 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4Vqja006095 for ; Sat, 20 Nov 2004 04:31:52 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4Vqc7006092 for perforce@freebsd.org; Sat, 20 Nov 2004 04:31:52 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:31:52 GMT Message-Id: <200411200431.iAK4Vqc7006092@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65512 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:31:53 -0000 http://perforce.freebsd.org/chv.cgi?CH=65512 Change 65512 by davidxu@davidxu_alona on 2004/11/20 04:31:12 Follow the changes made in thr_private.h. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_create.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_create.c#2 (text+ko) ==== @@ -41,60 +41,34 @@ #include #include #include +#include + #include "thr_private.h" #include "libc_private.h" static void free_thread(struct pthread *curthread, struct pthread *thread); static int create_stack(struct pthread_attr *pattr); -static void free_stack(struct pthread_attr *pattr); -static void thread_start(struct pthread *curthread, - void *(*start_routine) (void *), void *arg); +static void free_stack(struct pthread *curthread, struct pthread_attr *pattr); +static void thread_start(struct pthread *curthread); __weak_reference(_pthread_create, pthread_create); -/* - * Some notes on new thread creation and first time initializion - * to enable multi-threading. - * - * There are basically two things that need to be done. - * - * 1) The internal library variables must be initialized. - * 2) Upcalls need to be enabled to allow multiple threads - * to be run. - * - * The first may be done as a result of other pthread functions - * being called. When _thr_initial is null, _libpthread_init is - * called to initialize the internal variables; this also creates - * or sets the initial thread. It'd be nice to automatically - * have _libpthread_init called on program execution so we don't - * have to have checks throughout the library. - * - * The second part is only triggered by the creation of the first - * thread (other than the initial/main thread). If the thread - * being created is a scope system thread, then a new KSE/KSEG - * pair needs to be allocated. Also, if upcalls haven't been - * enabled on the initial thread's KSE, they must be now that - * there is more than one thread; this could be delayed until - * the initial KSEG has more than one thread. - */ int _pthread_create(pthread_t * thread, const pthread_attr_t * attr, void *(*start_routine) (void *), void *arg) { + ucontext_t uc; + sigset_t sigmask; struct pthread *curthread, *new_thread; - struct kse *kse = NULL; - struct kse_group *kseg = NULL; - kse_critical_t crit; int ret = 0; - if (_thr_initial == NULL) - _libpthread_init(NULL); + _thr_check_init(); /* * Turn on threaded mode, if failed, it is unnecessary to * do further work. */ - if (_kse_isthreaded() == 0 && _kse_setthreaded(1)) { + if (_thr_isthreaded() == 0 && _thr_setthreaded(1)) { return (EAGAIN); } curthread = _get_curthread(); @@ -126,75 +100,48 @@ */ } } + if (_thread_scope_system > 0) new_thread->attr.flags |= PTHREAD_SCOPE_SYSTEM; - else if ((_thread_scope_system < 0) - && (thread != &_thr_sig_daemon)) + else if (_thread_scope_system < 0) new_thread->attr.flags &= ~PTHREAD_SCOPE_SYSTEM; + if (create_stack(&new_thread->attr) != 0) { /* Insufficient memory to create a stack: */ ret = EAGAIN; + new_thread->isdead = 1; _thr_free(curthread, new_thread); - } - else if (((new_thread->attr.flags & PTHREAD_SCOPE_SYSTEM) != 0) && - (((kse = _kse_alloc(curthread, 1)) == NULL) - || ((kseg = _kseg_alloc(curthread)) == NULL))) { - /* Insufficient memory to create a new KSE/KSEG: */ - ret = EAGAIN; - if (kse != NULL) { - kse->k_kcb->kcb_kmbx.km_flags |= KMF_DONE; - _kse_free(curthread, kse); - } - free_stack(&new_thread->attr); - _thr_free(curthread, new_thread); - } - else { - if (kseg != NULL) { - /* Add the KSE to the KSEG's list of KSEs. */ - TAILQ_INSERT_HEAD(&kseg->kg_kseq, kse, k_kgqe); - kseg->kg_ksecount = 1; - kse->k_kseg = kseg; - kse->k_schedq = &kseg->kg_schedq; - } + } else { + new_thread->tid = 0; + new_thread->isdead = 0; + new_thread->sigseqno = 0; + new_thread->lock_switch = 0; + new_thread->idle = 0; + new_thread->rtld_bits = 0; /* * Write a magic value to the thread structure * to help identify valid ones: */ new_thread->magic = THR_MAGIC; - new_thread->slice_usec = -1; new_thread->start_routine = start_routine; new_thread->arg = arg; new_thread->cancelflags = PTHREAD_CANCEL_ENABLE | - PTHREAD_CANCEL_DEFERRED; + PTHREAD_CANCEL_DEFERRED; /* No thread is wanting to join to this one: */ new_thread->joiner = NULL; + new_thread->join_status.thread = NULL; + new_thread->critical_count = 0; + new_thread->sflags = 0; + getcontext(&uc); + SIGFILLSET(uc.uc_sigmask); + uc.uc_stack.ss_sp = new_thread->attr.stackaddr_attr; + uc.uc_stack.ss_size = new_thread->attr.stacksize_attr; + makecontext(&uc, (void (*)(void))thread_start, 1, + new_thread); - /* Initialize the signal frame: */ - new_thread->curframe = NULL; - /* - * Initialize the machine context. - * Enter a critical region to get consistent context. - */ - crit = _kse_critical_enter(); - THR_GETCONTEXT(&new_thread->tcb->tcb_tmbx.tm_context); - /* Initialize the thread for signals: */ - new_thread->sigmask = curthread->sigmask; - _kse_critical_leave(crit); - - new_thread->tcb->tcb_tmbx.tm_udata = new_thread; - new_thread->tcb->tcb_tmbx.tm_context.uc_sigmask = - new_thread->sigmask; - new_thread->tcb->tcb_tmbx.tm_context.uc_stack.ss_size = - new_thread->attr.stacksize_attr; - new_thread->tcb->tcb_tmbx.tm_context.uc_stack.ss_sp = - new_thread->attr.stackaddr_attr; - makecontext(&new_thread->tcb->tcb_tmbx.tm_context, - (void (*)(void))thread_start, 3, new_thread, - start_routine, arg); - /* * Check if this thread is to inherit the scheduling * attributes from its parent: */ @@ -204,7 +151,7 @@ * Lock the scheduling lock to get consistent * scheduling parameters. */ - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK(curthread); new_thread->base_priority = curthread->base_priority & ~THR_SIGNAL_PRIORITY; @@ -213,7 +160,7 @@ ~THR_SIGNAL_PRIORITY; new_thread->attr.sched_policy = curthread->attr.sched_policy; - THR_SCHED_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); } else { /* * Use just the thread priority, leaving the @@ -221,7 +168,7 @@ * default values: */ new_thread->base_priority = - new_thread->attr.prio; + new_thread->attr.prio; } new_thread->active_priority = new_thread->base_priority; new_thread->inherited_priority = 0; @@ -235,57 +182,50 @@ new_thread->cleanup = NULL; new_thread->flags = 0; new_thread->tlflags = 0; + new_thread->sigbackout = NULL; new_thread->continuation = NULL; new_thread->wakeup_time.tv_sec = -1; - new_thread->lock_switch = 0; - sigemptyset(&new_thread->sigpend); + new_thread->timeout = 0; + new_thread->error = 0; + SIGEMPTYSET(new_thread->sigpend); new_thread->check_pending = 0; + new_thread->refcount = 0; new_thread->locklevel = 0; new_thread->rdlock_count = 0; - new_thread->sigstk.ss_sp = 0; - new_thread->sigstk.ss_size = 0; - new_thread->sigstk.ss_flags = SS_DISABLE; - new_thread->oldsigmask = NULL; - + new_thread->data.mutex = 0; + new_thread->interrupted = 0; + new_thread->priority_mutex_count = 0; + new_thread->rtld_bits = 0; if (new_thread->attr.suspend == THR_CREATE_SUSPENDED) { new_thread->state = PS_SUSPENDED; new_thread->flags = THR_FLAGS_SUSPENDED; } else new_thread->state = PS_RUNNING; - /* - * System scope threads have their own kse and - * kseg. Process scope threads are all hung - * off the main process kseg. + * Schedule the new thread. */ - if ((new_thread->attr.flags & PTHREAD_SCOPE_SYSTEM) == 0) { - new_thread->kseg = _kse_initial->k_kseg; - new_thread->kse = _kse_initial; - } - else { - kse->k_curthread = NULL; - kse->k_kseg->kg_flags |= KGF_SINGLE_THREAD; - new_thread->kse = kse; - new_thread->kseg = kse->k_kseg; - kse->k_kcb->kcb_kmbx.km_udata = kse; - kse->k_kcb->kcb_kmbx.km_curthread = NULL; - } - + SIGFILLSET(sigmask); /* - * Schedule the new thread starting a new KSEG/KSE - * pair if necessary. + * Thread created by thr_create() inherits currrent thread + * sigmask, however, before new thread setup itself correctly, + * it can not handle signal, so we should masks all signals here. */ - ret = _thr_schedule_add(curthread, new_thread); - if (ret != 0) + __sys_sigprocmask(SIG_SETMASK, &sigmask, &curthread->sigmask); + new_thread->sigmask = curthread->sigmask; + /* Add the new thread. */ + _thr_link(curthread, new_thread); + ret = thr_create(&uc, &new_thread->tid, 0); + __sys_sigprocmask(SIG_SETMASK, &curthread->sigmask, NULL); + if (ret != 0) { + _thr_unlink(curthread, new_thread); free_thread(curthread, new_thread); - else { + } else { /* Return a pointer to the thread structure: */ (*thread) = new_thread; } } } - /* Return the status: */ return (ret); } @@ -293,12 +233,8 @@ static void free_thread(struct pthread *curthread, struct pthread *thread) { - free_stack(&thread->attr); - if ((thread->attr.flags & PTHREAD_SCOPE_SYSTEM) != 0) { - /* Free the KSE and KSEG. */ - _kseg_free(thread->kseg); - _kse_free(curthread, thread->kse); - } + free_stack(curthread, &thread->attr); + curthread->isdead = 1; _thr_free(curthread, thread); } @@ -319,28 +255,29 @@ } static void -free_stack(struct pthread_attr *pattr) +free_stack(struct pthread *curthread, struct pthread_attr *pattr) { - struct kse *curkse; - kse_critical_t crit; - if ((pattr->flags & THR_STACK_USER) == 0) { - crit = _kse_critical_enter(); - curkse = _get_curkse(); - KSE_LOCK_ACQUIRE(curkse, &_thread_list_lock); + THR_LOCK_ACQUIRE(curthread, &_thread_list_lock); /* Stack routines don't use malloc/free. */ _thr_stack_free(pattr); - KSE_LOCK_RELEASE(curkse, &_thread_list_lock); - _kse_critical_leave(crit); + THR_LOCK_RELEASE(curthread, &_thread_list_lock); } } static void -thread_start(struct pthread *curthread, void *(*start_routine) (void *), - void *arg) +thread_start(struct pthread *curthread) { + _tcb_set(curthread->tcb); + + /* Thread was created with all signals blocked, unblock them. */ + __sys_sigprocmask(SIG_SETMASK, &curthread->sigmask, NULL); + + if (curthread->flags & THR_FLAGS_SUSPENDED) + _thr_sched_switch(curthread); + /* Run the current thread's start routine with argument: */ - pthread_exit(start_routine(arg)); + pthread_exit(curthread->start_routine(curthread->arg)); /* This point should never be reached. */ PANIC("Thread has resumed after exit"); From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:35:58 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3AE5916A4D0; Sat, 20 Nov 2004 04:35:58 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 156AE16A4CE for ; Sat, 20 Nov 2004 04:35:58 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 0567643D41 for ; Sat, 20 Nov 2004 04:35:58 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4Zvfc006213 for ; Sat, 20 Nov 2004 04:35:57 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4ZvKX006210 for perforce@freebsd.org; Sat, 20 Nov 2004 04:35:57 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:35:57 GMT Message-Id: <200411200435.iAK4ZvKX006210@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65513 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:35:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=65513 Change 65513 by davidxu@davidxu_alona on 2004/11/20 04:35:00 no kse lock. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigaction.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigaction.c#2 (text+ko) ==== @@ -45,7 +45,6 @@ int err = 0; struct sigaction newact, oldact; struct pthread *curthread; - kse_critical_t crit; /* Check if the signal number is out of range: */ if (sig < 1 || sig > _SIG_MAXSIG) { @@ -56,9 +55,8 @@ if (act) newact = *act; - crit = _kse_critical_enter(); curthread = _get_curthread(); - KSE_LOCK_ACQUIRE(curthread->kse, &_thread_signal_lock); + THR_LOCK_ACQUIRE(curthread, &_thread_signal_lock); oldact = _thread_sigact[sig - 1]; @@ -96,8 +94,7 @@ ret = -1; } } - KSE_LOCK_RELEASE(curthread->kse, &_thread_signal_lock); - _kse_critical_leave(crit); + THR_LOCK_RELEASE(curthread, &_thread_signal_lock); /* * Check if the existing signal action structure contents are * to be returned: From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:40:04 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DBCF616A4D0; Sat, 20 Nov 2004 04:40:03 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B81B416A4CE for ; Sat, 20 Nov 2004 04:40:03 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7EA6F43D53 for ; Sat, 20 Nov 2004 04:40:03 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4e3I9006305 for ; Sat, 20 Nov 2004 04:40:03 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4e3xD006302 for perforce@freebsd.org; Sat, 20 Nov 2004 04:40:03 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:40:03 GMT Message-Id: <200411200440.iAK4e3xD006302@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65514 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:40:04 -0000 http://perforce.freebsd.org/chv.cgi?CH=65514 Change 65514 by davidxu@davidxu_alona on 2004/11/20 04:39:52 let kernel do signal work. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigaltstack.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigmask.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigpending.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigsuspend.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigwait.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigaltstack.c#2 (text+ko) ==== @@ -34,74 +34,7 @@ __weak_reference(_sigaltstack, sigaltstack); int -_sigaltstack(stack_t *_ss, stack_t *_oss) +_sigaltstack(stack_t *ss, stack_t *oss) { - struct pthread *curthread = _get_curthread(); - stack_t ss, oss; - int oonstack, errsave, ret; - kse_critical_t crit; - - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { - crit = _kse_critical_enter(); - ret = __sys_sigaltstack(_ss, _oss); - errsave = errno; - /* Get a copy */ - if (ret == 0 && _ss != NULL) - curthread->sigstk = *_ss; - _kse_critical_leave(crit); - errno = errsave; - return (ret); - } - - if (_ss) - ss = *_ss; - if (_oss) - oss = *_oss; - - /* Should get and set stack in atomic way */ - crit = _kse_critical_enter(); - oonstack = _thr_sigonstack(&ss); - if (_oss != NULL) { - oss = curthread->sigstk; - oss.ss_flags = (curthread->sigstk.ss_flags & SS_DISABLE) - ? SS_DISABLE : ((oonstack) ? SS_ONSTACK : 0); - } - - if (_ss != NULL) { - if (oonstack) { - _kse_critical_leave(crit); - errno = EPERM; - return (-1); - } - if ((ss.ss_flags & ~SS_DISABLE) != 0) { - _kse_critical_leave(crit); - errno = EINVAL; - return (-1); - } - if (!(ss.ss_flags & SS_DISABLE)) { - if (ss.ss_size < MINSIGSTKSZ) { - _kse_critical_leave(crit); - errno = ENOMEM; - return (-1); - } - curthread->sigstk = ss; - } else { - curthread->sigstk.ss_flags |= SS_DISABLE; - } - } - _kse_critical_leave(crit); - if (_oss != NULL) - *_oss = oss; - return (0); + return (__sys_sigaltstack(ss, oss)); } - -int -_thr_sigonstack(void *sp) -{ - struct pthread *curthread = _get_curthread(); - - return ((curthread->sigstk.ss_flags & SS_DISABLE) == 0 ? - (((size_t)sp - (size_t)curthread->sigstk.ss_sp) < curthread->sigstk.ss_size) - : 0); -} - ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigmask.c#2 (text+ko) ==== @@ -46,68 +46,12 @@ _pthread_sigmask(int how, const sigset_t *set, sigset_t *oset) { struct pthread *curthread = _get_curthread(); - sigset_t oldset, newset; int ret; - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { - ret = __sys_sigprocmask(how, set, oset); - if (ret != 0) - ret = errno; - /* Get a fresh copy */ - __sys_sigprocmask(SIG_SETMASK, NULL, &curthread->sigmask); - return (ret); - } - - if (set) - newset = *set; - - THR_SCHED_LOCK(curthread, curthread); - - ret = 0; - if (oset != NULL) - /* Return the current mask: */ - oldset = curthread->sigmask; - - /* Check if a new signal set was provided by the caller: */ - if (set != NULL) { - /* Process according to what to do: */ - switch (how) { - /* Block signals: */ - case SIG_BLOCK: - /* Add signals to the existing mask: */ - SIGSETOR(curthread->sigmask, newset); - break; - - /* Unblock signals: */ - case SIG_UNBLOCK: - /* Clear signals from the existing mask: */ - SIGSETNAND(curthread->sigmask, newset); - break; - - /* Set the signal process mask: */ - case SIG_SETMASK: - /* Set the new mask: */ - curthread->sigmask = newset; - break; - - /* Trap invalid actions: */ - default: - /* Return an invalid argument: */ - ret = EINVAL; - break; - } - SIG_CANTMASK(curthread->sigmask); - THR_SCHED_UNLOCK(curthread, curthread); - - /* - * Run down any pending signals: - */ - if (ret == 0) - _thr_sig_check_pending(curthread); - } else - THR_SCHED_UNLOCK(curthread, curthread); - - if (ret == 0 && oset != NULL) - *oset = oldset; + ret = __sys_sigprocmask(how, set, oset); + if (ret != 0) + ret = errno; + /* Get a fresh copy */ + __sys_sigprocmask(SIG_SETMASK, NULL, &curthread->sigmask); return (ret); } ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigpending.c#2 (text+ko) ==== @@ -44,30 +44,5 @@ int _sigpending(sigset_t *set) { - struct pthread *curthread = _get_curthread(); - kse_critical_t crit; - sigset_t sigset; - int ret = 0; - - /* Check for a null signal set pointer: */ - if (set == NULL) { - /* Return an invalid argument: */ - ret = EINVAL; - } - else { - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - return (__sys_sigpending(set)); - - crit = _kse_critical_enter(); - KSE_SCHED_LOCK(curthread->kse, curthread->kseg); - sigset = curthread->sigpend; - KSE_SCHED_UNLOCK(curthread->kse, curthread->kseg); - KSE_LOCK_ACQUIRE(curthread->kse, &_thread_signal_lock); - SIGSETOR(sigset, _thr_proc_sigpending); - KSE_LOCK_RELEASE(curthread->kse, &_thread_signal_lock); - _kse_critical_leave(crit); - *set = sigset; - } - /* Return the completion status: */ - return (ret); + return (__sys_sigpending(set)); } ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigsuspend.c#2 (text+ko) ==== @@ -41,59 +41,13 @@ __weak_reference(__sigsuspend, sigsuspend); int -_sigsuspend(const sigset_t *set) -{ - struct pthread *curthread = _get_curthread(); - sigset_t oldmask, newmask, tempset; - int ret = -1; - - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - return (__sys_sigsuspend(set)); - - /* Check if a new signal set was provided by the caller: */ - if (set != NULL) { - newmask = *set; - SIG_CANTMASK(newmask); - THR_LOCK_SWITCH(curthread); - - /* Save current sigmask: */ - oldmask = curthread->sigmask; - curthread->oldsigmask = &oldmask; - - /* Change the caller's mask: */ - curthread->sigmask = newmask; - tempset = curthread->sigpend; - SIGSETNAND(tempset, newmask); - if (SIGISEMPTY(tempset)) { - THR_SET_STATE(curthread, PS_SIGSUSPEND); - /* Wait for a signal: */ - _thr_sched_switch_unlocked(curthread); - } else { - THR_UNLOCK_SWITCH(curthread); - /* check pending signal I can handle: */ - _thr_sig_check_pending(curthread); - } - THR_ASSERT(curthread->oldsigmask == NULL, - "oldsigmask is not cleared"); - /* Always return an interrupted error: */ - errno = EINTR; - } else { - /* Return an invalid argument error: */ - errno = EINVAL; - } - - /* Return the completion status: */ - return (ret); -} - -int __sigsuspend(const sigset_t * set) { struct pthread *curthread = _get_curthread(); int ret; _thr_cancel_enter(curthread); - ret = _sigsuspend(set); + ret = __sys_sigsuspend(set); _thr_cancel_leave(curthread, 1); return (ret); ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sigwait.c#2 (text+ko) ==== @@ -43,93 +43,6 @@ __weak_reference(__sigtimedwait, sigtimedwait); __weak_reference(__sigwaitinfo, sigwaitinfo); -static int -lib_sigtimedwait(const sigset_t *set, siginfo_t *info, - const struct timespec * timeout) -{ - struct pthread *curthread = _get_curthread(); - int ret = 0; - int i; - struct sigwait_data waitdata; - sigset_t waitset; - kse_critical_t crit; - siginfo_t siginfo; - - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { - if (info == NULL) - info = &siginfo; - return (__sys_sigtimedwait((sigset_t *)set, info, - (struct timespec *)timeout)); - } - - /* - * Initialize the set of signals that will be waited on: - */ - waitset = *set; - - /* These signals can't be waited on. */ - SIGDELSET(waitset, SIGKILL); - SIGDELSET(waitset, SIGSTOP); - - /* - * POSIX says that the _application_ must explicitly install - * a dummy handler for signals that are SIG_IGN in order - * to sigwait on them. Note that SIG_IGN signals are left in - * the mask because a subsequent sigaction could enable an - * ignored signal. - */ - - crit = _kse_critical_enter(); - KSE_SCHED_LOCK(curthread->kse, curthread->kseg); - for (i = 1; i <= _SIG_MAXSIG; ++i) { - if (SIGISMEMBER(waitset, i) && - SIGISMEMBER(curthread->sigpend, i)) { - SIGDELSET(curthread->sigpend, i); - siginfo = curthread->siginfo[i - 1]; - KSE_SCHED_UNLOCK(curthread->kse, - curthread->kseg); - _kse_critical_leave(crit); - ret = i; - goto OUT; - } - } - curthread->timeout = 0; - curthread->interrupted = 0; - _thr_set_timeout(timeout); - /* Wait for a signal: */ - siginfo.si_signo = 0; - waitdata.waitset = &waitset; - waitdata.siginfo = &siginfo; - curthread->data.sigwait = &waitdata; - THR_SET_STATE(curthread, PS_SIGWAIT); - _thr_sched_switch_unlocked(curthread); - /* - * Return the signal number to the caller: - */ - if (siginfo.si_signo > 0) { - ret = siginfo.si_signo; - } else { - if (curthread->interrupted) - errno = EINTR; - else if (curthread->timeout) - errno = EAGAIN; - ret = -1; - } - curthread->timeout = 0; - curthread->interrupted = 0; - /* - * Probably unnecessary, but since it's in a union struct - * we don't know how it could be used in the future. - */ - curthread->data.sigwait = NULL; - -OUT: - if (ret > 0 && info != NULL) - *info = siginfo; - - return (ret); -} - int __sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec * timeout) @@ -138,15 +51,16 @@ int ret; _thr_cancel_enter(curthread); - ret = lib_sigtimedwait(set, info, timeout); + ret = __sys_sigtimedwait(set, info, timeout); _thr_cancel_leave(curthread, 1); return (ret); } -int _sigtimedwait(const sigset_t *set, siginfo_t *info, +int +_sigtimedwait(const sigset_t *set, siginfo_t *info, const struct timespec * timeout) { - return lib_sigtimedwait(set, info, timeout); + return (__sys_sigtimedwait(set, info, timeout)); } int @@ -156,7 +70,7 @@ int ret; _thr_cancel_enter(curthread); - ret = lib_sigtimedwait(set, info, NULL); + ret = __sys_sigwaitinfo(set, info); _thr_cancel_leave(curthread, 1); return (ret); } @@ -164,7 +78,7 @@ int _sigwaitinfo(const sigset_t *set, siginfo_t *info) { - return lib_sigtimedwait(set, info, NULL); + return (__sys_sigwaitinfo(set, info)); } int @@ -174,13 +88,7 @@ int ret; _thr_cancel_enter(curthread); - ret = lib_sigtimedwait(set, NULL, NULL); - if (ret > 0) { - *sig = ret; - ret = 0; - } else { - ret = errno; - } + ret = __sys_sigwait(set, sig); _thr_cancel_leave(curthread, 1); return (ret); } @@ -188,15 +96,5 @@ int _sigwait(const sigset_t *set, int *sig) { - int ret; - - ret = lib_sigtimedwait(set, NULL, NULL); - if (ret > 0) { - *sig = ret; - ret = 0; - } else { - ret = errno; - } - return (ret); + return __sys_sigwait(set, sig); } - From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:44:09 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2489A16A4D0; Sat, 20 Nov 2004 04:44:09 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 01AE616A4CE for ; Sat, 20 Nov 2004 04:44:09 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E4FCB43D2F for ; Sat, 20 Nov 2004 04:44:08 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4i8Jq006469 for ; Sat, 20 Nov 2004 04:44:08 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4i8Ab006466 for perforce@freebsd.org; Sat, 20 Nov 2004 04:44:08 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:44:08 GMT Message-Id: <200411200444.iAK4i8Ab006466@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65515 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:44:09 -0000 http://perforce.freebsd.org/chv.cgi?CH=65515 Change 65515 by davidxu@davidxu_alona on 2004/11/20 04:44:01 call __sys_sched_yield. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_yield.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_yield.c#2 (text+ko) ==== @@ -40,34 +40,12 @@ int _sched_yield(void) { - struct pthread *curthread = _get_curthread(); - - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - return (__sys_sched_yield()); - - /* Reset the accumulated time slice value for the current thread: */ - curthread->slice_usec = -1; - - /* Schedule the next thread: */ - _thr_sched_switch(curthread); - /* Always return no error. */ - return(0); + return (__sys_sched_yield()); } /* Draft 4 yield */ void _pthread_yield(void) { - struct pthread *curthread = _get_curthread(); - - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) { - __sys_sched_yield(); - return; - } - - /* Reset the accumulated time slice value for the current thread: */ - curthread->slice_usec = -1; - - /* Schedule the next thread: */ - _thr_sched_switch(curthread); + __sys_sched_yield(); } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:46:12 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 35A8D16A4D0; Sat, 20 Nov 2004 04:46:12 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 120CB16A4CE for ; Sat, 20 Nov 2004 04:46:12 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id DB3A143D4C for ; Sat, 20 Nov 2004 04:46:11 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4kBo0006566 for ; Sat, 20 Nov 2004 04:46:11 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4kBbZ006563 for perforce@freebsd.org; Sat, 20 Nov 2004 04:46:11 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:46:11 GMT Message-Id: <200411200446.iAK4kBbZ006563@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65516 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:46:12 -0000 http://perforce.freebsd.org/chv.cgi?CH=65516 Change 65516 by davidxu@davidxu_alona on 2004/11/20 04:46:00 Use thread lock. there should be thr_suspend_thread, thr_resume_thread to suspend or resume thread directly on kernel, will introduce it later. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_suspend_np.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_suspend_np.c#2 (text+ko) ==== @@ -55,10 +55,10 @@ else if ((ret = _thr_ref_add(curthread, thread, /*include dead*/0)) == 0) { /* Lock the threads scheduling queue: */ - THR_SCHED_LOCK(curthread, thread); + THR_THREAD_LOCK(curthread, thread); suspend_common(thread); /* Unlock the threads scheduling queue: */ - THR_SCHED_UNLOCK(curthread, thread); + THR_THREAD_UNLOCK(curthread, thread); /* Don't forget to remove the reference: */ _thr_ref_delete(curthread, thread); @@ -71,23 +71,20 @@ { struct pthread *curthread = _get_curthread(); struct pthread *thread; - kse_critical_t crit; /* Take the thread list lock: */ - crit = _kse_critical_enter(); - KSE_LOCK_ACQUIRE(curthread->kse, &_thread_list_lock); + THR_LOCK_ACQUIRE(curthread, &_thread_list_lock); TAILQ_FOREACH(thread, &_thread_list, tle) { if (thread != curthread) { - THR_SCHED_LOCK(curthread, thread); + THR_THREAD_LOCK(curthread, thread); suspend_common(thread); - THR_SCHED_UNLOCK(curthread, thread); + THR_THREAD_UNLOCK(curthread, thread); } } /* Release the thread list lock: */ - KSE_LOCK_RELEASE(curthread->kse, &_thread_list_lock); - _kse_critical_leave(crit); + THR_LOCK_RELEASE(curthread, &_thread_list_lock); } void @@ -97,13 +94,6 @@ (thread->state != PS_DEADLOCK) && ((thread->flags & THR_FLAGS_EXITING) == 0)) { thread->flags |= THR_FLAGS_SUSPENDED; - if ((thread->flags & THR_FLAGS_IN_RUNQ) != 0) { - THR_RUNQ_REMOVE(thread); - THR_SET_STATE(thread, PS_SUSPENDED); - } -#ifdef NOT_YET - if ((thread->attr.flags & PTHREAD_SCOPE_SYSTEM) != 0) - /* ??? */ -#endif + /* XXX how ? */ } } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:51:19 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E092F16A4D0; Sat, 20 Nov 2004 04:51:18 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BC47016A4CE for ; Sat, 20 Nov 2004 04:51:18 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 820DD43D3F for ; Sat, 20 Nov 2004 04:51:18 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4pIca013134 for ; Sat, 20 Nov 2004 04:51:18 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4pIO4013131 for perforce@freebsd.org; Sat, 20 Nov 2004 04:51:18 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:51:18 GMT Message-Id: <200411200451.iAK4pIO4013131@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65517 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:51:19 -0000 http://perforce.freebsd.org/chv.cgi?CH=65517 Change 65517 by davidxu@davidxu_alona on 2004/11/20 04:51:02 Use thread level lock, no kse sched level lock. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_detach.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_exit.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_find_thread.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_getschedparam.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_join.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_setschedparam.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_stack.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_detach.c#2 (text+ko) ==== @@ -43,8 +43,8 @@ _pthread_detach(pthread_t pthread) { struct pthread *curthread = _get_curthread(); - struct kse_mailbox *kmbx = NULL; struct pthread *joiner; + long tid = -1; int rval = 0; /* Check for invalid calling parameters: */ @@ -64,36 +64,20 @@ rval = EINVAL; } else { /* Lock the detached thread: */ - THR_SCHED_LOCK(curthread, pthread); + THR_THREAD_LOCK(curthread, pthread); /* Flag the thread as detached: */ pthread->attr.flags |= PTHREAD_DETACHED; /* Retrieve any joining thread and remove it: */ joiner = pthread->joiner; - if ((joiner != NULL) && (joiner->kseg == pthread->kseg)) { - /* - * We already own the scheduler lock for the joiner. - * Take advantage of that and make the joiner runnable. - */ - if (joiner->join_status.thread == pthread) { - /* - * Set the return value for the woken thread: - */ - joiner->join_status.error = ESRCH; - joiner->join_status.ret = NULL; - joiner->join_status.thread = NULL; + THR_THREAD_UNLOCK(curthread, pthread); - kmbx = _thr_setrunnable_unlocked(joiner); - } - joiner = NULL; - } - THR_SCHED_UNLOCK(curthread, pthread); /* See if there is a thread waiting in pthread_join(): */ if ((joiner != NULL) && (_thr_ref_add(curthread, joiner, 0) == 0)) { /* Lock the joiner before fiddling with it. */ - THR_SCHED_LOCK(curthread, joiner); + THR_THREAD_LOCK(curthread, joiner); if (joiner->join_status.thread == pthread) { /* * Set the return value for the woken thread: @@ -102,14 +86,14 @@ joiner->join_status.ret = NULL; joiner->join_status.thread = NULL; - kmbx = _thr_setrunnable_unlocked(joiner); + tid = _thr_setrunnable_unlocked(joiner); } - THR_SCHED_UNLOCK(curthread, joiner); + THR_THREAD_UNLOCK(curthread, joiner); _thr_ref_delete(curthread, joiner); } _thr_ref_delete(curthread, pthread); - if (kmbx != NULL) - kse_wakeup(kmbx); + if (tid != -1) + thr_wake(tid); } /* Return the completion status: */ ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_exit.c#2 (text+ko) ==== @@ -86,8 +86,6 @@ _pthread_exit(void *status) { struct pthread *curthread = _get_curthread(); - kse_critical_t crit; - struct kse *curkse; /* Check if this thread is already in the process of exiting: */ if ((curthread->flags & THR_FLAGS_EXITING) != 0) { @@ -102,23 +100,10 @@ * Flag this thread as exiting. Threads should now be prevented * from joining to this thread. */ - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK(curthread); curthread->flags |= THR_FLAGS_EXITING; - THR_SCHED_UNLOCK(curthread, curthread); + THR_UNLOCK(curthread); - /* - * To avoid signal-lost problem, if signals had already been - * delivered to us, handle it. we have already set EXITING flag - * so no new signals should be delivered to us. - * XXX this is not enough if signal was delivered just before - * thread called sigprocmask and masked it! in this case, we - * might have to re-post the signal by kill() if the signal - * is targeting process (not for a specified thread). - * Kernel has same signal-lost problem, a signal may be delivered - * to a thread which is on the way to call sigprocmask or thr_exit()! - */ - if (curthread->check_pending) - _thr_sig_check_pending(curthread); /* Save the return value: */ curthread->ret = status; while (curthread->cleanup != NULL) { @@ -132,24 +117,19 @@ /* Run the thread-specific data destructors: */ _thread_cleanupspecific(); } - if (!_kse_isthreaded()) + if (!_thr_isthreaded()) exit(0); - crit = _kse_critical_enter(); - curkse = _get_curkse(); - KSE_LOCK_ACQUIRE(curkse, &_thread_list_lock); + THR_LOCK_ACQUIRE(curthread, &_thread_list_lock); /* Use thread_list_lock */ _thread_active_threads--; - if ((_thread_scope_system <= 0 && _thread_active_threads == 1) || - (_thread_scope_system > 0 && _thread_active_threads == 0)) { - KSE_LOCK_RELEASE(curkse, &_thread_list_lock); - _kse_critical_leave(crit); + if (_thread_active_threads == 0) { + THR_LOCK_RELEASE(curthread, &_thread_list_lock); exit(0); /* Never reach! */ } - KSE_LOCK_RELEASE(curkse, &_thread_list_lock); + THR_LOCK_RELEASE(curthread, &_thread_list_lock); - /* This thread will never be re-scheduled. */ - KSE_LOCK(curkse); + THR_LOCK_SWITCH(curthread); THR_SET_STATE(curthread, PS_DEAD); _thr_sched_switch_unlocked(curthread); /* Never reach! */ ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_find_thread.c#2 (text+ko) ==== @@ -45,17 +45,13 @@ _thr_ref_add(struct pthread *curthread, struct pthread *thread, int include_dead) { - kse_critical_t crit; struct pthread *pthread; - struct kse *curkse; if (thread == NULL) /* Invalid thread: */ return (EINVAL); - crit = _kse_critical_enter(); - curkse = _get_curkse(); - KSE_LOCK_ACQUIRE(curkse, &_thread_list_lock); + THR_LOCK_ACQUIRE(curthread, &_thread_list_lock); pthread = _thr_hash_find(thread); if (pthread) { if ((include_dead == 0) && @@ -69,8 +65,7 @@ curthread->critical_count++; } } - KSE_LOCK_RELEASE(curkse, &_thread_list_lock); - _kse_critical_leave(crit); + THR_LOCK_RELEASE(curthread, &_thread_list_lock); /* Return zero if the thread exists: */ return ((pthread != NULL) ? 0 : ESRCH); @@ -79,20 +74,14 @@ void _thr_ref_delete(struct pthread *curthread, struct pthread *thread) { - kse_critical_t crit; - struct kse *curkse; - if (thread != NULL) { - crit = _kse_critical_enter(); - curkse = _get_curkse(); - KSE_LOCK_ACQUIRE(curkse, &_thread_list_lock); + THR_LOCK_ACQUIRE(curthread, &_thread_list_lock); thread->refcount--; if (curthread != NULL) curthread->critical_count--; if ((thread->refcount == 0) && (thread->tlflags & TLFLAGS_GC_SAFE) != 0) THR_GCLIST_ADD(thread); - KSE_LOCK_RELEASE(curkse, &_thread_list_lock); - _kse_critical_leave(crit); + THR_LOCK_RELEASE(curthread, &_thread_list_lock); } } ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_getschedparam.c#2 (text+ko) ==== @@ -52,22 +52,22 @@ * Avoid searching the thread list when it is the current * thread. */ - THR_SCHED_LOCK(curthread, curthread); + THR_THREAD_LOCK(curthread, curthread); param->sched_priority = THR_BASE_PRIORITY(pthread->base_priority); tmp = pthread->attr.sched_policy; - THR_SCHED_UNLOCK(curthread, curthread); + THR_THREAD_UNLOCK(curthread, curthread); *policy = tmp; ret = 0; } /* Find the thread in the list of active threads. */ else if ((ret = _thr_ref_add(curthread, pthread, /*include dead*/0)) == 0) { - THR_SCHED_LOCK(curthread, pthread); + THR_THREAD_LOCK(curthread, pthread); param->sched_priority = THR_BASE_PRIORITY(pthread->base_priority); tmp = pthread->attr.sched_policy; - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); _thr_ref_delete(curthread, pthread); *policy = tmp; } ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_join.c#2 (text+ko) ==== @@ -42,7 +42,6 @@ { struct pthread *curthread = _get_curthread(); void *tmp; - kse_critical_t crit; int ret = 0; _thr_cancel_enter(curthread); @@ -71,10 +70,10 @@ return (ESRCH); } - THR_SCHED_LOCK(curthread, pthread); + THR_THREAD_LOCK(curthread, pthread); /* Check if this thread has been detached: */ if ((pthread->attr.flags & PTHREAD_DETACHED) != 0) { - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); /* Remove the reference and return an error: */ _thr_ref_delete(curthread, pthread); ret = ESRCH; @@ -88,18 +87,16 @@ pthread->attr.flags |= PTHREAD_DETACHED; /* Unlock the thread. */ - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); /* * Remove the thread from the list of active * threads and add it to the GC list. */ - crit = _kse_critical_enter(); - KSE_LOCK_ACQUIRE(curthread->kse, &_thread_list_lock); + THR_LOCK_ACQUIRE(curthread, &_thread_list_lock); THR_LIST_REMOVE(pthread); THR_GCLIST_ADD(pthread); - KSE_LOCK_RELEASE(curthread->kse, &_thread_list_lock); - _kse_critical_leave(crit); + THR_LOCK_RELEASE(curthread, &_thread_list_lock); /* Remove the reference. */ _thr_ref_delete(curthread, pthread); @@ -108,7 +105,7 @@ } else if (pthread->joiner != NULL) { /* Unlock the thread and remove the reference. */ - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); _thr_ref_delete(curthread, pthread); /* Multiple joiners are not supported. */ @@ -122,25 +119,24 @@ curthread->join_status.thread = pthread; /* Unlock the thread and remove the reference. */ - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); _thr_ref_delete(curthread, pthread); - THR_SCHED_LOCK(curthread, curthread); + THR_LOCK_SWITCH(curthread); while (curthread->join_status.thread == pthread) { THR_SET_STATE(curthread, PS_JOIN); - THR_SCHED_UNLOCK(curthread, curthread); /* Schedule the next thread: */ - _thr_sched_switch(curthread); - THR_SCHED_LOCK(curthread, curthread); + _thr_sched_switch_unlocked(curthread); + THR_LOCK_SWITCH(curthread); } - THR_SCHED_UNLOCK(curthread, curthread); + THR_UNLOCK_SWITCH(curthread); if ((curthread->cancelflags & THR_CANCELLING) && !(curthread->cancelflags & PTHREAD_CANCEL_DISABLE)) { if (_thr_ref_add(curthread, pthread, 1) == 0) { - THR_SCHED_LOCK(curthread, pthread); + THR_THREAD_LOCK(curthread, pthread); pthread->joiner = NULL; - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); _thr_ref_delete(curthread, pthread); } pthread_exit(PTHREAD_CANCELED); ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_setschedparam.c#2 (text+ko) ==== @@ -63,11 +63,11 @@ * Lock the threads scheduling queue while we change * its priority: */ - THR_SCHED_LOCK(curthread, pthread); + THR_THREAD_LOCK(curthread, pthread); if ((pthread->state == PS_DEAD) || (pthread->state == PS_DEADLOCK) || ((pthread->flags & THR_FLAGS_EXITING) != 0)) { - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); _thr_ref_delete(curthread, pthread); return (ESRCH); } @@ -82,7 +82,7 @@ * There is nothing to do; unlock the threads * scheduling queue. */ - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); else { /* * Remove the thread from its current priority @@ -90,9 +90,9 @@ * active priority: */ old_prio = pthread->active_priority; - if ((pthread->flags & THR_FLAGS_IN_RUNQ) != 0) { + /* if ((pthread->flags & THR_FLAGS_IN_RUNQ) != 0) */ { in_readyq = 1; - THR_RUNQ_REMOVE(pthread); + /* THR_RUNQ_REMOVE(pthread); */ } /* Set the thread base priority: */ @@ -114,14 +114,14 @@ * its priority if it owns any priority * protection or inheritence mutexes. */ - THR_RUNQ_INSERT_HEAD(pthread); + /* THR_RUNQ_INSERT_HEAD(pthread); */ } else - THR_RUNQ_INSERT_TAIL(pthread); + /* THR_RUNQ_INSERT_TAIL(pthread)*/ ; } /* Unlock the threads scheduling queue: */ - THR_SCHED_UNLOCK(curthread, pthread); + THR_THREAD_UNLOCK(curthread, pthread); /* * Check for any mutex priority adjustments. This ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_stack.c#2 (text+ko) ==== @@ -129,9 +129,8 @@ int _thr_stack_alloc(struct pthread_attr *attr) { + struct pthread *curthread = _get_curthread(); struct stack *spare_stack; - struct kse *curkse; - kse_critical_t crit; size_t stacksize; size_t guardsize; char *stackaddr; @@ -153,9 +152,7 @@ * Use the garbage collector lock for synchronization of the * spare stack lists and allocations from usrstack. */ - crit = _kse_critical_enter(); - curkse = _get_curkse(); - KSE_LOCK_ACQUIRE(curkse, &_thread_list_lock); + THR_LOCK_ACQUIRE(curthread, &_thread_list_lock); /* * If the stack and guard sizes are default, try to allocate a stack * from the default-size stack cache: @@ -185,8 +182,7 @@ } if (attr->stackaddr_attr != NULL) { /* A cached stack was found. Release the lock. */ - KSE_LOCK_RELEASE(curkse, &_thread_list_lock); - _kse_critical_leave(crit); + THR_LOCK_RELEASE(curthread, &_thread_list_lock); } else { /* Allocate a stack from usrstack. */ @@ -207,8 +203,7 @@ last_stack -= (stacksize + guardsize); /* Release the lock before mmap'ing it. */ - KSE_LOCK_RELEASE(curkse, &_thread_list_lock); - _kse_critical_leave(crit); + THR_LOCK_RELEASE(curthread, &_thread_list_lock); /* Map the stack and guard page together, and split guard page from allocated space: */ From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:53:22 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DDCA816A4D0; Sat, 20 Nov 2004 04:53:21 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A262A16A4CE for ; Sat, 20 Nov 2004 04:53:21 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 76EFF43D3F for ; Sat, 20 Nov 2004 04:53:21 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4rLFO013182 for ; Sat, 20 Nov 2004 04:53:21 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4rL8E013179 for perforce@freebsd.org; Sat, 20 Nov 2004 04:53:21 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:53:21 GMT Message-Id: <200411200453.iAK4rL8E013179@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65518 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:53:22 -0000 http://perforce.freebsd.org/chv.cgi?CH=65518 Change 65518 by davidxu@davidxu_alona on 2004/11/20 04:52:19 Use thread lock. there should be thr_suspend_thread, thr_resume_thread to suspend or resume thread directly on kernel, will introduce it later. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_resume_np.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_resume_np.c#2 (text+ko) ==== @@ -35,7 +35,7 @@ #include #include "thr_private.h" -static struct kse_mailbox *resume_common(struct pthread *); +static long resume_common(struct pthread *); __weak_reference(_pthread_resume_np, pthread_resume_np); __weak_reference(_pthread_resume_all_np, pthread_resume_all_np); @@ -46,18 +46,18 @@ _pthread_resume_np(pthread_t thread) { struct pthread *curthread = _get_curthread(); - struct kse_mailbox *kmbx; + long tid = -1; int ret; /* Add a reference to the thread: */ if ((ret = _thr_ref_add(curthread, thread, /*include dead*/0)) == 0) { /* Lock the threads scheduling queue: */ - THR_SCHED_LOCK(curthread, thread); - kmbx = resume_common(thread); - THR_SCHED_UNLOCK(curthread, thread); + THR_THREAD_LOCK(curthread, thread); + tid = resume_common(thread); + THR_THREAD_UNLOCK(curthread, thread); _thr_ref_delete(curthread, thread); - if (kmbx != NULL) - kse_wakeup(kmbx); + if (tid !=-1) + thr_wake(tid); } return (ret); } @@ -67,29 +67,26 @@ { struct pthread *curthread = _get_curthread(); struct pthread *thread; - struct kse_mailbox *kmbx; - kse_critical_t crit; + long tid; /* Take the thread list lock: */ - crit = _kse_critical_enter(); - KSE_LOCK_ACQUIRE(curthread->kse, &_thread_list_lock); + THR_LOCK_ACQUIRE(curthread, &_thread_list_lock); TAILQ_FOREACH(thread, &_thread_list, tle) { if (thread != curthread) { - THR_SCHED_LOCK(curthread, thread); - kmbx = resume_common(thread); - THR_SCHED_UNLOCK(curthread, thread); - if (kmbx != NULL) - kse_wakeup(kmbx); + THR_THREAD_LOCK(curthread, thread); + tid = resume_common(thread); + THR_THREAD_UNLOCK(curthread, thread); + if (tid != -1) + thr_wake(tid); } } /* Release the thread list lock: */ - KSE_LOCK_RELEASE(curthread->kse, &_thread_list_lock); - _kse_critical_leave(crit); + THR_LOCK_RELEASE(curthread, &_thread_list_lock); } -static struct kse_mailbox * +static long resume_common(struct pthread *thread) { /* Clear the suspend flag: */ @@ -103,5 +100,5 @@ if (thread->state == PS_SUSPENDED) return (_thr_setrunnable_unlocked(thread)); else - return (NULL); + return (-1); } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:54:23 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 7237416A4D0; Sat, 20 Nov 2004 04:54:23 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4E58E16A4CE for ; Sat, 20 Nov 2004 04:54:23 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3F31843D1D for ; Sat, 20 Nov 2004 04:54:23 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4sN95013202 for ; Sat, 20 Nov 2004 04:54:23 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4sMwI013199 for perforce@freebsd.org; Sat, 20 Nov 2004 04:54:22 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:54:22 GMT Message-Id: <200411200454.iAK4sMwI013199@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65519 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:54:24 -0000 http://perforce.freebsd.org/chv.cgi?CH=65519 Change 65519 by davidxu@davidxu_alona on 2004/11/20 04:53:24 Pass curthread to thr_mutex_init. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_spinlock.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_spinlock.c#2 (text+ko) ==== @@ -129,9 +129,9 @@ int i; if (initialized != 0) { - _thr_mutex_reinit(&spinlock_static_lock); + _thr_mutex_reinit(_get_curthread(), &spinlock_static_lock); for (i = 0; i < spinlock_count; i++) - _thr_mutex_reinit(&extra[i].lock); + _thr_mutex_reinit(_get_curthread(), &extra[i].lock); } else { if (pthread_mutex_init(&spinlock_static_lock, NULL)) PANIC("Cannot initialize spinlock_static_lock"); From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:54:24 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 2134516A4D9; Sat, 20 Nov 2004 04:54:24 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B974C16A4F9 for ; Sat, 20 Nov 2004 04:54:23 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 925FC43D1D for ; Sat, 20 Nov 2004 04:54:23 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4sNdJ013209 for ; Sat, 20 Nov 2004 04:54:23 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4sNfL013205 for perforce@freebsd.org; Sat, 20 Nov 2004 04:54:23 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:54:23 GMT Message-Id: <200411200454.iAK4sNfL013205@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65520 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:54:24 -0000 http://perforce.freebsd.org/chv.cgi?CH=65520 Change 65520 by davidxu@davidxu_alona on 2004/11/20 04:54:11 fix compiler warning. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sem.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_sem.c#2 (text+ko) ==== @@ -123,7 +123,7 @@ { semid_t semid; - semid = SEM_USER; + semid = (semid_t)SEM_USER; if ((pshared != 0) && (ksem_init(&semid, value) != 0)) return (-1); From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:56:27 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E7B1716A4D0; Sat, 20 Nov 2004 04:56:26 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id AD07716A4CE for ; Sat, 20 Nov 2004 04:56:26 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 88B2F43D3F for ; Sat, 20 Nov 2004 04:56:26 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4uQto013297 for ; Sat, 20 Nov 2004 04:56:26 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4uQAo013294 for perforce@freebsd.org; Sat, 20 Nov 2004 04:56:26 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:56:26 GMT Message-Id: <200411200456.iAK4uQAo013294@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65521 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:56:27 -0000 http://perforce.freebsd.org/chv.cgi?CH=65521 Change 65521 by davidxu@davidxu_alona on 2004/11/20 04:56:01 use _thr_check_init(). Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_atfork.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_atfork.c#2 (text+ko) ==== From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:57:28 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 9521616A4D0; Sat, 20 Nov 2004 04:57:28 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 6F53A16A4CE for ; Sat, 20 Nov 2004 04:57:28 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 49C5843D3F for ; Sat, 20 Nov 2004 04:57:28 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4vShx013320 for ; Sat, 20 Nov 2004 04:57:28 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4vRvB013317 for perforce@freebsd.org; Sat, 20 Nov 2004 04:57:27 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:57:27 GMT Message-Id: <200411200457.iAK4vRvB013317@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65522 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:57:29 -0000 http://perforce.freebsd.org/chv.cgi?CH=65522 Change 65522 by davidxu@davidxu_alona on 2004/11/20 04:57:15 use _thr_check_init(). Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_atfork.c#3 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_atfork.c#3 (text+ko) ==== @@ -39,8 +39,7 @@ { struct pthread_atfork *af; - if (_thr_initial == NULL) - _libpthread_init(NULL); + _thr_check_init(); if ((af = malloc(sizeof(struct pthread_atfork))) == NULL) return (ENOMEM); From owner-p4-projects@FreeBSD.ORG Sat Nov 20 04:59:00 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C2AD616A4D0; Sat, 20 Nov 2004 04:58:59 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9ECE716A4CE for ; Sat, 20 Nov 2004 04:58:59 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 7939A43D67 for ; Sat, 20 Nov 2004 04:58:59 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4wT79013395 for ; Sat, 20 Nov 2004 04:58:29 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4wTSo013392 for perforce@freebsd.org; Sat, 20 Nov 2004 04:58:29 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:58:29 GMT Message-Id: <200411200458.iAK4wTSo013392@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65523 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 04:59:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=65523 Change 65523 by davidxu@davidxu_alona on 2004/11/20 04:58:06 style fixe. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setstack.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_attr_setstack.c#2 (text+ko) ==== @@ -45,7 +45,7 @@ /* Check for invalid arguments: */ if (attr == NULL || *attr == NULL || stackaddr == NULL - || stacksize < PTHREAD_STACK_MIN ) + || stacksize < PTHREAD_STACK_MIN) ret = EINVAL; else { /* Save the stack address and stack size */ From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:00:01 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1A84C16A4D0; Sat, 20 Nov 2004 05:00:01 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E94E316A4CE for ; Sat, 20 Nov 2004 05:00:00 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id B86F043D72 for ; Sat, 20 Nov 2004 05:00:00 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK4xVqT013415 for ; Sat, 20 Nov 2004 04:59:31 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK4xVDN013412 for perforce@freebsd.org; Sat, 20 Nov 2004 04:59:31 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 04:59:31 GMT Message-Id: <200411200459.iAK4xVDN013412@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65524 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:00:01 -0000 http://perforce.freebsd.org/chv.cgi?CH=65524 Change 65524 by davidxu@davidxu_alona on 2004/11/20 04:59:06 Fix info dumpping. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_info.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_info.c#2 (text+ko) ==== @@ -56,12 +56,8 @@ /* Static variables: */ static const struct s_thread_info thread_info[] = { {PS_RUNNING , "Running"}, - {PS_LOCKWAIT , "Waiting on an internal lock"}, {PS_MUTEX_WAIT , "Waiting on a mutex"}, {PS_COND_WAIT , "Waiting on a condition variable"}, - {PS_SLEEP_WAIT , "Sleeping"}, - {PS_SIGSUSPEND , "Suspended, waiting for a signal"}, - {PS_SIGWAIT , "Waiting for a signal"}, {PS_JOIN , "Waiting to join"}, {PS_SUSPENDED , "Suspended"}, {PS_DEAD , "Dead"}, @@ -147,10 +143,10 @@ /* Output a record for the thread: */ snprintf(s, sizeof(s), "--------------------\n" - "Thread %p (%s), scope %s, prio %3d, blocked %s, state %s [%s:%d]\n", + "Thread %p (%s), scope %s, prio %3d, state %s [%s:%d]\n", pthread, (pthread->name == NULL) ? "" : pthread->name, pthread->attr.flags & PTHREAD_SCOPE_SYSTEM ? "system" : "process", - pthread->active_priority, (pthread->blocked != 0) ? "yes" : "no", + pthread->active_priority, thread_info[i].name, pthread->fname, pthread->lineno); __sys_write(fd, s, strlen(s)); @@ -170,27 +166,6 @@ /* Process according to thread state: */ switch (pthread->state) { - case PS_SIGWAIT: - snprintf(s, sizeof(s), "sigmask (hi) "); - __sys_write(fd, s, strlen(s)); - for (i = _SIG_WORDS - 1; i >= 0; i--) { - snprintf(s, sizeof(s), "%08x ", - pthread->sigmask.__bits[i]); - __sys_write(fd, s, strlen(s)); - } - snprintf(s, sizeof(s), "(lo)\n"); - __sys_write(fd, s, strlen(s)); - - snprintf(s, sizeof(s), "waitset (hi) "); - __sys_write(fd, s, strlen(s)); - for (i = _SIG_WORDS - 1; i >= 0; i--) { - snprintf(s, sizeof(s), "%08x ", - pthread->data.sigwait->waitset->__bits[i]); - __sys_write(fd, s, strlen(s)); - } - snprintf(s, sizeof(s), "(lo)\n"); - __sys_write(fd, s, strlen(s)); - break; /* * Trap other states that are not explicitly * coded to dump information: From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:01:03 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 3A26116A4D0; Sat, 20 Nov 2004 05:01:03 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1504C16A4CE for ; Sat, 20 Nov 2004 05:01:03 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E473043D5F for ; Sat, 20 Nov 2004 05:01:02 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK50XEb013443 for ; Sat, 20 Nov 2004 05:00:33 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK50XLB013440 for perforce@freebsd.org; Sat, 20 Nov 2004 05:00:33 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:00:33 GMT Message-Id: <200411200500.iAK50XLB013440@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65525 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:01:03 -0000 http://perforce.freebsd.org/chv.cgi?CH=65525 Change 65525 by davidxu@davidxu_alona on 2004/11/20 04:59:49 call __sys_nanosleep. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_nanosleep.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_nanosleep.c#2 (text+ko) ==== From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:01:58 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0BC8C16A4D0; Sat, 20 Nov 2004 05:01:58 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C42C116A4CE for ; Sat, 20 Nov 2004 05:01:57 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id A726D43D76 for ; Sat, 20 Nov 2004 05:01:57 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK51ZsA013531 for ; Sat, 20 Nov 2004 05:01:35 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK51YDD013528 for perforce@freebsd.org; Sat, 20 Nov 2004 05:01:34 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:01:34 GMT Message-Id: <200411200501.iAK51YDD013528@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65526 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:01:58 -0000 http://perforce.freebsd.org/chv.cgi?CH=65526 Change 65526 by davidxu@davidxu_alona on 2004/11/20 05:00:42 __sys_nanosleep. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_nanosleep.c#3 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_nanosleep.c#3 (text+ko) ==== @@ -39,91 +39,22 @@ __weak_reference(__nanosleep, nanosleep); int -_nanosleep(const struct timespec *time_to_sleep, +__nanosleep(const struct timespec *time_to_sleep, struct timespec *time_remaining) { - struct pthread *curthread = _get_curthread(); - int ret = 0; - struct timespec ts, ts1; - struct timespec remaining_time; + struct pthread *curthread = _get_curthread(); + int ret; - /* Check if the time to sleep is legal: */ - if ((time_to_sleep == NULL) || (time_to_sleep->tv_sec < 0) || - (time_to_sleep->tv_nsec < 0) || - (time_to_sleep->tv_nsec >= 1000000000)) { - /* Return an EINVAL error : */ - errno = EINVAL; - ret = -1; - } else { - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - return (__sys_nanosleep(time_to_sleep, time_remaining)); - - KSE_GET_TOD(curthread->kse, &ts); - - /* Calculate the time for the current thread to wake up: */ - TIMESPEC_ADD(&curthread->wakeup_time, &ts, time_to_sleep); - - THR_LOCK_SWITCH(curthread); - curthread->interrupted = 0; - THR_SET_STATE(curthread, PS_SLEEP_WAIT); - - /* Reschedule the current thread to sleep: */ - _thr_sched_switch_unlocked(curthread); + _thr_cancel_enter(curthread); + ret = __sys_nanosleep(time_to_sleep, time_remaining); + _thr_cancel_leave(curthread, 1); - /* Calculate the remaining time to sleep: */ - KSE_GET_TOD(curthread->kse, &ts1); - remaining_time.tv_sec = time_to_sleep->tv_sec - + ts.tv_sec - ts1.tv_sec; - remaining_time.tv_nsec = time_to_sleep->tv_nsec - + ts.tv_nsec - ts1.tv_nsec; - - /* Check if the nanosecond field has underflowed: */ - if (remaining_time.tv_nsec < 0) { - /* Handle the underflow: */ - remaining_time.tv_sec -= 1; - remaining_time.tv_nsec += 1000000000; - } - /* Check if the nanosecond field has overflowed: */ - else if (remaining_time.tv_nsec >= 1000000000) { - /* Handle the overflow: */ - remaining_time.tv_sec += 1; - remaining_time.tv_nsec -= 1000000000; - } - - /* Check if the sleep was longer than the required time: */ - if (remaining_time.tv_sec < 0) { - /* Reset the time left: */ - remaining_time.tv_sec = 0; - remaining_time.tv_nsec = 0; - } - - /* Check if the time remaining is to be returned: */ - if (time_remaining != NULL) { - /* Return the actual time slept: */ - time_remaining->tv_sec = remaining_time.tv_sec; - time_remaining->tv_nsec = remaining_time.tv_nsec; - } - - /* Check if the sleep was interrupted: */ - if (curthread->interrupted) { - /* Return an EINTR error : */ - errno = EINTR; - ret = -1; - } - } return (ret); } int -__nanosleep(const struct timespec *time_to_sleep, +_nanosleep(const struct timespec *time_to_sleep, struct timespec *time_remaining) { - struct pthread *curthread = _get_curthread(); - int ret; - - _thr_cancel_enter(curthread); - ret = _nanosleep(time_to_sleep, time_remaining); - _thr_cancel_leave(curthread, 1); - - return (ret); + return (__sys_nanosleep(time_to_sleep, time_remaining)); } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:03:38 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 946F116A4D0; Sat, 20 Nov 2004 05:03:38 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5642316A4CE for ; Sat, 20 Nov 2004 05:03:38 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 43E0543D41 for ; Sat, 20 Nov 2004 05:03:38 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK53c6C013560 for ; Sat, 20 Nov 2004 05:03:38 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK53bTV013557 for perforce@freebsd.org; Sat, 20 Nov 2004 05:03:37 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:03:37 GMT Message-Id: <200411200503.iAK53bTV013557@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65527 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:03:39 -0000 http://perforce.freebsd.org/chv.cgi?CH=65527 Change 65527 by davidxu@davidxu_alona on 2004/11/20 05:03:09 directly call __sys_execve. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_execve.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_execve.c#2 (text+ko) ==== @@ -39,25 +39,5 @@ int _execve(const char *name, char *const *argv, char *const *envp) { - struct kse_execve_args args; - struct pthread *curthread = _get_curthread(); - int ret; - - if (curthread->attr.flags & PTHREAD_SCOPE_SYSTEM) - ret = __sys_execve(name, argv, envp); - else { - /* - * When exec'ing, set the kernel signal mask to the thread's - * signal mask to satisfy POSIX requirements. - */ - args.sigmask = curthread->sigmask; - args.sigpend = curthread->sigpend; - args.path = (char *)name; - args.argv = (char **)argv; - args.envp = (char **)envp; - args.reserved = NULL; - ret = kse_thr_interrupt(NULL, KSE_INTR_EXECVE, (long)&args); - } - - return (ret); + return __sys_execve(name, argv, envp); } From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:06:43 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C7A3516A4D0; Sat, 20 Nov 2004 05:06:42 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id A31D916A4CE for ; Sat, 20 Nov 2004 05:06:42 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 74ED343D41 for ; Sat, 20 Nov 2004 05:06:42 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK56gGp013687 for ; Sat, 20 Nov 2004 05:06:42 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK56gqn013684 for perforce@freebsd.org; Sat, 20 Nov 2004 05:06:42 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:06:42 GMT Message-Id: <200411200506.iAK56gqn013684@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65528 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:06:43 -0000 http://perforce.freebsd.org/chv.cgi?CH=65528 Change 65528 by davidxu@davidxu_alona on 2004/11/20 05:05:45 use umtx lock. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_pspinlock.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_pspinlock.c#2 (text+ko) ==== @@ -29,7 +29,6 @@ #include #include #include -#include #include "thr_private.h" #define SPIN_COUNT 10000 @@ -51,8 +50,7 @@ else if ((lck = malloc(sizeof(struct pthread_spinlock))) == NULL) ret = ENOMEM; else { - lck->s_lock = 0; - lck->s_owner= NULL; + _lock_init(&lck->s_lock); *lock = lck; ret = 0; } @@ -67,9 +65,8 @@ if (lock == NULL || *lock == NULL) ret = EINVAL; - else if ((*lock)->s_owner != NULL) - ret = EBUSY; else { + _lock_destroy(&(*lock)->s_lock); free(*lock); *lock = NULL; ret = 0; @@ -83,23 +80,12 @@ { struct pthread_spinlock *lck; struct pthread *self = _pthread_self(); - int oldval, ret; + int ret; if (lock == NULL || (lck = *lock) == NULL) ret = EINVAL; - else if (lck->s_owner == self) - ret = EDEADLK; - else if (lck->s_lock != 0) - ret = EBUSY; - else { - atomic_swap_int((int *)&(lck)->s_lock, 1, &oldval); - if (oldval) - ret = EBUSY; - else { - lck->s_owner = _pthread_self(); - ret = 0; - } - } + else + ret = _lock_trylock(&lck->s_lock, self->tid); return (ret); } @@ -108,30 +94,20 @@ { struct pthread_spinlock *lck; struct pthread *self = _pthread_self(); - int count, oldval, ret; + int ret, count; if (lock == NULL || (lck = *lock) == NULL) ret = EINVAL; - else if (lck->s_owner == self) - ret = EDEADLK; else { - do { - count = SPIN_COUNT; - while (lck->s_lock) { -#ifdef __i386__ - /* tell cpu we are spinning */ - __asm __volatile("pause"); -#endif - if (--count <= 0) { - count = SPIN_COUNT; - _pthread_yield(); - } + count = SPIN_COUNT; + while ((ret = _lock_trylock(&lck->s_lock, self->tid)) != 0) { + if (ret != EINTR && ret != EAGAIN && ret != EBUSY) + break; + if (--count <= 0) { + count = SPIN_COUNT; + _pthread_yield(); } - atomic_swap_int((int *)&(lck)->s_lock, 1, &oldval); - } while (oldval); - - lck->s_owner = self; - ret = 0; + } } return (ret); @@ -141,20 +117,14 @@ _pthread_spin_unlock(pthread_spinlock_t *lock) { struct pthread_spinlock *lck; + struct pthread *self = _pthread_self(); int ret; if (lock == NULL || (lck = *lock) == NULL) ret = EINVAL; else { - if (lck->s_owner != _pthread_self()) - ret = EPERM; - else { - lck->s_owner = NULL; - atomic_swap_int((int *)&lck->s_lock, 0, &ret); - ret = 0; - } + _lock_release(&lck->s_lock, self->tid); + ret = 0; } - return (ret); } - From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:07:44 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 815F916A4D0; Sat, 20 Nov 2004 05:07:44 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5C4EF16A4CE for ; Sat, 20 Nov 2004 05:07:44 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 37D5743D39 for ; Sat, 20 Nov 2004 05:07:44 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK57iPO013707 for ; Sat, 20 Nov 2004 05:07:44 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK57h6L013704 for perforce@freebsd.org; Sat, 20 Nov 2004 05:07:43 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:07:43 GMT Message-Id: <200411200507.iAK57h6L013704@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65529 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:07:45 -0000 http://perforce.freebsd.org/chv.cgi?CH=65529 Change 65529 by davidxu@davidxu_alona on 2004/11/20 05:07:06 cosmetic name change. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_raise.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_raise.c#2 (text+ko) ==== @@ -40,7 +40,7 @@ { int ret; - if (!_kse_isthreaded()) + if (!_thr_isthreaded()) ret = kill(getpid(), sig); else { ret = pthread_kill(pthread_self(), sig); From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:08:46 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 4FAE316A4D0; Sat, 20 Nov 2004 05:08:46 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 1424116A4CE for ; Sat, 20 Nov 2004 05:08:46 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id EC30343D46 for ; Sat, 20 Nov 2004 05:08:45 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK58jUY013728 for ; Sat, 20 Nov 2004 05:08:45 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK58juA013725 for perforce@freebsd.org; Sat, 20 Nov 2004 05:08:45 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:08:45 GMT Message-Id: <200411200508.iAK58juA013725@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65530 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:08:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=65530 Change 65530 by davidxu@davidxu_alona on 2004/11/20 05:08:07 Use rwlock for rtld, current it is not used. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_rtld.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_rtld.c#2 (text+ko) ==== @@ -41,7 +41,6 @@ static int _thr_rtld_set_flag(int); static void _thr_rtld_wlock_acquire(void *); -#ifdef NOTYET static void * _thr_rtld_lock_create(void) { @@ -145,156 +144,3 @@ { _rtld_thread_init(NULL); } -#endif - -struct rtld_kse_lock { - struct lock lck; - struct kse *owner; - kse_critical_t crit; - int count; - int write; -}; - -static void * -_thr_rtld_lock_create(void) -{ - struct rtld_kse_lock *l; - - l = malloc(sizeof(struct rtld_kse_lock)); - _lock_init(&l->lck, LCK_ADAPTIVE, _kse_lock_wait, _kse_lock_wakeup); - l->owner = NULL; - l->count = 0; - l->write = 0; - return (l); -} - -static void -_thr_rtld_lock_destroy(void *lock) -{ - /* XXX We really can not free memory after a fork() */ -#if 0 - struct rtld_kse_lock *l; - - l = (struct rtld_kse_lock *)lock; - _lock_destroy(&l->lck); - free(l); -#endif - return; -} - -static void -_thr_rtld_rlock_acquire(void *lock) -{ - struct rtld_kse_lock *l; - kse_critical_t crit; - struct kse *curkse; - - l = (struct rtld_kse_lock *)lock; - crit = _kse_critical_enter(); - curkse = _get_curkse(); - if (l->owner == curkse) { - l->count++; - _kse_critical_leave(crit); /* probably not necessary */ - } else { - KSE_LOCK_ACQUIRE(curkse, &l->lck); - l->crit = crit; - l->owner = curkse; - l->count = 1; - l->write = 0; - } -} - -static void -_thr_rtld_wlock_acquire(void *lock) -{ - struct rtld_kse_lock *l; - kse_critical_t crit; - struct kse *curkse; - - l = (struct rtld_kse_lock *)lock; - crit = _kse_critical_enter(); - curkse = _get_curkse(); - if (l->owner == curkse) { - _kse_critical_leave(crit); - PANIC("Recursive write lock attempt on rtld lock"); - } else { - KSE_LOCK_ACQUIRE(curkse, &l->lck); - l->crit = crit; - l->owner = curkse; - l->count = 1; - l->write = 1; - } -} - -static void -_thr_rtld_lock_release(void *lock) -{ - struct rtld_kse_lock *l; - kse_critical_t crit; - struct kse *curkse; - - l = (struct rtld_kse_lock *)lock; - crit = _kse_critical_enter(); - curkse = _get_curkse(); - if (l->owner != curkse) { - /* - * We might want to forcibly unlock the rtld lock - * and/or disable threaded mode so there is better - * chance that the panic will work. Otherwise, - * we could end up trying to take the rtld lock - * again. - */ - _kse_critical_leave(crit); - PANIC("Attempt to unlock rtld lock when not owner."); - } else { - l->count--; - if (l->count == 0) { - /* - * If there ever is a count associated with - * _kse_critical_leave(), we'll need to add - * another call to it here with the crit - * value from above. - */ - crit = l->crit; - l->owner = NULL; - l->write = 0; - KSE_LOCK_RELEASE(curkse, &l->lck); - } - _kse_critical_leave(crit); - } -} - - -static int -_thr_rtld_set_flag(int mask) -{ - return (0); -} - -static int -_thr_rtld_clr_flag(int mask) -{ - return (0); -} - -void -_thr_rtld_init(void) -{ - struct RtldLockInfo li; - - li.lock_create = _thr_rtld_lock_create; - li.lock_destroy = _thr_rtld_lock_destroy; - li.rlock_acquire = _thr_rtld_rlock_acquire; - li.wlock_acquire = _thr_rtld_wlock_acquire; - li.lock_release = _thr_rtld_lock_release; - li.thread_set_flag = _thr_rtld_set_flag; - li.thread_clr_flag = _thr_rtld_clr_flag; - li.at_fork = NULL; - _rtld_thread_init(&li); -} - -void -_thr_rtld_fini(void) -{ - _rtld_thread_init(NULL); -} From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:09:48 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 5612816A4D0; Sat, 20 Nov 2004 05:09:48 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0459E16A4CE for ; Sat, 20 Nov 2004 05:09:47 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id C80B243D41 for ; Sat, 20 Nov 2004 05:09:47 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK59lnh013784 for ; Sat, 20 Nov 2004 05:09:47 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK59lHo013781 for perforce@freebsd.org; Sat, 20 Nov 2004 05:09:47 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:09:47 GMT Message-Id: <200411200509.iAK59lHo013781@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65531 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:09:49 -0000 http://perforce.freebsd.org/chv.cgi?CH=65531 Change 65531 by davidxu@davidxu_alona on 2004/11/20 05:09:20 Update debugging symbols. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_symbols.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_symbols.c#2 (text+ko) ==== @@ -42,14 +42,13 @@ /* int _libkse_debug */ int _thread_off_tcb = offsetof(struct pthread, tcb); -int _thread_off_tmbx = offsetof(struct tcb, tcb_tmbx); +int _thread_off_tid = offsetof(struct pthread, tid); int _thread_off_next = offsetof(struct pthread, tle.tqe_next); int _thread_off_attr_flags = offsetof(struct pthread, attr.flags); -int _thread_off_kse = offsetof(struct pthread, kse); -int _thread_off_kse_locklevel = offsetof(struct kse, k_locklevel); int _thread_off_thr_locklevel = offsetof(struct pthread, locklevel); int _thread_off_linkmap = offsetof(Obj_Entry, linkmap); int _thread_off_tlsindex = offsetof(Obj_Entry, tlsindex); +int _thread_off_isdead = offsetof(struct pthread, isdead); int _thread_size_key = sizeof(struct pthread_key); int _thread_off_key_allocated = offsetof(struct pthread_key, allocated); int _thread_off_key_destructor = offsetof(struct pthread_key, destructor); From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:10:50 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id EBE1E16A4D0; Sat, 20 Nov 2004 05:10:49 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id B199116A4CE for ; Sat, 20 Nov 2004 05:10:49 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8A7FB43D49 for ; Sat, 20 Nov 2004 05:10:49 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK5Andh013885 for ; Sat, 20 Nov 2004 05:10:49 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK5AnXc013882 for perforce@freebsd.org; Sat, 20 Nov 2004 05:10:49 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:10:49 GMT Message-Id: <200411200510.iAK5AnXc013882@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65532 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:10:50 -0000 http://perforce.freebsd.org/chv.cgi?CH=65532 Change 65532 by davidxu@davidxu_alona on 2004/11/20 05:10:21 No sched queue. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/Makefile.inc#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_priority_queue.c#2 delete Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/Makefile.inc#2 (text+ko) ==== @@ -72,7 +72,6 @@ thr_pause.c \ thr_poll.c \ thr_printf.c \ - thr_priority_queue.c \ thr_pselect.c \ thr_pspinlock.c \ thr_raise.c \ From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:13:54 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8A13716A4D0; Sat, 20 Nov 2004 05:13:54 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4E74816A4CE for ; Sat, 20 Nov 2004 05:13:54 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 3EA6B43D53 for ; Sat, 20 Nov 2004 05:13:54 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK5DsmX014019 for ; Sat, 20 Nov 2004 05:13:54 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK5DrfE014016 for perforce@freebsd.org; Sat, 20 Nov 2004 05:13:53 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:13:53 GMT Message-Id: <200411200513.iAK5DrfE014016@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65534 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:13:55 -0000 http://perforce.freebsd.org/chv.cgi?CH=65534 Change 65534 by davidxu@davidxu_alona on 2004/11/20 05:13:19 some kse specific code is no longer needed. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/Makefile#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/Makefile#2 (text+ko) ==== @@ -22,9 +22,6 @@ CFLAGS+=-I${.CURDIR}/../../libexec/rtld-elf/${MACHINE_ARCH} CFLAGS+=-fno-builtin -# Uncomment this if you want libpthread to contain debug information for -# thread locking. -CFLAGS+=-D_LOCK_DEBUG #CFLAGS+= -g # Uncomment this if you want to build a 1:1 threading mode library @@ -39,7 +36,6 @@ PRECIOUSLIB= .include "${.CURDIR}/arch/${MACHINE_ARCH}/Makefile.inc" -.include "${.CURDIR}/support/Makefile.inc" .include "${.CURDIR}/sys/Makefile.inc" .include "${.CURDIR}/thread/Makefile.inc" From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:14:56 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 467A516A4D0; Sat, 20 Nov 2004 05:14:56 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 0B38E16A4CE for ; Sat, 20 Nov 2004 05:14:56 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id F0AD343D2F for ; Sat, 20 Nov 2004 05:14:55 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK5EtND014038 for ; Sat, 20 Nov 2004 05:14:55 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK5EtIh014035 for perforce@freebsd.org; Sat, 20 Nov 2004 05:14:55 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:14:55 GMT Message-Id: <200411200514.iAK5EtIh014035@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65535 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:14:56 -0000 http://perforce.freebsd.org/chv.cgi?CH=65535 Change 65535 by davidxu@davidxu_alona on 2004/11/20 05:14:31 Update debugging symbols Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/pthread.map#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/pthread.map#2 (text+ko) ==== @@ -331,8 +331,8 @@ writev; # Debugger needs these. - _libkse_debug; - _thread_activated; + _libkse2_debug; + _thread_inited; _thread_active_threads; _thread_keytable; _thread_list; @@ -342,14 +342,13 @@ _thread_off_linkmap; _thread_off_next; _thread_off_tcb; - _thread_off_tmbx; + _thread_off_tid; _thread_off_key_allocated; _thread_off_key_destructor; - _thread_off_kse; - _thread_off_kse_locklevel; _thread_off_state; _thread_off_thr_locklevel; _thread_off_tlsindex; + _thread_off_isdead; _thread_size_key; _thread_state_running; _thread_state_zoombie; From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:31:16 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 378CE16A4D0; Sat, 20 Nov 2004 05:31:16 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 126D616A4CE for ; Sat, 20 Nov 2004 05:31:16 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 03AB043D54 for ; Sat, 20 Nov 2004 05:31:16 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK5VFQx014535 for ; Sat, 20 Nov 2004 05:31:15 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK5VFoU014532 for perforce@freebsd.org; Sat, 20 Nov 2004 05:31:15 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:31:15 GMT Message-Id: <200411200531.iAK5VFoU014532@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65536 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:31:16 -0000 http://perforce.freebsd.org/chv.cgi?CH=65536 Change 65536 by davidxu@davidxu_alona on 2004/11/20 05:30:15 Check NULL thread pointer. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_seterrno.c#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_seterrno.c#2 (text+ko) ==== @@ -38,16 +38,14 @@ * This function needs to reference the global error variable which is * normally hidden from the user. */ -#ifdef errno -#undef errno; -#endif +#undef errno extern int errno; void _thread_seterrno(pthread_t thread, int error) { /* Check for the initial thread: */ - if (thread == _thr_initial) + if (thread == NULL || thread == _thr_initial) /* The initial thread always uses the global error variable: */ errno = error; else From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:34:20 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 75EA916A4D0; Sat, 20 Nov 2004 05:34:20 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 52EB516A4CE for ; Sat, 20 Nov 2004 05:34:20 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 2D16343D39 for ; Sat, 20 Nov 2004 05:34:20 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK5YK0G014576 for ; Sat, 20 Nov 2004 05:34:20 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK5YJgZ014573 for perforce@freebsd.org; Sat, 20 Nov 2004 05:34:19 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:34:19 GMT Message-Id: <200411200534.iAK5YJgZ014573@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65537 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:34:21 -0000 http://perforce.freebsd.org/chv.cgi?CH=65537 Change 65537 by davidxu@davidxu_alona on 2004/11/20 05:34:19 libthread. :-) Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/Makefile#3 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/Makefile#3 (text+ko) ==== @@ -8,9 +8,9 @@ # (for system call stubs) to CFLAGS below. -DSYSLIBC_SCCS affects just the # system call stubs. .if ${MACHINE_ARCH} == "alpha" || ${MACHINE_ARCH} == "sparc64" -LIB=kse +LIB=thread .else -LIB=pthread +LIB=thread .endif SHLIB_MAJOR= 1 CFLAGS+=-DPTHREAD_KERNEL From owner-p4-projects@FreeBSD.ORG Sat Nov 20 05:42:31 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BD60F16A4D0; Sat, 20 Nov 2004 05:42:30 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 979EB16A4CE for ; Sat, 20 Nov 2004 05:42:30 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 719FF43D54 for ; Sat, 20 Nov 2004 05:42:30 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK5gURG014838 for ; Sat, 20 Nov 2004 05:42:30 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK5gUAi014835 for perforce@freebsd.org; Sat, 20 Nov 2004 05:42:30 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 05:42:30 GMT Message-Id: <200411200542.iAK5gUAi014835@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65538 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 05:42:31 -0000 http://perforce.freebsd.org/chv.cgi?CH=65538 Change 65538 by davidxu@davidxu_alona on 2004/11/20 05:42:03 delete. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/amd64/context.S#2 delete .. //depot/projects/davidxu_thread/src/lib/libthread/arch/amd64/amd64/enter_uts.S#2 delete .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/i386/thr_enter_uts.S#2 delete .. //depot/projects/davidxu_thread/src/lib/libthread/arch/i386/i386/thr_getcontext.S#2 delete Differences ... From owner-p4-projects@FreeBSD.ORG Sat Nov 20 06:25:24 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 96F2E16A4D0; Sat, 20 Nov 2004 06:25:23 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7106C16A4CE for ; Sat, 20 Nov 2004 06:25:23 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 15ADD43D3F for ; Sat, 20 Nov 2004 06:25:23 +0000 (GMT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK6PNCr016150 for ; Sat, 20 Nov 2004 06:25:23 GMT (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK6PMDw016143 for perforce@freebsd.org; Sat, 20 Nov 2004 06:25:22 GMT (envelope-from marcel@freebsd.org) Date: Sat, 20 Nov 2004 06:25:22 GMT Message-Id: <200411200625.iAK6PMDw016143@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 65540 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 06:25:24 -0000 http://perforce.freebsd.org/chv.cgi?CH=65540 Change 65540 by marcel@marcel_nfs on 2004/11/20 06:24:49 IFC @65539 Affected files ... .. //depot/projects/uart/alpha/alpha/genassym.c#4 integrate .. //depot/projects/uart/alpha/alpha/machdep.c#11 integrate .. //depot/projects/uart/alpha/alpha/mp_machdep.c#10 integrate .. //depot/projects/uart/alpha/include/param.h#4 integrate .. //depot/projects/uart/amd64/amd64/busdma_machdep.c#8 integrate .. //depot/projects/uart/amd64/amd64/genassym.c#5 integrate .. //depot/projects/uart/amd64/amd64/machdep.c#10 integrate .. //depot/projects/uart/amd64/include/param.h#4 integrate .. //depot/projects/uart/arm/arm/genassym.c#3 integrate .. //depot/projects/uart/arm/arm/trap.c#3 integrate .. //depot/projects/uart/arm/arm/vm_machdep.c#3 integrate .. //depot/projects/uart/arm/include/param.h#4 integrate .. //depot/projects/uart/arm/sa11x0/assabet_machdep.c#2 integrate .. //depot/projects/uart/arm/xscale/i80321/iq31244_machdep.c#4 integrate .. //depot/projects/uart/compat/pecoff/imgact_pecoff.c#4 integrate .. //depot/projects/uart/conf/NOTES#21 integrate .. //depot/projects/uart/conf/kmod.mk#9 integrate .. //depot/projects/uart/ddb/db_ps.c#7 integrate .. //depot/projects/uart/i386/i386/busdma_machdep.c#11 integrate .. //depot/projects/uart/i386/i386/genassym.c#4 integrate .. //depot/projects/uart/i386/i386/locore.s#7 integrate .. //depot/projects/uart/i386/i386/machdep.c#11 integrate .. //depot/projects/uart/i386/include/param.h#3 integrate .. //depot/projects/uart/i386/linux/linux_sysvec.c#4 integrate .. //depot/projects/uart/ia64/ia64/genassym.c#7 integrate .. //depot/projects/uart/ia64/ia64/machdep.c#17 integrate .. //depot/projects/uart/ia64/include/param.h#5 integrate .. //depot/projects/uart/kern/imgact_aout.c#4 integrate .. //depot/projects/uart/kern/init_main.c#8 integrate .. //depot/projects/uart/kern/kern_fork.c#8 integrate .. //depot/projects/uart/kern/kern_proc.c#8 integrate .. //depot/projects/uart/netgraph/atm/sscop/ng_sscop_cust.h#3 integrate .. //depot/projects/uart/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c#3 integrate .. //depot/projects/uart/netgraph/ng_one2many.c#3 integrate .. //depot/projects/uart/pc98/i386/machdep.c#9 integrate .. //depot/projects/uart/powerpc/include/param.h#5 integrate .. //depot/projects/uart/powerpc/powerpc/genassym.c#3 integrate .. //depot/projects/uart/powerpc/powerpc/machdep.c#6 integrate .. //depot/projects/uart/sparc64/include/param.h#4 integrate .. //depot/projects/uart/sparc64/sparc64/genassym.c#6 integrate .. //depot/projects/uart/sparc64/sparc64/machdep.c#8 integrate .. //depot/projects/uart/sys/proc.h#10 integrate .. //depot/projects/uart/sys/systm.h#8 integrate .. //depot/projects/uart/sys/user.h#3 integrate .. //depot/projects/uart/vm/swap_pager.c#14 integrate .. //depot/projects/uart/vm/vm_extern.h#5 integrate .. //depot/projects/uart/vm/vm_glue.c#9 integrate .. //depot/projects/uart/vm/vm_pageout.h#5 integrate Differences ... ==== //depot/projects/uart/alpha/alpha/genassym.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/genassym.c,v 1.44 2004/04/05 21:00:49 imp Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/genassym.c,v 1.45 2004/11/20 02:28:14 das Exp $"); #include #include @@ -52,12 +52,12 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include #include ==== //depot/projects/uart/alpha/alpha/machdep.c#11 (text+ko) ==== @@ -88,7 +88,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.224 2004/11/05 19:16:43 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/machdep.c,v 1.225 2004/11/20 02:29:36 das Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -160,7 +160,6 @@ struct mtx icu_lock; -struct user *proc0uarea; vm_offset_t proc0kstack; char machine[] = "alpha"; @@ -848,11 +847,9 @@ proc_linkup(&proc0, &ksegrp0, &thread0); /* - * Init mapping for u page(s) for proc 0 + * Init mapping for kernel stack for proc 0 */ - proc0uarea = (struct user *)pmap_steal_memory(UAREA_PAGES * PAGE_SIZE); proc0kstack = pmap_steal_memory(KSTACK_PAGES * PAGE_SIZE); - proc0.p_uarea = proc0uarea; thread0.td_kstack = proc0kstack; thread0.td_pcb = (struct pcb *) (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; @@ -861,7 +858,6 @@ * Setup the per-CPU data for the bootstrap cpu. */ { - /* This is not a 'struct user' */ size_t sz = round_page(KSTACK_PAGES * PAGE_SIZE); pcpup = (struct pcpu *) pmap_steal_memory(sz); pcpu_init(pcpup, 0, sz); ==== //depot/projects/uart/alpha/alpha/mp_machdep.c#10 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.53 2004/11/05 19:16:43 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/alpha/alpha/mp_machdep.c,v 1.54 2004/11/20 02:29:36 das Exp $"); #include "opt_kstack_pages.h" @@ -233,7 +233,7 @@ if (bootverbose) printf("smp_start_secondary: starting cpu %d\n", pal_id); - sz = round_page((UAREA_PAGES + KSTACK_PAGES) * PAGE_SIZE); + sz = KSTACK_PAGES * PAGE_SIZE; pcpu = malloc(sz, M_TEMP, M_NOWAIT); if (!pcpu) { printf("smp_start_secondary: can't allocate memory\n"); ==== //depot/projects/uart/alpha/include/param.h#4 (text+ko) ==== @@ -1,4 +1,4 @@ -/* $FreeBSD: src/sys/alpha/include/param.h,v 1.36 2004/09/02 18:59:14 scottl Exp $ */ +/* $FreeBSD: src/sys/alpha/include/param.h,v 1.37 2004/11/20 02:29:49 das Exp $ */ /* From: NetBSD: param.h,v 1.20 1997/09/19 13:52:53 leo Exp */ /* @@ -117,7 +117,6 @@ #define KSTACK_PAGES 2 /* pages of kstack (with pcb) */ #endif #define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */ -#define UAREA_PAGES 1 /* pages of u-area */ /* ==== //depot/projects/uart/amd64/amd64/busdma_machdep.c#8 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.60 2004/11/10 03:49:24 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/busdma_machdep.c,v 1.61 2004/11/19 17:51:29 scottl Exp $"); #include #include @@ -135,8 +135,7 @@ static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, bus_size_t size); static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage); -static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr, - bus_size_t len); +static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr); /* * Return true if a match is made. @@ -147,18 +146,15 @@ * to check for a match, if there is no filter callback then assume a match. */ static __inline int -run_filter(bus_dma_tag_t dmat, bus_addr_t paddr, bus_size_t len) +run_filter(bus_dma_tag_t dmat, bus_addr_t paddr) { - bus_size_t bndy; int retval; retval = 0; - bndy = dmat->boundary; do { if (((paddr > dmat->lowaddr && paddr <= dmat->highaddr) - || ((paddr & (dmat->alignment - 1)) != 0) - || ((paddr & bndy) != ((paddr + len) & bndy))) + || ((paddr & (dmat->alignment - 1)) != 0)) && (dmat->filter == NULL || (*dmat->filter)(dmat->filterarg, paddr) != 0)) retval = 1; @@ -586,7 +582,7 @@ while (vaddr < vendaddr) { paddr = pmap_kextract(vaddr); - if (run_filter(dmat, paddr, 0) != 0) { + if (run_filter(dmat, paddr) != 0) { needbounce = 1; map->pagesneeded++; } @@ -647,7 +643,7 @@ sgsize = (baddr - curaddr); } - if (map->pagesneeded != 0 && run_filter(dmat, curaddr, sgsize)) + if (map->pagesneeded != 0 && run_filter(dmat, curaddr)) curaddr = add_bounce_page(dmat, map, vaddr, sgsize); /* ==== //depot/projects/uart/amd64/amd64/genassym.c#5 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.154 2004/05/16 22:43:57 peter Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/genassym.c,v 1.155 2004/11/20 02:30:59 das Exp $"); #include "opt_compat.h" #include "opt_kstack_pages.h" @@ -50,14 +50,12 @@ #include #include #include -#include #include #include #include #include #include #include -#include #include #include #include @@ -67,6 +65,7 @@ #include #include #include +#include #include #include #include @@ -76,7 +75,6 @@ ASSYM(VM_PMAP, offsetof(struct vmspace, vm_pmap)); ASSYM(PM_ACTIVE, offsetof(struct pmap, pm_active)); ASSYM(P_SFLAG, offsetof(struct proc, p_sflag)); -ASSYM(P_UAREA, offsetof(struct proc, p_uarea)); ASSYM(TD_FLAGS, offsetof(struct thread, td_flags)); ASSYM(TD_PCB, offsetof(struct thread, td_pcb)); @@ -88,7 +86,6 @@ ASSYM(V_TRAP, offsetof(struct vmmeter, v_trap)); ASSYM(V_SYSCALL, offsetof(struct vmmeter, v_syscall)); ASSYM(V_INTR, offsetof(struct vmmeter, v_intr)); -ASSYM(UAREA_PAGES, UAREA_PAGES); ASSYM(KSTACK_PAGES, KSTACK_PAGES); ASSYM(PAGE_SIZE, PAGE_SIZE); ASSYM(NPTEPG, NPTEPG); ==== //depot/projects/uart/amd64/amd64/machdep.c#10 (text+ko) ==== @@ -39,7 +39,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.622 2004/10/28 12:16:03 simokawa Exp $"); +__FBSDID("$FreeBSD: src/sys/amd64/amd64/machdep.c,v 1.623 2004/11/20 02:29:23 das Exp $"); #include "opt_atalk.h" #include "opt_atpic.h" @@ -1114,9 +1114,6 @@ #error "have you forgotten the isa device?"; #endif - proc0.p_uarea = (struct user *)(physfree + KERNBASE); - bzero(proc0.p_uarea, UAREA_PAGES * PAGE_SIZE); - physfree += UAREA_PAGES * PAGE_SIZE; thread0.td_kstack = physfree + KERNBASE; bzero((void *)thread0.td_kstack, KSTACK_PAGES * PAGE_SIZE); physfree += KSTACK_PAGES * PAGE_SIZE; ==== //depot/projects/uart/amd64/include/param.h#4 (text+ko) ==== @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)param.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/amd64/include/param.h,v 1.14 2004/09/02 18:59:14 scottl Exp $ + * $FreeBSD: src/sys/amd64/include/param.h,v 1.15 2004/11/20 02:29:49 das Exp $ */ /* @@ -125,7 +125,6 @@ #define KSTACK_PAGES 4 /* pages of kstack (with pcb) */ #endif #define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */ -#define UAREA_PAGES 1 /* holds struct user WITHOUT PCB (see def.) */ /* ==== //depot/projects/uart/arm/arm/genassym.c#3 (text+ko) ==== @@ -26,12 +26,11 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/genassym.c,v 1.3 2004/11/12 21:49:05 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/genassym.c,v 1.4 2004/11/20 02:30:59 das Exp $"); #include #include #include #include -#include #include #include #include @@ -42,6 +41,7 @@ #include #include #include +#include #include #include #include @@ -94,7 +94,6 @@ ASSYM(TF_R0, offsetof(struct trapframe, tf_r0)); ASSYM(TF_R1, offsetof(struct trapframe, tf_r1)); ASSYM(TF_PC, offsetof(struct trapframe, tf_pc)); -ASSYM(P_UAREA, offsetof(struct proc, p_uarea)); ASSYM(P_PID, offsetof(struct proc, p_pid)); ASSYM(P_FLAG, offsetof(struct proc, p_flag)); @@ -105,7 +104,6 @@ #endif ASSYM(TDF_ASTPENDING, TDF_ASTPENDING); ASSYM(TDF_NEEDRESCHED, TDF_NEEDRESCHED); -ASSYM(USER_SIZE, sizeof(struct user)); ASSYM(P_TRACED, P_TRACED); ASSYM(P_SIGEVENT, P_SIGEVENT); ASSYM(P_PROFIL, P_PROFIL); ==== //depot/projects/uart/arm/arm/trap.c#3 (text+ko) ==== @@ -82,7 +82,7 @@ #include "opt_ktrace.h" #include -__FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.3 2004/11/05 19:57:10 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/trap.c,v 1.4 2004/11/20 00:55:57 cognet Exp $"); #include @@ -247,6 +247,7 @@ td = curthread; p = td->td_proc; + atomic_add_int(&cnt.v_trap, 1); /* Data abort came from user mode? */ user = TRAP_USERMODE(tf); @@ -711,6 +712,7 @@ td = curthread; p = td->td_proc; + atomic_add_int(&cnt.v_trap, 1); if (TRAP_USERMODE(tf)) { td->td_frame = tf; @@ -861,6 +863,7 @@ int locked = 0; u_int sticks = 0; + atomic_add_int(&cnt.v_syscall, 1); sticks = td->td_sticks; if (td->td_ucred != td->td_proc->p_ucred) cred_update_thread(td); ==== //depot/projects/uart/arm/arm/vm_machdep.c#3 (text+ko) ==== @@ -81,7 +81,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.6 2004/11/08 00:43:46 alc Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/arm/vm_machdep.c,v 1.7 2004/11/20 02:31:23 das Exp $"); #include #include @@ -145,8 +145,7 @@ struct trapframe *tf; struct switchframe *sf; struct mdproc *mdp2; - vm_offset_t uarea = td2->td_kstack + td2->td_kstack_pages * PAGE_SIZE - - USPACE; + vm_offset_t uarea = td2->td_kstack + td2->td_kstack_pages * PAGE_SIZE; pcb1 = td1->td_pcb; pcb2 = (struct pcb *)(td2->td_kstack + td2->td_kstack_pages * PAGE_SIZE) - 1; @@ -305,7 +304,7 @@ tf->tf_r0 = 0; td->td_pcb->un_32.pcb32_sp = (u_int)sf; td->td_pcb->un_32.pcb32_und_sp = td->td_kstack + td->td_kstack_pages - * PAGE_SIZE - USPACE + USPACE_UNDEF_STACK_TOP; + * PAGE_SIZE + USPACE_UNDEF_STACK_TOP; } /* @@ -336,7 +335,7 @@ td->td_pcb = (struct pcb *)(td->td_kstack + td->td_kstack_pages * PAGE_SIZE) - 1; td->td_frame = (struct trapframe *) - ((u_int)td->td_kstack + td->td_kstack_pages * PAGE_SIZE - USPACE + + ((u_int)td->td_kstack + td->td_kstack_pages * PAGE_SIZE + USPACE_SVC_STACK_TOP - sizeof(struct pcb)) - 1; #ifdef __XSCALE__ pmap_use_minicache(td->td_kstack, td->td_kstack_pages * PAGE_SIZE); ==== //depot/projects/uart/arm/include/param.h#4 (text+ko) ==== @@ -35,7 +35,7 @@ * SUCH DAMAGE. * * from: @(#)param.h 5.8 (Berkeley) 6/28/91 - * $FreeBSD: src/sys/arm/include/param.h,v 1.7 2004/11/04 19:19:21 cognet Exp $ + * $FreeBSD: src/sys/arm/include/param.h,v 1.8 2004/11/20 02:31:37 das Exp $ */ /* @@ -98,14 +98,6 @@ #define KSTACK_PAGES 2 #endif /* !KSTACK_PAGES */ -#ifndef UAREA_PAGES -#define UAREA_PAGES 1 -#endif /* !UAREA_PAGES */ - -#ifndef USPACE -#define USPACE (UAREA_PAGES * PAGE_SIZE) /* total size of u-area */ -#endif - #ifndef FPCONTEXTSIZE #define FPCONTEXTSIZE (0x100) #endif @@ -114,7 +106,7 @@ #define KSTACK_GUARD_PAGES 1 #endif /* !KSTACK_GUARD_PAGES */ -#define USPACE_SVC_STACK_TOP (USPACE) +#define USPACE_SVC_STACK_TOP 0 #define USPACE_SVC_STACK_BOTTOM (USPACE_SVC_STACK_TOP - 0x1000) #define USPACE_UNDEF_STACK_TOP (USPACE_SVC_STACK_BOTTOM - 0x10) #define USPACE_UNDEF_STACK_BOTTOM (FPCONTEXTSIZE + 10) ==== //depot/projects/uart/arm/sa11x0/assabet_machdep.c#2 (text+ko) ==== @@ -47,7 +47,7 @@ #include -__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.5 2004/10/11 14:41:38 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/sa11x0/assabet_machdep.c,v 1.6 2004/11/20 02:29:24 das Exp $"); #include "opt_md.h" @@ -180,7 +180,6 @@ { struct pcpu *pc; struct pv_addr kernel_l1pt; - struct pv_addr proc0_uarea; struct pv_addr md_addr; struct pv_addr md_bla; int loop; @@ -275,8 +274,8 @@ valloc_pages(abtstack, ABT_STACK_SIZE); valloc_pages(undstack, UND_STACK_SIZE); valloc_pages(kernelstack, KSTACK_PAGES); + lastalloced = kernelstack.pv_va; - /* * Allocate memory for the l1 and l2 page tables. The scheme to avoid * wasting memory by allocating the l1pt on the first 16k memory was @@ -284,10 +283,6 @@ * this to work (which is supposed to be the case). */ - /* Allocate pages for process 0 kernel stack and uarea */ - valloc_pages(proc0_uarea, UAREA_PAGES); - lastalloced = proc0_uarea.pv_va; - /* * Now we start construction of the L1 page table * We start by mapping the L2 page tables into the L1. @@ -324,9 +319,6 @@ UND_STACK_SIZE * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); pmap_map_chunk(l1pagetable, kernelstack.pv_va, kernelstack.pv_pa, KSTACK_PAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); - pmap_map_chunk(l1pagetable, proc0_uarea.pv_va, proc0_uarea.pv_pa, - UAREA_PAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); - pmap_map_chunk(l1pagetable, kernel_l1pt.pv_va, kernel_l1pt.pv_pa, L1_TABLE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_PAGETABLE); @@ -393,7 +385,6 @@ /* Set stack for exception handlers */ proc_linkup(&proc0, &ksegrp0, &thread0); - proc0.p_uarea = (struct user *) proc0_uarea.pv_va; thread0.td_kstack = kernelstack.pv_va; thread0.td_pcb = (struct pcb *) (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; ==== //depot/projects/uart/arm/xscale/i80321/iq31244_machdep.c#4 (text+ko) ==== @@ -48,7 +48,7 @@ #include "opt_msgbuf.h" #include -__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.3 2004/11/10 22:09:39 cognet Exp $"); +__FBSDID("$FreeBSD: src/sys/arm/xscale/i80321/iq31244_machdep.c,v 1.4 2004/11/20 02:29:24 das Exp $"); #define _ARM32_BUS_DMA_PRIVATE #include @@ -198,7 +198,6 @@ initarm(void *arg, void *arg2) { struct pv_addr kernel_l1pt; - struct pv_addr proc0_uarea; int loop; u_int kerneldatasize, symbolsize; u_int l1pagetable; @@ -298,9 +297,6 @@ * this to work (which is supposed to be the case). */ - /* Allocate pages for process 0 kernel stack and uarea */ - valloc_pages(proc0_uarea, UAREA_PAGES); - /* * Now we start construction of the L1 page table * We start by mapping the L2 page tables into the L1. @@ -333,8 +329,6 @@ UND_STACK_SIZE * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); pmap_map_chunk(l1pagetable, kernelstack.pv_va, kernelstack.pv_pa, KSTACK_PAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); - pmap_map_chunk(l1pagetable, proc0_uarea.pv_va, proc0_uarea.pv_pa, - UAREA_PAGES * PAGE_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); pmap_map_chunk(l1pagetable, msgbufpv.pv_va, msgbufpv.pv_pa, MSGBUF_SIZE, VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); @@ -405,7 +399,6 @@ undefined_init(); proc_linkup(&proc0, &ksegrp0, &thread0); - proc0.p_uarea = (struct user *) proc0_uarea.pv_va; thread0.td_kstack = kernelstack.pv_va; thread0.td_pcb = (struct pcb *) (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; ==== //depot/projects/uart/compat/pecoff/imgact_pecoff.c#4 (text+ko) ==== @@ -41,7 +41,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/compat/pecoff/imgact_pecoff.c,v 1.33 2004/06/05 02:18:27 tjr Exp $"); +__FBSDID("$FreeBSD: src/sys/compat/pecoff/imgact_pecoff.c,v 1.34 2004/11/20 02:32:04 das Exp $"); #include #include @@ -79,6 +79,8 @@ #include "opt_pecoff.h" +#define uarea_pages 1 + #define PECOFF_PE_SIGNATURE "PE\0\0" static int pecoff_fixup(register_t **, struct image_params *); static int @@ -189,9 +191,8 @@ if (tempuser == NULL) return (ENOMEM); PROC_LOCK(p); - fill_kinfo_proc(p, &p->p_uarea->u_kproc); + fill_user(p, (struct user *)tempuser); PROC_UNLOCK(p); - bcopy(p->p_uarea, tempuser, sizeof(struct user)); bcopy(td->td_frame, tempuser + ctob(uarea_pages) + ((caddr_t)td->td_frame - (caddr_t)td->td_kstack), ==== //depot/projects/uart/conf/NOTES#21 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/sys/conf/NOTES,v 1.1288 2004/11/12 19:44:30 peter Exp $ +# $FreeBSD: src/sys/conf/NOTES,v 1.1289 2004/11/20 02:32:15 das Exp $ # # NOTES -- Lines that can be cut/pasted into kernel and hints configs. # @@ -2185,7 +2185,7 @@ options SW_WATCHDOG # -# Disable swapping of upages and stack pages. This option removes all +# Disable swapping of stack pages. This option removes all # code which actually performs swapping, so it's not possible to turn # it back on at run-time. # ==== //depot/projects/uart/conf/kmod.mk#9 (text+ko) ==== @@ -1,5 +1,5 @@ # From: @(#)bsd.prog.mk 5.26 (Berkeley) 6/25/91 -# $FreeBSD: src/sys/conf/kmod.mk,v 1.172 2004/10/24 08:26:48 ru Exp $ +# $FreeBSD: src/sys/conf/kmod.mk,v 1.173 2004/11/20 06:09:11 marcel Exp $ # # The include file handles building and installing loadable # kernel modules. @@ -288,17 +288,15 @@ .endfor .endif -MFILES?= kern/bus_if.m kern/device_if.m dev/iicbus/iicbb_if.m \ - dev/iicbus/iicbus_if.m isa/isa_if.m \ - libkern/iconv_converter_if.m \ - dev/acpica/acpi_if.m dev/eisa/eisa_if.m dev/mii/miibus_if.m \ - dev/ofw/ofw_bus_if.m \ - dev/pccard/card_if.m dev/pccard/power_if.m dev/pci/pci_if.m \ - dev/pci/pcib_if.m dev/ppbus/ppbus_if.m dev/smbus/smbus_if.m \ - dev/usb/usb_if.m dev/sound/pcm/ac97_if.m dev/sound/pcm/channel_if.m \ - dev/sound/pcm/feeder_if.m dev/sound/pcm/mixer_if.m pci/agp_if.m \ - opencrypto/crypto_if.m pc98/pc98/canbus_if.m dev/uart/uart_if.m \ - sparc64/pci/ofw_pci_if.m +MFILES?= dev/acpica/acpi_if.m dev/eisa/eisa_if.m dev/iicbus/iicbb_if.m \ + dev/iicbus/iicbus_if.m dev/mii/miibus_if.m dev/ofw/ofw_bus_if.m \ + dev/pccard/card_if.m dev/pccard/power_if.m dev/pci/pci_if.m \ + dev/pci/pcib_if.m dev/ppbus/ppbus_if.m dev/smbus/smbus_if.m \ + dev/sound/pcm/ac97_if.m dev/sound/pcm/channel_if.m \ + dev/sound/pcm/feeder_if.m dev/sound/pcm/mixer_if.m dev/uart/uart_if.m \ + dev/usb/usb_if.m isa/isa_if.m kern/bus_if.m kern/device_if.m \ + libkern/iconv_converter_if.m opencrypto/crypto_if.m \ + pc98/pc98/canbus_if.m pci/agp_if.m sparc64/pci/ofw_pci_if.m .for _srcsrc in ${MFILES} .for _ext in c h ==== //depot/projects/uart/ddb/db_ps.c#7 (text+ko) ==== @@ -28,7 +28,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/ddb/db_ps.c,v 1.54 2004/11/01 22:15:14 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/ddb/db_ps.c,v 1.55 2004/11/20 02:32:42 das Exp $"); #include #include @@ -66,7 +66,7 @@ p = &proc0; db_setup_paging(db_simple_pager, &quit, db_lines_per_page); - db_printf(" pid proc uarea uid ppid pgrp flag stat wmesg wchan cmd\n"); + db_printf(" pid proc uid ppid pgrp flag stat wmesg wchan cmd\n"); while (--np >= 0 && !quit) { if (p == NULL) { printf("oops, ran out of processes early!\n"); @@ -95,8 +95,8 @@ state = "Unkn"; break; } - db_printf("%5d %8p %8p %4d %5d %5d %07x %s", - p->p_pid, (volatile void *)p, (void *)p->p_uarea, + db_printf("%5d %8p %4d %5d %5d %07x %s", + p->p_pid, (volatile void *)p, p->p_ucred != NULL ? p->p_ucred->cr_ruid : 0, pp->p_pid, p->p_pgrp != NULL ? p->p_pgrp->pg_id : 0, p->p_flag, state); ==== //depot/projects/uart/i386/i386/busdma_machdep.c#11 (text+ko) ==== @@ -25,7 +25,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.64 2004/11/09 16:03:27 scottl Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/busdma_machdep.c,v 1.65 2004/11/19 17:56:22 scottl Exp $"); #include #include @@ -135,8 +135,7 @@ static bus_addr_t add_bounce_page(bus_dma_tag_t dmat, bus_dmamap_t map, vm_offset_t vaddr, bus_size_t size); static void free_bounce_page(bus_dma_tag_t dmat, struct bounce_page *bpage); -static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr, - bus_size_t len); +static __inline int run_filter(bus_dma_tag_t dmat, bus_addr_t paddr); /* * Return true if a match is made. @@ -147,18 +146,15 @@ * to check for a match, if there is no filter callback then assume a match. */ static __inline int -run_filter(bus_dma_tag_t dmat, bus_addr_t paddr, bus_size_t len) +run_filter(bus_dma_tag_t dmat, bus_addr_t paddr) { - bus_size_t bndy; int retval; retval = 0; - bndy = dmat->boundary; do { if (((paddr > dmat->lowaddr && paddr <= dmat->highaddr) - || ((paddr & (dmat->alignment - 1)) != 0) - || ((paddr & bndy) != ((paddr + len) & bndy))) + || ((paddr & (dmat->alignment - 1)) != 0)) && (dmat->filter == NULL || (*dmat->filter)(dmat->filterarg, paddr) != 0)) retval = 1; @@ -586,7 +582,7 @@ while (vaddr < vendaddr) { paddr = pmap_kextract(vaddr); - if (run_filter(dmat, paddr, 0) != 0) { + if (run_filter(dmat, paddr) != 0) { needbounce = 1; map->pagesneeded++; } @@ -647,7 +643,7 @@ sgsize = (baddr - curaddr); } - if (map->pagesneeded != 0 && run_filter(dmat, curaddr, sgsize)) + if (map->pagesneeded != 0 && run_filter(dmat, curaddr)) curaddr = add_bounce_page(dmat, map, vaddr, sgsize); /* ==== //depot/projects/uart/i386/i386/genassym.c#4 (text+ko) ==== @@ -33,7 +33,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/genassym.c,v 1.148 2004/05/23 16:50:55 bde Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/genassym.c,v 1.149 2004/11/20 02:30:59 das Exp $"); #include "opt_apic.h" #include "opt_compat.h" @@ -50,8 +50,8 @@ #include #include #include +#include #include -#include #include #include #include @@ -59,7 +59,6 @@ #include #include #include -#include #include #include #include @@ -71,6 +70,7 @@ #include #endif #include +#include #include #include #include @@ -79,7 +79,6 @@ ASSYM(VM_PMAP, offsetof(struct vmspace, vm_pmap)); ASSYM(PM_ACTIVE, offsetof(struct pmap, pm_active)); ASSYM(P_SFLAG, offsetof(struct proc, p_sflag)); -ASSYM(P_UAREA, offsetof(struct proc, p_uarea)); ASSYM(TD_FLAGS, offsetof(struct thread, td_flags)); ASSYM(TD_PCB, offsetof(struct thread, td_pcb)); @@ -96,7 +95,6 @@ ASSYM(V_SYSCALL, offsetof(struct vmmeter, v_syscall)); ASSYM(V_INTR, offsetof(struct vmmeter, v_intr)); /* ASSYM(UPAGES, UPAGES);*/ -ASSYM(UAREA_PAGES, UAREA_PAGES); ASSYM(KSTACK_PAGES, KSTACK_PAGES); ASSYM(PAGE_SIZE, PAGE_SIZE); ASSYM(NPTEPG, NPTEPG); ==== //depot/projects/uart/i386/i386/locore.s#7 (text+ko) ==== @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * from: @(#)locore.s 7.3 (Berkeley) 5/13/91 - * $FreeBSD: src/sys/i386/i386/locore.s,v 1.184 2004/07/08 22:35:34 brian Exp $ + * $FreeBSD: src/sys/i386/i386/locore.s,v 1.185 2004/11/20 02:29:24 das Exp $ * * originally from: locore.s, by William F. Jolitz * @@ -129,10 +129,10 @@ #endif KPTphys: .long 0 /* phys addr of kernel page tables */ - .globl proc0uarea, proc0kstack -proc0uarea: .long 0 /* address of proc 0 uarea space */ + .globl proc0kstack +proc0uarea: .long 0 /* address of proc 0 uarea (unused)*/ proc0kstack: .long 0 /* address of proc 0 kstack space */ -p0upa: .long 0 /* phys addr of proc0's UAREA */ +p0upa: .long 0 /* phys addr of proc0 UAREA (unused) */ p0kpa: .long 0 /* phys addr of proc0's STACK */ vm86phystk: .long 0 /* PA of vm86/bios stack */ @@ -748,12 +748,7 @@ ALLOCPAGES(NPGPTD) movl %esi,R(IdlePTD) -/* Allocate UPAGES */ - ALLOCPAGES(UAREA_PAGES) - movl %esi,R(p0upa) - addl $KERNBASE, %esi - movl %esi, R(proc0uarea) - +/* Allocate KSTACK */ ALLOCPAGES(KSTACK_PAGES) movl %esi,R(p0kpa) addl $KERNBASE, %esi @@ -847,11 +842,6 @@ movl $NPGPTD, %ecx fillkptphys($PG_RW) -/* Map proc0's UPAGES in the physical way ... */ - movl R(p0upa), %eax - movl $(UAREA_PAGES), %ecx - fillkptphys($PG_RW) - /* Map proc0's KSTACK in the physical way ... */ movl R(p0kpa), %eax movl $(KSTACK_PAGES), %ecx ==== //depot/projects/uart/i386/i386/machdep.c#11 (text+ko) ==== @@ -38,7 +38,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/i386/machdep.c,v 1.601 2004/11/16 20:42:31 jhb Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/i386/machdep.c,v 1.602 2004/11/20 02:29:24 das Exp $"); #include "opt_apic.h" #include "opt_atalk.h" @@ -1233,7 +1233,6 @@ static struct i386tss dblfault_tss; static char dblfault_stack[PAGE_SIZE]; -extern struct user *proc0uarea; extern vm_offset_t proc0kstack; @@ -1956,7 +1955,6 @@ int gsel_tss, metadata_missing, off, x; struct pcpu *pc; - proc0.p_uarea = proc0uarea; thread0.td_kstack = proc0kstack; thread0.td_pcb = (struct pcb *) (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; ==== //depot/projects/uart/i386/include/param.h#3 (text+ko) ==== @@ -30,7 +30,7 @@ * SUCH DAMAGE. * * from: @(#)param.h 5.8 (Berkeley) 6/28/91 - * $FreeBSD: src/sys/i386/include/param.h,v 1.78 2004/09/02 18:59:15 scottl Exp $ + * $FreeBSD: src/sys/i386/include/param.h,v 1.79 2004/11/20 02:29:49 das Exp $ */ /* @@ -103,7 +103,6 @@ #define KSTACK_PAGES 2 /* Includes pcb! */ #endif #define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */ -#define UAREA_PAGES 1 /* holds struct user WITHOUT PCB (see def.) */ /* * Ceiling on amount of swblock kva space, can be changed via ==== //depot/projects/uart/i386/linux/linux_sysvec.c#4 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/i386/linux/linux_sysvec.c,v 1.132 2004/07/15 08:26:05 phk Exp $"); +__FBSDID("$FreeBSD: src/sys/i386/linux/linux_sysvec.c,v 1.133 2004/11/20 02:32:04 das Exp $"); /* XXX we use functions that might not exist. */ #include "opt_compat.h" @@ -94,6 +94,8 @@ #define LINUX_SYS_linux_rt_sendsig 0 #define LINUX_SYS_linux_sendsig 0 +#define uarea_pages 1 + extern char linux_sigcode[]; extern int linux_szsigcode; @@ -746,9 +748,8 @@ if (tempuser == NULL) return (ENOMEM); PROC_LOCK(p); - fill_kinfo_proc(p, &p->p_uarea->u_kproc); + fill_user(p, (struct user *)tempuser); PROC_UNLOCK(p); - bcopy(p->p_uarea, tempuser, sizeof(struct user)); bcopy(td->td_frame, tempuser + ctob(uarea_pages) + ((caddr_t)td->td_frame - (caddr_t)td->td_kstack), ==== //depot/projects/uart/ia64/ia64/genassym.c#7 (text+ko) ==== @@ -29,7 +29,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/ia64/ia64/genassym.c,v 1.40 2004/09/25 04:27:44 marcel Exp $ + * $FreeBSD: src/sys/ia64/ia64/genassym.c,v 1.41 2004/11/20 02:28:14 das Exp $ */ #include "opt_compat.h" @@ -52,12 +52,12 @@ #include #include #include +#include #include #include #include #include #include -#include #include #include ==== //depot/projects/uart/ia64/ia64/machdep.c#17 (text+ko) ==== @@ -26,7 +26,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.190 2004/10/06 02:43:28 marcel Exp $"); +__FBSDID("$FreeBSD: src/sys/ia64/ia64/machdep.c,v 1.191 2004/11/20 02:29:24 das Exp $"); #include "opt_compat.h" #include "opt_ddb.h" @@ -102,7 +102,6 @@ struct pcpu early_pcpu; extern char kstack[]; -struct user *proc0uarea; vm_offset_t proc0kstack; extern u_int64_t kernel_text[], _end[]; @@ -716,11 +715,9 @@ proc_linkup(&proc0, &ksegrp0, &thread0); /* - * Init mapping for u page(s) for proc 0 + * Init mapping for kernel stack for proc 0 */ - proc0uarea = (struct user *)pmap_steal_memory(UAREA_PAGES * PAGE_SIZE); proc0kstack = (vm_offset_t)kstack; - proc0.p_uarea = proc0uarea; thread0.td_kstack = proc0kstack; thread0.td_pcb = (struct pcb *) (thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1; >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Nov 20 09:17:44 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 0D51E16A4D0; Sat, 20 Nov 2004 09:17:44 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BF90F16A4CE for ; Sat, 20 Nov 2004 09:17:43 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 91D3243D1D for ; Sat, 20 Nov 2004 09:17:43 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK9HhKN028771 for ; Sat, 20 Nov 2004 09:17:43 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK9HhB9028768 for perforce@freebsd.org; Sat, 20 Nov 2004 09:17:43 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 09:17:43 GMT Message-Id: <200411200917.iAK9HhB9028768@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65542 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 09:17:44 -0000 http://perforce.freebsd.org/chv.cgi?CH=65542 Change 65542 by davidxu@davidxu_alona on 2004/11/20 09:17:36 ia64 port. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/ia64/pthread_md.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/include/pthread_md.h#2 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/ia64/pthread_md.c#2 (text+ko) ==== @@ -1,5 +1,6 @@ /* * Copyright (c) 2003 Daniel Eischen + * Copyright (c) 2005 David Xu * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -27,7 +28,8 @@ */ #include -#include +#include +#include "rtld_tls.h" #include "pthread_md.h" /* @@ -37,39 +39,33 @@ _tcb_ctor(struct pthread *thread, int initial) { struct tcb *tcb; + void *oldtls; - if ((tcb = malloc(sizeof(struct tcb))) != NULL) { - bzero(tcb, sizeof(struct tcb)); - tcb->tcb_thread = thread; - /* Allocate TDV */ + if (initial) + oldtls = _tp; + else + oldtls = NULL; + +#if 1 + if ((tcb = malloc(sizeof(struct tcb))) != NULL) { + tcb->tcb_tdv = 0; + tcb->tcb_thread = thread; + } +#else + tcb = _rtld_allocate_tls(oldtls, sizeof(struct tcb), 16); + if (tcb) { + tcb->tcb_thread = thread; } +#endif return (tcb); } void _tcb_dtor(struct tcb *tcb) { - /* Free TDV */ +#if 1 free(tcb); -} - -struct kcb * -_kcb_ctor(struct kse *kse) -{ - struct kcb *kcb; - - if ((kcb = malloc(sizeof(struct kcb))) != NULL) { - bzero(kcb, sizeof(struct kcb)); - kcb->kcb_faketcb.tcb_isfake = 1; - kcb->kcb_faketcb.tcb_tmbx.tm_flags = TMF_NOUPCALL; - kcb->kcb_curtcb = &kcb->kcb_faketcb; - kcb->kcb_kse = kse; - } - return (kcb); -} - -void -_kcb_dtor(struct kcb *kcb) -{ - free(kcb); +#else + _rtld_free_tls(tcb, sizeof(tcb), 16); +#endif } ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/include/pthread_md.h#2 (text+ko) ==== @@ -29,224 +29,50 @@ #ifndef _PTHREAD_MD_H_ #define _PTHREAD_MD_H_ -#include #include -#include -#define KSE_STACKSIZE 16384 #define DTV_OFFSET offsetof(struct tcb, tcb_tp.tp_tdv) -#define THR_GETCONTEXT(ucp) _ia64_save_context(&(ucp)->uc_mcontext) -#define THR_SETCONTEXT(ucp) PANIC("THR_SETCONTEXT() now in use!\n") - -#define PER_THREAD - -struct kcb; -struct kse; struct pthread; struct tcb; struct tdv; /* We don't know what this is yet? */ -/* - * tp points to one of these. We define the static TLS as an array - * of long double to enforce 16-byte alignment of the TLS memory, - * struct ia64_tp, struct tcb and also struct kcb. Both static and - * dynamic allocation of any of these structures will result in a - * valid, well-aligned thread pointer. - */ -struct ia64_tp { - struct tdv *tp_tdv; /* dynamic TLS */ - uint64_t _reserved_; - long double tp_tls[0]; /* static TLS */ -}; - struct tcb { - struct kse_thr_mailbox tcb_tmbx; + struct tdv *tcb_tdv; /* dynamic TLS */ struct pthread *tcb_thread; - struct kcb *tcb_curkcb; - long tcb_isfake; - struct ia64_tp tcb_tp; }; -struct kcb { - struct kse_mailbox kcb_kmbx; - struct tcb kcb_faketcb; - struct tcb *kcb_curtcb; - struct kse *kcb_kse; -}; +register struct tcb *_tp __asm("%r13"); -register struct ia64_tp *_tp __asm("%r13"); +#define _tcb _tp -#define _tcb ((struct tcb*)((char*)(_tp) - offsetof(struct tcb, tcb_tp))) - /* - * The kcb and tcb constructors. + * The tcb constructors. */ struct tcb *_tcb_ctor(struct pthread *, int); void _tcb_dtor(struct tcb *); -struct kcb *_kcb_ctor(struct kse *kse); -void _kcb_dtor(struct kcb *); /* Called from the KSE to set its private data. */ static __inline void -_kcb_set(struct kcb *kcb) +_tcb_set(struct tcb *tcb) { - /* There is no thread yet; use the fake tcb. */ - _tp = &kcb->kcb_faketcb.tcb_tp; -} - -/* - * Get the current kcb. - * - * This can only be called while in a critical region; don't - * worry about having the kcb changed out from under us. - */ -static __inline struct kcb * -_kcb_get(void) -{ - return (_tcb->tcb_curkcb); -} - -/* - * Enter a critical region. - * - * Read and clear km_curthread in the kse mailbox. - */ -static __inline struct kse_thr_mailbox * -_kcb_critical_enter(void) -{ - struct kse_thr_mailbox *crit; - uint32_t flags; - - if (_tcb->tcb_isfake != 0) { - /* - * We already are in a critical region since - * there is no current thread. - */ - crit = NULL; - } else { - flags = _tcb->tcb_tmbx.tm_flags; - _tcb->tcb_tmbx.tm_flags |= TMF_NOUPCALL; - crit = _tcb->tcb_curkcb->kcb_kmbx.km_curthread; - _tcb->tcb_curkcb->kcb_kmbx.km_curthread = NULL; - _tcb->tcb_tmbx.tm_flags = flags; - } - return (crit); -} - -static __inline void -_kcb_critical_leave(struct kse_thr_mailbox *crit) -{ - /* No need to do anything if this is a fake tcb. */ - if (_tcb->tcb_isfake == 0) - _tcb->tcb_curkcb->kcb_kmbx.km_curthread = crit; -} - -static __inline int -_kcb_in_critical(void) -{ - uint32_t flags; - int ret; - - if (_tcb->tcb_isfake != 0) { - /* - * We are in a critical region since there is no - * current thread. - */ - ret = 1; - } else { - flags = _tcb->tcb_tmbx.tm_flags; - _tcb->tcb_tmbx.tm_flags |= TMF_NOUPCALL; - ret = (_tcb->tcb_curkcb->kcb_kmbx.km_curthread == NULL); - _tcb->tcb_tmbx.tm_flags = flags; - } - return (ret); + _tp = tcb; } -static __inline void -_tcb_set(struct kcb *kcb, struct tcb *tcb) -{ - if (tcb == NULL) - tcb = &kcb->kcb_faketcb; - kcb->kcb_curtcb = tcb; - tcb->tcb_curkcb = kcb; - _tp = &tcb->tcb_tp; -} - static __inline struct tcb * _tcb_get(void) { return (_tcb); } +extern int _thread_inited; + static __inline struct pthread * _get_curthread(void) { - return (_tcb->tcb_thread); -} - -/* - * Get the current kse. - * - * Like _kcb_get(), this can only be called while in a critical region. - */ -static __inline struct kse * -_get_curkse(void) -{ - return (_tcb->tcb_curkcb->kcb_kse); -} - -void _ia64_break_setcontext(mcontext_t *mc); -void _ia64_enter_uts(kse_func_t uts, struct kse_mailbox *km, void *stack, - size_t stacksz); -int _ia64_restore_context(mcontext_t *mc, intptr_t val, intptr_t *loc); -int _ia64_save_context(mcontext_t *mc); - -static __inline int -_thread_enter_uts(struct tcb *tcb, struct kcb *kcb) -{ - if (_ia64_save_context(&tcb->tcb_tmbx.tm_context.uc_mcontext) == 0) { - /* Make the fake tcb the current thread. */ - kcb->kcb_curtcb = &kcb->kcb_faketcb; - _tp = &kcb->kcb_faketcb.tcb_tp; - _ia64_enter_uts(kcb->kcb_kmbx.km_func, &kcb->kcb_kmbx, - kcb->kcb_kmbx.km_stack.ss_sp, - kcb->kcb_kmbx.km_stack.ss_size); - /* We should not reach here. */ - return (-1); - } - return (0); -} - -static __inline int -_thread_switch(struct kcb *kcb, struct tcb *tcb, int setmbox) -{ - mcontext_t *mc; - - _tcb_set(kcb, tcb); - mc = &tcb->tcb_tmbx.tm_context.uc_mcontext; - if (mc->mc_flags & _MC_FLAGS_ASYNC_CONTEXT) { - if (setmbox) { - mc->mc_flags |= _MC_FLAGS_KSE_SET_MBOX; - mc->mc_special.ifa = - (intptr_t)&kcb->kcb_kmbx.km_curthread; - mc->mc_special.isr = (intptr_t)&tcb->tcb_tmbx; - } - _ia64_break_setcontext(mc); - } else if (mc->mc_flags & _MC_FLAGS_SYSCALL_CONTEXT) { - if (setmbox) - kse_switchin(&tcb->tcb_tmbx, KSE_SWITCHIN_SETTMBX); - else - kse_switchin(&tcb->tcb_tmbx, 0); - } else { - if (setmbox) - _ia64_restore_context(mc, (intptr_t)&tcb->tcb_tmbx, - (intptr_t *)&kcb->kcb_kmbx.km_curthread); - else - _ia64_restore_context(mc, 0, NULL); - } - /* We should not reach here. */ - return (-1); + if (_thread_inited) + return (_tcb->tcb_thread); + return (NULL); } #endif /* _PTHREAD_MD_H_ */ From owner-p4-projects@FreeBSD.ORG Sat Nov 20 09:18:46 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B300D16A4D0; Sat, 20 Nov 2004 09:18:45 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 73F6716A4CE for ; Sat, 20 Nov 2004 09:18:45 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 506ED43D5E for ; Sat, 20 Nov 2004 09:18:45 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAK9Ijjx028793 for ; Sat, 20 Nov 2004 09:18:45 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAK9IjxH028790 for perforce@freebsd.org; Sat, 20 Nov 2004 09:18:45 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 09:18:45 GMT Message-Id: <200411200918.iAK9IjxH028790@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65543 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 09:18:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=65543 Change 65543 by davidxu@davidxu_alona on 2004/11/20 09:18:38 Fix DTV_OFFSET macro. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/include/pthread_md.h#3 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/include/pthread_md.h#3 (text+ko) ==== @@ -31,7 +31,7 @@ #include -#define DTV_OFFSET offsetof(struct tcb, tcb_tp.tp_tdv) +#define DTV_OFFSET offsetof(struct tcb, tcb_tdv) struct pthread; struct tcb; From owner-p4-projects@FreeBSD.ORG Sat Nov 20 12:23:32 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 1256416A4D0; Sat, 20 Nov 2004 12:23:32 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id C82F516A4CE for ; Sat, 20 Nov 2004 12:23:31 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 89CD843D39 for ; Sat, 20 Nov 2004 12:23:31 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAKCNVck034737 for ; Sat, 20 Nov 2004 12:23:31 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAKCNVbK034734 for perforce@freebsd.org; Sat, 20 Nov 2004 12:23:31 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 12:23:31 GMT Message-Id: <200411201223.iAKCNVbK034734@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65551 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 12:23:32 -0000 http://perforce.freebsd.org/chv.cgi?CH=65551 Change 65551 by davidxu@davidxu_alona on 2004/11/20 12:22:56 Compilable on alpha, sparc64. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/Makefile.inc#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/alpha/pthread_md.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/include/pthread_md.h#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/Makefile.inc#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/Makefile.inc#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/include/pthread_md.h#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/sparc64/pthread_md.c#2 edit .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_private.h#3 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/Makefile.inc#2 (text+ko) ==== @@ -2,4 +2,4 @@ .PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/${MACHINE_ARCH} -SRCS+= enter_uts.S context.S pthread_md.c +SRCS+= pthread_md.c ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/alpha/pthread_md.c#2 (text+ko) ==== @@ -40,37 +40,14 @@ struct tcb *tcb; if ((tcb = malloc(sizeof(struct tcb))) != NULL) { - bzero(tcb, sizeof(struct tcb)); tcb->tcb_thread = thread; - /* Allocate TDV */ } + printf("tcb=%p\n", tcb); return (tcb); } void _tcb_dtor(struct tcb *tcb) { - /* Free TDV */ free(tcb); } - -struct kcb * -_kcb_ctor(struct kse *kse) -{ - struct kcb *kcb; - - if ((kcb = malloc(sizeof(struct kcb))) != NULL) { - bzero(kcb, sizeof(struct kcb)); - kcb->kcb_faketcb.tcb_isfake = 1; - kcb->kcb_faketcb.tcb_tmbx.tm_flags = TMF_NOUPCALL; - kcb->kcb_curtcb = &kcb->kcb_faketcb; - kcb->kcb_kse = kse; - } - return (kcb); -} - -void -_kcb_dtor(struct kcb *kcb) -{ - free(kcb); -} ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/alpha/include/pthread_md.h#2 (text+ko) ==== @@ -29,219 +29,53 @@ #ifndef _PTHREAD_MD_H_ #define _PTHREAD_MD_H_ -#include #include -#include -#define KSE_STACKSIZE 16384 -#define DTV_OFFSET offsetof(struct tcb, tcb_tp.tp_tdv) - -#define THR_GETCONTEXT(ucp) _alpha_save_context(&(ucp)->uc_mcontext) -#define THR_SETCONTEXT(ucp) PANIC("THR_SETCONTEXT() now in use!\n") - -#define PER_THREAD +#define DTV_OFFSET offsetof(struct tcb, tcb_tdv) -struct kcb; -struct kse; struct pthread; struct tcb; struct tdv; /* We don't know what this is yet? */ -/* - * tp points to one of these. We define the static TLS as an array - * of long double to enforce 16-byte alignment of the TLS memory, - * struct alpha_tp, struct tcb and also struct kcb. Both static and - * dynamic allocation of any of these structures will result in a - * valid, well-aligned thread pointer. - */ -struct alpha_tp { +struct tcb { struct tdv *tp_tdv; /* dynamic TLS */ - uint64_t _reserved_; - long double tp_tls[0]; /* static TLS */ -}; - -struct tcb { - struct kse_thr_mailbox tcb_tmbx; struct pthread *tcb_thread; - struct kcb *tcb_curkcb; - long tcb_isfake; - struct alpha_tp tcb_tp; -}; - -struct kcb { - struct kse_mailbox kcb_kmbx; - struct tcb kcb_faketcb; - struct tcb *kcb_curtcb; - struct kse *kcb_kse; }; #define _tp __builtin_thread_pointer() -#define _tcb ((struct tcb*)((char*)(_tp) - offsetof(struct tcb, tcb_tp))) +#define _tcb ((struct tcb*)((char*)(_tp))) /* - * The kcb and tcb constructors. + * The constructors. */ struct tcb *_tcb_ctor(struct pthread *, int); void _tcb_dtor(struct tcb *); -struct kcb *_kcb_ctor(struct kse *kse); -void _kcb_dtor(struct kcb *); -/* Called from the KSE to set its private data. */ +/* Called from the thread to set its private data. */ static __inline void -_kcb_set(struct kcb *kcb) +_tcb_set(struct tcb *tcb) { /* There is no thread yet; use the fake tcb. */ - __builtin_set_thread_pointer(&kcb->kcb_faketcb.tcb_tp); + __builtin_set_thread_pointer(tcb); } /* - * Get the current kcb. - * - * This can only be called while in a critical region; don't - * worry about having the kcb changed out from under us. - */ -static __inline struct kcb * -_kcb_get(void) -{ - return (_tcb->tcb_curkcb); -} - -/* - * Enter a critical region. - * - * Read and clear km_curthread in the kse mailbox. + * Get the current tcb. */ -static __inline struct kse_thr_mailbox * -_kcb_critical_enter(void) -{ - struct kse_thr_mailbox *crit; - uint32_t flags; - - if (_tcb->tcb_isfake != 0) { - /* - * We already are in a critical region since - * there is no current thread. - */ - crit = NULL; - } else { - flags = _tcb->tcb_tmbx.tm_flags; - _tcb->tcb_tmbx.tm_flags |= TMF_NOUPCALL; - crit = _tcb->tcb_curkcb->kcb_kmbx.km_curthread; - _tcb->tcb_curkcb->kcb_kmbx.km_curthread = NULL; - _tcb->tcb_tmbx.tm_flags = flags; - } - return (crit); -} - -static __inline void -_kcb_critical_leave(struct kse_thr_mailbox *crit) -{ - /* No need to do anything if this is a fake tcb. */ - if (_tcb->tcb_isfake == 0) - _tcb->tcb_curkcb->kcb_kmbx.km_curthread = crit; -} - -static __inline int -_kcb_in_critical(void) -{ - uint32_t flags; - int ret; - - if (_tcb->tcb_isfake != 0) { - /* - * We are in a critical region since there is no - * current thread. - */ - ret = 1; - } else { - flags = _tcb->tcb_tmbx.tm_flags; - _tcb->tcb_tmbx.tm_flags |= TMF_NOUPCALL; - ret = (_tcb->tcb_curkcb->kcb_kmbx.km_curthread == NULL); - _tcb->tcb_tmbx.tm_flags = flags; - } - return (ret); -} - -static __inline void -_tcb_set(struct kcb *kcb, struct tcb *tcb) -{ - if (tcb == NULL) - tcb = &kcb->kcb_faketcb; - kcb->kcb_curtcb = tcb; - tcb->tcb_curkcb = kcb; - __builtin_set_thread_pointer(&tcb->tcb_tp); -} - static __inline struct tcb * _tcb_get(void) { return (_tcb); } +extern int _thread_inited; + static __inline struct pthread * _get_curthread(void) { - return (_tcb->tcb_thread); -} - -/* - * Get the current kse. - * - * Like _kcb_get(), this can only be called while in a critical region. - */ -static __inline struct kse * -_get_curkse(void) -{ - return (_tcb->tcb_curkcb->kcb_kse); -} - -void _alpha_enter_uts(struct kse_mailbox *km, kse_func_t uts, void *stack, - size_t stacksz); -int _alpha_restore_context(mcontext_t *mc, intptr_t val, intptr_t *loc); -int _alpha_save_context(mcontext_t *mc); - -static __inline int -_thread_enter_uts(struct tcb *tcb, struct kcb *kcb) -{ - if (_alpha_save_context(&tcb->tcb_tmbx.tm_context.uc_mcontext) == 0) { - /* Make the fake tcb the current thread. */ - kcb->kcb_curtcb = &kcb->kcb_faketcb; - __builtin_set_thread_pointer(&kcb->kcb_faketcb.tcb_tp); - _alpha_enter_uts(&kcb->kcb_kmbx, kcb->kcb_kmbx.km_func, - kcb->kcb_kmbx.km_stack.ss_sp, - kcb->kcb_kmbx.km_stack.ss_size); - /* We should not reach here. */ - return (-1); - } - return (0); -} - -static __inline int -_thread_switch(struct kcb *kcb, struct tcb *tcb, int setmbox) -{ - extern int _libkse_debug; - - _tcb_set(kcb, tcb); - if (_libkse_debug == 0) { - tcb->tcb_tmbx.tm_lwp = kcb->kcb_kmbx.km_lwp; - if (setmbox != 0) - _alpha_restore_context( - &tcb->tcb_tmbx.tm_context.uc_mcontext, - (intptr_t)&tcb->tcb_tmbx, - (intptr_t *)&kcb->kcb_kmbx.km_curthread); - else - _alpha_restore_context( - &tcb->tcb_tmbx.tm_context.uc_mcontext, - 0, NULL); - } else { - if (setmbox) - kse_switchin(&tcb->tcb_tmbx, KSE_SWITCHIN_SETTMBX); - else - kse_switchin(&tcb->tcb_tmbx, 0); - } - - /* We should not reach here. */ - return (-1); + if (_thread_inited) + return (_tcb->tcb_thread); + return (NULL); } #endif /* _PTHREAD_MD_H_ */ ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/ia64/Makefile.inc#2 (text+ko) ==== @@ -2,4 +2,4 @@ .PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/${MACHINE_ARCH} -SRCS+= context.S enter_uts.S pthread_md.c +SRCS+= pthread_md.c ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/Makefile.inc#2 (text+ko) ==== @@ -2,4 +2,4 @@ .PATH: ${.CURDIR}/arch/${MACHINE_ARCH}/${MACHINE_ARCH} -SRCS+= pthread_md.c thr_getcontext.S +SRCS+= pthread_md.c ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/include/pthread_md.h#2 (text+ko) ==== @@ -33,222 +33,53 @@ #ifndef _PTHREAD_MD_H_ #define _PTHREAD_MD_H_ -#include #include -#include -#define KSE_STACKSIZE 16384 #define DTV_OFFSET offsetof(struct tcb, tcb_tp.tp_tdv) -int _thr_setcontext(mcontext_t *, intptr_t, intptr_t *); -int _thr_getcontext(mcontext_t *); - -#define THR_GETCONTEXT(ucp) _thr_getcontext(&(ucp)->uc_mcontext) -#define THR_SETCONTEXT(ucp) _thr_setcontext(&(ucp)->uc_mcontext, 0, NULL) - -#define PER_THREAD - -struct kcb; -struct kse; struct pthread; struct tcb; struct tdv; /* We don't know what this is yet? */ - -/* - * %g6 points to one of these. We define the static TLS as an array - * of long double to enforce 16-byte alignment of the TLS memory. - * - * XXX - Both static and dynamic allocation of any of these structures - * will result in a valid, well-aligned thread pointer??? - */ -struct sparc64_tp { +struct tcb { struct tdv *tp_tdv; /* dynamic TLS */ - uint64_t _reserved_; - long double tp_tls[0]; /* static TLS */ -}; - -struct tcb { struct pthread *tcb_thread; - void *tcb_addr; /* allocated tcb address */ - struct kcb *tcb_curkcb; - uint64_t tcb_isfake; - uint64_t tcb_spare[4]; - struct kse_thr_mailbox tcb_tmbx; /* needs 64-byte alignment */ - struct sparc64_tp tcb_tp; -} __aligned(64); - -struct kcb { - struct kse_mailbox kcb_kmbx; - struct tcb kcb_faketcb; - struct tcb *kcb_curtcb; - struct kse *kcb_kse; }; -register struct sparc64_tp *_tp __asm("%g6"); +register struct tcb *_tp __asm("%g6"); -#define _tcb ((struct tcb*)((char*)(_tp) - offsetof(struct tcb, tcb_tp))) +#define _tcb _tp /* - * The kcb and tcb constructors. + * The tcb constructors. */ struct tcb *_tcb_ctor(struct pthread *, int); void _tcb_dtor(struct tcb *); -struct kcb *_kcb_ctor(struct kse *kse); -void _kcb_dtor(struct kcb *); -/* Called from the KSE to set its private data. */ +/* Called from the thread to set its private data. */ static __inline void -_kcb_set(struct kcb *kcb) +_tcb_set(struct tcb *tcb) { - /* There is no thread yet; use the fake tcb. */ - _tp = &kcb->kcb_faketcb.tcb_tp; + _tcb = tcb; } /* - * Get the current kcb. - * - * This can only be called while in a critical region; don't - * worry about having the kcb changed out from under us. + * Get the current tcb. */ -static __inline struct kcb * -_kcb_get(void) -{ - return (_tcb->tcb_curkcb); -} - -/* - * Enter a critical region. - * - * Read and clear km_curthread in the kse mailbox. - */ -static __inline struct kse_thr_mailbox * -_kcb_critical_enter(void) -{ - struct kse_thr_mailbox *crit; - uint32_t flags; - - if (_tcb->tcb_isfake != 0) { - /* - * We already are in a critical region since - * there is no current thread. - */ - crit = NULL; - } else { - flags = _tcb->tcb_tmbx.tm_flags; - _tcb->tcb_tmbx.tm_flags |= TMF_NOUPCALL; - crit = _tcb->tcb_curkcb->kcb_kmbx.km_curthread; - _tcb->tcb_curkcb->kcb_kmbx.km_curthread = NULL; - _tcb->tcb_tmbx.tm_flags = flags; - } - return (crit); -} - -static __inline void -_kcb_critical_leave(struct kse_thr_mailbox *crit) -{ - /* No need to do anything if this is a fake tcb. */ - if (_tcb->tcb_isfake == 0) - _tcb->tcb_curkcb->kcb_kmbx.km_curthread = crit; -} - -static __inline int -_kcb_in_critical(void) -{ - uint32_t flags; - int ret; - - if (_tcb->tcb_isfake != 0) { - /* - * We are in a critical region since there is no - * current thread. - */ - ret = 1; - } else { - flags = _tcb->tcb_tmbx.tm_flags; - _tcb->tcb_tmbx.tm_flags |= TMF_NOUPCALL; - ret = (_tcb->tcb_curkcb->kcb_kmbx.km_curthread == NULL); - _tcb->tcb_tmbx.tm_flags = flags; - } - return (ret); -} - -static __inline void -_tcb_set(struct kcb *kcb, struct tcb *tcb) -{ - if (tcb == NULL) - tcb = &kcb->kcb_faketcb; - kcb->kcb_curtcb = tcb; - tcb->tcb_curkcb = kcb; - _tp = &tcb->tcb_tp; -} - static __inline struct tcb * _tcb_get(void) { return (_tcb); } +extern int _thread_inited; + static __inline struct pthread * _get_curthread(void) { - return (_tcb->tcb_thread); -} - -/* - * Get the current kse. - * - * Like _kcb_get(), this can only be called while in a critical region. - */ -static __inline struct kse * -_get_curkse(void) -{ - return (_tcb->tcb_curkcb->kcb_kse); -} - -void _sparc64_enter_uts(kse_func_t uts, struct kse_mailbox *km, void *stack, - size_t stacksz); - -static __inline int -_thread_enter_uts(struct tcb *tcb, struct kcb *kcb) -{ - if (_thr_getcontext(&tcb->tcb_tmbx.tm_context.uc_mcontext) == 0) { - /* Make the fake tcb the current thread. */ - kcb->kcb_curtcb = &kcb->kcb_faketcb; - _tp = &kcb->kcb_faketcb.tcb_tp; - _sparc64_enter_uts(kcb->kcb_kmbx.km_func, &kcb->kcb_kmbx, - kcb->kcb_kmbx.km_stack.ss_sp, - kcb->kcb_kmbx.km_stack.ss_size); - /* We should not reach here. */ - return (-1); - } - return (0); -} - -static __inline int -_thread_switch(struct kcb *kcb, struct tcb *tcb, int setmbox) -{ - extern int _libkse_debug; - mcontext_t *mc; - - _tcb_set(kcb, tcb); - mc = &tcb->tcb_tmbx.tm_context.uc_mcontext; - if (_libkse_debug == 0) { - tcb->tcb_tmbx.tm_lwp = kcb->kcb_kmbx.km_lwp; - if (setmbox) - _thr_setcontext(mc, (intptr_t)&tcb->tcb_tmbx, - (intptr_t *)&kcb->kcb_kmbx.km_curthread); - else - _thr_setcontext(mc, 0, NULL); - } else { - if (setmbox) - kse_switchin(&tcb->tcb_tmbx, KSE_SWITCHIN_SETTMBX); - else - kse_switchin(&tcb->tcb_tmbx, 0); - } - - /* We should not reach here. */ - return (-1); + if (_thread_inited) + return (_tcb->tcb_thread); + return (NULL); } #endif /* _PTHREAD_MD_H_ */ ==== //depot/projects/davidxu_thread/src/lib/libthread/arch/sparc64/sparc64/pthread_md.c#2 (text+ko) ==== @@ -31,11 +31,8 @@ #include -#include -#include #include #include -#include #include "pthread_md.h" @@ -43,17 +40,9 @@ _tcb_ctor(struct pthread *thread, int initial) { struct tcb *tcb; - void *addr; - addr = malloc(sizeof(struct tcb) + 63); - if (addr == NULL) - tcb = NULL; - else { - tcb = (struct tcb *)(((uintptr_t)(addr) + 63) & ~63); - bzero(tcb, sizeof(struct tcb)); - tcb->tcb_addr = addr; + if ((tcb = malloc(sizeof(struct tcb))) != NULL) { tcb->tcb_thread = thread; - /* XXX - Allocate tdv/tls */ } return (tcb); } @@ -61,31 +50,5 @@ void _tcb_dtor(struct tcb *tcb) { - void *addr; - - addr = tcb->tcb_addr; - tcb->tcb_addr = NULL; - free(addr); -} - -struct kcb * -_kcb_ctor(struct kse *kse) -{ - struct kcb *kcb; - - kcb = malloc(sizeof(struct kcb)); - if (kcb != NULL) { - bzero(kcb, sizeof(struct kcb)); - kcb->kcb_faketcb.tcb_isfake = 1; - kcb->kcb_faketcb.tcb_tmbx.tm_flags = TMF_NOUPCALL; - kcb->kcb_curtcb = &kcb->kcb_faketcb; - kcb->kcb_kse = kse; - } - return (kcb); -} - -void -_kcb_dtor(struct kcb *kcb) -{ - free(kcb); + free(tcb); } ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_private.h#3 (text+ko) ==== @@ -44,13 +44,13 @@ #include #include #include -#include #include #include #include #include #include #include +#include #include #include From owner-p4-projects@FreeBSD.ORG Sat Nov 20 12:53:08 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id DF48616A4D0; Sat, 20 Nov 2004 12:53:07 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9A70116A4CE for ; Sat, 20 Nov 2004 12:53:07 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8936643D5A for ; Sat, 20 Nov 2004 12:53:07 +0000 (GMT) (envelope-from davidxu@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAKCr7tC041980 for ; Sat, 20 Nov 2004 12:53:07 GMT (envelope-from davidxu@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAKCr7p8041977 for perforce@freebsd.org; Sat, 20 Nov 2004 12:53:07 GMT (envelope-from davidxu@freebsd.org) Date: Sat, 20 Nov 2004 12:53:07 GMT Message-Id: <200411201253.iAKCr7p8041977@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to davidxu@freebsd.org using -f From: David Xu To: Perforce Change Reviews Subject: PERFORCE change 65552 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 12:53:08 -0000 http://perforce.freebsd.org/chv.cgi?CH=65552 Change 65552 by davidxu@davidxu_alona on 2004/11/20 12:52:08 Slightly adjust thread members layout, put lock on 64 bits boundary. Affected files ... .. //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_private.h#4 edit Differences ... ==== //depot/projects/davidxu_thread/src/lib/libthread/thread/thr_private.h#4 (text+ko) ==== @@ -49,8 +49,8 @@ #include #include #include +#include #include -#include #include #include @@ -378,19 +378,19 @@ char *name; u_int64_t uniqueid; /* for gdb */ - /* How many low level locks the thread held. */ - int locklevel; - /* * Lock for accesses to this thread structure. */ struct lock lock; + /* Thread exits in kernel, written by kernel. */ + long isdead; + /* Kernel thread id. */ long tid; - /* Thread exits in kernel, written by kernel. */ - long isdead; + /* How many low level locks the thread held. */ + int locklevel; /* How many signals were received. */ int sigseqno; From owner-p4-projects@FreeBSD.ORG Sat Nov 20 19:54:46 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id BA78716A4D0; Sat, 20 Nov 2004 19:54:45 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7903716A4CE for ; Sat, 20 Nov 2004 19:54:45 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1954C43D2F for ; Sat, 20 Nov 2004 19:54:45 +0000 (GMT) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAKJsiQp062270 for ; Sat, 20 Nov 2004 19:54:45 GMT (envelope-from peter@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAKJsiKA062267 for perforce@freebsd.org; Sat, 20 Nov 2004 19:54:44 GMT (envelope-from peter@freebsd.org) Date: Sat, 20 Nov 2004 19:54:44 GMT Message-Id: <200411201954.iAKJsiKA062267@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to peter@freebsd.org using -f From: Peter Wemm To: Perforce Change Reviews Subject: PERFORCE change 65571 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 19:54:46 -0000 http://perforce.freebsd.org/chv.cgi?CH=65571 Change 65571 by peter@peter_daintree on 2004/11/20 19:54:18 IFC @65569 Affected files ... .. //depot/projects/hammer/Makefile.inc1#76 integrate .. //depot/projects/hammer/UPDATING#67 integrate .. //depot/projects/hammer/bin/pax/tar.c#5 integrate .. //depot/projects/hammer/bin/ps/Makefile#6 integrate .. //depot/projects/hammer/bin/ps/ps.c#18 integrate .. //depot/projects/hammer/bin/rm/rm.c#10 integrate .. //depot/projects/hammer/bin/rmdir/rmdir.c#6 integrate .. //depot/projects/hammer/contrib/pf/man/pf.conf.5#6 integrate .. //depot/projects/hammer/etc/ppp/ppp.conf#2 integrate .. //depot/projects/hammer/etc/rc.d/Makefile#30 integrate .. //depot/projects/hammer/etc/rc.d/ramdisk-own#3 integrate .. //depot/projects/hammer/etc/rc.d/serial#6 integrate .. //depot/projects/hammer/gnu/usr.bin/gdb/libgdb/fbsd-threads.c#5 integrate .. //depot/projects/hammer/include/Makefile#35 integrate .. //depot/projects/hammer/lib/Makefile#45 integrate .. //depot/projects/hammer/lib/libarchive/archive_write_set_format_pax.c#14 integrate .. //depot/projects/hammer/lib/libc/Makefile#19 integrate .. //depot/projects/hammer/lib/libc/gen/Makefile.inc#19 integrate .. //depot/projects/hammer/lib/libc/gen/getnetgrent.c#4 integrate .. //depot/projects/hammer/lib/libc/gen/ntp_gettime.c#2 delete .. //depot/projects/hammer/lib/libc/i386/net/htonl.S#3 integrate .. //depot/projects/hammer/lib/libc/i386/net/ntohl.S#3 integrate .. //depot/projects/hammer/lib/libc/net/rcmd.c#4 integrate .. //depot/projects/hammer/lib/libc/posix1e/mac.conf.5#4 integrate .. //depot/projects/hammer/lib/libc/rpc/netnamer.c#3 integrate .. //depot/projects/hammer/lib/libc/sys/read.2#9 integrate .. //depot/projects/hammer/lib/libc/sys/stat.2#8 integrate .. //depot/projects/hammer/lib/libkvm/kvm_getprocs.3#7 integrate .. //depot/projects/hammer/lib/libkvm/kvm_proc.c#27 integrate .. //depot/projects/hammer/lib/libmagic/Makefile#3 integrate .. //depot/projects/hammer/lib/libpam/modules/pam_unix/Makefile#3 integrate .. //depot/projects/hammer/lib/librpcsvc/Makefile#3 integrate .. //depot/projects/hammer/lib/libwrap/Makefile#6 integrate .. //depot/projects/hammer/lib/libxpg4/Makefile#4 delete .. //depot/projects/hammer/lib/libxpg4/fakelib.c#3 delete .. //depot/projects/hammer/libexec/Makefile#25 integrate .. //depot/projects/hammer/libexec/ftpd/ftpcmd.y#9 integrate .. //depot/projects/hammer/libexec/ftpd/ftpd.c#21 integrate .. //depot/projects/hammer/libexec/ftpd/logwtmp.c#3 integrate .. //depot/projects/hammer/libexec/ftpd/popen.c#3 integrate .. //depot/projects/hammer/libexec/rtld-elf/Makefile#15 integrate .. //depot/projects/hammer/libexec/rtld-elf/i386/lockdflt.c#3 delete .. //depot/projects/hammer/libexec/rtld-elf/rtld_lock.c#3 integrate .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/hardware/common/dev.sgml#66 integrate .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/hardware/i386/proc-i386.sgml#8 integrate .. //depot/projects/hammer/release/doc/en_US.ISO8859-1/hardware/pc98/proc-pc98.sgml#3 integrate .. //depot/projects/hammer/release/doc/share/misc/dev.archlist.txt#16 integrate .. //depot/projects/hammer/release/picobsd/bridge/PICOBSD#3 integrate .. //depot/projects/hammer/release/picobsd/floppy.tree/etc/ppp/ppp.conf#2 integrate .. //depot/projects/hammer/release/picobsd/mfs_tree/etc/remote#2 integrate .. //depot/projects/hammer/rescue/librescue/Makefile#5 integrate .. //depot/projects/hammer/sbin/comcontrol/comcontrol.8#4 integrate .. //depot/projects/hammer/sbin/gpt/create.c#7 integrate .. //depot/projects/hammer/sbin/gpt/gpt.8#6 integrate .. //depot/projects/hammer/sbin/gpt/migrate.c#9 integrate .. //depot/projects/hammer/sbin/mdconfig/mdconfig.c#14 integrate .. //depot/projects/hammer/sbin/mount_cd9660/mount_cd9660.8#7 integrate .. //depot/projects/hammer/sbin/mount_cd9660/mount_cd9660.c#8 integrate .. //depot/projects/hammer/sbin/slattach/slattach.8#5 integrate .. //depot/projects/hammer/share/examples/etc/make.conf#30 integrate .. //depot/projects/hammer/share/examples/ppp/ppp.conf.sample#5 integrate .. //depot/projects/hammer/share/examples/ppp/ppp.conf.span-isp#3 integrate .. //depot/projects/hammer/share/examples/pppd/options.sample#2 integrate .. //depot/projects/hammer/share/examples/startslip/slip.sh#2 integrate .. //depot/projects/hammer/share/man/man4/Makefile#56 integrate .. //depot/projects/hammer/share/man/man4/gdb.4#5 integrate .. //depot/projects/hammer/share/man/man4/hptmv.4#1 branch .. //depot/projects/hammer/share/man/man4/ixgb.4#6 integrate .. //depot/projects/hammer/share/man/man4/mouse.4#3 integrate .. //depot/projects/hammer/share/man/man4/pcn.4#5 integrate .. //depot/projects/hammer/share/man/man4/re.4#11 integrate .. //depot/projects/hammer/share/man/man4/rl.4#11 integrate .. //depot/projects/hammer/share/man/man4/sk.4#7 integrate .. //depot/projects/hammer/share/man/man4/vkbd.4#1 branch .. //depot/projects/hammer/share/man/man4/vlan.4#8 integrate .. //depot/projects/hammer/share/man/man5/make.conf.5#29 integrate .. //depot/projects/hammer/share/man/man5/rc.conf.5#44 integrate .. //depot/projects/hammer/share/man/man5/remote.5#6 integrate .. //depot/projects/hammer/share/man/man7/ports.7#10 integrate .. //depot/projects/hammer/share/man/man7/tuning.7#11 integrate .. //depot/projects/hammer/share/man/man9/Makefile#43 integrate .. //depot/projects/hammer/share/man/man9/get_cyclecount.9#2 integrate .. //depot/projects/hammer/share/man/man9/mbuf_tags.9#3 integrate .. //depot/projects/hammer/share/man/man9/psignal.9#2 integrate .. //depot/projects/hammer/share/man/man9/signal.9#8 integrate .. //depot/projects/hammer/share/mk/bsd.cpu.mk#26 integrate .. //depot/projects/hammer/share/mk/bsd.libnames.mk#24 integrate .. //depot/projects/hammer/share/numericdef/eu_ES.ISO8859-1.src#2 integrate .. //depot/projects/hammer/sys/alpha/alpha/genassym.c#6 integrate .. //depot/projects/hammer/sys/alpha/alpha/machdep.c#27 integrate .. //depot/projects/hammer/sys/alpha/alpha/mp_machdep.c#13 integrate .. //depot/projects/hammer/sys/alpha/include/param.h#10 integrate .. //depot/projects/hammer/sys/amd64/amd64/busdma_machdep.c#23 integrate .. //depot/projects/hammer/sys/amd64/amd64/genassym.c#36 integrate .. //depot/projects/hammer/sys/amd64/amd64/machdep.c#106 integrate .. //depot/projects/hammer/sys/amd64/include/param.h#27 integrate .. //depot/projects/hammer/sys/arm/arm/busdma_machdep.c#6 integrate .. //depot/projects/hammer/sys/arm/arm/exception.S#4 integrate .. //depot/projects/hammer/sys/arm/arm/genassym.c#4 integrate .. //depot/projects/hammer/sys/arm/arm/pmap.c#12 integrate .. //depot/projects/hammer/sys/arm/arm/trap.c#4 integrate .. //depot/projects/hammer/sys/arm/arm/undefined.c#2 integrate .. //depot/projects/hammer/sys/arm/arm/vm_machdep.c#7 integrate .. //depot/projects/hammer/sys/arm/include/cpufunc.h#5 integrate .. //depot/projects/hammer/sys/arm/include/db_machdep.h#3 integrate .. //depot/projects/hammer/sys/arm/include/param.h#6 integrate .. //depot/projects/hammer/sys/arm/sa11x0/assabet_machdep.c#6 integrate .. //depot/projects/hammer/sys/arm/xscale/i80321/i80321.c#2 integrate .. //depot/projects/hammer/sys/arm/xscale/i80321/iq31244_machdep.c#4 integrate .. //depot/projects/hammer/sys/arm/xscale/i80321/std.i80321#2 integrate .. //depot/projects/hammer/sys/arm/xscale/i80321/std.iq31244#2 integrate .. //depot/projects/hammer/sys/boot/common/commands.c#6 integrate .. //depot/projects/hammer/sys/cam/cam_xpt.c#13 integrate .. //depot/projects/hammer/sys/coda/coda_vnops.c#9 integrate .. //depot/projects/hammer/sys/compat/freebsd32/freebsd32_proto.h#23 integrate .. //depot/projects/hammer/sys/compat/freebsd32/freebsd32_syscall.h#21 integrate .. //depot/projects/hammer/sys/compat/freebsd32/freebsd32_syscalls.c#21 integrate .. //depot/projects/hammer/sys/compat/freebsd32/freebsd32_sysent.c#21 integrate .. //depot/projects/hammer/sys/compat/freebsd32/syscalls.master#25 integrate .. //depot/projects/hammer/sys/compat/pecoff/imgact_pecoff.c#9 integrate .. //depot/projects/hammer/sys/compat/svr4/svr4_filio.c#11 integrate .. //depot/projects/hammer/sys/compat/svr4/svr4_misc.c#16 integrate .. //depot/projects/hammer/sys/conf/NOTES#74 integrate .. //depot/projects/hammer/sys/conf/files#93 integrate .. //depot/projects/hammer/sys/conf/files.i386#44 integrate .. //depot/projects/hammer/sys/conf/files.sparc64#25 integrate .. //depot/projects/hammer/sys/conf/kern.post.mk#27 integrate .. //depot/projects/hammer/sys/conf/kmod.mk#38 integrate .. //depot/projects/hammer/sys/conf/options.i386#29 integrate .. //depot/projects/hammer/sys/conf/options.pc98#27 integrate .. //depot/projects/hammer/sys/crypto/blowfish/arch/i386/bf_enc.S#2 integrate .. //depot/projects/hammer/sys/ddb/db_ps.c#16 integrate .. //depot/projects/hammer/sys/dev/acpi_support/acpi_asus.c#1 branch .. //depot/projects/hammer/sys/dev/acpi_support/acpi_panasonic.c#1 branch .. //depot/projects/hammer/sys/dev/acpi_support/acpi_sony.c#1 branch .. //depot/projects/hammer/sys/dev/acpi_support/acpi_toshiba.c#1 branch .. //depot/projects/hammer/sys/dev/acpica/acpi_cpu.c#27 integrate .. //depot/projects/hammer/sys/dev/acpica/acpi_snc.c#2 delete .. //depot/projects/hammer/sys/dev/aic7xxx/aic79xx.c#18 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic79xx.h#17 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic7xxx.c#16 integrate .. //depot/projects/hammer/sys/dev/aic7xxx/aic_osm_lib.h#4 integrate .. //depot/projects/hammer/sys/dev/ata/ata-dma.c#17 integrate .. //depot/projects/hammer/sys/dev/em/if_em.c#34 integrate .. //depot/projects/hammer/sys/dev/fxp/if_fxp.c#37 integrate .. //depot/projects/hammer/sys/dev/mc146818/mc146818.c#1 branch .. //depot/projects/hammer/sys/dev/mc146818/mc146818reg.h#1 branch .. //depot/projects/hammer/sys/dev/mc146818/mc146818var.h#1 branch .. //depot/projects/hammer/sys/dev/md/md.c#44 integrate .. //depot/projects/hammer/sys/dev/mk48txx/mk48txx.c#4 integrate .. //depot/projects/hammer/sys/dev/mk48txx/mk48txxreg.h#3 integrate .. //depot/projects/hammer/sys/dev/mk48txx/mk48txxvar.h#1 branch .. //depot/projects/hammer/sys/dev/puc/puc_sbus.c#5 integrate .. //depot/projects/hammer/sys/dev/streams/streams.c#10 integrate .. //depot/projects/hammer/sys/dev/uart/uart_bus.h#7 integrate .. //depot/projects/hammer/sys/dev/uart/uart_bus_isa.c#5 integrate .. //depot/projects/hammer/sys/dev/uart/uart_core.c#8 integrate .. //depot/projects/hammer/sys/dev/uart/uart_cpu.h#5 integrate .. //depot/projects/hammer/sys/dev/uart/uart_cpu_alpha.c#6 integrate .. //depot/projects/hammer/sys/dev/uart/uart_cpu_amd64.c#6 integrate .. //depot/projects/hammer/sys/dev/uart/uart_cpu_i386.c#6 integrate .. //depot/projects/hammer/sys/dev/uart/uart_cpu_ia64.c#6 integrate .. //depot/projects/hammer/sys/dev/uart/uart_cpu_pc98.c#7 integrate .. //depot/projects/hammer/sys/dev/uart/uart_cpu_sparc64.c#10 integrate .. //depot/projects/hammer/sys/dev/uart/uart_dev_ns8250.c#7 integrate .. //depot/projects/hammer/sys/dev/uart/uart_subr.c#2 integrate .. //depot/projects/hammer/sys/dev/usb/ehci.c#16 integrate .. //depot/projects/hammer/sys/dev/usb/ohci.c#17 integrate .. //depot/projects/hammer/sys/dev/usb/uhci.c#16 integrate .. //depot/projects/hammer/sys/dev/vkbd/vkbd.c#1 branch .. //depot/projects/hammer/sys/dev/vkbd/vkbd_var.h#1 branch .. //depot/projects/hammer/sys/fs/deadfs/dead_vnops.c#7 integrate .. //depot/projects/hammer/sys/fs/devfs/devfs_vnops.c#19 integrate .. //depot/projects/hammer/sys/fs/fdescfs/fdesc_vfsops.c#9 integrate .. //depot/projects/hammer/sys/fs/fdescfs/fdesc_vnops.c#10 integrate .. //depot/projects/hammer/sys/fs/fifofs/fifo_vnops.c#24 integrate .. //depot/projects/hammer/sys/fs/hpfs/hpfs_vnops.c#12 integrate .. //depot/projects/hammer/sys/fs/msdosfs/msdosfs_vnops.c#16 integrate .. //depot/projects/hammer/sys/fs/ntfs/ntfs_vnops.c#10 integrate .. //depot/projects/hammer/sys/fs/udf/udf_vnops.c#18 integrate .. //depot/projects/hammer/sys/fs/unionfs/union_subr.c#12 integrate .. //depot/projects/hammer/sys/fs/unionfs/union_vfsops.c#12 integrate .. //depot/projects/hammer/sys/fs/unionfs/union_vnops.c#17 integrate .. //depot/projects/hammer/sys/geom/uzip/g_uzip.c#4 integrate .. //depot/projects/hammer/sys/geom/vinum/geom_vinum.h#6 integrate .. //depot/projects/hammer/sys/geom/vinum/geom_vinum_raid5.c#7 integrate .. //depot/projects/hammer/sys/geom/vinum/geom_vinum_share.c#4 integrate .. //depot/projects/hammer/sys/geom/vinum/geom_vinum_share.h#2 integrate .. //depot/projects/hammer/sys/geom/vinum/geom_vinum_subr.c#10 integrate .. //depot/projects/hammer/sys/gnu/ext2fs/ext2_bmap.c#7 integrate .. //depot/projects/hammer/sys/i386/acpica/acpi_asus.c#11 delete .. //depot/projects/hammer/sys/i386/acpica/acpi_panasonic.c#5 delete .. //depot/projects/hammer/sys/i386/acpica/acpi_toshiba.c#11 delete .. //depot/projects/hammer/sys/i386/conf/NOTES#57 integrate .. //depot/projects/hammer/sys/i386/i386/busdma_machdep.c#21 integrate .. //depot/projects/hammer/sys/i386/i386/genassym.c#15 integrate .. //depot/projects/hammer/sys/i386/i386/identcpu.c#17 integrate .. //depot/projects/hammer/sys/i386/i386/locore.s#13 integrate .. //depot/projects/hammer/sys/i386/i386/machdep.c#43 integrate .. //depot/projects/hammer/sys/i386/i386/mp_machdep.c#36 integrate .. //depot/projects/hammer/sys/i386/i386/pmap.c#61 integrate .. //depot/projects/hammer/sys/i386/i386/support.s#11 integrate .. //depot/projects/hammer/sys/i386/i386/trap.c#29 integrate .. //depot/projects/hammer/sys/i386/include/atomic.h#6 integrate .. //depot/projects/hammer/sys/i386/include/cpu.h#9 integrate .. //depot/projects/hammer/sys/i386/include/endian.h#8 integrate .. //depot/projects/hammer/sys/i386/include/param.h#11 integrate .. //depot/projects/hammer/sys/i386/linux/linux_sysvec.c#18 integrate .. //depot/projects/hammer/sys/ia64/conf/GENERIC.hints#6 integrate .. //depot/projects/hammer/sys/ia64/ia64/genassym.c#9 integrate .. //depot/projects/hammer/sys/ia64/ia64/machdep.c#44 integrate .. //depot/projects/hammer/sys/ia64/include/param.h#8 integrate .. //depot/projects/hammer/sys/isofs/cd9660/cd9660_bmap.c#5 integrate .. //depot/projects/hammer/sys/kern/imgact_aout.c#10 integrate .. //depot/projects/hammer/sys/kern/init_main.c#30 integrate .. //depot/projects/hammer/sys/kern/init_sysent.c#36 integrate .. //depot/projects/hammer/sys/kern/kern_descrip.c#35 integrate .. //depot/projects/hammer/sys/kern/kern_event.c#27 integrate .. //depot/projects/hammer/sys/kern/kern_exec.c#39 integrate .. //depot/projects/hammer/sys/kern/kern_fork.c#45 integrate .. //depot/projects/hammer/sys/kern/kern_intr.c#34 integrate .. //depot/projects/hammer/sys/kern/kern_ntptime.c#8 integrate .. //depot/projects/hammer/sys/kern/kern_proc.c#39 integrate .. //depot/projects/hammer/sys/kern/kern_sig.c#51 integrate .. //depot/projects/hammer/sys/kern/sys_generic.c#17 integrate .. //depot/projects/hammer/sys/kern/sys_pipe.c#24 integrate .. //depot/projects/hammer/sys/kern/sys_socket.c#14 integrate .. //depot/projects/hammer/sys/kern/syscalls.c#35 integrate .. //depot/projects/hammer/sys/kern/syscalls.master#35 integrate .. //depot/projects/hammer/sys/kern/sysv_sem.c#16 integrate .. //depot/projects/hammer/sys/kern/tty.c#34 integrate .. //depot/projects/hammer/sys/kern/uipc_syscalls.c#39 integrate .. //depot/projects/hammer/sys/kern/vfs_bio.c#45 integrate .. //depot/projects/hammer/sys/kern/vfs_cluster.c#22 integrate .. //depot/projects/hammer/sys/kern/vfs_default.c#27 integrate .. //depot/projects/hammer/sys/kern/vfs_mount.c#39 integrate .. //depot/projects/hammer/sys/kern/vfs_subr.c#62 integrate .. //depot/projects/hammer/sys/kern/vfs_syscalls.c#36 integrate .. //depot/projects/hammer/sys/kern/vfs_vnops.c#25 integrate .. //depot/projects/hammer/sys/kern/vnode_if.src#11 integrate .. //depot/projects/hammer/sys/modules/Makefile#60 integrate .. //depot/projects/hammer/sys/modules/acpi/Makefile#17 integrate .. //depot/projects/hammer/sys/modules/acpi/acpi_asus/Makefile#4 integrate .. //depot/projects/hammer/sys/modules/acpi/acpi_panasonic/Makefile#3 integrate .. //depot/projects/hammer/sys/modules/acpi/acpi_snc/Makefile#2 delete .. //depot/projects/hammer/sys/modules/acpi/acpi_sony/Makefile#1 branch .. //depot/projects/hammer/sys/modules/acpi/acpi_toshiba/Makefile#4 integrate .. //depot/projects/hammer/sys/modules/uart/Makefile#7 integrate .. //depot/projects/hammer/sys/modules/vkbd/Makefile#1 branch .. //depot/projects/hammer/sys/net/if.h#16 integrate .. //depot/projects/hammer/sys/netgraph/atm/sscop/ng_sscop_cust.h#3 integrate .. //depot/projects/hammer/sys/netgraph/bluetooth/drivers/bt3c/ng_bt3c_pccard.c#7 integrate .. //depot/projects/hammer/sys/netgraph/ng_one2many.c#7 integrate .. //depot/projects/hammer/sys/netinet/in.c#11 integrate .. //depot/projects/hammer/sys/netinet/ip_divert.c#28 integrate .. //depot/projects/hammer/sys/nfsclient/nfs_bio.c#25 integrate .. //depot/projects/hammer/sys/opencrypto/cryptodev.c#15 integrate .. //depot/projects/hammer/sys/pc98/conf/GENERIC#28 integrate .. //depot/projects/hammer/sys/pc98/conf/NOTES#35 integrate .. //depot/projects/hammer/sys/pc98/i386/machdep.c#37 integrate .. //depot/projects/hammer/sys/pci/if_sf.c#26 integrate .. //depot/projects/hammer/sys/pci/if_sfreg.h#4 integrate .. //depot/projects/hammer/sys/pci/if_sk.c#31 integrate .. //depot/projects/hammer/sys/pci/if_skreg.h#9 integrate .. //depot/projects/hammer/sys/powerpc/include/param.h#9 integrate .. //depot/projects/hammer/sys/powerpc/powerpc/genassym.c#10 integrate .. //depot/projects/hammer/sys/powerpc/powerpc/machdep.c#29 integrate .. //depot/projects/hammer/sys/security/mac/mac_sysv_msg.c#1 branch .. //depot/projects/hammer/sys/security/mac/mac_sysv_sem.c#1 branch .. //depot/projects/hammer/sys/security/mac/mac_sysv_shm.c#1 branch .. //depot/projects/hammer/sys/sparc64/conf/GENERIC#32 integrate .. //depot/projects/hammer/sys/sparc64/conf/NOTES#11 integrate .. //depot/projects/hammer/sys/sparc64/include/eeprom.h#4 integrate .. //depot/projects/hammer/sys/sparc64/include/param.h#7 integrate .. //depot/projects/hammer/sys/sparc64/isa/isa.c#10 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/eeprom.c#5 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/eeprom_ebus.c#7 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/eeprom_sbus.c#7 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/genassym.c#10 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/machdep.c#34 integrate .. //depot/projects/hammer/sys/sparc64/sparc64/rtc.c#1 branch .. //depot/projects/hammer/sys/sys/buf.h#19 integrate .. //depot/projects/hammer/sys/sys/filedesc.h#11 integrate .. //depot/projects/hammer/sys/sys/mac.h#21 integrate .. //depot/projects/hammer/sys/sys/mac_policy.h#23 integrate .. //depot/projects/hammer/sys/sys/msg.h#5 integrate .. //depot/projects/hammer/sys/sys/proc.h#71 integrate .. //depot/projects/hammer/sys/sys/sem.h#5 integrate .. //depot/projects/hammer/sys/sys/shm.h#4 integrate .. //depot/projects/hammer/sys/sys/syscall.h#35 integrate .. //depot/projects/hammer/sys/sys/syscall.mk#35 integrate .. //depot/projects/hammer/sys/sys/sysproto.h#35 integrate .. //depot/projects/hammer/sys/sys/systm.h#27 integrate .. //depot/projects/hammer/sys/sys/user.h#15 integrate .. //depot/projects/hammer/sys/sys/vnode.h#35 integrate .. //depot/projects/hammer/sys/ufs/ffs/ffs_vfsops.c#34 integrate .. //depot/projects/hammer/sys/ufs/ffs/ffs_vnops.c#27 integrate .. //depot/projects/hammer/sys/ufs/ufs/ufs_bmap.c#8 integrate .. //depot/projects/hammer/sys/vm/swap_pager.c#35 integrate .. //depot/projects/hammer/sys/vm/vm_extern.h#14 integrate .. //depot/projects/hammer/sys/vm/vm_glue.c#36 integrate .. //depot/projects/hammer/sys/vm/vm_pageout.h#9 integrate .. //depot/projects/hammer/sys/vm/vm_pager.c#16 integrate .. //depot/projects/hammer/sys/vm/vnode_pager.c#24 integrate .. //depot/projects/hammer/tools/debugscripts/dot.gdbinit#5 integrate .. //depot/projects/hammer/tools/debugscripts/gdbinit.i386#3 integrate .. //depot/projects/hammer/tools/debugscripts/gdbinit.kernel#3 integrate .. //depot/projects/hammer/tools/test/ppsapi/Makefile#3 integrate .. //depot/projects/hammer/tools/test/ppsapi/README#2 integrate .. //depot/projects/hammer/tools/tools/nanobsd/make.conf#8 integrate .. //depot/projects/hammer/usr.bin/Makefile#38 integrate .. //depot/projects/hammer/usr.bin/chkey/Makefile#4 integrate .. //depot/projects/hammer/usr.bin/chpass/Makefile#3 integrate .. //depot/projects/hammer/usr.bin/fetch/fetch.c#16 integrate .. //depot/projects/hammer/usr.bin/file/Makefile#5 integrate .. //depot/projects/hammer/usr.bin/gcore/aoutcore.c#3 integrate .. //depot/projects/hammer/usr.bin/make/config.h#5 integrate .. //depot/projects/hammer/usr.bin/make/main.c#18 integrate .. //depot/projects/hammer/usr.bin/make/parse.c#14 integrate .. //depot/projects/hammer/usr.bin/newkey/Makefile#4 integrate .. //depot/projects/hammer/usr.bin/pkill/Makefile#2 integrate .. //depot/projects/hammer/usr.bin/pkill/pkill.c#5 integrate .. //depot/projects/hammer/usr.bin/tr/str.c#4 integrate .. //depot/projects/hammer/usr.sbin/Makefile#58 integrate .. //depot/projects/hammer/usr.sbin/acpi/acpiconf/Makefile#2 integrate .. //depot/projects/hammer/usr.sbin/acpi/acpiconf/acpiconf.c#9 integrate .. //depot/projects/hammer/usr.sbin/acpi/acpidb/Makefile#3 integrate .. //depot/projects/hammer/usr.sbin/acpi/acpidb/acpidb.c#2 integrate .. //depot/projects/hammer/usr.sbin/amd/Makefile.inc#3 integrate .. //depot/projects/hammer/usr.sbin/amd/amd/Makefile#3 integrate .. //depot/projects/hammer/usr.sbin/amd/include/Makefile#2 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/Makefile#3 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/bthid_config.h#2 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/bthidd.c#3 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/bthidd.conf.sample#2 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/bthidd.h#2 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/client.c#2 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/hid.c#2 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/kbd.c#1 branch .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/kbd.h#1 branch .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/lexer.l#2 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/parser.y#2 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/server.c#2 integrate .. //depot/projects/hammer/usr.sbin/bluetooth/bthidd/session.c#2 integrate .. //depot/projects/hammer/usr.sbin/bootparamd/bootparamd/Makefile#3 integrate .. //depot/projects/hammer/usr.sbin/bootparamd/bootparamd/bootparamd.c#3 integrate .. //depot/projects/hammer/usr.sbin/jail/Makefile#3 integrate .. //depot/projects/hammer/usr.sbin/jail/jail.c#10 integrate .. //depot/projects/hammer/usr.sbin/moused/moused.8#9 integrate .. //depot/projects/hammer/usr.sbin/ppp/README.changes#2 integrate .. //depot/projects/hammer/usr.sbin/ppp/defs.h#3 integrate .. //depot/projects/hammer/usr.sbin/ppp/ppp.8.m4#12 integrate .. //depot/projects/hammer/usr.sbin/pppd/cbcp.c#3 integrate .. //depot/projects/hammer/usr.sbin/sendmail/Makefile#10 integrate .. //depot/projects/hammer/usr.sbin/sysinstall/anonFTP.c#3 integrate .. //depot/projects/hammer/usr.sbin/sysinstall/config.c#19 integrate .. //depot/projects/hammer/usr.sbin/sysinstall/devices.c#13 integrate .. //depot/projects/hammer/usr.sbin/sysinstall/menus.c#30 integrate .. //depot/projects/hammer/usr.sbin/sysinstall/system.c#5 integrate .. //depot/projects/hammer/usr.sbin/syslogd/syslogd.8#9 integrate .. //depot/projects/hammer/usr.sbin/syslogd/syslogd.c#18 integrate Differences ... ==== //depot/projects/hammer/Makefile.inc1#76 (text+ko) ==== @@ -1,5 +1,5 @@ # -# $FreeBSD: src/Makefile.inc1,v 1.454 2004/11/12 13:22:22 ru Exp $ +# $FreeBSD: src/Makefile.inc1,v 1.456 2004/11/15 05:59:10 peter Exp $ # # Make command line options: # -DNO_DYNAMICROOT do not link /bin and /sbin dynamically @@ -404,11 +404,21 @@ cd ${.CURDIR}/secure/lib; \ ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} .endif +.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) + cd ${.CURDIR}/kerberos5/lib; \ + ${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t} +.endif .endfor .for _dir in lib/libncurses lib/libmagic cd ${.CURDIR}/${_dir}; \ MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} build-tools .endfor +.if !defined(NO_KERBEROS) && !defined(NOCRYPT) && !defined(NO_OPENSSL) +.for _t in obj depend all + cd ${.CURDIR}/kerberos5/tools; \ + MAKEOBJDIRPREFIX=${OBJTREE}/lib32 ${MAKE} ${_t} +.endfor +.endif cd ${.CURDIR}; \ ${LIB32MAKE} -f Makefile.inc1 DESTDIR=${LIB32TMP} libraries .for _t in obj depend all @@ -992,7 +1002,7 @@ lib/libkvm lib/libmd \ lib/libncurses lib/libnetgraph lib/libopie lib/libpam \ lib/libradius \ - lib/libsbuf lib/libtacplus lib/libutil lib/libypclnt \ + lib/libsbuf lib/libtacplus lib/libutil \ lib/libz lib/msun lib/libopie__L lib/libtacplus__L: lib/libmd__L @@ -1029,6 +1039,10 @@ lib/libradius__L: lib/libmd__L .endif +.if !defined(NO_NIS) +_prebuild_libs+= lib/libypclnt +.endif + _generic_libs+= usr.bin/lex/lib .if ${MACHINE_ARCH} == "i386" ==== //depot/projects/hammer/UPDATING#67 (text+ko) ==== @@ -23,6 +23,10 @@ developers choose to disable these features on build machines to maximize performance. +20041116: + Support for systems with an 80386 CPU has been removed. Please + use FreeBSD 5.x or earlier on systems with an 80386. + 20041110: We have had a hack which would mount the root filesystem R/W if the device were named 'md*'. As part of the vnode @@ -1969,4 +1973,4 @@ Contact Warner Losh if you have any questions about your use of this document. -$FreeBSD: src/UPDATING,v 1.378 2004/11/10 07:39:27 phk Exp $ +$FreeBSD: src/UPDATING,v 1.379 2004/11/16 21:18:41 jhb Exp $ ==== //depot/projects/hammer/bin/pax/tar.c#5 (text+ko) ==== @@ -37,7 +37,7 @@ #endif #endif /* not lint */ #include -__FBSDID("$FreeBSD: src/bin/pax/tar.c,v 1.23 2004/04/06 20:06:48 markm Exp $"); +__FBSDID("$FreeBSD: src/bin/pax/tar.c,v 1.24 2004/11/13 10:56:35 yar Exp $"); #include #include @@ -387,7 +387,13 @@ * copy out the name and values in the stat buffer */ hd = (HD_TAR *)buf; - arcn->nlen = l_strncpy(arcn->name, hd->name, sizeof(arcn->name) - 1); + /* + * old tar format specifies the name always be null-terminated, + * but let's be robust to broken archives. + * the same applies to handling links below. + */ + arcn->nlen = l_strncpy(arcn->name, hd->name, + MIN(sizeof(hd->name), sizeof(arcn->name)) - 1); arcn->name[arcn->nlen] = '\0'; arcn->sb.st_mode = (mode_t)(asc_ul(hd->mode,sizeof(hd->mode),OCT) & 0xfff); @@ -417,7 +423,7 @@ */ arcn->type = PAX_SLK; arcn->ln_nlen = l_strncpy(arcn->ln_name, hd->linkname, - sizeof(arcn->ln_name) - 1); + MIN(sizeof(hd->linkname), sizeof(arcn->ln_name)) - 1); arcn->ln_name[arcn->ln_nlen] = '\0'; arcn->sb.st_mode |= S_IFLNK; break; @@ -429,7 +435,7 @@ arcn->type = PAX_HLK; arcn->sb.st_nlink = 2; arcn->ln_nlen = l_strncpy(arcn->ln_name, hd->linkname, - sizeof(arcn->ln_name) - 1); + MIN(sizeof(hd->linkname), sizeof(arcn->ln_name)) - 1); arcn->ln_name[arcn->ln_nlen] = '\0'; /* @@ -533,7 +539,7 @@ case PAX_SLK: case PAX_HLK: case PAX_HRG: - if (arcn->ln_nlen > (int)sizeof(hd->linkname)) { + if (arcn->ln_nlen >= (int)sizeof(hd->linkname)) { paxwarn(1,"Link name too long for tar %s", arcn->ln_name); return(1); } @@ -749,12 +755,19 @@ */ dest = arcn->name; if (*(hd->prefix) != '\0') { - cnt = l_strncpy(dest, hd->prefix, sizeof(arcn->name) - 2); + cnt = l_strncpy(dest, hd->prefix, + MIN(sizeof(hd->prefix), sizeof(arcn->name) - 2)); dest += cnt; *dest++ = '/'; cnt++; } - arcn->nlen = cnt + l_strncpy(dest, hd->name, sizeof(arcn->name) - cnt); + /* + * ustar format specifies the name may be unterminated + * if it fills the entire field. this also applies to + * the prefix and the linkname. + */ + arcn->nlen = cnt + l_strncpy(dest, hd->name, + MIN(sizeof(hd->name), sizeof(arcn->name) - cnt - 1)); arcn->name[arcn->nlen] = '\0'; /* @@ -848,7 +861,7 @@ * copy the link name */ arcn->ln_nlen = l_strncpy(arcn->ln_name, hd->linkname, - sizeof(arcn->ln_name) - 1); + MIN(sizeof(hd->linkname), sizeof(arcn->ln_name) - 1)); arcn->ln_name[arcn->ln_nlen] = '\0'; break; case CONTTYPE: @@ -900,7 +913,7 @@ */ if (((arcn->type == PAX_SLK) || (arcn->type == PAX_HLK) || (arcn->type == PAX_HRG)) && - (arcn->ln_nlen >= (int)sizeof(hd->linkname))) { + (arcn->ln_nlen > (int)sizeof(hd->linkname))) { paxwarn(1, "Link name too long for ustar %s", arcn->ln_name); return(1); } @@ -925,17 +938,16 @@ * occur, we remove the / and copy the first part to the prefix */ *pt = '\0'; - l_strncpy(hd->prefix, arcn->name, sizeof(hd->prefix) - 1); + l_strncpy(hd->prefix, arcn->name, sizeof(hd->prefix)); *pt++ = '/'; } else memset(hd->prefix, 0, sizeof(hd->prefix)); /* * copy the name part. this may be the whole path or the part after - * the prefix + * the prefix. both the name and prefix may fill the entire field. */ - l_strncpy(hd->name, pt, sizeof(hd->name) - 1); - hd->name[sizeof(hd->name) - 1] = '\0'; + l_strncpy(hd->name, pt, sizeof(hd->name)); /* * set the fields in the header that are type dependent @@ -978,8 +990,8 @@ hd->typeflag = SYMTYPE; else hd->typeflag = LNKTYPE; - l_strncpy(hd->linkname,arcn->ln_name, sizeof(hd->linkname) - 1); - hd->linkname[sizeof(hd->linkname) - 1] = '\0'; + /* the link name may occupy the entire field in ustar */ + l_strncpy(hd->linkname,arcn->ln_name, sizeof(hd->linkname)); memset(hd->devmajor, 0, sizeof(hd->devmajor)); memset(hd->devminor, 0, sizeof(hd->devminor)); if (ul_oct((u_long)0L, hd->size, sizeof(hd->size), 3)) @@ -1072,9 +1084,9 @@ * check to see if the file name is small enough to fit in the name * field. if so just return a pointer to the name. */ - if (len < TNMSZ) + if (len <= TNMSZ) return(name); - if (len > (TPFSZ + TNMSZ)) + if (len > (TPFSZ + TNMSZ + 1)) return(NULL); /* @@ -1083,7 +1095,7 @@ * to find the biggest piece to fit in the name field (or the smallest * prefix we can find) */ - start = name + len - TNMSZ; + start = name + len - TNMSZ - 1; while ((*start != '\0') && (*start != '/')) ++start; @@ -1101,7 +1113,7 @@ * the file would then expand on extract to //str. The len == 0 below * makes this special case follow the spec to the letter. */ - if ((len >= TPFSZ) || (len == 0)) + if ((len > TPFSZ) || (len == 0)) return(NULL); /* ==== //depot/projects/hammer/bin/ps/Makefile#6 (text+ko) ==== @@ -1,4 +1,4 @@ -# $FreeBSD: src/bin/ps/Makefile,v 1.25 2004/02/23 20:05:14 johan Exp $ +# $FreeBSD: src/bin/ps/Makefile,v 1.26 2004/11/13 17:12:22 ru Exp $ # @(#)Makefile 8.1 (Berkeley) 6/2/93 PROG= ps @@ -13,7 +13,5 @@ CFLAGS+=-DLAZY_PS DPADD= ${LIBM} ${LIBKVM} LDADD= -lm -lkvm -#BINGRP= kmem -#BINMODE=2555 .include ==== //depot/projects/hammer/bin/ps/ps.c#18 (text+ko) ==== @@ -47,7 +47,7 @@ #endif #include -__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.106 2004/06/27 22:56:58 gad Exp $"); +__FBSDID("$FreeBSD: src/bin/ps/ps.c,v 1.109 2004/11/19 16:11:54 csjp Exp $"); #include #include @@ -55,6 +55,7 @@ #include #include #include +#include #include #include @@ -128,6 +129,7 @@ } l; }; +static int check_procfs(void); static int addelem_gid(struct listinfo *, const char *); static int addelem_pid(struct listinfo *, const char *); static int addelem_tty(struct listinfo *, const char *); @@ -171,7 +173,7 @@ struct winsize ws; const char *nlistf, *memf; char *cols; - int all, ch, dropgid, elem, flag, _fmt, i, lineno; + int all, ch, elem, flag, _fmt, i, lineno; int nentries, nkept, nselectors; int prtheader, showthreads, wflag, what, xkeep, xkeep_implied; char errbuf[_POSIX2_LINE_MAX]; @@ -196,7 +198,7 @@ if (argc > 1) argv[1] = kludge_oldps_options(PS_ARGS, argv[1], argv[2]); - all = dropgid = _fmt = nselectors = optfatal = 0; + all = _fmt = nselectors = optfatal = 0; prtheader = showthreads = wflag = xkeep_implied = 0; xkeep = -1; /* Neither -x nor -X. */ init_list(&gidlist, addelem_gid, sizeof(gid_t), "group"); @@ -278,14 +280,12 @@ break; case 'M': memf = optarg; - dropgid = 1; break; case 'm': sortby = SORTMEM; break; case 'N': nlistf = optarg; - dropgid = 1; break; case 'O': parsefmt(o1, 1); @@ -404,6 +404,14 @@ argv += optind; /* + * If the user specified ps -e then they want a copy of the process + * environment kvm_getenvv(3) attempts to open /proc//mem. + * Check to make sure that procfs is mounted on /proc, otherwise + * print a warning informing the user that output will be incomplete. + */ + if (needenv == 1 && check_procfs() == 0) + warnx("Process environment requires procfs(5)"); + /* * If there arguments after processing all the options, attempt * to treat them as a list of process ids. */ @@ -423,14 +431,6 @@ if (xkeep < 0) /* Neither -X nor -x was specified. */ xkeep = xkeep_implied; - - /* - * Discard setgid privileges if not the running kernel so that bad - * guys can't print interesting stuff from kernel memory. - */ - if (dropgid) - setgid(getgid()); - kd = kvm_openfiles(nlistf, memf, NULL, O_RDONLY, errbuf); if (kd == 0) errx(1, "%s", errbuf); @@ -1176,6 +1176,18 @@ return (newopts); } +static int +check_procfs(void) +{ + struct statfs mnt; + + if (statfs("/proc", &mnt) < 0) + return (0); + if (strcmp(mnt.f_fstypename, "procfs") != 0) + return (0); + return (1); +} + static void usage(void) { ==== //depot/projects/hammer/bin/rm/rm.c#10 (text+ko) ==== @@ -39,7 +39,7 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/bin/rm/rm.c,v 1.51 2004/10/28 08:25:30 delphij Exp $"); +__FBSDID("$FreeBSD: src/bin/rm/rm.c,v 1.52 2004/11/13 04:07:01 jkh Exp $"); #include #include @@ -192,8 +192,11 @@ flags |= FTS_NOSTAT; if (Wflag) flags |= FTS_WHITEOUT; - if (!(fts = fts_open(argv, flags, NULL))) + if (!(fts = fts_open(argv, flags, NULL))) { + if (fflag && errno == ENOENT) + return; err(1, "fts_open"); + } while ((p = fts_read(fts)) != NULL) { switch (p->fts_info) { case FTS_DNR: ==== //depot/projects/hammer/bin/rmdir/rmdir.c#6 (text+ko) ==== @@ -39,7 +39,7 @@ #endif /* not lint */ #endif #include -__FBSDID("$FreeBSD: src/bin/rmdir/rmdir.c,v 1.17 2004/05/16 20:41:11 ru Exp $"); +__FBSDID("$FreeBSD: src/bin/rmdir/rmdir.c,v 1.19 2004/11/20 00:41:08 ru Exp $"); #include #include @@ -78,15 +78,14 @@ usage(); for (errors = 0; *argv; argv++) { - if (pflag) { - errors |= rm_path(*argv); + if (rmdir(*argv) < 0) { + warn("%s", *argv); + errors = 1; } else { - if (rmdir(*argv) < 0) { - warn("%s", *argv); - errors = 1; - } if (vflag) printf("%s\n", *argv); + if (pflag) + errors |= rm_path(*argv); } } @@ -104,9 +103,11 @@ *++p = '\0'; while ((p = strrchr(path, '/')) != NULL) { /* Delete trailing slashes. */ - while (--p > path && *p == '/') + while (--p >= path && *p == '/') ; *++p = '\0'; + if (p == path) + break; if (rmdir(path) < 0) { warn("%s", path); ==== //depot/projects/hammer/contrib/pf/man/pf.conf.5#6 (text+ko) ==== @@ -1,4 +1,4 @@ -.\" $FreeBSD: src/contrib/pf/man/pf.conf.5,v 1.4 2004/10/07 15:39:02 mlaier Exp $ +.\" $FreeBSD: src/contrib/pf/man/pf.conf.5,v 1.5 2004/11/14 17:05:54 mlaier Exp $ .\" $OpenBSD: pf.conf.5,v 1.292 2004/02/24 05:44:48 mcbride Exp $ .\" .\" Copyright (c) 2002, Daniel Hartmeier @@ -349,7 +349,7 @@ .It Ar set limit Sets hard limits on the memory pools used by the packet filter. See -.Xr pool 9 +.Xr zone 9 for an explanation of memory pools. .Pp For example, ==== //depot/projects/hammer/etc/ppp/ppp.conf#2 (text+ko) ==== @@ -5,7 +5,7 @@ # # See /usr/share/examples/ppp/ for some examples # -# $FreeBSD: src/etc/ppp/ppp.conf,v 1.8 2001/06/21 15:42:26 brian Exp $ +# $FreeBSD: src/etc/ppp/ppp.conf,v 1.10 2004/11/19 17:12:56 obrien Exp $ ################################################################# default: @@ -13,9 +13,9 @@ ident user-ppp VERSION (built COMPILATIONDATE) # Ensure that "device" references the correct serial port - # for your modem. (cuaa0 = COM1, cuaa1 = COM2) + # for your modem. (cuad0 = COM1, cuad1 = COM2) # - set device /dev/cuaa1 + set device /dev/cuad1 set speed 115200 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ ==== //depot/projects/hammer/etc/rc.d/Makefile#30 (text+ko) ==== @@ -1,5 +1,5 @@ # $NetBSD: Makefile,v 1.16 2001/01/14 15:37:22 minoura Exp $ -# $FreeBSD: src/etc/rc.d/Makefile,v 1.46 2004/11/04 12:59:16 phk Exp $ +# $FreeBSD: src/etc/rc.d/Makefile,v 1.47 2004/11/16 04:20:09 wes Exp $ FILES= DAEMON LOGIN NETWORKING SERVERS \ abi accounting addswap adjkerntz amd \ @@ -28,7 +28,7 @@ pccard pcvt pf pflog \ power_profile ppp-user pppoed preseedrandom pwcheck \ quota \ - random rarpd rcconf.sh resolv root \ + ramdisk ramdisk-own random rarpd rcconf.sh resolv root \ route6d routed routing rpcbind rtadvd rwho \ savecore securelevel sendmail \ serial sppp sshd swap1 \ ==== //depot/projects/hammer/etc/rc.d/ramdisk-own#3 (text+ko) ==== @@ -24,7 +24,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/rc.d/ramdisk-own,v 1.3 2004/10/07 13:55:26 mtm Exp $ +# $FreeBSD: src/etc/rc.d/ramdisk-own,v 1.4 2004/11/16 04:14:28 wes Exp $ # # PROVIDE: ramdisk-own @@ -39,7 +39,6 @@ ramdisk_own_start() { -set -x for unit in $ramdisk_units; do device="/dev/md$unit" dir=`mount | grep $device | cut -d' ' -f3` ==== //depot/projects/hammer/etc/rc.d/serial#6 (text+ko) ==== @@ -24,7 +24,7 @@ # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # -# $FreeBSD: src/etc/rc.d/serial,v 1.22 2004/10/07 13:55:26 mtm Exp $ +# $FreeBSD: src/etc/rc.d/serial,v 1.24 2004/11/14 19:51:34 obrien Exp $ # # PROVIDE: serial @@ -45,73 +45,69 @@ default() { # Reset everything changed by the other functions to initial defaults. - ci=$1; shift # call in device identifier - co=$1; shift # call out device identifier + dc=$1; shift # device name character drainwait=`sysctl -n kern.drainwait` for i in $* do - comcontrol /dev/tty${ci}${i} dtrwait 300 drainwait $drainwait - stty < /dev/ttyi${ci}${i} -clocal crtscts hupcl 9600 reprint ^R - stty < /dev/ttyl${ci}${i} -clocal -crtscts -hupcl 0 - stty < /dev/cuai${co}${i} -clocal crtscts hupcl 9600 reprint ^R - stty < /dev/cual${co}${i} -clocal -crtscts -hupcl 0 + comcontrol /dev/tty${dc}${i} dtrwait 300 drainwait $drainwait + stty < /dev/tty${dc}${i}.init -clocal crtscts hupcl 9600 reprint ^R + stty < /dev/tty${dc}${i}.lock -clocal -crtscts -hupcl 0 + stty < /dev/cua${dc}${i}.init -clocal crtscts hupcl 9600 reprint ^R + stty < /dev/cua${dc}${i}.lock -clocal -crtscts -hupcl 0 done } maybe() { # Special settings. - ci=$1; shift - co=$1; shift + dc=$1; shift for i in $* do # Don't use ^R; it breaks bash's ^R when typed ahead. - stty < /dev/ttyi${ci}${i} reprint undef - stty < /dev/cuai${co}${i} reprint undef + stty < /dev/tty${dc}${i}.init reprint undef + stty < /dev/cua${dc}${i}.init reprint undef # Lock clocal off on dialin device for security. - stty < /dev/ttyl${ci}${i} clocal + stty < /dev/tty${dc}${i}.lock clocal # Lock the speeds to use old binaries that don't support them. # Any legal speed works to lock the initial speed. - stty < /dev/ttyl${ci}${i} 300 - stty < /dev/cual${co}${i} 300 + stty < /dev/tty${dc}${i}.lock 300 + stty < /dev/cua${dc}${i}.lock 300 done } modem() { # Modem that supports CTS and perhaps RTS handshaking. - ci=$1; shift - co=$1; shift + dc=$1; shift for i in $* do # may depend on modem - comcontrol /dev/tty${ci}${i} dtrwait 100 drainwait 180 + comcontrol /dev/tty${dc}${i} dtrwait 100 drainwait 180 # Lock crtscts on. # Speed reasonable for V42bis. - stty < /dev/ttyi${ci}${i} crtscts 115200 - stty < /dev/ttyl${ci}${i} crtscts - stty < /dev/cuai${co}${i} crtscts 115200 - stty < /dev/cual${co}${i} crtscts + stty < /dev/tty${dc}${i}.init crtscts 115200 + stty < /dev/tty${dc}${i}.lock crtscts + stty < /dev/cua${dc}${i}.init crtscts 115200 + stty < /dev/cua${dc}${i}.lock crtscts done } mouse() { # Mouse on either callin or callout port. - ci=$1; shift - co=$1; shift + dc=$1; shift for i in $* do # Lock clocal on, hupcl off. # Standard speed for Microsoft mouse. - stty < /dev/ttyi${ci}${i} clocal -hupcl 1200 - stty < /dev/ttyl${ci}${i} clocal hupcl - stty < /dev/cuai${co}${i} clocal -hupcl 1200 - stty < /dev/cual${co}${i} clocal hupcl + stty < /dev/tty${dc}${i}.init clocal -hupcl 1200 + stty < /dev/tty${dc}${i}.lock clocal hupcl + stty < /dev/cua${dc}${i}.init clocal -hupcl 1200 + stty < /dev/cua${dc}${i}.lock clocal hupcl done } @@ -123,15 +119,14 @@ # provided at most one side runs getty. # Same as modem() except we want a faster speed and no dtrwait. - ci=$1; shift - co=$1; shift + dc=$1; shift - modem ${ci} ${co} $* + modem ${dc} $* for i in $* do - comcontrol /dev/tty${ci}${i} dtrwait 0 - stty < /dev/ttyi${ci}${i} 115200 - stty < /dev/cuai${co}${i} 115200 >>> TRUNCATED FOR MAIL (1000 lines) <<< From owner-p4-projects@FreeBSD.ORG Sat Nov 20 20:05:59 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 8F2C316A4D0; Sat, 20 Nov 2004 20:05:59 +0000 (GMT) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 5207416A4CE for ; Sat, 20 Nov 2004 20:05:59 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 204B743D31 for ; Sat, 20 Nov 2004 20:05:59 +0000 (GMT) (envelope-from peter@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id iAKK5xsd062675 for ; Sat, 20 Nov 2004 20:05:59 GMT (envelope-from peter@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id iAKK5wm0062672 for perforce@freebsd.org; Sat, 20 Nov 2004 20:05:58 GMT (envelope-from peter@freebsd.org) Date: Sat, 20 Nov 2004 20:05:58 GMT Message-Id: <200411202005.iAKK5wm0062672@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to peter@freebsd.org using -f From: Peter Wemm To: Perforce Change Reviews Subject: PERFORCE change 65572 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 20 Nov 2004 20:06:00 -0000 http://perforce.freebsd.org/chv.cgi?CH=65572 Change 65572 by peter@peter_daintree on 2004/11/20 20:05:21 Integ -I -b i386_hammer (converge) Affected files ... .. //depot/projects/hammer/sys/amd64/amd64/busdma_machdep.c#24 integrate .. //depot/projects/hammer/sys/amd64/amd64/genassym.c#37 integrate .. //depot/projects/hammer/sys/amd64/amd64/identcpu.c#35 integrate .. //depot/projects/hammer/sys/amd64/amd64/machdep.c#107 integrate .. //depot/projects/hammer/sys/amd64/amd64/mp_machdep.c#77 integrate .. //depot/projects/hammer/sys/amd64/amd64/support.S#26 integrate .. //depot/projects/hammer/sys/amd64/amd64/trap.c#55 integrate .. //depot/projects/hammer/sys/amd64/conf/NOTES#50 integrate .. //depot/projects/hammer/sys/amd64/include/atomic.h#12 integrate .. //depot/projects/hammer/sys/amd64/include/cpu.h#17 integrate .. //depot/projects/hammer/sys/amd64/include/endian.h#10 integrate .. //depot/projects/hammer/sys/amd64/include/param.h#28 integrate Differences ... ==== //depot/projects/hammer/sys/amd64/amd64/busdma_machdep.c#24 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/amd64/genassym.c#37 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/amd64/identcpu.c#35 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/amd64/machdep.c#107 (text+ko) ==== @@ -588,8 +588,7 @@ * CR0_MP, CR0_NE and CR0_TS are also set by npx_probe() for the * BSP. See the comments there about why we set them. */ - cr0 |= CR0_MP | CR0_NE | CR0_TS; - cr0 |= CR0_WP | CR0_AM; + cr0 |= CR0_MP | CR0_NE | CR0_TS | CR0_WP | CR0_AM; load_cr0(cr0); } ==== //depot/projects/hammer/sys/amd64/amd64/mp_machdep.c#77 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/amd64/support.S#26 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/amd64/trap.c#55 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/conf/NOTES#50 (text+ko) ==== @@ -4,7 +4,7 @@ # This file contains machine dependent kernel configuration notes. For # machine independent notes, look in /sys/conf/NOTES. # -# (XXX from i386:NOTES,v 1.1174) +# (XXX from i386:NOTES,v 1.1176) # $FreeBSD: src/sys/amd64/conf/NOTES,v 1.20 2004/09/22 01:04:54 peter Exp $ # ==== //depot/projects/hammer/sys/amd64/include/atomic.h#12 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/include/cpu.h#17 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/include/endian.h#10 (text+ko) ==== ==== //depot/projects/hammer/sys/amd64/include/param.h#28 (text+ko) ==== @@ -126,7 +126,6 @@ #endif #define KSTACK_GUARD_PAGES 1 /* pages of kstack guard; 0 disables */ - /* * Ceiling on amount of swblock kva space, can be changed via * the kern.maxswzone /boot/loader.conf variable.