From owner-svn-src-user@FreeBSD.ORG Sun Nov 7 02:16:08 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id DE687106564A; Sun, 7 Nov 2010 02:16:07 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CBEA08FC0A; Sun, 7 Nov 2010 02:16:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA72G7l9008178; Sun, 7 Nov 2010 02:16:07 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA72G7Sv008170; Sun, 7 Nov 2010 02:16:07 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011070216.oA72G7Sv008170@svn.freebsd.org> From: David Xu Date: Sun, 7 Nov 2010 02:16:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214901 - in user/davidxu/libthr: include lib/libc/include lib/libthr lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Nov 2010 02:16:08 -0000 Author: davidxu Date: Sun Nov 7 02:16:07 2010 New Revision: 214901 URL: http://svn.freebsd.org/changeset/base/214901 Log: Add POSIX functions pthread_mutexattr_setrobust and pthread_mutexattr_getrobust, these functions are required to support POSIX robust mutex. Modified: user/davidxu/libthr/include/pthread.h user/davidxu/libthr/lib/libc/include/namespace.h user/davidxu/libthr/lib/libc/include/un-namespace.h user/davidxu/libthr/lib/libthr/pthread.map user/davidxu/libthr/lib/libthr/thread/thr_init.c user/davidxu/libthr/lib/libthr/thread/thr_mutexattr.c user/davidxu/libthr/lib/libthr/thread/thr_private.h Modified: user/davidxu/libthr/include/pthread.h ============================================================================== --- user/davidxu/libthr/include/pthread.h Sun Nov 7 01:19:40 2010 (r214900) +++ user/davidxu/libthr/include/pthread.h Sun Nov 7 02:16:07 2010 (r214901) @@ -135,6 +135,9 @@ enum pthread_mutextype { #define PTHREAD_MUTEX_DEFAULT PTHREAD_MUTEX_ERRORCHECK +#define PTHREAD_MUTEX_STALLED 0 +#define PTHREAD_MUTEX_ROBUST 1 + enum pthread_rwlocktype_np { PTHREAD_RWLOCK_PREFER_READER_NP, @@ -214,13 +217,17 @@ int pthread_join(pthread_t, void **); int pthread_key_create(pthread_key_t *, void (*) (void *)); int pthread_key_delete(pthread_key_t); -int pthread_mutexattr_init(pthread_mutexattr_t *); int pthread_mutexattr_destroy(pthread_mutexattr_t *); +int pthread_mutexattr_getrobust(const pthread_mutexattr_t *__restrict, + int *__restrict); int pthread_mutexattr_getpshared(const pthread_mutexattr_t *, int *); int pthread_mutexattr_gettype(pthread_mutexattr_t *, int *); +int pthread_mutexattr_init(pthread_mutexattr_t *); int pthread_mutexattr_settype(pthread_mutexattr_t *, int); int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int); +int pthread_mutexattr_setrobust(pthread_mutexattr_t *, + int); int pthread_mutex_destroy(pthread_mutex_t *); int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *); Modified: user/davidxu/libthr/lib/libc/include/namespace.h ============================================================================== --- user/davidxu/libthr/lib/libc/include/namespace.h Sun Nov 7 01:19:40 2010 (r214900) +++ user/davidxu/libthr/lib/libc/include/namespace.h Sun Nov 7 02:16:07 2010 (r214901) @@ -157,12 +157,14 @@ #define pthread_mutexattr_getprioceiling _pthread_mutexattr_getprioceiling #define pthread_mutexattr_getprotocol _pthread_mutexattr_getprotocol #define pthread_mutexattr_getpshared _pthread_mutexattr_getpshared +#define pthread_mutexattr_getrobust _pthread_mutexattr_getrobust #define pthread_mutexattr_gettype _pthread_mutexattr_gettype #define pthread_mutexattr_init _pthread_mutexattr_init #define pthread_mutexattr_setkind_np _pthread_mutexattr_setkind_np #define pthread_mutexattr_setprioceiling _pthread_mutexattr_setprioceiling #define pthread_mutexattr_setprotocol _pthread_mutexattr_setprotocol #define pthread_mutexattr_setpshared _pthread_mutexattr_setpshared +#define pthread_mutexattr_setrobust _pthread_mutexattr_setrobust #define pthread_mutexattr_settype _pthread_mutexattr_settype #define pthread_once _pthread_once #define pthread_resume_all_np _pthread_resume_all_np Modified: user/davidxu/libthr/lib/libc/include/un-namespace.h ============================================================================== --- user/davidxu/libthr/lib/libc/include/un-namespace.h Sun Nov 7 01:19:40 2010 (r214900) +++ user/davidxu/libthr/lib/libc/include/un-namespace.h Sun Nov 7 02:16:07 2010 (r214901) @@ -138,12 +138,14 @@ #undef pthread_mutexattr_getprioceiling #undef pthread_mutexattr_getprotocol #undef pthread_mutexattr_getpshared +#undef pthread_mutexattr_getrobust #undef pthread_mutexattr_gettype #undef pthread_mutexattr_init #undef pthread_mutexattr_setkind_np #undef pthread_mutexattr_setprioceiling #undef pthread_mutexattr_setprotocol #undef pthread_mutexattr_setpshared +#undef pthread_mutexattr_setrobust #undef pthread_mutexattr_settype #undef pthread_once #undef pthread_resume_all_np Modified: user/davidxu/libthr/lib/libthr/pthread.map ============================================================================== --- user/davidxu/libthr/lib/libthr/pthread.map Sun Nov 7 01:19:40 2010 (r214900) +++ user/davidxu/libthr/lib/libthr/pthread.map Sun Nov 7 02:16:07 2010 (r214901) @@ -297,12 +297,14 @@ FBSDprivate_1.0 { _pthread_mutexattr_getprioceiling; _pthread_mutexattr_getprotocol; _pthread_mutexattr_getpshared; + _pthread_mutexattr_getrobust; _pthread_mutexattr_gettype; _pthread_mutexattr_init; _pthread_mutexattr_setkind_np; _pthread_mutexattr_setprioceiling; _pthread_mutexattr_setprotocol; _pthread_mutexattr_setpshared; + _pthread_mutexattr_setrobust; _pthread_mutexattr_settype; _pthread_once; _pthread_resume_all_np; @@ -403,4 +405,6 @@ FBSD_1.2 { openat; setcontext; swapcontext; + pthread_mutexattr_getrobust; + pthread_mutexattr_setrobust; }; Modified: user/davidxu/libthr/lib/libthr/thread/thr_init.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_init.c Sun Nov 7 01:19:40 2010 (r214900) +++ user/davidxu/libthr/lib/libthr/thread/thr_init.c Sun Nov 7 02:16:07 2010 (r214901) @@ -90,7 +90,8 @@ struct pthread_mutex_attr _pthread_mutex .m_type = PTHREAD_MUTEX_DEFAULT, .m_protocol = PTHREAD_PRIO_NONE, .m_ceiling = 0, - .m_pshared = 0 + .m_pshared = 0, + .m_robust = PTHREAD_MUTEX_STALLED }; struct pthread_mutex_attr _pthread_mutexattr_adaptive_default = { Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutexattr.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_mutexattr.c Sun Nov 7 01:19:40 2010 (r214900) +++ user/davidxu/libthr/lib/libthr/thread/thr_mutexattr.c Sun Nov 7 02:16:07 2010 (r214901) @@ -81,6 +81,8 @@ __weak_reference(_pthread_mutexattr_getp __weak_reference(_pthread_mutexattr_setprotocol, pthread_mutexattr_setprotocol); __weak_reference(_pthread_mutexattr_getprioceiling, pthread_mutexattr_getprioceiling); __weak_reference(_pthread_mutexattr_setprioceiling, pthread_mutexattr_setprioceiling); +__weak_reference(_pthread_mutexattr_getrobust, pthread_mutexattr_getrobust); +__weak_reference(_pthread_mutexattr_setrobust, pthread_mutexattr_setrobust); int _pthread_mutexattr_init(pthread_mutexattr_t *attr) @@ -253,3 +255,35 @@ _pthread_mutexattr_setprioceiling(pthrea return(ret); } +int +_pthread_mutexattr_getrobust(const pthread_mutexattr_t *mattr, + int *robust) +{ + int error; + + if ((mattr == NULL) || (*mattr == NULL)) + error = EINVAL; + else { + *robust =(*mattr)->m_robust; + error = 0; + } + return (error); +} + +int +_pthread_mutexattr_setrobust(pthread_mutexattr_t *mattr, + int robust) +{ + int error; + + if ((mattr == NULL) || (*mattr == NULL)) + error = EINVAL; + else if (robust == PTHREAD_MUTEX_STALLED || + robust == PTHREAD_MUTEX_ROBUST) { + (*mattr)->m_robust = robust; + error = 0; + } else{ + error = EINVAL; + } + return (error); +} Modified: user/davidxu/libthr/lib/libthr/thread/thr_private.h ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_private.h Sun Nov 7 01:19:40 2010 (r214900) +++ user/davidxu/libthr/lib/libthr/thread/thr_private.h Sun Nov 7 02:16:07 2010 (r214901) @@ -156,6 +156,7 @@ struct pthread_mutex_attr { int m_protocol; int m_ceiling; int m_pshared; + int m_robust; }; struct pthread_cond { From owner-svn-src-user@FreeBSD.ORG Sun Nov 7 02:20:34 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 8718B106566B; Sun, 7 Nov 2010 02:20:34 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 760FE8FC0A; Sun, 7 Nov 2010 02:20:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA72KYUk008500; Sun, 7 Nov 2010 02:20:34 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA72KYF7008498; Sun, 7 Nov 2010 02:20:34 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011070220.oA72KYF7008498@svn.freebsd.org> From: David Xu Date: Sun, 7 Nov 2010 02:20:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214902 - user/davidxu/libthr/sys/sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Nov 2010 02:20:34 -0000 Author: davidxu Date: Sun Nov 7 02:20:34 2010 New Revision: 214902 URL: http://svn.freebsd.org/changeset/base/214902 Log: The POSIX robust mutex may return two error codes: EOWNERDEAD - owner thread is dead without unlocking mutex. ENOTRECOVERABLE - application marks its state unrecoverable. Modified: user/davidxu/libthr/sys/sys/errno.h Modified: user/davidxu/libthr/sys/sys/errno.h ============================================================================== --- user/davidxu/libthr/sys/sys/errno.h Sun Nov 7 02:16:07 2010 (r214901) +++ user/davidxu/libthr/sys/sys/errno.h Sun Nov 7 02:20:34 2010 (r214902) @@ -177,8 +177,10 @@ __END_DECLS #define ENOTCAPABLE 93 /* Capabilities insufficient */ #endif /* _POSIX_SOURCE */ +#define EOWNERDEAD 94 +#define ENOTRECOVERABLE 95 #ifndef _POSIX_SOURCE -#define ELAST 93 /* Must be equal largest errno */ +#define ELAST 95 /* Must be equal largest errno */ #endif /* _POSIX_SOURCE */ #ifdef _KERNEL From owner-svn-src-user@FreeBSD.ORG Sun Nov 7 06:46:52 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A38F5106566B; Sun, 7 Nov 2010 06:46:52 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 92E858FC18; Sun, 7 Nov 2010 06:46:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA76kqSY022982; Sun, 7 Nov 2010 06:46:52 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA76kqOi022980; Sun, 7 Nov 2010 06:46:52 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011070646.oA76kqOi022980@svn.freebsd.org> From: David Xu Date: Sun, 7 Nov 2010 06:46:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214906 - user/davidxu/libthr/lib/libc/gen X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Nov 2010 06:46:52 -0000 Author: davidxu Date: Sun Nov 7 06:46:52 2010 New Revision: 214906 URL: http://svn.freebsd.org/changeset/base/214906 Log: Add error messages for error code EOWNERDEAD and ENOTRECOVERABLE. Modified: user/davidxu/libthr/lib/libc/gen/errlst.c Modified: user/davidxu/libthr/lib/libc/gen/errlst.c ============================================================================== --- user/davidxu/libthr/lib/libc/gen/errlst.c Sun Nov 7 03:40:37 2010 (r214905) +++ user/davidxu/libthr/lib/libc/gen/errlst.c Sun Nov 7 06:46:52 2010 (r214906) @@ -151,5 +151,7 @@ const char *const sys_errlist[] = { "Link has been severed", /* 91 - ENOLINK */ "Protocol error", /* 92 - EPROTO */ "Capabilities insufficient", /* 93 - ENOTCAPABLE */ + "Previous owning thread terminated", /* 94 - EOWNERDEAD */ + "State is not recoverable" /* 95 - ENOTRECOVERABLE */ }; const int sys_nerr = sizeof(sys_errlist) / sizeof(sys_errlist[0]); From owner-svn-src-user@FreeBSD.ORG Sun Nov 7 13:41:18 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 29A611065672; Sun, 7 Nov 2010 13:41:18 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 177918FC14; Sun, 7 Nov 2010 13:41:18 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA7DfIEv048099; Sun, 7 Nov 2010 13:41:18 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA7DfILV048093; Sun, 7 Nov 2010 13:41:18 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011071341.oA7DfILV048093@svn.freebsd.org> From: David Xu Date: Sun, 7 Nov 2010 13:41:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214914 - in user/davidxu/libthr/sys: kern sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Nov 2010 13:41:18 -0000 Author: davidxu Date: Sun Nov 7 13:41:17 2010 New Revision: 214914 URL: http://svn.freebsd.org/changeset/base/214914 Log: Implement robust mutex. userland calls kernel to lock and unlock robust mutex. The kernel remember a list of robust mutexes, and when a thread exits, if its robust mutexes are not unlocked, the kernel will atomatically unlock them and set their robust states to OWNERDEAD. Modified: user/davidxu/libthr/sys/kern/kern_thr.c user/davidxu/libthr/sys/kern/kern_thread.c user/davidxu/libthr/sys/kern/kern_umtx.c user/davidxu/libthr/sys/sys/_umtx.h user/davidxu/libthr/sys/sys/umtx.h Modified: user/davidxu/libthr/sys/kern/kern_thr.c ============================================================================== --- user/davidxu/libthr/sys/kern/kern_thr.c Sun Nov 7 12:29:26 2010 (r214913) +++ user/davidxu/libthr/sys/kern/kern_thr.c Sun Nov 7 13:41:17 2010 (r214914) @@ -285,12 +285,10 @@ thr_exit(struct thread *td, struct thr_e kern_umtx_wake(td, uap->state, INT_MAX, 0); } + umtx_thread_exit(td); + rw_wlock(&tidhash_lock); PROC_LOCK(p); - /* - * Shutting down last thread in the proc. This will actually - * call exit() in the trampoline when it returns. - */ if (p->p_numthreads != 1) { LIST_REMOVE(td, td_hash); rw_wunlock(&tidhash_lock); @@ -299,9 +297,11 @@ thr_exit(struct thread *td, struct thr_e thread_stopped(p); thread_exit(); /* NOTREACHED */ + } else { + PROC_UNLOCK(p); + rw_wunlock(&tidhash_lock); + exit1(td, 0); } - PROC_UNLOCK(p); - rw_wunlock(&tidhash_lock); return (0); } Modified: user/davidxu/libthr/sys/kern/kern_thread.c ============================================================================== --- user/davidxu/libthr/sys/kern/kern_thread.c Sun Nov 7 12:29:26 2010 (r214913) +++ user/davidxu/libthr/sys/kern/kern_thread.c Sun Nov 7 13:41:17 2010 (r214914) @@ -373,7 +373,6 @@ thread_exit(void) #ifdef AUDIT AUDIT_SYSCALL_EXIT(0, td); #endif - umtx_thread_exit(td); /* * drop FPU & debug register state storage, or any other * architecture specific resources that @@ -754,6 +753,7 @@ thread_suspend_check(int return_instead) if ((p->p_flag & P_SINGLE_EXIT) && (p->p_singlethread != td)) { PROC_UNLOCK(p); tidhash_remove(td); + umtx_thread_exit(td); PROC_LOCK(p); tdsigcleanup(td); PROC_SLOCK(p); Modified: user/davidxu/libthr/sys/kern/kern_umtx.c ============================================================================== --- user/davidxu/libthr/sys/kern/kern_umtx.c Sun Nov 7 12:29:26 2010 (r214913) +++ user/davidxu/libthr/sys/kern/kern_umtx.c Sun Nov 7 13:41:17 2010 (r214914) @@ -116,6 +116,16 @@ struct umtx_pi { struct umtx_key pi_key; }; +struct robust_info { + struct thread *ownertd; + SLIST_ENTRY(robust_info) hash_qe; + LIST_ENTRY(robust_info) td_qe; + struct umutex *umtxp; +}; + +SLIST_HEAD(robust_hashlist, robust_info); +LIST_HEAD(robust_list, robust_info); + /* A userland synchronous object user. */ struct umtx_q { /* Linked list for the hash. */ @@ -154,6 +164,8 @@ struct umtx_q { struct umtxq_queue *uq_cur_queue; int uq_repair_mutex; + + struct robust_list uq_rob_list; }; TAILQ_HEAD(umtxq_head, umtx_q); @@ -195,6 +207,13 @@ struct umtxq_chain { }; +struct robust_chain { + /* Lock for this chain. */ + struct mtx lock; + struct robust_hashlist rob_list; +}; + + #define UMTXQ_LOCKED_ASSERT(uc) mtx_assert(&(uc)->uc_lock, MA_OWNED) #define UMTXQ_BUSY_ASSERT(uc) KASSERT(&(uc)->uc_busy, ("umtx chain is not busy")) @@ -224,7 +243,11 @@ struct umtxq_chain { #define BUSY_SPINS 200 +#define ROBUST_CHAINS 128 +#define ROBUST_SHIFTS (__WORD_BIT - 7) + static uma_zone_t umtx_pi_zone; +static uma_zone_t robust_zone; static struct umtxq_chain umtxq_chains[2][UMTX_CHAINS]; static MALLOC_DEFINE(M_UMTX, "umtx", "UMTX queue memory"); static int umtx_pi_allocated; @@ -234,6 +257,8 @@ static int umtx_cvsig_migrate = 0; static int umtx_cvsig_migrate = 1; #endif +static struct robust_chain robust_chains[ROBUST_CHAINS]; + SYSCTL_NODE(_debug, OID_AUTO, umtx, CTLFLAG_RW, 0, "umtx debug"); SYSCTL_INT(_debug_umtx, OID_AUTO, umtx_pi_allocated, CTLFLAG_RD, &umtx_pi_allocated, 0, "Allocated umtx_pi"); @@ -284,10 +309,17 @@ static void umtx_key_release(struct umtx static struct umtx_pi *umtx_pi_alloc(int); static void umtx_pi_free(struct umtx_pi *pi); static void umtx_pi_adjust_locked(struct thread *td, u_char oldpri); -static int do_unlock_pp(struct thread *td, struct umutex *m, uint32_t flags); -static void umtx_thread_cleanup(struct thread *td); +static int do_unlock_pp(struct thread *, struct umutex *, uint32_t, int); +static void umtx_thread_cleanup(struct thread *); static void umtx_exec_hook(void *arg __unused, struct proc *p __unused, struct image_params *imgp __unused); +static void umtx_exit_hook(void *arg __unused, struct proc *p __unused); +static struct robust_info *robust_alloc(void); +static void robust_free(struct robust_info *); +static int robust_insert(struct thread *, struct robust_info *); +static void robust_remove(struct thread *, struct umutex *); +static int do_unlock_umutex(struct thread *, struct umutex *, int); + SYSINIT(umtx, SI_SUB_EVENTHANDLER+1, SI_ORDER_MIDDLE, umtxq_sysinit, NULL); #define umtxq_signal(key, nwake) umtxq_signal_queue((key), (nwake), UMTX_SHARED_QUEUE) @@ -303,6 +335,8 @@ umtxq_sysinit(void *arg __unused) umtx_pi_zone = uma_zcreate("umtx pi", sizeof(struct umtx_pi), NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); + robust_zone = uma_zcreate("robust umtx", sizeof(struct robust_info), + NULL, NULL, NULL, NULL, UMA_ALIGN_PTR, 0); for (i = 0; i < 2; ++i) { for (j = 0; j < UMTX_CHAINS; ++j) { mtx_init(&umtxq_chains[i][j].uc_lock, "umtxql", NULL, @@ -315,9 +349,18 @@ umtxq_sysinit(void *arg __unused) umtxq_chains[i][j].uc_waiters = 0; } } + + for (i = 0; i < ROBUST_CHAINS; ++i) { + mtx_init(&robust_chains[i].lock, "robql", NULL, + MTX_DEF | MTX_DUPOK); + SLIST_INIT(&robust_chains[i].rob_list); + } + mtx_init(&umtx_lock, "umtx lock", NULL, MTX_SPIN); EVENTHANDLER_REGISTER(process_exec, umtx_exec_hook, NULL, EVENTHANDLER_PRI_ANY); + EVENTHANDLER_REGISTER(process_exit, umtx_exit_hook, NULL, + EVENTHANDLER_PRI_ANY); } struct umtx_q * @@ -326,9 +369,11 @@ umtxq_alloc(void) struct umtx_q *uq; uq = malloc(sizeof(struct umtx_q), M_UMTX, M_WAITOK | M_ZERO); - uq->uq_spare_queue = malloc(sizeof(struct umtxq_queue), M_UMTX, M_WAITOK | M_ZERO); + uq->uq_spare_queue = malloc(sizeof(struct umtxq_queue), M_UMTX, + M_WAITOK | M_ZERO); TAILQ_INIT(&uq->uq_spare_queue->head); TAILQ_INIT(&uq->uq_pi_contested); + LIST_INIT(&uq->uq_rob_list); uq->uq_inherited_pri = PRI_MAX; return (uq); } @@ -1321,6 +1366,19 @@ _do_lock_normal(struct thread *td, struc return (0); } +static void +update_robst(struct umutex *m, int td_exit) +{ + uint32_t robst = fubyte(&m->m_robstate); + + if (robst == UMUTEX_ROBST_NORMAL) { + if (td_exit) + subyte(&m->m_robstate, UMUTEX_ROBST_OWNERDEAD); + } else if (!td_exit && robst == UMUTEX_ROBST_INCONSISTENT) { + subyte(&m->m_robstate, UMUTEX_ROBST_NOTRECOVERABLE); + } +} + /* * Lock PTHREAD_PRIO_NONE protocol POSIX mutex. */ @@ -1328,7 +1386,8 @@ _do_lock_normal(struct thread *td, struc * Unlock PTHREAD_PRIO_NONE protocol POSIX mutex. */ static int -do_unlock_normal(struct thread *td, struct umutex *m, uint32_t flags) +do_unlock_normal(struct thread *td, struct umutex *m, uint32_t flags, + int td_exit) { struct umtx_key key; uint32_t owner, old, id; @@ -1349,6 +1408,9 @@ do_unlock_normal(struct thread *td, stru if ((owner & ~UMUTEX_CONTESTED) != id) return (EPERM); + if ((flags & UMUTEX_ROBUST) != 0) + update_robst(m, td_exit); + if ((owner & UMUTEX_CONTESTED) == 0) { old = casuword32(&m->m_owner, owner, UMUTEX_UNOWNED); if (old == -1) @@ -1974,7 +2036,8 @@ _do_lock_pi(struct thread *td, struct um * Unlock a PI mutex. */ static int -do_unlock_pi(struct thread *td, struct umutex *m, uint32_t flags) +do_unlock_pi(struct thread *td, struct umutex *m, uint32_t flags, + int td_exit) { struct umtx_key key; struct umtx_q *uq_first, *uq_first2, *uq_me; @@ -1995,6 +2058,9 @@ do_unlock_pi(struct thread *td, struct u if ((owner & ~UMUTEX_CONTESTED) != id) return (EPERM); + if ((flags & UMUTEX_ROBUST) != 0) + update_robst(m, td_exit); + /* This should be done in userland */ if ((owner & UMUTEX_CONTESTED) == 0) { old = casuword32(&m->m_owner, owner, UMUTEX_UNOWNED); @@ -2207,7 +2273,8 @@ out: * Unlock a PP mutex. */ static int -do_unlock_pp(struct thread *td, struct umutex *m, uint32_t flags) +do_unlock_pp(struct thread *td, struct umutex *m, uint32_t flags, + int td_exit) { struct umtx_key key; struct umtx_q *uq, *uq2; @@ -2237,6 +2304,9 @@ do_unlock_pp(struct thread *td, struct u if (error != 0) return (error); + if ((flags & UMUTEX_ROBUST) != 0) + update_robst(m, td_exit); + if (rceiling == -1) new_inherited_pri = PRI_MAX; else { @@ -2398,6 +2468,7 @@ do_lock_umutex(struct thread *td, struct struct timespec *timeout, int mode, int wflags) { struct timespec cts, ets, tts; + struct robust_info *rob = NULL; struct timeval tv; uint32_t flags; int error; @@ -2406,6 +2477,12 @@ do_lock_umutex(struct thread *td, struct if (flags == -1) return (EFAULT); + if ((flags & UMUTEX_ROBUST) != 0 && mode != _UMUTEX_WAIT) { + rob = robust_alloc(); + rob->ownertd = td; + rob->umtxp = m; + } + if (timeout == NULL) { error = _do_lock_umutex(td, m, flags, 0, mode); /* Mutex locking is restarted if it is interrupted. */ @@ -2444,6 +2521,31 @@ do_lock_umutex(struct thread *td, struct if (error == ERESTART) error = EINTR; } + + if (error == 0) { + if ((flags & UMUTEX_ROBUST) != 0 && mode != _UMUTEX_WAIT) { + uint32_t robst = fubyte(&m->m_robstate); + + if (robst == UMUTEX_ROBST_OWNERDEAD) { + subyte(&m->m_robstate, + UMUTEX_ROBST_INCONSISTENT); + error = EOWNERDEAD; + } else if (robst == UMUTEX_ROBST_INCONSISTENT) { + error = EOWNERDEAD; + } else if (robst == UMUTEX_ROBST_NOTRECOVERABLE) { + error = ENOTRECOVERABLE; + if (rob != NULL) + robust_free(rob); + do_unlock_umutex(td, m, 0); + goto out; + } + if (rob != NULL && robust_insert(td, rob)) + robust_free(rob); + } + } else if (rob != NULL) { + robust_free(rob); + } +out: return (error); } @@ -2451,9 +2553,13 @@ do_lock_umutex(struct thread *td, struct * Unlock a userland POSIX mutex. */ static int -do_unlock_umutex(struct thread *td, struct umutex *m) +do_unlock_umutex(struct thread *td, struct umutex *m, int td_exit) { uint32_t flags; + int error; + + if (td_exit) + robust_remove(td, m); flags = fuword32(&m->m_flags); if (flags == -1) @@ -2461,14 +2567,20 @@ do_unlock_umutex(struct thread *td, stru switch(flags & (UMUTEX_PRIO_INHERIT | UMUTEX_PRIO_PROTECT)) { case 0: - return (do_unlock_normal(td, m, flags)); + error = do_unlock_normal(td, m, flags, td_exit); + break; case UMUTEX_PRIO_INHERIT: - return (do_unlock_pi(td, m, flags)); + error = do_unlock_pi(td, m, flags, td_exit); + break; case UMUTEX_PRIO_PROTECT: - return (do_unlock_pp(td, m, flags)); + error = do_unlock_pp(td, m, flags, td_exit); + break; + default: + error = EINVAL; } - - return (EINVAL); + if ((flags & UMUTEX_ROBUST) != 0 && !td_exit) + robust_remove(td, m); + return (error); } static int @@ -2590,7 +2702,7 @@ ignore: umtxq_unbusy(&uq->uq_key); umtxq_unlock(&uq->uq_key); - error = do_unlock_umutex(td, m); + error = do_unlock_umutex(td, m, 0); if (error) { UMTX_STATE_INC(cv_unlock_failure); error = 0; /* ignore the error */ @@ -3601,7 +3713,7 @@ __umtx_op_wake_umutex(struct thread *td, static int __umtx_op_unlock_umutex(struct thread *td, struct _umtx_op_args *uap) { - return do_unlock_umutex(td, uap->obj); + return do_unlock_umutex(td, uap->obj, 0); } static int @@ -4027,6 +4139,79 @@ freebsd32_umtx_op(struct thread *td, str } #endif +struct robust_info * +robust_alloc(void) +{ + struct robust_info *rb; + + rb = uma_zalloc(robust_zone, M_ZERO|M_WAITOK); + return (rb); +} + +static void +robust_free(struct robust_info *rb) +{ + uma_zfree(robust_zone, rb); +} + +static unsigned int +robust_hash(struct umutex *m) +{ + unsigned n = (uintptr_t)m; + return ((n * GOLDEN_RATIO_PRIME) >> ROBUST_SHIFTS) % ROBUST_CHAINS; +} + +static int +robust_insert(struct thread *td, struct robust_info *rob) +{ + struct umtx_q *uq = td->td_umtxq; + struct robust_info *rob2; + int hash = robust_hash(rob->umtxp); + struct robust_chain *robc = &robust_chains[hash]; + + mtx_lock(&robc->lock); + SLIST_FOREACH(rob2, &robc->rob_list, hash_qe) { + if (rob2->ownertd == td && + rob2->umtxp == rob->umtxp) { + mtx_unlock(&robc->lock); + return (EEXIST); + } + } + rob->ownertd = td; + SLIST_INSERT_HEAD(&robc->rob_list, rob, hash_qe); + mtx_unlock(&robc->lock); + LIST_INSERT_HEAD(&uq->uq_rob_list, rob, td_qe); + return (0); +} + +static void +robust_remove(struct thread *td, struct umutex *umtxp) +{ + struct robust_info *rob, *rob2; + int hash = robust_hash(umtxp); + struct robust_chain *robc = &robust_chains[hash]; + + rob2 = NULL; + mtx_lock(&robc->lock); + SLIST_FOREACH(rob, &robc->rob_list, hash_qe) { + if (rob->ownertd == td && + rob->umtxp == umtxp) { + if (rob2 == NULL) { + SLIST_REMOVE_HEAD(&robc->rob_list, hash_qe); + } else { + SLIST_REMOVE_AFTER(rob2, hash_qe); + } + break; + } + rob2 = rob; + } + mtx_unlock(&robc->lock); + if (rob != NULL) { + LIST_REMOVE(rob, td_qe); + robust_free(rob); + } +} + void umtx_thread_init(struct thread *td) { @@ -4058,7 +4243,7 @@ umtx_thread_alloc(struct thread *td) } /* - * exec() hook. + * exec() hook, clean up lastest thread's umtx info. */ static void umtx_exec_hook(void *arg __unused, struct proc *p __unused, @@ -4068,6 +4253,15 @@ umtx_exec_hook(void *arg __unused, struc } /* + * exit1() hook, clean up lastest thread's umtx info. + */ +static void +umtx_exit_hook(void *arg __unused, struct proc *p __unused) +{ + umtx_thread_cleanup(curthread); +} + +/* * thread_exit() hook. */ void @@ -4084,10 +4278,14 @@ umtx_thread_cleanup(struct thread *td) { struct umtx_q *uq; struct umtx_pi *pi; + struct robust_info *rob; if ((uq = td->td_umtxq) == NULL) return; + while ((rob = LIST_FIRST(&uq->uq_rob_list)) != NULL) + do_unlock_umutex(td, rob->umtxp, 1); + mtx_lock_spin(&umtx_lock); uq->uq_inherited_pri = PRI_MAX; while ((pi = TAILQ_FIRST(&uq->uq_pi_contested)) != NULL) { Modified: user/davidxu/libthr/sys/sys/_umtx.h ============================================================================== --- user/davidxu/libthr/sys/sys/_umtx.h Sun Nov 7 12:29:26 2010 (r214913) +++ user/davidxu/libthr/sys/sys/_umtx.h Sun Nov 7 13:41:17 2010 (r214914) @@ -40,7 +40,9 @@ struct umutex { volatile __lwpid_t m_owner; /* Owner of the mutex */ __uint32_t m_flags; /* Flags of the mutex */ __uint32_t m_ceilings[2]; /* Priority protect ceiling */ - __uint32_t m_spare[4]; + __uint8_t m_robstate; + __uint8_t m_spare1[3]; + __uint32_t m_spare2[3]; }; struct ucond { Modified: user/davidxu/libthr/sys/sys/umtx.h ============================================================================== --- user/davidxu/libthr/sys/sys/umtx.h Sun Nov 7 12:29:26 2010 (r214913) +++ user/davidxu/libthr/sys/sys/umtx.h Sun Nov 7 13:41:17 2010 (r214914) @@ -45,20 +45,26 @@ #define UMUTEX_ERROR_CHECK 0x0002 /* Error-checking mutex */ #define UMUTEX_PRIO_INHERIT 0x0004 /* Priority inherited mutex */ #define UMUTEX_PRIO_PROTECT 0x0008 /* Priority protect mutex */ -#define UMUTEX_SIMPLE 0x0010 /* Use simple lock id. */ +#define UMUTEX_SIMPLE 0x0010 /* Use simple lock id. */ +#define UMUTEX_ROBUST 0x0020 -#define UMUTEX_SIMPLE_OWNER 1 /* The simple mutex's lock bit. */ +#define UMUTEX_SIMPLE_OWNER 1 /* The simple mutex's lock bit. */ + +#define UMUTEX_ROBST_NORMAL 0 +#define UMUTEX_ROBST_OWNERDEAD 1 +#define UMUTEX_ROBST_INCONSISTENT 2 +#define UMUTEX_ROBST_NOTRECOVERABLE 3 /* urwlock flags */ -#define URWLOCK_PREFER_READER 0x0002 +#define URWLOCK_PREFER_READER 0x0002 -#define URWLOCK_WRITE_OWNER 0x80000000U -#define URWLOCK_WRITE_WAITERS 0x40000000U -#define URWLOCK_READ_WAITERS 0x20000000U -#define URWLOCK_MAX_READERS 0x1fffffffU -#define URWLOCK_READER_COUNT(c) ((c) & URWLOCK_MAX_READERS) +#define URWLOCK_WRITE_OWNER 0x80000000U +#define URWLOCK_WRITE_WAITERS 0x40000000U +#define URWLOCK_READ_WAITERS 0x20000000U +#define URWLOCK_MAX_READERS 0x1fffffffU +#define URWLOCK_READER_COUNT(c) ((c) & URWLOCK_MAX_READERS) -#define UCOND_BIND_MUTEX 0x0002 +#define UCOND_BIND_MUTEX 0x0002 /* _usem flags */ #define SEM_NAMED 0x0002 From owner-svn-src-user@FreeBSD.ORG Sun Nov 7 13:49:09 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1F6981065674; Sun, 7 Nov 2010 13:49:09 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 0D9D18FC1C; Sun, 7 Nov 2010 13:49:09 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA7Dn98E048548; Sun, 7 Nov 2010 13:49:09 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA7Dn8Po048543; Sun, 7 Nov 2010 13:49:09 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011071349.oA7Dn8Po048543@svn.freebsd.org> From: David Xu Date: Sun, 7 Nov 2010 13:49:08 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214915 - user/davidxu/libthr/lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Nov 2010 13:49:09 -0000 Author: davidxu Date: Sun Nov 7 13:49:08 2010 New Revision: 214915 URL: http://svn.freebsd.org/changeset/base/214915 Log: Implement robust mutex, the pthread_mutex locking and unlocking code are reworked to support robust mutex and other mutex must be locked and unlocked by kernel. Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutex.c user/davidxu/libthr/lib/libthr/thread/thr_private.h user/davidxu/libthr/lib/libthr/thread/thr_umtx.c user/davidxu/libthr/lib/libthr/thread/thr_umtx.h Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutex.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Sun Nov 7 13:41:17 2010 (r214914) +++ user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Sun Nov 7 13:49:08 2010 (r214915) @@ -85,7 +85,7 @@ static int mutex_self_trylock(pthread_mu static int mutex_self_lock(pthread_mutex_t, const struct timespec *abstime); static int mutex_unlock_common(pthread_mutex_t *); -static int mutex_lock_sleep(struct pthread *, pthread_mutex_t, +static int mutex_lock_sleep(pthread_mutex_t, const struct timespec *); static void enqueue_mutex(struct pthread *, struct pthread_mutex *); static void dequeue_mutex(struct pthread *, struct pthread_mutex *); @@ -141,8 +141,7 @@ mutex_init(pthread_mutex_t *mutex, pmutex->m_type = attr->m_type; pmutex->m_ownertd = NULL; - pmutex->m_count = 0; - pmutex->m_refcount = 0; + pmutex->m_recurse = 0; pmutex->m_spinloops = 0; pmutex->m_yieldloops = 0; switch(attr->m_protocol) { @@ -165,6 +164,8 @@ mutex_init(pthread_mutex_t *mutex, } if (attr->m_pshared != 0) pmutex->m_lock.m_flags |= USYNC_PROCESS_SHARED; + if (attr->m_robust != 0) + pmutex->m_lock.m_flags |= UMUTEX_ROBUST; if (pmutex->m_type == PTHREAD_MUTEX_ADAPTIVE_NP) { pmutex->m_spinloops = _thr_spinloops ? _thr_spinloops: MUTEX_ADAPTIVE_SPINS; @@ -244,10 +245,9 @@ _pthread_mutex_destroy(pthread_mutex_t * } else if (m == THR_MUTEX_DESTROYED) { ret = EINVAL; } else { - if ((m->m_lock.m_owner & UMUTEX_OWNER_MASK) != 0 || - m->m_refcount != 0) { + if ((m->m_lock.m_owner & UMUTEX_OWNER_MASK) != 0) ret = EBUSY; - } else { + else { *mutex = THR_MUTEX_DESTROYED; free(m); ret = 0; @@ -258,75 +258,104 @@ _pthread_mutex_destroy(pthread_mutex_t * } static int -mutex_trylock_common(pthread_mutex_t *mutex) +mutex_trylock_common(struct pthread_mutex *m) { struct pthread *curthread = _get_curthread(); - struct pthread_mutex *m = *mutex; uint32_t id; - int ret; + int error; - if ((m->m_lock.m_flags & UMUTEX_SIMPLE) != 0) - id = UMUTEX_SIMPLE_OWNER; - else - id = TID(curthread); - if (m->m_private) - THR_CRITICAL_ENTER(curthread); - ret = _thr_umutex_trylock(&m->m_lock, id); - if (__predict_true(ret == 0)) { - enqueue_mutex(curthread, m); - } else { - if ((m->m_lock.m_flags & UMUTEX_SIMPLE) != 0) { + if ((m->m_lock.m_flags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT | + UMUTEX_PRIO_INHERIT)) == 0) { + if (m->m_lock.m_flags & UMUTEX_SIMPLE) + id = UMUTEX_SIMPLE_OWNER; + else + id = TID(curthread); + if (atomic_cmpset_acq_32(&m->m_lock.m_owner, UMUTEX_UNOWNED, + id)) { + m->m_ownertd = curthread; + return (0); + } + if ((uint32_t)m->m_lock.m_owner == UMUTEX_CONTESTED) { + if (atomic_cmpset_acq_32(&m->m_lock.m_owner, + UMUTEX_CONTESTED, id|UMUTEX_CONTESTED)) { + m->m_ownertd = curthread; + return (0); + } + } + } else if (m->m_lock.m_flags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT)) { + if (m->m_lock.m_flags & UMUTEX_SIMPLE) { if (m->m_ownertd == curthread) - ret = mutex_self_trylock(m); + return mutex_self_trylock(m); } else { - if ((m->m_lock.m_owner & UMUTEX_OWNER_MASK) == id) - ret = mutex_self_trylock(m); + if ((m->m_lock.m_owner & UMUTEX_OWNER_MASK) == + TID(curthread)) + return mutex_self_trylock(m); + } + if ((m->m_lock.m_owner & UMUTEX_OWNER_MASK) != 0) + return (EBUSY); + error = __thr_umutex_trylock(&m->m_lock); + if (error == 0 || error == EOWNERDEAD) + enqueue_mutex(curthread, m); + return (error); + } else if (m->m_lock.m_flags & UMUTEX_PRIO_INHERIT) { + id = TID(curthread); + if (atomic_cmpset_acq_32(&m->m_lock.m_owner, UMUTEX_UNOWNED, id + )) { + enqueue_mutex(curthread, m); + return (0); } + if ((m->m_lock.m_owner & UMUTEX_OWNER_MASK) == id) + return mutex_self_trylock(m); + return (EBUSY); } - if (ret && m->m_private) - THR_CRITICAL_LEAVE(curthread); - return (ret); + + return (EINVAL); } int __pthread_mutex_trylock(pthread_mutex_t *mutex) { + struct pthread *curthread = _get_curthread(); struct pthread_mutex *m; + int error; CHECK_AND_INIT_MUTEX - return (mutex_trylock_common(mutex)); + if (!m->m_private) + return mutex_trylock_common(m); + THR_CRITICAL_ENTER(curthread); + error = mutex_trylock_common(m); + if (error != 0 && error != EOWNERDEAD) + THR_CRITICAL_LEAVE(curthread); + return (error); } static int -mutex_lock_sleep(struct pthread *curthread, struct pthread_mutex *m, +mutex_lock_sleep(struct pthread_mutex *m, const struct timespec *abstime) { + struct pthread *curthread = _get_curthread(); uint32_t id, owner; int count; - int ret; + int error; - - if ((m->m_lock.m_flags & UMUTEX_SIMPLE) != 0) { - if (m->m_ownertd == curthread) - return mutex_self_lock(m, abstime); - id = UMUTEX_SIMPLE_OWNER; - } else { - id = TID(curthread); - if ((m->m_lock.m_owner & UMUTEX_OWNER_MASK) == id) - return mutex_self_lock(m, abstime); - } /* * For adaptive mutexes, spin for a bit in the expectation * that if the application requests this mutex type then * the lock is likely to be released quickly and it is - * faster than entering the kernel + * faster than entering the kernel. */ if (__predict_false( (m->m_lock.m_flags & - (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT)) != 0)) + (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT | + UMUTEX_ROBUST)) != 0)) goto sleep_in_kernel; + if ((m->m_lock.m_flags & UMUTEX_SIMPLE) != 0) + id = UMUTEX_SIMPLE_OWNER; + else + id = TID(curthread); + if (!_thr_is_smp) goto yield_loop; @@ -334,8 +363,9 @@ mutex_lock_sleep(struct pthread *curthre while (count--) { owner = m->m_lock.m_owner; if ((owner & UMUTEX_OWNER_MASK) == 0) { - if (atomic_cmpset_acq_32(&m->m_lock.m_owner, owner, id|owner)) { - ret = 0; + if (atomic_cmpset_acq_32(&m->m_lock.m_owner, owner, + id|owner)) { + error = 0; goto done; } } @@ -347,9 +377,10 @@ yield_loop: while (count--) { _sched_yield(); owner = m->m_lock.m_owner; - if ((owner & ~UMUTEX_CONTESTED) == 0) { - if (atomic_cmpset_acq_32(&m->m_lock.m_owner, owner, id|owner)) { - ret = 0; + if ((owner & UMUTEX_OWNER_MASK) == 0) { + if (atomic_cmpset_acq_32(&m->m_lock.m_owner, owner, + id|owner)) { + error = 0; goto done; } } @@ -357,45 +388,86 @@ yield_loop: sleep_in_kernel: if (abstime == NULL) { - ret = __thr_umutex_lock(&m->m_lock, id); - } else if (__predict_false( - abstime->tv_nsec < 0 || - abstime->tv_nsec >= 1000000000)) { - ret = EINVAL; + error = __thr_umutex_lock(&m->m_lock, id); } else { - ret = __thr_umutex_timedlock(&m->m_lock, id, abstime); + error = __thr_umutex_timedlock(&m->m_lock, id, abstime); } done: - if (ret == 0) + if (error == 0 || error == EOWNERDEAD) enqueue_mutex(curthread, m); - return (ret); + return (error); } static inline int -mutex_lock_common(struct pthread_mutex *m, - const struct timespec *abstime, int cvattach) +_mutex_lock_common(struct pthread_mutex *m, + const struct timespec *abstime) { struct pthread *curthread = _get_curthread(); uint32_t id; - int ret; if ((m->m_lock.m_flags & UMUTEX_SIMPLE) != 0) id = UMUTEX_SIMPLE_OWNER; else id = TID(curthread); - if (m->m_private && !cvattach) - THR_CRITICAL_ENTER(curthread); - if (_thr_umutex_trylock2(&m->m_lock, id) == 0) { - enqueue_mutex(curthread, m); - ret = 0; + if ((m->m_lock.m_flags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT | + UMUTEX_PRIO_INHERIT)) == 0) { + if (atomic_cmpset_acq_32(&m->m_lock.m_owner, UMUTEX_UNOWNED, + id)) { + m->m_ownertd = curthread; + return (0); + } + if ((uint32_t)m->m_lock.m_owner == UMUTEX_CONTESTED) { + if (atomic_cmpset_acq_32(&m->m_lock.m_owner, + UMUTEX_CONTESTED, id|UMUTEX_CONTESTED)) { + m->m_ownertd = curthread; + return (0); + } + } + } else if ((m->m_lock.m_flags & (UMUTEX_PRIO_INHERIT|UMUTEX_ROBUST)) == + UMUTEX_PRIO_INHERIT) { + id = TID(curthread); + if (atomic_cmpset_acq_32(&m->m_lock.m_owner, UMUTEX_UNOWNED, + id)) { + enqueue_mutex(curthread, m); + return (0); + } + if ((m->m_lock.m_owner & UMUTEX_OWNER_MASK) == id) + return mutex_self_trylock(m); + return (EBUSY); + } + + if (abstime != NULL && (abstime->tv_sec < 0 || abstime->tv_nsec < 0 || + abstime->tv_nsec >= 1000000000)) + return (EINVAL); + + if (m->m_lock.m_flags & UMUTEX_SIMPLE) { + if (m->m_ownertd == curthread) + return mutex_self_lock(m, abstime); } else { - ret = mutex_lock_sleep(curthread, m, abstime); + if ((m->m_lock.m_owner & UMUTEX_OWNER_MASK) == TID(curthread)) + return mutex_self_lock(m, abstime); } - if (ret && m->m_private && !cvattach) + + return mutex_lock_sleep(m, abstime); +} + +static inline int +mutex_lock_common(struct pthread_mutex *m, + const struct timespec *abstime, int cvattach) +{ + struct pthread *curthread = _get_curthread(); + int error; + + if (cvattach || m->m_private == 0) + return _mutex_lock_common(m, abstime); + if (m->m_private) + THR_CRITICAL_ENTER(curthread); + error = _mutex_lock_common(m, abstime); + if (error && error != EOWNERDEAD) THR_CRITICAL_LEAVE(curthread); - return (ret); + return (error); } int @@ -441,8 +513,8 @@ mutex_self_trylock(struct pthread_mutex case PTHREAD_MUTEX_RECURSIVE: /* Increment the lock count: */ - if (m->m_count + 1 > 0) { - m->m_count++; + if (m->m_recurse + 1 > 0) { + m->m_recurse++; ret = 0; } else ret = EAGAIN; @@ -510,8 +582,8 @@ mutex_self_lock(struct pthread_mutex *m, case PTHREAD_MUTEX_RECURSIVE: /* Increment the lock count: */ - if (m->m_count + 1 > 0) { - m->m_count++; + if (m->m_recurse + 1 > 0) { + m->m_recurse++; ret = 0; } else ret = EAGAIN; @@ -550,36 +622,62 @@ _mutex_owned(struct pthread *curthread, return (0); } -static int -mutex_unlock_common(pthread_mutex_t *mutex) +static inline int +_mutex_unlock_common(pthread_mutex_t *mutex) { struct pthread *curthread = _get_curthread(); struct pthread_mutex *m; uint32_t id; - int err; - - if ((err = _mutex_owned(curthread, mutex)) != 0) - return (err); m = *mutex; if (__predict_false( m->m_type == PTHREAD_MUTEX_RECURSIVE && - m->m_count > 0)) { - m->m_count--; - } else { - if ((m->m_lock.m_flags & UMUTEX_SIMPLE) != 0) - id = UMUTEX_SIMPLE_OWNER; - else - id = TID(curthread); - dequeue_mutex(curthread, m); - _thr_umutex_unlock(&m->m_lock, id); + m->m_recurse > 0)) { + m->m_recurse--; + if (m->m_private) + THR_CRITICAL_LEAVE(curthread); + return (0); } + + dequeue_mutex(curthread, m); + + if ((m->m_lock.m_flags & UMUTEX_SIMPLE) != 0) + id = UMUTEX_SIMPLE_OWNER; + else + id = TID(curthread); + + if ((m->m_lock.m_flags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT | + UMUTEX_PRIO_INHERIT)) == 0) { + if (atomic_cmpset_acq_32(&m->m_lock.m_owner, id, + UMUTEX_UNOWNED)) { + goto out; + } + } else if ((m->m_lock.m_flags & (UMUTEX_PRIO_INHERIT|UMUTEX_ROBUST)) == + UMUTEX_PRIO_INHERIT) { + id = TID(curthread); + if (atomic_cmpset_acq_32(&m->m_lock.m_owner, id, + UMUTEX_UNOWNED)) { + goto out; + } + } + __thr_umutex_unlock(&m->m_lock, id); +out: if (m->m_private) THR_CRITICAL_LEAVE(curthread); return (0); } +static int +mutex_unlock_common(pthread_mutex_t *mutex) +{ + int err; + + if ((err = _mutex_owned(_get_curthread(), mutex)) != 0) + return (err); + return _mutex_unlock_common(mutex); +} + int _mutex_cv_lock(pthread_mutex_t *mutex, int count) { @@ -588,10 +686,8 @@ _mutex_cv_lock(pthread_mutex_t *mutex, i m = *mutex; ret = mutex_lock_common(m, NULL, 1); - if (ret == 0) { - m->m_refcount--; - m->m_count += count; - } + if (ret == 0) + m->m_recurse += count; return (ret); } @@ -600,29 +696,19 @@ _mutex_cv_unlock(pthread_mutex_t *mutex, { struct pthread *curthread = _get_curthread(); struct pthread_mutex *m; - uint32_t id; int err; if ((err = _mutex_owned(curthread, mutex)) != 0) return (err); m = *mutex; - /* * Clear the count in case this is a recursive mutex. */ - *count = m->m_count; - m->m_refcount++; - m->m_count = 0; - dequeue_mutex(curthread, m); - if ((m->m_lock.m_flags & UMUTEX_SIMPLE) != 0) - id = UMUTEX_SIMPLE_OWNER; - else - id = TID(curthread); - _thr_umutex_unlock(&m->m_lock, id); + *count = m->m_recurse; + m->m_recurse = 0; - if (m->m_private) - THR_CRITICAL_LEAVE(curthread); + _mutex_unlock_common(mutex); return (0); } @@ -635,13 +721,12 @@ _mutex_cv_attach(pthread_mutex_t *mutex, m = *mutex; enqueue_mutex(curthread, m); - m->m_refcount--; - m->m_count += count; + m->m_recurse += count; return (ret); } int -_mutex_cv_detach(pthread_mutex_t *mutex, int *count) +_mutex_cv_detach(pthread_mutex_t *mutex, int *recurse) { struct pthread *curthread = _get_curthread(); struct pthread_mutex *m; @@ -655,9 +740,8 @@ _mutex_cv_detach(pthread_mutex_t *mutex, /* * Clear the count in case this is a recursive mutex. */ - *count = m->m_count; - m->m_refcount++; - m->m_count = 0; + *recurse = m->m_recurse; + m->m_recurse = 0; dequeue_mutex(curthread, m); return (0); } Modified: user/davidxu/libthr/lib/libthr/thread/thr_private.h ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_private.h Sun Nov 7 13:41:17 2010 (r214914) +++ user/davidxu/libthr/lib/libthr/thread/thr_private.h Sun Nov 7 13:49:08 2010 (r214915) @@ -144,8 +144,7 @@ struct pthread_mutex { struct umutex m_lock; enum pthread_mutextype m_type; struct pthread *m_ownertd; - int m_count; - int m_refcount; + int m_recurse; int m_spinloops; int m_yieldloops; int m_private; Modified: user/davidxu/libthr/lib/libthr/thread/thr_umtx.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_umtx.c Sun Nov 7 13:41:17 2010 (r214914) +++ user/davidxu/libthr/lib/libthr/thread/thr_umtx.c Sun Nov 7 13:49:08 2010 (r214915) @@ -59,7 +59,8 @@ __thr_umutex_lock(struct umutex *mtx, ui { uint32_t owner; - if ((mtx->m_flags & (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT)) == 0) { + if ((mtx->m_flags & (UMUTEX_PRIO_PROTECT | + UMUTEX_PRIO_INHERIT | UMUTEX_ROBUST)) == 0) { for (;;) { /* wait in kernel */ _umtx_op_err(mtx, UMTX_OP_MUTEX_WAIT, 0, 0, 0); @@ -71,7 +72,6 @@ __thr_umutex_lock(struct umutex *mtx, ui return (0); } } - return _umtx_op_err(mtx, UMTX_OP_MUTEX_LOCK, 0, 0, 0); } @@ -84,7 +84,7 @@ __thr_umutex_timedlock(struct umutex *mt for (;;) { if ((mtx->m_flags & - (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT)) == 0) { + (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT | UMUTEX_ROBUST)) == 0) { /* wait in kernel */ ret = _umtx_op_err(mtx, UMTX_OP_MUTEX_WAIT, @@ -114,7 +114,7 @@ __thr_umutex_unlock(struct umutex *mtx, { #ifndef __ia64__ /* XXX this logic has a race-condition on ia64. */ - if ((mtx->m_flags & (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT)) == 0) { + if ((mtx->m_flags & (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT | UMUTEX_ROBUST)) == 0) { atomic_cmpset_rel_32(&mtx->m_owner, id | UMUTEX_CONTESTED, UMUTEX_CONTESTED); return _umtx_op_err(mtx, UMTX_OP_MUTEX_WAKE, 0, 0, 0); Modified: user/davidxu/libthr/lib/libthr/thread/thr_umtx.h ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_umtx.h Sun Nov 7 13:41:17 2010 (r214914) +++ user/davidxu/libthr/lib/libthr/thread/thr_umtx.h Sun Nov 7 13:49:08 2010 (r214915) @@ -32,7 +32,7 @@ #include #include -#define DEFAULT_UMUTEX {0,0,{0,0},{0,0,0,0}} +#define DEFAULT_UMUTEX {0,0,{0,0},0,{0,0,0},{0,0,0}} #define DEFAULT_URWLOCK {0,0,0,0,{0,0,0,0}} typedef uint32_t umtx_t; @@ -72,6 +72,10 @@ int __thr_umtx_lock(volatile umtx_t *mtx int __thr_umtx_lock_spin(volatile umtx_t *mtx); void __thr_umtx_unlock(volatile umtx_t *mtx); +/* + * These functions are used by the library for internal locking + * it is not used to implement POSIX mutex which is very complex. + */ static inline int _thr_umutex_trylock(struct umutex *mtx, uint32_t id) { @@ -119,6 +123,9 @@ _thr_umutex_unlock(struct umutex *mtx, u return (__thr_umutex_unlock(mtx, id)); } +/* + * pthread rwlock depends on these functions. + */ static inline int _thr_rwlock_tryrdlock(struct urwlock *rwlock, int flags) { From owner-svn-src-user@FreeBSD.ORG Sun Nov 7 13:50:43 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 565A8106566C; Sun, 7 Nov 2010 13:50:43 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4520E8FC0A; Sun, 7 Nov 2010 13:50:43 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA7DohZ4048686; Sun, 7 Nov 2010 13:50:43 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA7DohgM048684; Sun, 7 Nov 2010 13:50:43 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011071350.oA7DohgM048684@svn.freebsd.org> From: David Xu Date: Sun, 7 Nov 2010 13:50:43 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214916 - user/davidxu/libthr/lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 07 Nov 2010 13:50:43 -0000 Author: davidxu Date: Sun Nov 7 13:50:42 2010 New Revision: 214916 URL: http://svn.freebsd.org/changeset/base/214916 Log: Style fix, variable 'ret' should be named as 'error', also return error code in cond_wait for ROBUST and PP mutex, robust mutex uses kernel based cv. Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_cond.c Sun Nov 7 13:49:08 2010 (r214915) +++ user/davidxu/libthr/lib/libthr/thread/thr_cond.c Sun Nov 7 13:50:42 2010 (r214916) @@ -92,27 +92,27 @@ cond_init(pthread_cond_t *cond, const pt static int init_static(struct pthread *thread, pthread_cond_t *cond) { - int ret; + int error; THR_LOCK_ACQUIRE(thread, &_cond_static_lock); if (*cond == NULL) - ret = cond_init(cond, NULL); + error = cond_init(cond, NULL); else - ret = 0; + error = 0; THR_LOCK_RELEASE(thread, &_cond_static_lock); - return (ret); + return (error); } #define CHECK_AND_INIT_COND \ if (__predict_false((cv = (*cond)) <= THR_COND_DESTROYED)) { \ if (cv == THR_COND_INITIALIZER) { \ - int ret; \ - ret = init_static(_get_curthread(), cond); \ - if (ret) \ - return (ret); \ + int error; \ + error = init_static(_get_curthread(), cond); \ + if (error) \ + return (error); \ } else if (cv == THR_COND_DESTROYED) { \ return (EINVAL); \ } \ @@ -169,39 +169,43 @@ cond_wait_kernel(pthread_cond_t *cond, p pthread_cond_t cv; struct pthread_mutex *m; int recurse; - int ret; + int error, error2 = 0; cv = *cond; - ret = _mutex_cv_detach(mutex, &recurse); - if (__predict_false(ret != 0)) - return (ret); + error = _mutex_cv_detach(mutex, &recurse); + if (__predict_false(error != 0)) + return (error); m = *mutex; if (cancel) { _thr_cancel_enter2(curthread, 0); - ret = _thr_ucond_wait(&cv->c_kerncv, &m->m_lock, abstime, + error = _thr_ucond_wait(&cv->c_kerncv, &m->m_lock, abstime, CVWAIT_ABSTIME|CVWAIT_CLOCKID); _thr_cancel_leave(curthread, 0); } else { - ret = _thr_ucond_wait(&cv->c_kerncv, &m->m_lock, abstime, + error = _thr_ucond_wait(&cv->c_kerncv, &m->m_lock, abstime, CVWAIT_ABSTIME|CVWAIT_CLOCKID); } - if (ret == 0) { - _mutex_cv_lock(mutex, recurse); - } else if (ret == EINTR || ret == ETIMEDOUT) { - _mutex_cv_lock(mutex, recurse); - if (cancel) + /* + * Note that PP mutex and ROBUST mutex may return + * interesting error codes. + */ + if (error == 0) { + error2 = _mutex_cv_lock(mutex, recurse); + } else if (error == EINTR || error == ETIMEDOUT) { + error2 = _mutex_cv_lock(mutex, recurse); + if (error2 == 0 && cancel) _thr_testcancel(curthread); - if (ret == EINTR) - ret = 0; + if (error2 == EINTR) + error = 0; } else { /* We know that it didn't unlock the mutex. */ - _mutex_cv_attach(mutex, recurse); - if (cancel) + error2 = _mutex_cv_attach(mutex, recurse); + if (error2 == 0 && cancel) _thr_testcancel(curthread); } - return (ret); + return (error2 != 0 ? error2 : error); } static int @@ -212,17 +216,17 @@ cond_wait_user(pthread_cond_t *cond, pth struct timespec ts, ts2, *tsp; int recurse; pthread_cond_t cv; - int ret; + int error; uint64_t seq, bseq; cv = *cond; _thr_umtx_lock_spin(&cv->c_lock); cv->c_waiters++; - ret = _mutex_cv_unlock(mutex, &recurse); - if (__predict_false(ret != 0)) { + error = _mutex_cv_unlock(mutex, &recurse); + if (__predict_false(error != 0)) { cv->c_waiters--; _thr_umtx_unlock(&cv->c_lock); - return (ret); + return (error); } bseq = cv->c_broadcast_seq; @@ -239,24 +243,24 @@ cond_wait_user(pthread_cond_t *cond, pth if (cancel) { _thr_cancel_enter2(curthread, 0); - ret = _thr_umtx_wait_uint((u_int *)&cv->c_seq, + error = _thr_umtx_wait_uint((u_int *)&cv->c_seq, (u_int)seq, tsp, CV_PSHARED(cv)); _thr_cancel_leave(curthread, 0); } else { - ret = _thr_umtx_wait_uint((u_int *)&cv->c_seq, + error = _thr_umtx_wait_uint((u_int *)&cv->c_seq, (u_int)seq, tsp, CV_PSHARED(cv)); } _thr_umtx_lock_spin(&cv->c_lock); if (cv->c_broadcast_seq != bseq) { - ret = 0; + error = 0; break; } if (cv->c_signaled > 0) { cv->c_signaled--; - ret = 0; + error = 0; break; - } else if (ret == ETIMEDOUT) { + } else if (error == ETIMEDOUT) { cv->c_waiters--; break; } else if (cancel && SHOULD_CANCEL(curthread) && @@ -269,7 +273,7 @@ cond_wait_user(pthread_cond_t *cond, pth } _thr_umtx_unlock(&cv->c_lock); _mutex_cv_lock(mutex, recurse); - return (ret); + return (error); } @@ -306,7 +310,8 @@ cond_wait_common(pthread_cond_t *cond, p */ if (curthread->attr.sched_policy != SCHED_OTHER || curthread->priority_mutex_count != 0 || - (m->m_lock.m_flags & (UMUTEX_PRIO_PROTECT|UMUTEX_PRIO_INHERIT)) != 0) + (m->m_lock.m_flags & (UMUTEX_PRIO_PROTECT|UMUTEX_PRIO_INHERIT| + UMUTEX_ROBUST)) != 0) return cond_wait_kernel(cond, mutex, abstime, cancel); else return cond_wait_user(cond, mutex, abstime, cancel); From owner-svn-src-user@FreeBSD.ORG Mon Nov 8 00:38:54 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B9E28106566B; Mon, 8 Nov 2010 00:38:54 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A78668FC08; Mon, 8 Nov 2010 00:38:54 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA80csIi097757; Mon, 8 Nov 2010 00:38:54 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA80cswJ097754; Mon, 8 Nov 2010 00:38:54 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011080038.oA80cswJ097754@svn.freebsd.org> From: David Xu Date: Mon, 8 Nov 2010 00:38:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214966 - user/davidxu/libthr/lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Nov 2010 00:38:54 -0000 Author: davidxu Date: Mon Nov 8 00:38:54 2010 New Revision: 214966 URL: http://svn.freebsd.org/changeset/base/214966 Log: Create seperated function cond_broadcast_comm and cond_signal_common. Add c_destorying and c_refcount fields, so that condition varible can be safely destroyed after pthread_cond_broadcast(), this is required by POSIX. Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c user/davidxu/libthr/lib/libthr/thread/thr_private.h Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_cond.c Mon Nov 8 00:26:49 2010 (r214965) +++ user/davidxu/libthr/lib/libthr/thread/thr_cond.c Mon Nov 8 00:38:54 2010 (r214966) @@ -45,7 +45,8 @@ int __pthread_cond_timedwait(pthread_con static int cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr); static int cond_wait_common(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime, int cancel); -static int cond_signal_common(pthread_cond_t *cond, int broadcast); +static int cond_signal_common(struct pthread_cond *cond); +static int cond_broadcast_common(struct pthread_cond *cond); /* * Double underscore versions are cancellation points. Single underscore @@ -139,8 +140,22 @@ _pthread_cond_destroy(pthread_cond_t *co rval = EINVAL; else { cv = *cond; - if (cv->c_waiters != 0) - return (EBUSY); + _thr_umtx_lock_spin(&cv->c_lock); + while (cv->c_refcount != 0) { + cv->c_destroying = 1; + if (cv->c_waiters > 0) { + cv->c_seq++; + cv->c_broadcast_seq++; + cv->c_waiters = 0; + cv->c_signals = 0; + _thr_umtx_wake(&cv->c_seq, INT_MAX, CV_PSHARED(cv)); + } + _thr_umtx_unlock(&cv->c_lock); + _thr_umtx_wait_uint((u_int *)&cv->c_destroying, + 1, NULL, CV_PSHARED(cv)); + _thr_umtx_lock_spin(&cv->c_lock); + } + _thr_umtx_unlock(&cv->c_lock); _thr_ucond_broadcast(&cv->c_kerncv); *cond = THR_COND_DESTROYED; @@ -221,6 +236,10 @@ cond_wait_user(pthread_cond_t *cond, pth cv = *cond; _thr_umtx_lock_spin(&cv->c_lock); + if (cv->c_destroying) { + _thr_umtx_unlock(&cv->c_lock); + return (EINVAL); + } cv->c_waiters++; error = _mutex_cv_unlock(mutex, &recurse); if (__predict_false(error != 0)) { @@ -230,6 +249,7 @@ cond_wait_user(pthread_cond_t *cond, pth } bseq = cv->c_broadcast_seq; + cv->c_refcount++; for(;;) { seq = cv->c_seq; _thr_umtx_unlock(&cv->c_lock); @@ -253,30 +273,41 @@ cond_wait_user(pthread_cond_t *cond, pth _thr_umtx_lock_spin(&cv->c_lock); if (cv->c_broadcast_seq != bseq) { + cv->c_refcount--; error = 0; break; } - if (cv->c_signaled > 0) { - cv->c_signaled--; + if (cv->c_signals > 0) { + cv->c_refcount--; + cv->c_signals--; error = 0; break; } else if (error == ETIMEDOUT) { + cv->c_refcount--; cv->c_waiters--; break; } else if (cancel && SHOULD_CANCEL(curthread) && !THR_IN_CRITICAL(curthread)) { cv->c_waiters--; + cv->c_refcount--; + if (cv->c_destroying && cv->c_refcount == 0) { + cv->c_destroying = 2; + _thr_umtx_wake(&cv->c_destroying, INT_MAX, CV_PSHARED(cv)); + } _thr_umtx_unlock(&cv->c_lock); _mutex_cv_lock(mutex, recurse); _pthread_exit(PTHREAD_CANCELED); } } + if (cv->c_destroying && cv->c_refcount == 0) { + cv->c_destroying = 2; + _thr_umtx_wake(&cv->c_destroying, INT_MAX, CV_PSHARED(cv)); + } _thr_umtx_unlock(&cv->c_lock); _mutex_cv_lock(mutex, recurse); return (error); } - static int cond_wait_common(pthread_cond_t *cond, pthread_mutex_t *mutex, const struct timespec *abstime, int cancel) @@ -356,38 +387,40 @@ __pthread_cond_timedwait(pthread_cond_t } static int -cond_signal_common(pthread_cond_t *cond, int broadcast) +cond_signal_common(struct pthread_cond *cv) { - pthread_cond_t cv; - /* - * If the condition variable is statically initialized, perform dynamic - * initialization. - */ - CHECK_AND_INIT_COND + _thr_ucond_signal(&cv->c_kerncv); - if (!broadcast) - _thr_ucond_signal(&cv->c_kerncv); - else - _thr_ucond_broadcast(&cv->c_kerncv); + if (cv->c_waiters == 0) + return (0); + + _thr_umtx_lock_spin(&cv->c_lock); + if (cv->c_waiters > 0) { + cv->c_seq++; + cv->c_signals++; + cv->c_waiters--; + _thr_umtx_wake(&cv->c_seq, 1, CV_PSHARED(cv)); + } + _thr_umtx_unlock(&cv->c_lock); + return (0); +} + +static int +cond_broadcast_common(struct pthread_cond *cv) +{ + _thr_ucond_broadcast(&cv->c_kerncv); if (cv->c_waiters == 0) return (0); _thr_umtx_lock_spin(&cv->c_lock); if (cv->c_waiters > 0) { - if (!broadcast) { - cv->c_seq++; - cv->c_signaled++; - cv->c_waiters--; - _thr_umtx_wake(&cv->c_seq, 1, CV_PSHARED(cv)); - } else { - cv->c_seq++; - cv->c_broadcast_seq++; - cv->c_waiters = 0; - cv->c_signaled = 0; - _thr_umtx_wake(&cv->c_seq, INT_MAX, CV_PSHARED(cv)); - } + cv->c_seq++; + cv->c_broadcast_seq++; + cv->c_waiters = 0; + cv->c_signals = 0; + _thr_umtx_wake(&cv->c_seq, INT_MAX, CV_PSHARED(cv)); } _thr_umtx_unlock(&cv->c_lock); return (0); @@ -396,13 +429,27 @@ cond_signal_common(pthread_cond_t *cond, int _pthread_cond_signal(pthread_cond_t * cond) { + pthread_cond_t cv; - return (cond_signal_common(cond, 0)); + /* + * If the condition variable is statically initialized, perform dynamic + * initialization. + */ + CHECK_AND_INIT_COND + + return (cond_signal_common(cv)); } int _pthread_cond_broadcast(pthread_cond_t * cond) { + pthread_cond_t cv; + + /* + * If the condition variable is statically initialized, perform dynamic + * initialization. + */ + CHECK_AND_INIT_COND - return (cond_signal_common(cond, 1)); + return (cond_broadcast_common(cv)); } Modified: user/davidxu/libthr/lib/libthr/thread/thr_private.h ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_private.h Mon Nov 8 00:26:49 2010 (r214965) +++ user/davidxu/libthr/lib/libthr/thread/thr_private.h Mon Nov 8 00:38:54 2010 (r214966) @@ -166,9 +166,11 @@ struct pthread_cond { */ uint32_t c_lock; int c_waiters; - int c_signaled; + int c_signals; uint32_t c_seq; uint64_t c_broadcast_seq; + int c_refcount; + int c_destroying; }; struct pthread_cond_attr { From owner-svn-src-user@FreeBSD.ORG Mon Nov 8 00:42:33 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 338301065670; Mon, 8 Nov 2010 00:42:33 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 21DEE8FC18; Mon, 8 Nov 2010 00:42:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA80gXDa097907; Mon, 8 Nov 2010 00:42:33 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA80gXAC097905; Mon, 8 Nov 2010 00:42:33 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011080042.oA80gXAC097905@svn.freebsd.org> From: David Xu Date: Mon, 8 Nov 2010 00:42:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214967 - user/davidxu/libthr/lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Nov 2010 00:42:33 -0000 Author: davidxu Date: Mon Nov 8 00:42:32 2010 New Revision: 214967 URL: http://svn.freebsd.org/changeset/base/214967 Log: Oops, check c_refcount, if there is no time-shareing threads, we don't need wait. Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_cond.c Mon Nov 8 00:38:54 2010 (r214966) +++ user/davidxu/libthr/lib/libthr/thread/thr_cond.c Mon Nov 8 00:42:32 2010 (r214967) @@ -140,6 +140,8 @@ _pthread_cond_destroy(pthread_cond_t *co rval = EINVAL; else { cv = *cond; + if (cv->c_refcount == 0) + goto next; _thr_umtx_lock_spin(&cv->c_lock); while (cv->c_refcount != 0) { cv->c_destroying = 1; @@ -156,6 +158,7 @@ _pthread_cond_destroy(pthread_cond_t *co _thr_umtx_lock_spin(&cv->c_lock); } _thr_umtx_unlock(&cv->c_lock); + next: _thr_ucond_broadcast(&cv->c_kerncv); *cond = THR_COND_DESTROYED; From owner-svn-src-user@FreeBSD.ORG Mon Nov 8 02:19:53 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BC472106566B; Mon, 8 Nov 2010 02:19:53 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 729E18FC1C; Mon, 8 Nov 2010 02:19:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA82Jrt3002490; Mon, 8 Nov 2010 02:19:53 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA82JrPM002484; Mon, 8 Nov 2010 02:19:53 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011080219.oA82JrPM002484@svn.freebsd.org> From: David Xu Date: Mon, 8 Nov 2010 02:19:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214969 - in user/davidxu/libthr: include lib/libc/include lib/libthr lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Nov 2010 02:19:53 -0000 Author: davidxu Date: Mon Nov 8 02:19:53 2010 New Revision: 214969 URL: http://svn.freebsd.org/changeset/base/214969 Log: Add POSIX function pthread_mutex_consistent which resets state of robust mutex. Modified: user/davidxu/libthr/include/pthread.h user/davidxu/libthr/lib/libc/include/namespace.h user/davidxu/libthr/lib/libc/include/un-namespace.h user/davidxu/libthr/lib/libthr/pthread.map user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Modified: user/davidxu/libthr/include/pthread.h ============================================================================== --- user/davidxu/libthr/include/pthread.h Mon Nov 8 01:15:42 2010 (r214968) +++ user/davidxu/libthr/include/pthread.h Mon Nov 8 02:19:53 2010 (r214969) @@ -228,6 +228,7 @@ int pthread_mutexattr_settype(pthread_m int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int); int pthread_mutexattr_setrobust(pthread_mutexattr_t *, int); +int pthread_mutex_consistent(pthread_mutex_t *); int pthread_mutex_destroy(pthread_mutex_t *); int pthread_mutex_init(pthread_mutex_t *, const pthread_mutexattr_t *); Modified: user/davidxu/libthr/lib/libc/include/namespace.h ============================================================================== --- user/davidxu/libthr/lib/libc/include/namespace.h Mon Nov 8 01:15:42 2010 (r214968) +++ user/davidxu/libthr/lib/libc/include/namespace.h Mon Nov 8 02:19:53 2010 (r214969) @@ -143,6 +143,7 @@ #define pthread_kill _pthread_kill #define pthread_main_np _pthread_main_np #define pthread_multi_np _pthread_multi_np +#define pthread_mutex_consistent _pthread_mutex_consistent #define pthread_mutex_destroy _pthread_mutex_destroy #define pthread_mutex_getprioceiling _pthread_mutex_getprioceiling #define pthread_mutex_init _pthread_mutex_init Modified: user/davidxu/libthr/lib/libc/include/un-namespace.h ============================================================================== --- user/davidxu/libthr/lib/libc/include/un-namespace.h Mon Nov 8 01:15:42 2010 (r214968) +++ user/davidxu/libthr/lib/libc/include/un-namespace.h Mon Nov 8 02:19:53 2010 (r214969) @@ -124,6 +124,7 @@ #undef pthread_kill #undef pthread_main_np #undef pthread_multi_np +#undef pthread_mutex_consistent #undef pthread_mutex_destroy #undef pthread_mutex_getprioceiling #undef pthread_mutex_init Modified: user/davidxu/libthr/lib/libthr/pthread.map ============================================================================== --- user/davidxu/libthr/lib/libthr/pthread.map Mon Nov 8 01:15:42 2010 (r214968) +++ user/davidxu/libthr/lib/libthr/pthread.map Mon Nov 8 02:19:53 2010 (r214969) @@ -278,6 +278,7 @@ FBSDprivate_1.0 { _pthread_kill; _pthread_main_np; _pthread_multi_np; + _pthread_mutex_consistent; _pthread_mutex_destroy; _pthread_mutex_getprioceiling; _pthread_mutex_getspinloops_np; @@ -407,4 +408,5 @@ FBSD_1.2 { swapcontext; pthread_mutexattr_getrobust; pthread_mutexattr_setrobust; + pthread_mutex_consistent; }; Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutex.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Mon Nov 8 01:15:42 2010 (r214968) +++ user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Mon Nov 8 02:19:53 2010 (r214969) @@ -115,6 +115,7 @@ __weak_reference(__pthread_mutex_setyiel __strong_reference(__pthread_mutex_setyieldloops_np, _pthread_mutex_setyieldloops_np); __weak_reference(_pthread_mutex_getyieldloops_np, pthread_mutex_getyieldloops_np); __weak_reference(_pthread_mutex_isowned_np, pthread_mutex_isowned_np); +__weak_reference(_pthread_mutex_consistent, pthread_mutex_consistent); static int mutex_init(pthread_mutex_t *mutex, @@ -857,6 +858,21 @@ _pthread_mutex_isowned_np(pthread_mutex_ return (_mutex_owned(_get_curthread(), mutex) == 0); } +int +_pthread_mutex_consistent(pthread_mutex_t *mutex) +{ + + if (_mutex_owned(_get_curthread(), mutex) == 0) { + struct pthread_mutex *m = *mutex; + if (m->m_lock.m_flags & UMUTEX_ROBUST) { + m->m_lock.m_robstate = UMUTEX_ROBST_NORMAL; + m->m_recurse = 0; + return (0); + } + } + return (EINVAL); +} + void _thr_mutex_link_init(struct pthread *td) { From owner-svn-src-user@FreeBSD.ORG Mon Nov 8 02:47:29 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 75703106566C; Mon, 8 Nov 2010 02:47:29 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 638708FC0A; Mon, 8 Nov 2010 02:47:29 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA82lTCx004304; Mon, 8 Nov 2010 02:47:29 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA82lTlv004301; Mon, 8 Nov 2010 02:47:29 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011080247.oA82lTlv004301@svn.freebsd.org> From: David Xu Date: Mon, 8 Nov 2010 02:47:29 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r214970 - user/davidxu/libthr/lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 08 Nov 2010 02:47:29 -0000 Author: davidxu Date: Mon Nov 8 02:47:29 2010 New Revision: 214970 URL: http://svn.freebsd.org/changeset/base/214970 Log: Make the size of mutex smaller. Merge m_private and m_type into single field m_mtxflags. Change type of m_spinloop and m_yield to short integer, it is enough for practical use. Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutex.c user/davidxu/libthr/lib/libthr/thread/thr_private.h Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutex.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Mon Nov 8 02:19:53 2010 (r214969) +++ user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Mon Nov 8 02:47:29 2010 (r214970) @@ -140,7 +140,7 @@ mutex_init(pthread_mutex_t *mutex, calloc_cb(1, sizeof(struct pthread_mutex))) == NULL) return (ENOMEM); - pmutex->m_type = attr->m_type; + pmutex->m_mtxflags = attr->m_type; pmutex->m_ownertd = NULL; pmutex->m_recurse = 0; pmutex->m_spinloops = 0; @@ -167,7 +167,7 @@ mutex_init(pthread_mutex_t *mutex, pmutex->m_lock.m_flags |= USYNC_PROCESS_SHARED; if (attr->m_robust != 0) pmutex->m_lock.m_flags |= UMUTEX_ROBUST; - if (pmutex->m_type == PTHREAD_MUTEX_ADAPTIVE_NP) { + if (PMUTEX_TYPE(pmutex->m_mtxflags) == PTHREAD_MUTEX_ADAPTIVE_NP) { pmutex->m_spinloops = _thr_spinloops ? _thr_spinloops: MUTEX_ADAPTIVE_SPINS; pmutex->m_yieldloops = _thr_yieldloops; @@ -217,7 +217,7 @@ _pthread_mutex_init_calloc_cb(pthread_mu ret = mutex_init(mutex, &attr, calloc_cb); if (ret == 0) - (*mutex)->m_private = 1; + (*mutex)->m_mtxflags |= PMUTEX_FLAG_PRIVATE; return (ret); } @@ -322,7 +322,7 @@ __pthread_mutex_trylock(pthread_mutex_t CHECK_AND_INIT_MUTEX - if (!m->m_private) + if (!(m->m_mtxflags & PMUTEX_FLAG_PRIVATE)) return mutex_trylock_common(m); THR_CRITICAL_ENTER(curthread); error = mutex_trylock_common(m); @@ -461,9 +461,9 @@ mutex_lock_common(struct pthread_mutex * struct pthread *curthread = _get_curthread(); int error; - if (cvattach || m->m_private == 0) + if (cvattach || (m->m_mtxflags & PMUTEX_FLAG_PRIVATE) == 0) return _mutex_lock_common(m, abstime); - if (m->m_private) + if (m->m_mtxflags & PMUTEX_FLAG_PRIVATE) THR_CRITICAL_ENTER(curthread); error = _mutex_lock_common(m, abstime); if (error && error != EOWNERDEAD) @@ -506,7 +506,7 @@ mutex_self_trylock(struct pthread_mutex { int ret; - switch (m->m_type) { + switch (PMUTEX_TYPE(m->m_mtxflags)) { case PTHREAD_MUTEX_ERRORCHECK: case PTHREAD_MUTEX_NORMAL: ret = EBUSY; @@ -535,7 +535,7 @@ mutex_self_lock(struct pthread_mutex *m, struct timespec ts1, ts2; int ret; - switch (m->m_type) { + switch (PMUTEX_TYPE(m->m_mtxflags)) { case PTHREAD_MUTEX_ERRORCHECK: case PTHREAD_MUTEX_ADAPTIVE_NP: if (abstime) { @@ -633,10 +633,10 @@ _mutex_unlock_common(pthread_mutex_t *mu m = *mutex; if (__predict_false( - m->m_type == PTHREAD_MUTEX_RECURSIVE && + PMUTEX_TYPE(m->m_mtxflags) == PTHREAD_MUTEX_RECURSIVE && m->m_recurse > 0)) { m->m_recurse--; - if (m->m_private) + if (m->m_mtxflags & PMUTEX_FLAG_PRIVATE) THR_CRITICAL_LEAVE(curthread); return (0); } @@ -664,7 +664,7 @@ _mutex_unlock_common(pthread_mutex_t *mu } __thr_umutex_unlock(&m->m_lock, id); out: - if (m->m_private) + if (m->m_mtxflags & PMUTEX_FLAG_PRIVATE) THR_CRITICAL_LEAVE(curthread); return (0); } Modified: user/davidxu/libthr/lib/libthr/thread/thr_private.h ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_private.h Mon Nov 8 02:19:53 2010 (r214969) +++ user/davidxu/libthr/lib/libthr/thread/thr_private.h Mon Nov 8 02:47:29 2010 (r214970) @@ -140,14 +140,17 @@ TAILQ_HEAD(mutex_link_list, mutex_link); #define THR_RWLOCK_INITIALIZER ((struct pthread_rwlock *)NULL) #define THR_RWLOCK_DESTROYED ((struct pthread_rwlock *)1) +#define PMUTEX_FLAG_TYPE_MASK 0x0ff +#define PMUTEX_FLAG_PRIVATE 0x100 +#define PMUTEX_TYPE(mtxflags) ((mtxflags) & PMUTEX_FLAG_TYPE_MASK) + struct pthread_mutex { struct umutex m_lock; - enum pthread_mutextype m_type; struct pthread *m_ownertd; int m_recurse; - int m_spinloops; - int m_yieldloops; - int m_private; + int m_mtxflags; + uint16_t m_spinloops; + uint16_t m_yieldloops; }; struct pthread_mutex_attr { From owner-svn-src-user@FreeBSD.ORG Tue Nov 9 05:28:07 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 98BB1106564A; Tue, 9 Nov 2010 05:28:07 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 87F1A8FC1B; Tue, 9 Nov 2010 05:28:07 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA95S7Ve085109; Tue, 9 Nov 2010 05:28:07 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA95S7Va085107; Tue, 9 Nov 2010 05:28:07 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201011090528.oA95S7Va085107@svn.freebsd.org> From: Doug Barton Date: Tue, 9 Nov 2010 05:28:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215029 - user/dougb/portmaster X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Nov 2010 05:28:07 -0000 Author: dougb Date: Tue Nov 9 05:28:07 2010 New Revision: 215029 URL: http://svn.freebsd.org/changeset/base/215029 Log: In usage() fill in $pd if it's empty (which it will be for -h|--help) Give a more helpful error message for -o when the port to be replaced isn't installed or listed as a dependency Modified: user/dougb/portmaster/portmaster Modified: user/dougb/portmaster/portmaster ============================================================================== --- user/dougb/portmaster/portmaster Tue Nov 9 02:53:24 2010 (r215028) +++ user/dougb/portmaster/portmaster Tue Nov 9 05:28:07 2010 (r215029) @@ -264,6 +264,10 @@ safe_exit () { } usage () { + local pd + + [ -z "$pd" ] && pd=/usr/ports + version echo '' echo 'Usage:' @@ -2900,6 +2904,9 @@ else echo '' echo "===>>> The second argument to -o can be a port in $pdb," echo " or a port directory from $pd" + echo '' + echo " $ro_opd does not seem to be installed," + echo ' or listed as a dependency' echo '' ; no_valid_port fi fi From owner-svn-src-user@FreeBSD.ORG Tue Nov 9 06:23:06 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BCC43106564A; Tue, 9 Nov 2010 06:23:06 +0000 (UTC) (envelope-from dougb@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ABE9E8FC18; Tue, 9 Nov 2010 06:23:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA96N6J2087771; Tue, 9 Nov 2010 06:23:06 GMT (envelope-from dougb@svn.freebsd.org) Received: (from dougb@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA96N6v9087769; Tue, 9 Nov 2010 06:23:06 GMT (envelope-from dougb@svn.freebsd.org) Message-Id: <201011090623.oA96N6v9087769@svn.freebsd.org> From: Doug Barton Date: Tue, 9 Nov 2010 06:23:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215030 - user/dougb/portmaster X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Nov 2010 06:23:06 -0000 Author: dougb Date: Tue Nov 9 06:23:06 2010 New Revision: 215030 URL: http://svn.freebsd.org/changeset/base/215030 Log: In read_distinfos_all() a missing DISTINFO_FILE doesn't need to be fatal like it does in read_distinfos() since it could be caused by something uninteresting like a MASTERDIR that exists in part of the tree that has not been downloaded (e.g., a c[v]sup refuse file). Add some whitespace around the message in case make also emits an error. For --clean-distfiles* add a line after the "Checking" message to make the spacing consistent Modified: user/dougb/portmaster/portmaster Modified: user/dougb/portmaster/portmaster ============================================================================== --- user/dougb/portmaster/portmaster Tue Nov 9 05:28:07 2010 (r215029) +++ user/dougb/portmaster/portmaster Tue Nov 9 06:23:06 2010 (r215030) @@ -932,7 +932,8 @@ read_distinfos_all () { else pm_cd $origin || continue distinfo=`pm_make -V DISTINFO_FILE` - [ -n "$distinfo" ] || fail "No DISTINFO_FILE in $origin" + [ -n "$distinfo" ] || + { echo ''; echo "===>>> No DISTINFO_FILE in $origin"; echo ''; } fi if [ -s "$distinfo" ]; then @@ -1064,7 +1065,7 @@ if [ -n "$CLEAN_DISTFILES" ]; then read_distinfos_all fi - echo "===>>> Checking for stale distfiles" + echo "===>>> Checking for stale distfiles" ; echo '' for df in `find $DISTDIR -type f | sort`; do f=${df#$DISTDIR} if ! grep -ql $f $DI_FILES; then From owner-svn-src-user@FreeBSD.ORG Tue Nov 9 10:58:20 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2871E106566B; Tue, 9 Nov 2010 10:58:20 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 174B38FC17; Tue, 9 Nov 2010 10:58:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA9AwJ6N007389; Tue, 9 Nov 2010 10:58:19 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA9AwJDS007387; Tue, 9 Nov 2010 10:58:19 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201011091058.oA9AwJDS007387@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Tue, 9 Nov 2010 10:58:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215033 - user/ae/usr.sbin/sade X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Nov 2010 10:58:20 -0000 Author: ae Date: Tue Nov 9 10:58:19 2010 New Revision: 215033 URL: http://svn.freebsd.org/changeset/base/215033 Log: Add frontend dialog to newfs(8). Ask user what to do with unsaved changes when leaving editor. Print out UFS id only when it is valid. Modified: user/ae/usr.sbin/sade/ufsed.c Modified: user/ae/usr.sbin/sade/ufsed.c ============================================================================== --- user/ae/usr.sbin/sade/ufsed.c Tue Nov 9 10:28:02 2010 (r215032) +++ user/ae/usr.sbin/sade/ufsed.c Tue Nov 9 10:58:19 2010 (r215033) @@ -317,8 +317,8 @@ ufsed_tunefs(history_t hist, struct ufsi (checkbox[i].flag & pfs->flags) != 0, checkbox[i].label); btnOk = dlg_add_button(&dlg, 9, 14, " Ok "); - btnCancel = dlg_add_button(&dlg, 9, 26, "Cancel"); - btnAdvanced = dlg_add_button(&dlg, 9, 38, "Advanced"); + btnAdvanced = dlg_add_button(&dlg, 9, 25, "Advanced"); + btnCancel = dlg_add_button(&dlg, 9, 38, "Cancel"); use_helpline("Press F1 for help"); dlg_autosize(&dlg, &w, &h); dlg_open_dialog(&dlg, w + 1, h + 1, "Change File System"); @@ -356,6 +356,7 @@ again: }; } while (q == 0); + /* TODO: handle advanced button */ if (q != 2) goto done; @@ -412,6 +413,204 @@ done: dlg_free(&dlg); } +static void +ufsed_newfs(history_t hist, struct ufsinfo *pfs) +{ + struct custom_dlg dlg; + struct dlg_item *item; + struct de_devlist devlist; + struct de_device *pdev; + DLG_BUTTON *btnCreate, *btnCancel, *btnAdvanced; + DLG_EDIT *eLabel, *eBlock, *eFrag, *eSector; + WINDOW *win; + uint64_t num, tmp; + int q, h, w, ret, i; + char buf[CMDLEN_MAX], *s, *volname; + struct { + DLG_CHECKBOX *item; + uint32_t flag; + const char *label; + const char *arg; + } checkbox[] = { + { NULL, 0, "Erase content", "-E" }, + { NULL, FS_DOSOFTDEP, "Soft Updates", "-U" }, + { NULL, FS_GJOURNAL, "GEOM journaling", "-J" }, + { NULL, FS_MULTILABEL, "MAC multilabel", "-l" }, +#define NEWFSOPS_COUNT 4 + { NULL, FS_SUJ, "SU journaling", "-j" }, + { NULL, FS_ACLS, "POSIX.1e ACL", "-a" }, + { NULL, FS_NFS4ACLS, "NFSv4 ACL", "-N"} + }; + + win = savescr(); + dlg_init(&dlg); + snprintf(buf, sizeof(buf), + "Create new file system on \"%s\":", pfs->partname); + dlg_add_label(&dlg, 1, 2, 55, 2, buf); + eLabel = dlg_add_edit(&dlg, 3, 2, 24, "Volume Label:", + MAXVOLLEN, NULL); + eBlock = dlg_add_edit(&dlg, 7, 2, 24, "Block Size:", 8, "16384"); + eFrag = dlg_add_edit(&dlg, 11, 2, 24, "Fragment Size:", 8, "2048"); + + ret = de_devlist_get(&devlist); + if (ret == 0) { + pdev = de_dev_find(&devlist, pfs->devname); + if (pdev) + num = pdev->de_sectorsize; + else + num = 512; + de_devlist_free(&devlist); + } + snprintf(buf, sizeof(buf), "%u", (uint32_t)num); + eSector = dlg_add_edit(&dlg, 3, 30, 24, "Sector Size:", 8, buf); + for (i = 0; i < sizeof(checkbox) / sizeof(checkbox[0]); i++) + checkbox[i].item = dlg_add_checkbox(&dlg, + 8 + i, 30, 24, 1, 0, checkbox[i].label); + btnCreate = dlg_add_button(&dlg, 16, 14, "Create"); + btnAdvanced = dlg_add_button(&dlg, 16, 25, "Advanced"); + btnCancel = dlg_add_button(&dlg, 16, 38, "Cancel"); + use_helpline("Press F1 for help"); + dlg_autosize(&dlg, &w, &h); + dlg_open_dialog(&dlg, w + 1, h + 1, "Create File System"); +again: + q = 0; + do { + ret = dlg_proc(&dlg, tunefs_keyhndl); + if (ret == DE_ESC) { + q = 1; + break; + } + item = dlg_focus_get(&dlg); + switch (ret) { + case DE_CR: + if (item == btnCancel) + q = 1; + else if (item == btnCreate) + q = 2; + else if (item == btnAdvanced) + q = 3; + else + dlg_focus_next(&dlg); + break; + case KEY_UP: + case KEY_LEFT: + dlg_focus_prev(&dlg); + break; + case KEY_DOWN: + case KEY_RIGHT: + dlg_focus_next(&dlg); + break; + case ' ': + if (item->type == CHECKBOX) + dlg_checkbox_toggle(&dlg, item); + }; + } while (q == 0); + + if (q != 2) + goto done; + + snprintf(buf, sizeof(buf), "%s", _PATH_NEWFS); + /* Volume Label */ + volname = s = dlg_edit_get_value(&dlg, eLabel); + if (s != NULL && *s != '\0') { + i = 0; + while (isalnum(s[i++])); + if (s[i] != '\0') { + dmenu_open_errormsg("Invalid character in volume " + "label. Only alphanumerics characters are " + "allowed."); + goto again; + } + snprintf(buf, sizeof(buf), "%s -L \"%s\"", buf, s); + } + /* Block Size */ + s = dlg_edit_get_value(&dlg, eBlock); + if (s != NULL && *s != '\0') { + ret = expand_number(s, &num); + if (ret < 0 || num < MINBSIZE || num > MAXBSIZE || + (num & (num - 1)) != 0) { + dmenu_open_errormsg("Invalid block size."); + goto again; + } + } else + num = 16384; + snprintf(buf, sizeof(buf), "%s -b %u", buf, (uint32_t)num); + /* Fragment size */ + s = dlg_edit_get_value(&dlg, eFrag); + if (s != NULL && *s != '\0') { + ret = expand_number(s, &tmp); + if (ret < 0 || tmp > num || tmp == 0 || + (tmp & (tmp - 1)) != 0) { + dmenu_open_errormsg("Invalid fragment size."); + goto again; + } + num = tmp; + } else + num = 2048; + snprintf(buf, sizeof(buf), "%s -f %u", buf, (uint32_t)num); + /* Sector size */ + s = dlg_edit_get_value(&dlg, eSector); + if (s != NULL && *s != '\0') { + ret = expand_number(s, &tmp); + if (ret < 0 || tmp >= pfs->size || tmp < 512 || + (tmp & (tmp - 1)) != 0) { + dmenu_open_errormsg("Invalid sector size."); + goto again; + } + num = tmp; + } else + num = 512; + snprintf(buf, sizeof(buf), "%s -S %u", buf, (uint32_t)num); + for (i = 0, tmp = 0; i < NEWFSOPS_COUNT; i++) { + if (dlg_checkbox_checked(&dlg, checkbox[i].item)) { + snprintf(buf, sizeof(buf), "%s %s", buf, + checkbox[i].arg); + tmp |= checkbox[i].flag; + } + } + snprintf(buf, sizeof(buf), "%s %s%s", buf, _PATH_DEV, pfs->partname); + /* add newfs command to history */ + ret = ufsed_history_add(hist, buf); + if (ret) + dmenu_open_errormsg("Operation failed."); + else { /* do fake changes to update current view */ + pfs->magic = FS_UFS2_MAGIC; + pfs->flags = (uint32_t)tmp; + pfs->id[0] = 0; + pfs->id[1] = 0; + free(pfs->volname); + if (volname != NULL && *volname != '\0') + pfs->volname = strndup(volname, MAXVOLLEN); + else + pfs->volname = NULL; + free(pfs->fsmnt); + pfs->fsmnt = NULL; + } + snprintf(buf, sizeof(buf), "%s", PATH_TUNEFS); + for (i = NEWFSOPS_COUNT, num = 0; + i < sizeof(checkbox) / sizeof(checkbox[0]); i++) { + if (dlg_checkbox_checked(&dlg, checkbox[i].item)) { + snprintf(buf, sizeof(buf), "%s %s enable", buf, + checkbox[i].arg); + num |= checkbox[i].flag; + } + } + if (num > 0) { + snprintf(buf, sizeof(buf), "%s %s%s", buf, _PATH_DEV, + pfs->partname); + ret = ufsed_history_add(hist, buf); + if (ret) + dmenu_open_errormsg("Operation failed."); + else { /* do fake changes to update current view */ + pfs->flags |= num; + } + } +done: + restorescr(win); + dlg_close_dialog(&dlg); + dlg_free(&dlg); +} + #define FSED_MENU_TOP 4 #define FSED_BOTTOM_HEIGHT 7 @@ -506,8 +705,10 @@ resize: mvprintw(FSED_MENU_TOP + 1, 30, "%-20s%s", "last mountpoint:", LABEL(selected->fsmnt)); - mvprintw(FSED_MENU_TOP + 2, 30, "%-20s%08x%08x", - "UFS id:", selected->id[0], selected->id[1]); + if (HAS_UFSID(selected)) + mvprintw(FSED_MENU_TOP + 2, 30, + "%-20s%08x%08x", "UFS id:", + selected->id[0], selected->id[1]); mvprintw(FSED_MENU_TOP + 3, 30, "%-20s%s", "volume label:", LABEL(selected->volname)); #define FS_STATUS(pfs, flag) \ @@ -550,8 +751,20 @@ resize: } ufsed_tunefs(hist, selected); break; + case 'C': + if (IS_UFS(selected)) { + if (dmenu_open_noyes(ask_recreate_msg)) + break; + } + ufsed_newfs(hist, selected); + break; case KEY_ESC: case 'Q': + if (!history_isempty(hist) && + !dmenu_open_noyes(pending_write_msg)) { + error = history_play(hist, ufsed_history_play); + /* XXX */ + } q = 1; break; case 'W': From owner-svn-src-user@FreeBSD.ORG Tue Nov 9 22:09:26 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BCBC81065697; Tue, 9 Nov 2010 22:09:26 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A38FE8FC19; Tue, 9 Nov 2010 22:09:26 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA9M9Q8v053320; Tue, 9 Nov 2010 22:09:26 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA9M9QOw053303; Tue, 9 Nov 2010 22:09:26 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201011092209.oA9M9QOw053303@svn.freebsd.org> From: Warner Losh Date: Tue, 9 Nov 2010 22:09:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215061 - in user/imp/tbemd: . bin/chflags bin/ps bin/rm bin/sh bin/stty bin/test cddl/contrib/opensolaris/cmd/zinject cddl/contrib/opensolaris/cmd/zpool cddl/contrib/opensolaris/cmd/zt... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Nov 2010 22:09:26 -0000 Author: imp Date: Tue Nov 9 22:09:22 2010 New Revision: 215061 URL: http://svn.freebsd.org/changeset/base/215061 Log: merge from currnet Added: user/imp/tbemd/cddl/usr.sbin/plockstat/plockstat.1 - copied unchanged from r215049, head/cddl/usr.sbin/plockstat/plockstat.1 user/imp/tbemd/contrib/binutils/bfd/coff-x86_64.c - copied unchanged from r215049, head/contrib/binutils/bfd/coff-x86_64.c user/imp/tbemd/contrib/binutils/bfd/efi-app-x86_64.c - copied unchanged from r215049, head/contrib/binutils/bfd/efi-app-x86_64.c user/imp/tbemd/contrib/binutils/include/coff/x86_64.h - copied unchanged from r215049, head/contrib/binutils/include/coff/x86_64.h user/imp/tbemd/contrib/libpcap/opentest.c - copied unchanged from r215049, head/contrib/libpcap/opentest.c user/imp/tbemd/contrib/libpcap/pcap-can-linux.c - copied unchanged from r215049, head/contrib/libpcap/pcap-can-linux.c user/imp/tbemd/contrib/libpcap/pcap-can-linux.h - copied unchanged from r215049, head/contrib/libpcap/pcap-can-linux.h user/imp/tbemd/contrib/libpcap/pcap-common.c - copied unchanged from r215049, head/contrib/libpcap/pcap-common.c user/imp/tbemd/contrib/libpcap/pcap-common.h - copied unchanged from r215049, head/contrib/libpcap/pcap-common.h user/imp/tbemd/contrib/libpcap/pcap-snf.c - copied unchanged from r215049, head/contrib/libpcap/pcap-snf.c user/imp/tbemd/contrib/libpcap/pcap-snf.h - copied unchanged from r215049, head/contrib/libpcap/pcap-snf.h user/imp/tbemd/contrib/libpcap/pcap/ipnet.h - copied unchanged from r215049, head/contrib/libpcap/pcap/ipnet.h user/imp/tbemd/contrib/libpcap/selpolltest.c - copied unchanged from r215049, head/contrib/libpcap/selpolltest.c user/imp/tbemd/contrib/libpcap/sf-pcap-ng.c - copied unchanged from r215049, head/contrib/libpcap/sf-pcap-ng.c user/imp/tbemd/contrib/libpcap/sf-pcap-ng.h - copied unchanged from r215049, head/contrib/libpcap/sf-pcap-ng.h user/imp/tbemd/contrib/libpcap/sf-pcap.c - copied unchanged from r215049, head/contrib/libpcap/sf-pcap.c user/imp/tbemd/contrib/libpcap/sf-pcap.h - copied unchanged from r215049, head/contrib/libpcap/sf-pcap.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/NullablePtr.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/ADT/NullablePtr.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/RegionInfo.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/Analysis/RegionInfo.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/RegionIterator.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/Analysis/RegionIterator.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/RegionPrinter.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/Analysis/RegionPrinter.h user/imp/tbemd/contrib/llvm/include/llvm/Assembly/AssemblyAnnotationWriter.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/Assembly/AssemblyAnnotationWriter.h user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/AutoGenerated.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/CompilerDriver/AutoGenerated.h user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/Main.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/CompilerDriver/Main.h user/imp/tbemd/contrib/llvm/include/llvm/MC/ELFObjectWriter.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/MC/ELFObjectWriter.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCDwarf.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/MC/MCDwarf.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCELFSymbolFlags.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/MC/MCELFSymbolFlags.h user/imp/tbemd/contrib/llvm/include/llvm/PassRegistry.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/PassRegistry.h user/imp/tbemd/contrib/llvm/include/llvm/Support/CrashRecoveryContext.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/Support/CrashRecoveryContext.h user/imp/tbemd/contrib/llvm/include/llvm/Transforms/Utils/ValueMapper.h - copied unchanged from r215049, head/contrib/llvm/include/llvm/Transforms/Utils/ValueMapper.h user/imp/tbemd/contrib/llvm/lib/Analysis/RegionInfo.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Analysis/RegionInfo.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/RegionPrinter.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Analysis/RegionPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Analysis/TypeBasedAliasAnalysis.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/LocalStackSlotAllocation.cpp - copied unchanged from r215049, head/contrib/llvm/lib/CodeGen/LocalStackSlotAllocation.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/PeepholeOptimizer.cpp - copied unchanged from r215049, head/contrib/llvm/lib/CodeGen/PeepholeOptimizer.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/RenderMachineFunction.cpp - copied unchanged from r215049, head/contrib/llvm/lib/CodeGen/RenderMachineFunction.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/RenderMachineFunction.h - copied unchanged from r215049, head/contrib/llvm/lib/CodeGen/RenderMachineFunction.h user/imp/tbemd/contrib/llvm/lib/CodeGen/SplitKit.cpp - copied unchanged from r215049, head/contrib/llvm/lib/CodeGen/SplitKit.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SplitKit.h - copied unchanged from r215049, head/contrib/llvm/lib/CodeGen/SplitKit.h user/imp/tbemd/contrib/llvm/lib/CodeGen/Splitter.cpp - copied unchanged from r215049, head/contrib/llvm/lib/CodeGen/Splitter.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/Splitter.h - copied unchanged from r215049, head/contrib/llvm/lib/CodeGen/Splitter.h user/imp/tbemd/contrib/llvm/lib/MC/ELFObjectWriter.cpp - copied unchanged from r215049, head/contrib/llvm/lib/MC/ELFObjectWriter.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCDisassembler/ - copied from r215049, head/contrib/llvm/lib/MC/MCDisassembler/ user/imp/tbemd/contrib/llvm/lib/MC/MCDwarf.cpp - copied unchanged from r215049, head/contrib/llvm/lib/MC/MCDwarf.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCELFStreamer.cpp - copied unchanged from r215049, head/contrib/llvm/lib/MC/MCELFStreamer.cpp user/imp/tbemd/contrib/llvm/lib/Support/CrashRecoveryContext.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Support/CrashRecoveryContext.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Target/ARM/ARMAsmPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMFastISel.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Target/ARM/ARMFastISel.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMGlobalMerge.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Target/ARM/ARMGlobalMerge.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMMCInstLower.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Target/ARM/ARMMCInstLower.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMMCInstLower.h - copied unchanged from r215049, head/contrib/llvm/lib/Target/ARM/ARMMCInstLower.h user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/X86InstComments.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Target/X86/AsmPrinter/X86InstComments.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/X86InstComments.h - copied unchanged from r215049, head/contrib/llvm/lib/Target/X86/AsmPrinter/X86InstComments.h user/imp/tbemd/contrib/llvm/lib/Target/X86/X86AsmPrinter.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Target/X86/X86AsmPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86AsmPrinter.h - copied unchanged from r215049, head/contrib/llvm/lib/Target/X86/X86AsmPrinter.h user/imp/tbemd/contrib/llvm/lib/Target/X86/X86InstrFMA.td - copied unchanged from r215049, head/contrib/llvm/lib/Target/X86/X86InstrFMA.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86MCInstLower.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Target/X86/X86MCInstLower.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86MCInstLower.h - copied unchanged from r215049, head/contrib/llvm/lib/Target/X86/X86MCInstLower.h user/imp/tbemd/contrib/llvm/lib/Target/X86/X86ShuffleDecode.h - copied unchanged from r215049, head/contrib/llvm/lib/Target/X86/X86ShuffleDecode.h user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Transforms/Scalar/CorrelatedValuePropagation.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/LowerAtomic.cpp - copied unchanged from r215049, head/contrib/llvm/lib/Transforms/Scalar/LowerAtomic.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/PassRegistry.cpp - copied unchanged from r215049, head/contrib/llvm/lib/VMCore/PassRegistry.cpp user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/OperationKinds.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/AST/OperationKinds.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/FormatString.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/PseudoConstantAnalysis.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/PseudoConstantAnalysis.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Analysis/CFGStmtMap.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Analysis/CFGStmtMap.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/CheckerHelpers.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/CheckerHelpers.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/FrontendTool/ - copied from r215049, head/contrib/llvm/tools/clang/include/clang/FrontendTool/ user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Lex/CodeCompletionHandler.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Lex/CodeCompletionHandler.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Parse/ParseAST.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Parse/ParseAST.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/AnalysisBasedWarnings.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/AnalysisBasedWarnings.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/AttributeList.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/AttributeList.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/CXXFieldCollector.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/CXXFieldCollector.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/DeclSpec.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/DelayedDiagnostic.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/DelayedDiagnostic.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/Designator.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/Designator.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/IdentifierResolver.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/IdentifierResolver.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/Initialization.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/Lookup.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/Lookup.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/ObjCMethodList.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/ObjCMethodList.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/Overload.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/Overload.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/Ownership.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/Ownership.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/ParsedTemplate.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/ParsedTemplate.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/PrettyDeclStackTrace.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/PrettyDeclStackTrace.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/Scope.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/Scope.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/ScopeInfo.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/ScopeInfo.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/Sema.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/Sema.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/SemaInternal.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/SemaInternal.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/Template.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/Template.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/TemplateDeduction.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/include/clang/Sema/TemplateDeduction.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Serialization/ - copied from r215049, head/contrib/llvm/tools/clang/include/clang/Serialization/ user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/CXXABI.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/AST/CXXABI.h user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/ItaniumCXXABI.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/AST/ItaniumCXXABI.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/MicrosoftCXXABI.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/AST/MicrosoftCXXABI.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/CFGStmtMap.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Analysis/CFGStmtMap.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Analysis/FormatString.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/FormatStringParsing.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Analysis/FormatStringParsing.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/PseudoConstantAnalysis.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Analysis/PseudoConstantAnalysis.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/ScanfFormatString.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Analysis/ScanfFormatString.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/AnalysisManager.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Checker/AnalysisManager.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/CheckerHelpers.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Checker/CheckerHelpers.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/UnreachableCodeChecker.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Checker/UnreachableCodeChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/FrontendTool/ - copied from r215049, head/contrib/llvm/tools/clang/lib/FrontendTool/ user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/avxintrin.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Headers/avxintrin.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/immintrin.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Headers/immintrin.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/x86intrin.h - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Headers/x86intrin.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseAST.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Parse/ParseAST.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/AttributeList.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Sema/AttributeList.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp - copied unchanged from r215049, head/contrib/llvm/tools/clang/lib/Sema/DeclSpec.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Serialization/ - copied from r215049, head/contrib/llvm/tools/clang/lib/Serialization/ user/imp/tbemd/contrib/tcpdump/Makefile-devel-adds - copied unchanged from r215049, head/contrib/tcpdump/Makefile-devel-adds user/imp/tbemd/contrib/tcpdump/forces.h - copied unchanged from r215049, head/contrib/tcpdump/forces.h user/imp/tbemd/contrib/tcpdump/ipnet.h - copied unchanged from r215049, head/contrib/tcpdump/ipnet.h user/imp/tbemd/contrib/tcpdump/print-forces.c - copied unchanged from r215049, head/contrib/tcpdump/print-forces.c user/imp/tbemd/contrib/tcpdump/print-ipnet.c - copied unchanged from r215049, head/contrib/tcpdump/print-ipnet.c user/imp/tbemd/contrib/tcpdump/print-usb.c - copied unchanged from r215049, head/contrib/tcpdump/print-usb.c user/imp/tbemd/contrib/tcpdump/signature.c - copied unchanged from r215049, head/contrib/tcpdump/signature.c user/imp/tbemd/contrib/tcpdump/signature.h - copied unchanged from r215049, head/contrib/tcpdump/signature.h user/imp/tbemd/contrib/tcpdump/tcpdump.1.in - copied unchanged from r215049, head/contrib/tcpdump/tcpdump.1.in user/imp/tbemd/contrib/tcpdump/tests/ - copied from r215049, head/contrib/tcpdump/tests/ user/imp/tbemd/contrib/wpa/patches/ - copied from r215049, head/contrib/wpa/patches/ user/imp/tbemd/contrib/wpa/src/ap/ - copied from r215049, head/contrib/wpa/src/ap/ user/imp/tbemd/contrib/wpa/src/crypto/.gitignore - copied unchanged from r215049, head/contrib/wpa/src/crypto/.gitignore user/imp/tbemd/contrib/wpa/src/crypto/aes-cbc.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes-cbc.c user/imp/tbemd/contrib/wpa/src/crypto/aes-ctr.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes-ctr.c user/imp/tbemd/contrib/wpa/src/crypto/aes-eax.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes-eax.c user/imp/tbemd/contrib/wpa/src/crypto/aes-encblock.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes-encblock.c user/imp/tbemd/contrib/wpa/src/crypto/aes-internal-dec.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes-internal-dec.c user/imp/tbemd/contrib/wpa/src/crypto/aes-internal-enc.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes-internal-enc.c user/imp/tbemd/contrib/wpa/src/crypto/aes-internal.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes-internal.c user/imp/tbemd/contrib/wpa/src/crypto/aes-omac1.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes-omac1.c user/imp/tbemd/contrib/wpa/src/crypto/aes-unwrap.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes-unwrap.c user/imp/tbemd/contrib/wpa/src/crypto/aes-wrap.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes-wrap.c user/imp/tbemd/contrib/wpa/src/crypto/aes_i.h - copied unchanged from r215049, head/contrib/wpa/src/crypto/aes_i.h user/imp/tbemd/contrib/wpa/src/crypto/crypto_internal-cipher.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/crypto_internal-cipher.c user/imp/tbemd/contrib/wpa/src/crypto/crypto_internal-modexp.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/crypto_internal-modexp.c user/imp/tbemd/contrib/wpa/src/crypto/crypto_internal-rsa.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/crypto_internal-rsa.c user/imp/tbemd/contrib/wpa/src/crypto/crypto_nss.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/crypto_nss.c user/imp/tbemd/contrib/wpa/src/crypto/des-internal.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/des-internal.c user/imp/tbemd/contrib/wpa/src/crypto/des_i.h - copied unchanged from r215049, head/contrib/wpa/src/crypto/des_i.h user/imp/tbemd/contrib/wpa/src/crypto/dh_group5.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/dh_group5.c user/imp/tbemd/contrib/wpa/src/crypto/dh_group5.h - copied unchanged from r215049, head/contrib/wpa/src/crypto/dh_group5.h user/imp/tbemd/contrib/wpa/src/crypto/fips_prf_cryptoapi.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/fips_prf_cryptoapi.c user/imp/tbemd/contrib/wpa/src/crypto/fips_prf_gnutls.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/fips_prf_gnutls.c user/imp/tbemd/contrib/wpa/src/crypto/fips_prf_internal.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/fips_prf_internal.c user/imp/tbemd/contrib/wpa/src/crypto/fips_prf_nss.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/fips_prf_nss.c user/imp/tbemd/contrib/wpa/src/crypto/fips_prf_openssl.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/fips_prf_openssl.c user/imp/tbemd/contrib/wpa/src/crypto/md4-internal.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/md4-internal.c user/imp/tbemd/contrib/wpa/src/crypto/md5-internal.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/md5-internal.c user/imp/tbemd/contrib/wpa/src/crypto/md5-non-fips.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/md5-non-fips.c user/imp/tbemd/contrib/wpa/src/crypto/md5_i.h - copied unchanged from r215049, head/contrib/wpa/src/crypto/md5_i.h user/imp/tbemd/contrib/wpa/src/crypto/milenage.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/milenage.c user/imp/tbemd/contrib/wpa/src/crypto/milenage.h - copied unchanged from r215049, head/contrib/wpa/src/crypto/milenage.h user/imp/tbemd/contrib/wpa/src/crypto/sha1-internal.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/sha1-internal.c user/imp/tbemd/contrib/wpa/src/crypto/sha1-pbkdf2.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/sha1-pbkdf2.c user/imp/tbemd/contrib/wpa/src/crypto/sha1-tlsprf.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/sha1-tlsprf.c user/imp/tbemd/contrib/wpa/src/crypto/sha1-tprf.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/sha1-tprf.c user/imp/tbemd/contrib/wpa/src/crypto/sha1_i.h - copied unchanged from r215049, head/contrib/wpa/src/crypto/sha1_i.h user/imp/tbemd/contrib/wpa/src/crypto/sha256-internal.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/sha256-internal.c user/imp/tbemd/contrib/wpa/src/crypto/tls_nss.c - copied unchanged from r215049, head/contrib/wpa/src/crypto/tls_nss.c user/imp/tbemd/contrib/wpa/src/drivers/.gitignore - copied unchanged from r215049, head/contrib/wpa/src/drivers/.gitignore user/imp/tbemd/contrib/wpa/src/drivers/drivers.mak - copied unchanged from r215049, head/contrib/wpa/src/drivers/drivers.mak user/imp/tbemd/contrib/wpa/src/eap_server/eap_server.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_aka.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_aka.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_fast.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_fast.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_gpsk.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_gpsk.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_gtc.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_gtc.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_identity.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_identity.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_ikev2.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_ikev2.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_md5.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_md5.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_methods.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_methods.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_mschapv2.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_mschapv2.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_pax.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_pax.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_peap.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_peap.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_psk.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_psk.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_sake.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_sake.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_sim.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_sim.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_tls.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_tls.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_tls_common.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_tls_common.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_tnc.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_tnc.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_ttls.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_ttls.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_vendor_test.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_vendor_test.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_server_wsc.c - copied unchanged from r215049, head/contrib/wpa/src/eap_server/eap_server_wsc.c user/imp/tbemd/contrib/wpa/src/eapol_auth/ - copied from r215049, head/contrib/wpa/src/eapol_auth/ user/imp/tbemd/contrib/wpa/src/lib.rules - copied unchanged from r215049, head/contrib/wpa/src/lib.rules user/imp/tbemd/contrib/wpa/src/radius/.gitignore - copied unchanged from r215049, head/contrib/wpa/src/radius/.gitignore user/imp/tbemd/contrib/wpa/src/tls/.gitignore - copied unchanged from r215049, head/contrib/wpa/src/tls/.gitignore user/imp/tbemd/contrib/wpa/src/tls/pkcs1.c - copied unchanged from r215049, head/contrib/wpa/src/tls/pkcs1.c user/imp/tbemd/contrib/wpa/src/tls/pkcs1.h - copied unchanged from r215049, head/contrib/wpa/src/tls/pkcs1.h user/imp/tbemd/contrib/wpa/src/tls/pkcs5.c - copied unchanged from r215049, head/contrib/wpa/src/tls/pkcs5.c user/imp/tbemd/contrib/wpa/src/tls/pkcs5.h - copied unchanged from r215049, head/contrib/wpa/src/tls/pkcs5.h user/imp/tbemd/contrib/wpa/src/tls/pkcs8.c - copied unchanged from r215049, head/contrib/wpa/src/tls/pkcs8.c user/imp/tbemd/contrib/wpa/src/tls/pkcs8.h - copied unchanged from r215049, head/contrib/wpa/src/tls/pkcs8.h user/imp/tbemd/contrib/wpa/src/utils/.gitignore - copied unchanged from r215049, head/contrib/wpa/src/utils/.gitignore user/imp/tbemd/contrib/wpa/src/utils/list.h - copied unchanged from r215049, head/contrib/wpa/src/utils/list.h user/imp/tbemd/contrib/wpa/src/utils/radiotap.c - copied unchanged from r215049, head/contrib/wpa/src/utils/radiotap.c user/imp/tbemd/contrib/wpa/src/utils/radiotap.h - copied unchanged from r215049, head/contrib/wpa/src/utils/radiotap.h user/imp/tbemd/contrib/wpa/src/utils/radiotap_iter.h - copied unchanged from r215049, head/contrib/wpa/src/utils/radiotap_iter.h user/imp/tbemd/contrib/wpa/src/utils/trace.c - copied unchanged from r215049, head/contrib/wpa/src/utils/trace.c user/imp/tbemd/contrib/wpa/src/utils/trace.h - copied unchanged from r215049, head/contrib/wpa/src/utils/trace.h user/imp/tbemd/contrib/wpa/src/wps/http.h - copied unchanged from r215049, head/contrib/wpa/src/wps/http.h user/imp/tbemd/contrib/wpa/src/wps/http_client.c - copied unchanged from r215049, head/contrib/wpa/src/wps/http_client.c user/imp/tbemd/contrib/wpa/src/wps/http_client.h - copied unchanged from r215049, head/contrib/wpa/src/wps/http_client.h user/imp/tbemd/contrib/wpa/src/wps/http_server.c - copied unchanged from r215049, head/contrib/wpa/src/wps/http_server.c user/imp/tbemd/contrib/wpa/src/wps/http_server.h - copied unchanged from r215049, head/contrib/wpa/src/wps/http_server.h user/imp/tbemd/contrib/wpa/src/wps/ndef.c - copied unchanged from r215049, head/contrib/wpa/src/wps/ndef.c user/imp/tbemd/contrib/wpa/src/wps/upnp_xml.c - copied unchanged from r215049, head/contrib/wpa/src/wps/upnp_xml.c user/imp/tbemd/contrib/wpa/src/wps/upnp_xml.h - copied unchanged from r215049, head/contrib/wpa/src/wps/upnp_xml.h user/imp/tbemd/contrib/wpa/src/wps/wps_er.c - copied unchanged from r215049, head/contrib/wpa/src/wps/wps_er.c user/imp/tbemd/contrib/wpa/src/wps/wps_er.h - copied unchanged from r215049, head/contrib/wpa/src/wps/wps_er.h user/imp/tbemd/contrib/wpa/src/wps/wps_er_ssdp.c - copied unchanged from r215049, head/contrib/wpa/src/wps/wps_er_ssdp.c user/imp/tbemd/contrib/wpa/src/wps/wps_nfc.c - copied unchanged from r215049, head/contrib/wpa/src/wps/wps_nfc.c user/imp/tbemd/contrib/wpa/src/wps/wps_nfc_pn531.c - copied unchanged from r215049, head/contrib/wpa/src/wps/wps_nfc_pn531.c user/imp/tbemd/contrib/wpa/src/wps/wps_ufd.c - copied unchanged from r215049, head/contrib/wpa/src/wps/wps_ufd.c user/imp/tbemd/contrib/wpa/src/wps/wps_upnp_ap.c - copied unchanged from r215049, head/contrib/wpa/src/wps/wps_upnp_ap.c user/imp/tbemd/contrib/wpa/wpa_supplicant/.gitignore - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/.gitignore user/imp/tbemd/contrib/wpa/wpa_supplicant/ap.c - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/ap.c user/imp/tbemd/contrib/wpa/wpa_supplicant/ap.h - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/ap.h user/imp/tbemd/contrib/wpa/wpa_supplicant/bgscan.c - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/bgscan.c user/imp/tbemd/contrib/wpa/wpa_supplicant/bgscan.h - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/bgscan.h user/imp/tbemd/contrib/wpa/wpa_supplicant/bgscan_simple.c - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/bgscan_simple.c user/imp/tbemd/contrib/wpa/wpa_supplicant/bss.c - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/bss.c user/imp/tbemd/contrib/wpa/wpa_supplicant/bss.h - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/bss.h user/imp/tbemd/contrib/wpa/wpa_supplicant/dbus/ - copied from r215049, head/contrib/wpa/wpa_supplicant/dbus/ user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/docbook/.gitignore - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/doc/docbook/.gitignore user/imp/tbemd/contrib/wpa/wpa_supplicant/driver_i.h - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/driver_i.h user/imp/tbemd/contrib/wpa/wpa_supplicant/eap_register.c - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/eap_register.c user/imp/tbemd/contrib/wpa/wpa_supplicant/examples/60_wpa_supplicant - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/examples/60_wpa_supplicant user/imp/tbemd/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new-getall.py - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new-getall.py user/imp/tbemd/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new-signals.py - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new-signals.py user/imp/tbemd/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new-wps.py - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new-wps.py user/imp/tbemd/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new.py - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/examples/wpas-dbus-new.py user/imp/tbemd/contrib/wpa/wpa_supplicant/ibss_rsn.c - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/ibss_rsn.c user/imp/tbemd/contrib/wpa/wpa_supplicant/ibss_rsn.h - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/ibss_rsn.h user/imp/tbemd/contrib/wpa/wpa_supplicant/notify.c - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/notify.c user/imp/tbemd/contrib/wpa/wpa_supplicant/notify.h - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/notify.h user/imp/tbemd/contrib/wpa/wpa_supplicant/scan.h - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/scan.h user/imp/tbemd/contrib/wpa/wpa_supplicant/sme.c - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/sme.c user/imp/tbemd/contrib/wpa/wpa_supplicant/sme.h - copied unchanged from r215049, head/contrib/wpa/wpa_supplicant/sme.h user/imp/tbemd/contrib/xz/po/de.po - copied unchanged from r215049, head/contrib/xz/po/de.po user/imp/tbemd/contrib/xz/po/it.po - copied unchanged from r215049, head/contrib/xz/po/it.po user/imp/tbemd/contrib/xz/src/common/tuklib_mbstr.h - copied unchanged from r215049, head/contrib/xz/src/common/tuklib_mbstr.h user/imp/tbemd/contrib/xz/src/common/tuklib_mbstr_fw.c - copied unchanged from r215049, head/contrib/xz/src/common/tuklib_mbstr_fw.c user/imp/tbemd/contrib/xz/src/common/tuklib_mbstr_width.c - copied unchanged from r215049, head/contrib/xz/src/common/tuklib_mbstr_width.c user/imp/tbemd/etc/rc.d/gptboot - copied unchanged from r215049, head/etc/rc.d/gptboot user/imp/tbemd/include/unwind.h - copied unchanged from r215049, head/include/unwind.h user/imp/tbemd/lib/clang/include/ARMGenAsmMatcher.inc - copied unchanged from r215049, head/lib/clang/include/ARMGenAsmMatcher.inc user/imp/tbemd/lib/clang/include/ARMGenFastISel.inc - copied unchanged from r215049, head/lib/clang/include/ARMGenFastISel.inc user/imp/tbemd/lib/clang/include/X86GenDisassemblerTables.inc - copied unchanged from r215049, head/lib/clang/include/X86GenDisassemblerTables.inc user/imp/tbemd/lib/clang/include/X86GenEDInfo.inc - copied unchanged from r215049, head/lib/clang/include/X86GenEDInfo.inc user/imp/tbemd/lib/clang/include/clang/AST/AttrImpl.inc - copied unchanged from r215049, head/lib/clang/include/clang/AST/AttrImpl.inc user/imp/tbemd/lib/clang/include/clang/Serialization/ - copied from r215049, head/lib/clang/include/clang/Serialization/ user/imp/tbemd/lib/clang/include/llvm/Config/llvm-config.h - copied unchanged from r215049, head/lib/clang/include/llvm/Config/llvm-config.h user/imp/tbemd/lib/clang/libclangfrontendtool/ - copied from r215049, head/lib/clang/libclangfrontendtool/ user/imp/tbemd/lib/clang/libclangindex/ - copied from r215049, head/lib/clang/libclangindex/ user/imp/tbemd/lib/clang/libclangserialization/ - copied from r215049, head/lib/clang/libclangserialization/ user/imp/tbemd/lib/clang/libllvmx86disassembler/ - copied from r215049, head/lib/clang/libllvmx86disassembler/ user/imp/tbemd/lib/libarchive/test/test_compat_zip_2.zip.uu - copied unchanged from r215049, head/lib/libarchive/test/test_compat_zip_2.zip.uu user/imp/tbemd/lib/libkvm/kvm_minidump_mips.c - copied unchanged from r215049, head/lib/libkvm/kvm_minidump_mips.c user/imp/tbemd/share/examples/jails/ - copied from r215049, head/share/examples/jails/ user/imp/tbemd/share/examples/netgraph/virtual.chain - copied unchanged from r215049, head/share/examples/netgraph/virtual.chain user/imp/tbemd/share/examples/netgraph/virtual.lan - copied unchanged from r215049, head/share/examples/netgraph/virtual.lan user/imp/tbemd/share/man/man4/atrtc.4 - copied unchanged from r215049, head/share/man/man4/atrtc.4 user/imp/tbemd/share/man/man4/attimer.4 - copied unchanged from r215049, head/share/man/man4/attimer.4 user/imp/tbemd/share/man/man4/hpet.4 - copied unchanged from r215049, head/share/man/man4/hpet.4 user/imp/tbemd/share/man/man4/mps.4 - copied unchanged from r215049, head/share/man/man4/mps.4 user/imp/tbemd/share/man/man4/send.4 - copied unchanged from r215049, head/share/man/man4/send.4 user/imp/tbemd/share/man/man7/eventtimers.7 - copied unchanged from r215049, head/share/man/man7/eventtimers.7 user/imp/tbemd/share/man/man9/vm_page_sleep_if_busy.9 - copied unchanged from r215049, head/share/man/man9/vm_page_sleep_if_busy.9 user/imp/tbemd/sys/arm/at91/at91_pio_sam9g20.h - copied unchanged from r215049, head/sys/arm/at91/at91_pio_sam9g20.h user/imp/tbemd/sys/arm/at91/at91_reset.S - copied unchanged from r215049, head/sys/arm/at91/at91_reset.S user/imp/tbemd/sys/arm/at91/at91_rst.c - copied unchanged from r215049, head/sys/arm/at91/at91_rst.c user/imp/tbemd/sys/arm/at91/at91_rstreg.h - copied unchanged from r215049, head/sys/arm/at91/at91_rstreg.h user/imp/tbemd/sys/arm/at91/at91_wdt.c - copied unchanged from r215049, head/sys/arm/at91/at91_wdt.c user/imp/tbemd/sys/arm/at91/at91_wdtreg.h - copied unchanged from r215049, head/sys/arm/at91/at91_wdtreg.h user/imp/tbemd/sys/arm/at91/at91reg.h - copied unchanged from r215049, head/sys/arm/at91/at91reg.h user/imp/tbemd/sys/arm/at91/at91rm9200.c - copied unchanged from r215049, head/sys/arm/at91/at91rm9200.c user/imp/tbemd/sys/arm/at91/at91sam9260.c - copied unchanged from r215049, head/sys/arm/at91/at91sam9260.c user/imp/tbemd/sys/arm/at91/at91sam9260reg.h - copied unchanged from r215049, head/sys/arm/at91/at91sam9260reg.h user/imp/tbemd/sys/arm/at91/at91sam9g20.c - copied unchanged from r215049, head/sys/arm/at91/at91sam9g20.c user/imp/tbemd/sys/arm/at91/board_qila9g20.c - copied unchanged from r215049, head/sys/arm/at91/board_qila9g20.c user/imp/tbemd/sys/arm/at91/board_sam9g20ek.c - copied unchanged from r215049, head/sys/arm/at91/board_sam9g20ek.c user/imp/tbemd/sys/arm/at91/std.qila9g20 - copied unchanged from r215049, head/sys/arm/at91/std.qila9g20 user/imp/tbemd/sys/arm/at91/std.sam9g20ek - copied unchanged from r215049, head/sys/arm/at91/std.sam9g20ek user/imp/tbemd/sys/arm/conf/QILA9G20 - copied unchanged from r215049, head/sys/arm/conf/QILA9G20 user/imp/tbemd/sys/arm/conf/QILA9G20.hints - copied unchanged from r215049, head/sys/arm/conf/QILA9G20.hints user/imp/tbemd/sys/arm/conf/SAM9G20EK - copied unchanged from r215049, head/sys/arm/conf/SAM9G20EK user/imp/tbemd/sys/arm/conf/SAM9G20EK.hints - copied unchanged from r215049, head/sys/arm/conf/SAM9G20EK.hints user/imp/tbemd/sys/arm/xscale/ixp425/avila_gpio.c - copied unchanged from r215049, head/sys/arm/xscale/ixp425/avila_gpio.c user/imp/tbemd/sys/boot/common/crc32.c - copied unchanged from r215049, head/sys/boot/common/crc32.c user/imp/tbemd/sys/boot/common/crc32.h - copied unchanged from r215049, head/sys/boot/common/crc32.h user/imp/tbemd/sys/boot/common/gpt.c - copied unchanged from r215049, head/sys/boot/common/gpt.c user/imp/tbemd/sys/boot/common/gpt.h - copied unchanged from r215049, head/sys/boot/common/gpt.h user/imp/tbemd/sys/boot/common/util.c - copied unchanged from r215049, head/sys/boot/common/util.c user/imp/tbemd/sys/boot/common/util.h - copied unchanged from r215049, head/sys/boot/common/util.h user/imp/tbemd/sys/boot/i386/common/ - copied from r215049, head/sys/boot/i386/common/ user/imp/tbemd/sys/conf/ldscript.mips.64.cfe - copied unchanged from r215049, head/sys/conf/ldscript.mips.64.cfe user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslmessages.h - copied unchanged from r215049, head/sys/contrib/dev/acpica/compiler/aslmessages.h user/imp/tbemd/sys/contrib/dev/acpica/hardware/hwpci.c - copied unchanged from r215049, head/sys/contrib/dev/acpica/hardware/hwpci.c user/imp/tbemd/sys/contrib/dev/acpica/utilities/utxferror.c - copied unchanged from r215049, head/sys/contrib/dev/acpica/utilities/utxferror.c user/imp/tbemd/sys/dev/agp/agp_apple.c - copied unchanged from r215049, head/sys/dev/agp/agp_apple.c user/imp/tbemd/sys/dev/gpio/ - copied from r215049, head/sys/dev/gpio/ user/imp/tbemd/sys/dev/iicbus/ds1775.c - copied unchanged from r215049, head/sys/dev/iicbus/ds1775.c user/imp/tbemd/sys/dev/iicbus/max6690.c - copied unchanged from r215049, head/sys/dev/iicbus/max6690.c user/imp/tbemd/sys/dev/usb/controller/xhci.c - copied unchanged from r215049, head/sys/dev/usb/controller/xhci.c user/imp/tbemd/sys/dev/usb/controller/xhci.h - copied unchanged from r215049, head/sys/dev/usb/controller/xhci.h user/imp/tbemd/sys/dev/usb/controller/xhci_pci.c - copied unchanged from r215049, head/sys/dev/usb/controller/xhci_pci.c user/imp/tbemd/sys/dev/usb/controller/xhcireg.h - copied unchanged from r215049, head/sys/dev/usb/controller/xhcireg.h user/imp/tbemd/sys/dev/usb/net/if_ipheth.c - copied unchanged from r215049, head/sys/dev/usb/net/if_ipheth.c user/imp/tbemd/sys/dev/usb/net/if_iphethvar.h - copied unchanged from r215049, head/sys/dev/usb/net/if_iphethvar.h user/imp/tbemd/sys/dev/xen/control/ - copied from r215049, head/sys/dev/xen/control/ user/imp/tbemd/sys/fs/devfs/devfs_dir.c - copied unchanged from r215049, head/sys/fs/devfs/devfs_dir.c user/imp/tbemd/sys/kern/vfs_mountroot.c - copied unchanged from r215049, head/sys/kern/vfs_mountroot.c user/imp/tbemd/sys/libkern/inet_ntop.c - copied unchanged from r215049, head/sys/libkern/inet_ntop.c user/imp/tbemd/sys/libkern/inet_pton.c - copied unchanged from r215049, head/sys/libkern/inet_pton.c user/imp/tbemd/sys/mips/atheros/ar71xx_gpio.c - copied unchanged from r215049, head/sys/mips/atheros/ar71xx_gpio.c user/imp/tbemd/sys/mips/atheros/ar71xx_gpiovar.h - copied unchanged from r215049, head/sys/mips/atheros/ar71xx_gpiovar.h user/imp/tbemd/sys/mips/cavium/octe/ethernet-mv88e61xx.c - copied unchanged from r215049, head/sys/mips/cavium/octe/ethernet-mv88e61xx.c user/imp/tbemd/sys/mips/cavium/octe/ethernet-mv88e61xx.h - copied unchanged from r215049, head/sys/mips/cavium/octe/ethernet-mv88e61xx.h user/imp/tbemd/sys/mips/cavium/octe/mv88e61xxphy.c - copied unchanged from r215049, head/sys/mips/cavium/octe/mv88e61xxphy.c user/imp/tbemd/sys/mips/cavium/octe/mv88e61xxphyreg.h - copied unchanged from r215049, head/sys/mips/cavium/octe/mv88e61xxphyreg.h user/imp/tbemd/sys/mips/conf/SWARM64 - copied unchanged from r215049, head/sys/mips/conf/SWARM64 user/imp/tbemd/sys/mips/conf/SWARM64_SMP - copied unchanged from r215049, head/sys/mips/conf/SWARM64_SMP user/imp/tbemd/sys/mips/conf/SWARM_COMMON - copied unchanged from r215049, head/sys/mips/conf/SWARM_COMMON user/imp/tbemd/sys/mips/mips/minidump_machdep.c - copied unchanged from r215049, head/sys/mips/mips/minidump_machdep.c user/imp/tbemd/sys/modules/usb/ipheth/ - copied from r215049, head/sys/modules/usb/ipheth/ user/imp/tbemd/sys/modules/usb/xhci/ - copied from r215049, head/sys/modules/usb/xhci/ user/imp/tbemd/sys/net/if_debug.c - copied unchanged from r215049, head/sys/net/if_debug.c user/imp/tbemd/sys/net80211/ieee80211_ratectl_none.c - copied unchanged from r215049, head/sys/net80211/ieee80211_ratectl_none.c user/imp/tbemd/sys/netinet/in_debug.c - copied unchanged from r215049, head/sys/netinet/in_debug.c user/imp/tbemd/sys/nfs/nfs_mountcommon.h - copied unchanged from r215049, head/sys/nfs/nfs_mountcommon.h user/imp/tbemd/sys/powerpc/powermac/fcu.c - copied unchanged from r215049, head/sys/powerpc/powermac/fcu.c user/imp/tbemd/sys/sys/gpio.h - copied unchanged from r215049, head/sys/sys/gpio.h user/imp/tbemd/sys/x86/acpica/OsdEnvironment.c - copied unchanged from r215049, head/sys/x86/acpica/OsdEnvironment.c user/imp/tbemd/sys/x86/acpica/madt.c - copied unchanged from r215049, head/sys/x86/acpica/madt.c user/imp/tbemd/sys/x86/include/ - copied from r215049, head/sys/x86/include/ user/imp/tbemd/sys/x86/x86/dump_machdep.c - copied unchanged from r215049, head/sys/x86/x86/dump_machdep.c user/imp/tbemd/sys/x86/x86/mptable.c - copied unchanged from r215049, head/sys/x86/x86/mptable.c user/imp/tbemd/sys/x86/x86/mptable_pci.c - copied unchanged from r215049, head/sys/x86/x86/mptable_pci.c user/imp/tbemd/sys/x86/x86/nexus.c - copied unchanged from r215049, head/sys/x86/x86/nexus.c user/imp/tbemd/sys/xen/blkif.h - copied unchanged from r215049, head/sys/xen/blkif.h user/imp/tbemd/sys/xen/xenbus/xenbus.c - copied unchanged from r215049, head/sys/xen/xenbus/xenbus.c user/imp/tbemd/sys/xen/xenbus/xenbusb.c - copied unchanged from r215049, head/sys/xen/xenbus/xenbusb.c user/imp/tbemd/sys/xen/xenbus/xenbusb.h - copied unchanged from r215049, head/sys/xen/xenbus/xenbusb.h user/imp/tbemd/sys/xen/xenbus/xenbusb_back.c - copied unchanged from r215049, head/sys/xen/xenbus/xenbusb_back.c user/imp/tbemd/sys/xen/xenbus/xenbusb_front.c - copied unchanged from r215049, head/sys/xen/xenbus/xenbusb_front.c user/imp/tbemd/sys/xen/xenbus/xenbusb_if.m - copied unchanged from r215049, head/sys/xen/xenbus/xenbusb_if.m user/imp/tbemd/sys/xen/xenstore/ - copied from r215049, head/sys/xen/xenstore/ user/imp/tbemd/tools/build/options/WITH_GPIO - copied unchanged from r215049, head/tools/build/options/WITH_GPIO user/imp/tbemd/tools/regression/acltools/mktrivial.sh - copied unchanged from r215049, head/tools/regression/acltools/mktrivial.sh user/imp/tbemd/tools/regression/bin/sh/builtins/printf1.0 - copied unchanged from r215049, head/tools/regression/bin/sh/builtins/printf1.0 user/imp/tbemd/tools/regression/bin/sh/builtins/printf2.0 - copied unchanged from r215049, head/tools/regression/bin/sh/builtins/printf2.0 user/imp/tbemd/tools/regression/bin/sh/errors/bad-keyword1.0 - copied unchanged from r215049, head/tools/regression/bin/sh/errors/bad-keyword1.0 user/imp/tbemd/tools/regression/bin/sh/execution/func3.0 - copied unchanged from r215049, head/tools/regression/bin/sh/execution/func3.0 user/imp/tbemd/tools/regression/bin/sh/execution/redir3.0 - copied unchanged from r215049, head/tools/regression/bin/sh/execution/redir3.0 user/imp/tbemd/tools/regression/bin/sh/execution/redir4.0 - copied unchanged from r215049, head/tools/regression/bin/sh/execution/redir4.0 user/imp/tbemd/tools/regression/bin/sh/expansion/plus-minus5.0 - copied unchanged from r215049, head/tools/regression/bin/sh/expansion/plus-minus5.0 user/imp/tbemd/tools/regression/bin/sh/expansion/plus-minus6.0 - copied unchanged from r215049, head/tools/regression/bin/sh/expansion/plus-minus6.0 user/imp/tbemd/tools/regression/bin/sh/expansion/trim4.0 - copied unchanged from r215049, head/tools/regression/bin/sh/expansion/trim4.0 user/imp/tbemd/tools/regression/bin/sh/expansion/trim5.0 - copied unchanged from r215049, head/tools/regression/bin/sh/expansion/trim5.0 user/imp/tbemd/tools/regression/bin/sh/expansion/trim6.0 - copied unchanged from r215049, head/tools/regression/bin/sh/expansion/trim6.0 user/imp/tbemd/tools/regression/bin/sh/parser/alias1.0 - copied unchanged from r215049, head/tools/regression/bin/sh/parser/alias1.0 user/imp/tbemd/tools/regression/bin/sh/parser/alias2.0 - copied unchanged from r215049, head/tools/regression/bin/sh/parser/alias2.0 user/imp/tbemd/tools/regression/bin/sh/parser/alias3.0 - copied unchanged from r215049, head/tools/regression/bin/sh/parser/alias3.0 user/imp/tbemd/tools/regression/bin/sh/parser/func1.0 - copied unchanged from r215049, head/tools/regression/bin/sh/parser/func1.0 user/imp/tbemd/tools/regression/bin/sh/parser/pipe-not1.0 - copied unchanged from r215049, head/tools/regression/bin/sh/parser/pipe-not1.0 user/imp/tbemd/tools/regression/bin/test/ - copied from r215049, head/tools/regression/bin/test/ user/imp/tbemd/tools/regression/geom_eli/init-J.t - copied unchanged from r215049, head/tools/regression/geom_eli/init-J.t user/imp/tbemd/tools/regression/geom_eli/resize.t - copied unchanged from r215049, head/tools/regression/geom_eli/resize.t user/imp/tbemd/tools/regression/pthread/unwind/ - copied from r215049, head/tools/regression/pthread/unwind/ user/imp/tbemd/tools/regression/sbin/ - copied from r215049, head/tools/regression/sbin/ user/imp/tbemd/tools/regression/usr.bin/tr/regress.0c.out - copied unchanged from r215049, head/tools/regression/usr.bin/tr/regress.0c.out user/imp/tbemd/tools/regression/usr.bin/tr/regress.0d.out - copied unchanged from r215049, head/tools/regression/usr.bin/tr/regress.0d.out user/imp/tbemd/tools/tools/nanobsd/rescue/Pkg/ - copied from r215049, head/tools/tools/nanobsd/rescue/Pkg/ user/imp/tbemd/tools/tools/nanobsd/rescue/build.sh - copied unchanged from r215049, head/tools/tools/nanobsd/rescue/build.sh user/imp/tbemd/usr.bin/clang/clang/clang.1 - copied unchanged from r215049, head/usr.bin/clang/clang/clang.1 user/imp/tbemd/usr.bin/clang/tblgen/tblgen.1 - copied unchanged from r215049, head/usr.bin/clang/tblgen/tblgen.1 user/imp/tbemd/usr.bin/grep/nls/zh_CN.UTF-8.msg - copied unchanged from r215049, head/usr.bin/grep/nls/zh_CN.UTF-8.msg user/imp/tbemd/usr.bin/man/ - copied from r215049, head/usr.bin/man/ user/imp/tbemd/usr.sbin/gpioctl/ - copied from r215049, head/usr.sbin/gpioctl/ user/imp/tbemd/usr.sbin/makefs/cd9660/ - copied from r215049, head/usr.sbin/makefs/cd9660/ user/imp/tbemd/usr.sbin/makefs/cd9660.c - copied unchanged from r215049, head/usr.sbin/makefs/cd9660.c user/imp/tbemd/usr.sbin/makefs/cd9660.h - copied unchanged from r215049, head/usr.sbin/makefs/cd9660.h user/imp/tbemd/usr.sbin/makefs/compat/Makefile.inc - copied unchanged from r215049, head/usr.sbin/makefs/compat/Makefile.inc user/imp/tbemd/usr.sbin/makefs/ffs.h - copied unchanged from r215049, head/usr.sbin/makefs/ffs.h user/imp/tbemd/usr.sbin/makefs/ffs/Makefile.inc - copied unchanged from r215049, head/usr.sbin/makefs/ffs/Makefile.inc user/imp/tbemd/usr.sbin/tcpdump/tcpdump/tcpdump.1 - copied unchanged from r215049, head/usr.sbin/tcpdump/tcpdump/tcpdump.1 Replaced: user/imp/tbemd/contrib/wpa/hostapd/ - copied from r215049, head/contrib/wpa/hostapd/ user/imp/tbemd/contrib/wpa/hostapd/ChangeLog - copied unchanged from r215049, head/contrib/wpa/hostapd/ChangeLog user/imp/tbemd/contrib/wpa/hostapd/Makefile - copied unchanged from r215049, head/contrib/wpa/hostapd/Makefile user/imp/tbemd/contrib/wpa/hostapd/README - copied unchanged from r215049, head/contrib/wpa/hostapd/README user/imp/tbemd/contrib/wpa/hostapd/README-WPS - copied unchanged from r215049, head/contrib/wpa/hostapd/README-WPS user/imp/tbemd/contrib/wpa/hostapd/ctrl_iface.c - copied unchanged from r215049, head/contrib/wpa/hostapd/ctrl_iface.c user/imp/tbemd/contrib/wpa/hostapd/ctrl_iface.h - copied unchanged from r215049, head/contrib/wpa/hostapd/ctrl_iface.h user/imp/tbemd/contrib/wpa/hostapd/defconfig - copied unchanged from r215049, head/contrib/wpa/hostapd/defconfig user/imp/tbemd/contrib/wpa/hostapd/eap_testing.txt - copied unchanged from r215049, head/contrib/wpa/hostapd/eap_testing.txt user/imp/tbemd/contrib/wpa/hostapd/hostapd.8 - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd.8 user/imp/tbemd/contrib/wpa/hostapd/hostapd.accept - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd.accept user/imp/tbemd/contrib/wpa/hostapd/hostapd.conf - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd.conf user/imp/tbemd/contrib/wpa/hostapd/hostapd.deny - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd.deny user/imp/tbemd/contrib/wpa/hostapd/hostapd.eap_user - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd.eap_user user/imp/tbemd/contrib/wpa/hostapd/hostapd.radius_clients - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd.radius_clients user/imp/tbemd/contrib/wpa/hostapd/hostapd.sim_db - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd.sim_db user/imp/tbemd/contrib/wpa/hostapd/hostapd.vlan - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd.vlan user/imp/tbemd/contrib/wpa/hostapd/hostapd.wpa_psk - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd.wpa_psk user/imp/tbemd/contrib/wpa/hostapd/hostapd_cli.1 - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd_cli.1 user/imp/tbemd/contrib/wpa/hostapd/hostapd_cli.c - copied unchanged from r215049, head/contrib/wpa/hostapd/hostapd_cli.c user/imp/tbemd/contrib/wpa/hostapd/logwatch/ - copied from r215049, head/contrib/wpa/hostapd/logwatch/ user/imp/tbemd/contrib/wpa/hostapd/logwatch/README - copied unchanged from r215049, head/contrib/wpa/hostapd/logwatch/README user/imp/tbemd/contrib/wpa/hostapd/logwatch/hostapd - copied unchanged from r215049, head/contrib/wpa/hostapd/logwatch/hostapd user/imp/tbemd/contrib/wpa/hostapd/logwatch/hostapd.conf - copied unchanged from r215049, head/contrib/wpa/hostapd/logwatch/hostapd.conf user/imp/tbemd/contrib/wpa/hostapd/nt_password_hash.c - copied unchanged from r215049, head/contrib/wpa/hostapd/nt_password_hash.c user/imp/tbemd/contrib/wpa/hostapd/wired.conf - copied unchanged from r215049, head/contrib/wpa/hostapd/wired.conf user/imp/tbemd/sys/kern/Makefile - copied unchanged from r215049, head/sys/kern/Makefile Deleted: user/imp/tbemd/bin/test/TEST.README user/imp/tbemd/bin/test/TEST.csh user/imp/tbemd/bin/test/TEST.sh user/imp/tbemd/contrib/libf2c/ user/imp/tbemd/contrib/libpcap/FREEBSD-Xlist user/imp/tbemd/contrib/libpcap/FREEBSD-upgrade user/imp/tbemd/contrib/libpcap/net/bpf_filter.c user/imp/tbemd/contrib/llvm/CMakeLists.txt user/imp/tbemd/contrib/llvm/CREDITS.TXT user/imp/tbemd/contrib/llvm/LICENSE.TXT user/imp/tbemd/contrib/llvm/Makefile user/imp/tbemd/contrib/llvm/Makefile.common user/imp/tbemd/contrib/llvm/Makefile.config.in user/imp/tbemd/contrib/llvm/Makefile.rules user/imp/tbemd/contrib/llvm/ModuleInfo.txt user/imp/tbemd/contrib/llvm/README.txt user/imp/tbemd/contrib/llvm/autoconf/ user/imp/tbemd/contrib/llvm/bindings/ user/imp/tbemd/contrib/llvm/build-for-llvm-top.sh user/imp/tbemd/contrib/llvm/configure user/imp/tbemd/contrib/llvm/include/llvm/ADT/iterator.cmake user/imp/tbemd/contrib/llvm/include/llvm/ADT/iterator.h.in user/imp/tbemd/contrib/llvm/include/llvm/Assembly/AsmAnnotationWriter.h user/imp/tbemd/contrib/llvm/include/llvm/CMakeLists.txt user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/ForceLinkage.h user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/ForceLinkageMacros.h user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/Plugin.h user/imp/tbemd/contrib/llvm/include/llvm/Config/ user/imp/tbemd/contrib/llvm/include/llvm/MC/MCParser/AsmParser.h user/imp/tbemd/contrib/llvm/include/llvm/Support/DataTypes.h.cmake user/imp/tbemd/contrib/llvm/include/llvm/Support/DataTypes.h.in user/imp/tbemd/contrib/llvm/include/llvm/Support/SlowOperationInformer.h user/imp/tbemd/contrib/llvm/include/llvm/System/DataTypes.h.cmake user/imp/tbemd/contrib/llvm/include/llvm/System/DataTypes.h.in user/imp/tbemd/contrib/llvm/include/llvm/System/LICENSE.TXT user/imp/tbemd/contrib/llvm/include/llvm/Transforms/Utils/SSI.h user/imp/tbemd/contrib/llvm/lib/Analysis/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Analysis/IPA/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Analysis/IPA/Makefile user/imp/tbemd/contrib/llvm/lib/Analysis/Makefile user/imp/tbemd/contrib/llvm/lib/Analysis/README.txt user/imp/tbemd/contrib/llvm/lib/Archive/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Archive/Makefile user/imp/tbemd/contrib/llvm/lib/AsmParser/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/AsmParser/Makefile user/imp/tbemd/contrib/llvm/lib/Bitcode/Makefile user/imp/tbemd/contrib/llvm/lib/Bitcode/Reader/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Bitcode/Reader/Makefile user/imp/tbemd/contrib/llvm/lib/Bitcode/Writer/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Bitcode/Writer/Makefile user/imp/tbemd/contrib/llvm/lib/CodeGen/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/CodeGen/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/CodeGen/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/CodeGen/Makefile user/imp/tbemd/contrib/llvm/lib/CodeGen/OptimizeExts.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/README.txt user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/Makefile user/imp/tbemd/contrib/llvm/lib/CompilerDriver/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/CompilerDriver/Makefile user/imp/tbemd/contrib/llvm/lib/CompilerDriver/Plugin.cpp user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/Interpreter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/Interpreter/Makefile user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/JIT/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/JIT/Makefile user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/Makefile user/imp/tbemd/contrib/llvm/lib/Linker/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Linker/Makefile user/imp/tbemd/contrib/llvm/lib/MC/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/MC/MCParser/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/MC/MCParser/Makefile user/imp/tbemd/contrib/llvm/lib/MC/Makefile user/imp/tbemd/contrib/llvm/lib/Makefile user/imp/tbemd/contrib/llvm/lib/Support/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Support/COPYRIGHT.regex user/imp/tbemd/contrib/llvm/lib/Support/Makefile user/imp/tbemd/contrib/llvm/lib/Support/SlowOperationInformer.cpp user/imp/tbemd/contrib/llvm/lib/System/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/System/Makefile user/imp/tbemd/contrib/llvm/lib/System/README.txt user/imp/tbemd/contrib/llvm/lib/System/Unix/README.txt user/imp/tbemd/contrib/llvm/lib/Target/ARM/AsmParser/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/ARM/AsmParser/Makefile user/imp/tbemd/contrib/llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/AsmPrinter/ARMMCInstLower.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/AsmPrinter/ARMMCInstLower.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/ARM/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/ARM/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/ARM/Disassembler/Makefile user/imp/tbemd/contrib/llvm/lib/Target/ARM/Makefile user/imp/tbemd/contrib/llvm/lib/Target/ARM/README-Thumb.txt user/imp/tbemd/contrib/llvm/lib/Target/ARM/README-Thumb2.txt user/imp/tbemd/contrib/llvm/lib/Target/ARM/README.txt user/imp/tbemd/contrib/llvm/lib/Target/ARM/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/ARM/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Alpha/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Alpha/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Alpha/README.txt user/imp/tbemd/contrib/llvm/lib/Target/Alpha/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Alpha/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/README.txt user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/CBackend/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/CBackend/Makefile user/imp/tbemd/contrib/llvm/lib/Target/CBackend/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/CBackend/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/Makefile user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/README.txt user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/CppBackend/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/CppBackend/Makefile user/imp/tbemd/contrib/llvm/lib/Target/CppBackend/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/CppBackend/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/Makefile user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/MSIL/ user/imp/tbemd/contrib/llvm/lib/Target/MSP430/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/MSP430/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/MSP430/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/MSP430/Makefile user/imp/tbemd/contrib/llvm/lib/Target/MSP430/README.txt user/imp/tbemd/contrib/llvm/lib/Target/MSP430/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/MSP430/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Mips/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Mips/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Mips/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Mips/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Mips/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Mips/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/PIC16/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/PIC16/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/PIC16/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/PIC16/Makefile user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16Passes/Makefile user/imp/tbemd/contrib/llvm/lib/Target/PIC16/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/PIC16/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/Makefile user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/README.txt user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/README_ALTIVEC.txt user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/README.txt user/imp/tbemd/contrib/llvm/lib/Target/Sparc/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Sparc/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Sparc/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Sparc/Makefile user/imp/tbemd/contrib/llvm/lib/Target/Sparc/README.txt user/imp/tbemd/contrib/llvm/lib/Target/Sparc/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/Sparc/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/SystemZ/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/SystemZ/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/SystemZ/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/SystemZ/Makefile user/imp/tbemd/contrib/llvm/lib/Target/SystemZ/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/SystemZ/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmParser/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmParser/Makefile user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.h user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/X86MCInstLower.h user/imp/tbemd/contrib/llvm/lib/Target/X86/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/Disassembler/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/Disassembler/Makefile user/imp/tbemd/contrib/llvm/lib/Target/X86/Makefile user/imp/tbemd/contrib/llvm/lib/Target/X86/README-FPStack.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/README-MMX.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/README-SSE.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/README-UNIMPLEMENTED.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/README-X86-64.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/README.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/X86/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Target/X86/X86CompilationCallback_Win64.asm user/imp/tbemd/contrib/llvm/lib/Target/X86/X86FloatingPointRegKill.cpp user/imp/tbemd/contrib/llvm/lib/Target/XCore/AsmPrinter/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/XCore/AsmPrinter/Makefile user/imp/tbemd/contrib/llvm/lib/Target/XCore/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/XCore/Makefile user/imp/tbemd/contrib/llvm/lib/Target/XCore/README.txt user/imp/tbemd/contrib/llvm/lib/Target/XCore/TargetInfo/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Target/XCore/TargetInfo/Makefile user/imp/tbemd/contrib/llvm/lib/Transforms/Hello/ user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/Makefile user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/Makefile user/imp/tbemd/contrib/llvm/lib/Transforms/Instrumentation/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Transforms/Instrumentation/Makefile user/imp/tbemd/contrib/llvm/lib/Transforms/Makefile user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/ABCD.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/Makefile user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/Makefile user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/SSI.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/ValueMapper.h user/imp/tbemd/contrib/llvm/lib/VMCore/CMakeLists.txt user/imp/tbemd/contrib/llvm/lib/VMCore/Makefile user/imp/tbemd/contrib/llvm/llvm.spec.in user/imp/tbemd/contrib/llvm/mklib user/imp/tbemd/contrib/llvm/runtime/ user/imp/tbemd/contrib/llvm/tools/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/Makefile user/imp/tbemd/contrib/llvm/tools/bugpoint/ user/imp/tbemd/contrib/llvm/tools/clang/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/INSTALL.txt user/imp/tbemd/contrib/llvm/tools/clang/LICENSE.TXT user/imp/tbemd/contrib/llvm/tools/clang/Makefile user/imp/tbemd/contrib/llvm/tools/clang/ModuleInfo.txt user/imp/tbemd/contrib/llvm/tools/clang/NOTES.txt user/imp/tbemd/contrib/llvm/tools/clang/README.txt user/imp/tbemd/contrib/llvm/tools/clang/TODO.txt user/imp/tbemd/contrib/llvm/tools/clang/VER user/imp/tbemd/contrib/llvm/tools/clang/bindings/ user/imp/tbemd/contrib/llvm/tools/clang/include/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/include/Makefile user/imp/tbemd/contrib/llvm/tools/clang/include/clang-c/Makefile user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/DeclNodes.def user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/Makefile user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/StmtNodes.def user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/PrintfFormatString.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/Makefile user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/Version.inc.in user/imp/tbemd/contrib/llvm/tools/clang/include/clang/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/Makefile user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/PCHBitCodes.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/PCHDeserializationListener.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/PCHReader.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/PCHWriter.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Index/Utils.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Makefile user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Parse/Action.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Parse/AttributeList.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Parse/DeclSpec.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Parse/Designator.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Parse/Ownership.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Parse/Scope.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Parse/Template.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/ParseAST.h user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Basic/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Basic/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/CallInliner.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/README.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/GeneratePCH.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/PCHReader.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/PCHReaderDecl.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/PCHReaderStmt.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/PCHWriter.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/PCHWriterDecl.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/PCHWriterStmt.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/PrintParserCallbacks.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/arm_neon.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/arm_neon.td user/imp/tbemd/contrib/llvm/tools/clang/lib/Index/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Index/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Index/ResolveLocation.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/AttributeList.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/DeclSpec.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/MinimalAction.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Rewrite/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Rewrite/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Runtime/ user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/CXXFieldCollector.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/IdentifierResolver.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/Lookup.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/Makefile user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/ParseAST.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/Sema.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaInit.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaOverload.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.h user/imp/tbemd/contrib/llvm/tools/clang/runtime/ user/imp/tbemd/contrib/llvm/tools/clang/tools/CIndex/ user/imp/tbemd/contrib/llvm/tools/clang/tools/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/tools/Makefile user/imp/tbemd/contrib/llvm/tools/clang/tools/c-index-test/ user/imp/tbemd/contrib/llvm/tools/clang/tools/driver/CMakeLists.txt user/imp/tbemd/contrib/llvm/tools/clang/tools/driver/Makefile user/imp/tbemd/contrib/llvm/tools/clang/tools/index-test/ user/imp/tbemd/contrib/llvm/tools/clang/tools/libclang/ user/imp/tbemd/contrib/llvm/tools/clang/tools/scan-build/ user/imp/tbemd/contrib/llvm/tools/clang/tools/scan-view/ user/imp/tbemd/contrib/llvm/tools/clang/utils/ user/imp/tbemd/contrib/llvm/tools/edis/ user/imp/tbemd/contrib/llvm/tools/gold/ user/imp/tbemd/contrib/llvm/tools/llc/ user/imp/tbemd/contrib/llvm/tools/lli/ user/imp/tbemd/contrib/llvm/tools/llvm-ar/ user/imp/tbemd/contrib/llvm/tools/llvm-as/ user/imp/tbemd/contrib/llvm/tools/llvm-bcanalyzer/ user/imp/tbemd/contrib/llvm/tools/llvm-config/ user/imp/tbemd/contrib/llvm/tools/llvm-dis/ user/imp/tbemd/contrib/llvm/tools/llvm-extract/ user/imp/tbemd/contrib/llvm/tools/llvm-ld/ user/imp/tbemd/contrib/llvm/tools/llvm-link/ user/imp/tbemd/contrib/llvm/tools/llvm-mc/ user/imp/tbemd/contrib/llvm/tools/llvm-nm/ user/imp/tbemd/contrib/llvm/tools/llvm-prof/ user/imp/tbemd/contrib/llvm/tools/llvm-ranlib/ user/imp/tbemd/contrib/llvm/tools/llvm-shlib/ user/imp/tbemd/contrib/llvm/tools/llvm-stub/ user/imp/tbemd/contrib/llvm/tools/llvm2cpp/ user/imp/tbemd/contrib/llvm/tools/llvmc/ user/imp/tbemd/contrib/llvm/tools/lto/ user/imp/tbemd/contrib/llvm/tools/opt/ user/imp/tbemd/contrib/llvm/utils/DSAclean.py user/imp/tbemd/contrib/llvm/utils/DSAextract.py user/imp/tbemd/contrib/llvm/utils/FileCheck/ user/imp/tbemd/contrib/llvm/utils/FileUpdate/ user/imp/tbemd/contrib/llvm/utils/GenLibDeps.pl user/imp/tbemd/contrib/llvm/utils/GetSourceVersion user/imp/tbemd/contrib/llvm/utils/Makefile user/imp/tbemd/contrib/llvm/utils/Misc/ user/imp/tbemd/contrib/llvm/utils/NLT.schema user/imp/tbemd/contrib/llvm/utils/NewNightlyTest.pl user/imp/tbemd/contrib/llvm/utils/NightlyTest.gnuplot user/imp/tbemd/contrib/llvm/utils/NightlyTestTemplate.html user/imp/tbemd/contrib/llvm/utils/OldenDataRecover.pl user/imp/tbemd/contrib/llvm/utils/PerfectShuffle/ user/imp/tbemd/contrib/llvm/utils/RegressionFinder.pl user/imp/tbemd/contrib/llvm/utils/TableGen/CMakeLists.txt user/imp/tbemd/contrib/llvm/utils/TableGen/Makefile user/imp/tbemd/contrib/llvm/utils/UpdateCMakeLists.pl user/imp/tbemd/contrib/llvm/utils/bugpoint/ user/imp/tbemd/contrib/llvm/utils/buildit/ user/imp/tbemd/contrib/llvm/utils/cgiplotNLT.pl user/imp/tbemd/contrib/llvm/utils/check-each-file user/imp/tbemd/contrib/llvm/utils/codegen-diff user/imp/tbemd/contrib/llvm/utils/count/ user/imp/tbemd/contrib/llvm/utils/countloc.sh user/imp/tbemd/contrib/llvm/utils/crosstool/ user/imp/tbemd/contrib/llvm/utils/emacs/ user/imp/tbemd/contrib/llvm/utils/findmisopt user/imp/tbemd/contrib/llvm/utils/findoptdiff user/imp/tbemd/contrib/llvm/utils/findsym.pl user/imp/tbemd/contrib/llvm/utils/fpcmp/ user/imp/tbemd/contrib/llvm/utils/getsrcs.sh user/imp/tbemd/contrib/llvm/utils/git/ user/imp/tbemd/contrib/llvm/utils/importNLT.pl user/imp/tbemd/contrib/llvm/utils/jedit/ user/imp/tbemd/contrib/llvm/utils/lint/ user/imp/tbemd/contrib/llvm/utils/lit/ user/imp/tbemd/contrib/llvm/utils/llvm-native-gcc user/imp/tbemd/contrib/llvm/utils/llvm-native-gxx user/imp/tbemd/contrib/llvm/utils/llvm.grm user/imp/tbemd/contrib/llvm/utils/llvmdo user/imp/tbemd/contrib/llvm/utils/llvmgrep user/imp/tbemd/contrib/llvm/utils/makellvm user/imp/tbemd/contrib/llvm/utils/mkpatch user/imp/tbemd/contrib/llvm/utils/not/ user/imp/tbemd/contrib/llvm/utils/parseNLT.pl user/imp/tbemd/contrib/llvm/utils/plotNLT.pl user/imp/tbemd/contrib/llvm/utils/profile.pl user/imp/tbemd/contrib/llvm/utils/unittest/ user/imp/tbemd/contrib/llvm/utils/userloc.pl user/imp/tbemd/contrib/llvm/utils/valgrind/ user/imp/tbemd/contrib/llvm/utils/vim/ user/imp/tbemd/contrib/llvm/utils/webNLT.pl user/imp/tbemd/contrib/tcpdump/FREEBSD-Xlist user/imp/tbemd/contrib/tcpdump/FREEBSD-upgrade user/imp/tbemd/contrib/tcpdump/missing/getaddrinfo.c user/imp/tbemd/contrib/tcpdump/tcpdump.1 user/imp/tbemd/contrib/wpa/src/common/nl80211_copy.h user/imp/tbemd/contrib/wpa/src/common/wireless_copy.h user/imp/tbemd/contrib/wpa/src/crypto/aes.c user/imp/tbemd/contrib/wpa/src/crypto/aes_wrap.c user/imp/tbemd/contrib/wpa/src/crypto/des.c user/imp/tbemd/contrib/wpa/src/crypto/md4.c user/imp/tbemd/contrib/wpa/src/crypto/rc4.h user/imp/tbemd/contrib/wpa/src/drivers/radiotap.c user/imp/tbemd/contrib/wpa/src/drivers/radiotap.h user/imp/tbemd/contrib/wpa/src/drivers/radiotap_iter.h user/imp/tbemd/contrib/wpa/src/drivers/scan_helpers.c user/imp/tbemd/contrib/wpa/src/eap_server/eap.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_aka.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_fast.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_gpsk.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_gtc.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_identity.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_ikev2.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_md5.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_methods.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_mschapv2.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_pax.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_peap.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_psk.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_sake.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_sim.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_tls.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_tls_common.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_tnc.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_ttls.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_vendor_test.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_wsc.c user/imp/tbemd/contrib/wpa/src/hlr_auc_gw/Makefile user/imp/tbemd/contrib/wpa/src/hlr_auc_gw/hlr_auc_gw.c user/imp/tbemd/contrib/wpa/src/hlr_auc_gw/hlr_auc_gw.milenage_db user/imp/tbemd/contrib/wpa/src/hlr_auc_gw/milenage.c user/imp/tbemd/contrib/wpa/src/hlr_auc_gw/milenage.h user/imp/tbemd/contrib/wpa/src/tls/asn1_test.c user/imp/tbemd/contrib/wpa/wpa_supplicant/ctrl_iface_dbus.c user/imp/tbemd/contrib/wpa/wpa_supplicant/ctrl_iface_dbus.h user/imp/tbemd/contrib/wpa/wpa_supplicant/ctrl_iface_dbus_handlers.c user/imp/tbemd/contrib/wpa/wpa_supplicant/ctrl_iface_dbus_handlers.h user/imp/tbemd/contrib/wpa/wpa_supplicant/dbus-wpa_supplicant.conf user/imp/tbemd/contrib/wpa/wpa_supplicant/dbus-wpa_supplicant.service user/imp/tbemd/contrib/wpa/wpa_supplicant/dbus_dict_helpers.c user/imp/tbemd/contrib/wpa/wpa_supplicant/dbus_dict_helpers.h user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/code_structure.doxygen user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/ctrl_iface.doxygen user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/doxygen.fast user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/doxygen.full user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/driver_wrapper.doxygen user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/eap.doxygen user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/kerneldoc2doxygen.pl user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/mainpage.doxygen user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/porting.doxygen user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/testing_tools.doxygen user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/wpa_supplicant.fig user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_aes.c user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_md4.c user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_md5.c user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_ms_funcs.c user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_sha1.c user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_sha256.c user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_x509v3.c user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_x509v3_nist.sh user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_x509v3_nist2.sh user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/subblock.h user/imp/tbemd/contrib/xz/src/liblzma/common/chunk_size.c user/imp/tbemd/contrib/xz/src/liblzma/subblock/ user/imp/tbemd/lib/libc/amd64/gen/ldexp.c user/imp/tbemd/lib/libc/i386/gen/ldexp.c user/imp/tbemd/lib/libc/i386/string/strlen.S user/imp/tbemd/share/man/man9/vm_page_sleep_busy.9 user/imp/tbemd/share/man/man9/vput.9 user/imp/tbemd/sys/amd64/acpica/OsdEnvironment.c user/imp/tbemd/sys/amd64/acpica/madt.c user/imp/tbemd/sys/amd64/amd64/dump_machdep.c user/imp/tbemd/sys/amd64/amd64/mptable.c user/imp/tbemd/sys/amd64/amd64/mptable_pci.c user/imp/tbemd/sys/amd64/amd64/nexus.c user/imp/tbemd/sys/amd64/include/apicreg.h user/imp/tbemd/sys/amd64/include/mca.h user/imp/tbemd/sys/arm/at91/at91_pio_sam9.h user/imp/tbemd/sys/arm/at91/at91sam9.c user/imp/tbemd/sys/arm/at91/at91sam9_machdep.c user/imp/tbemd/sys/dev/mii/axphyreg.h user/imp/tbemd/sys/i386/acpica/OsdEnvironment.c user/imp/tbemd/sys/i386/acpica/madt.c user/imp/tbemd/sys/i386/i386/dump_machdep.c user/imp/tbemd/sys/i386/i386/mptable.c user/imp/tbemd/sys/i386/i386/mptable_pci.c user/imp/tbemd/sys/i386/i386/nexus.c user/imp/tbemd/sys/i386/include/apicreg.h user/imp/tbemd/sys/i386/include/mca.h user/imp/tbemd/sys/mips/rmi/dev/sec/stats.h user/imp/tbemd/sys/pc98/include/apicreg.h user/imp/tbemd/sys/pc98/include/mca.h user/imp/tbemd/sys/rpc/inet_ntop.c user/imp/tbemd/sys/rpc/inet_pton.c user/imp/tbemd/sys/xen/reboot.c user/imp/tbemd/sys/xen/xenbus/init.txt user/imp/tbemd/sys/xen/xenbus/xenbus_client.c user/imp/tbemd/sys/xen/xenbus/xenbus_comms.c user/imp/tbemd/sys/xen/xenbus/xenbus_comms.h user/imp/tbemd/sys/xen/xenbus/xenbus_dev.c user/imp/tbemd/sys/xen/xenbus/xenbus_probe.c user/imp/tbemd/sys/xen/xenbus/xenbus_probe_backend.c user/imp/tbemd/sys/xen/xenbus/xenbus_xs.c user/imp/tbemd/tools/tools/nanobsd/rescue/AMD64 user/imp/tbemd/tools/tools/nanobsd/rescue/I386 user/imp/tbemd/tools/tools/nanobsd/rescue/isoamd64.sh user/imp/tbemd/tools/tools/nanobsd/rescue/isoi386.sh user/imp/tbemd/usr.bin/objformat/ Modified: user/imp/tbemd/ObsoleteFiles.inc user/imp/tbemd/UPDATING user/imp/tbemd/bin/chflags/chflags.1 user/imp/tbemd/bin/ps/extern.h user/imp/tbemd/bin/ps/keyword.c user/imp/tbemd/bin/ps/ps.1 user/imp/tbemd/bin/rm/rm.1 user/imp/tbemd/bin/rm/rm.c user/imp/tbemd/bin/sh/Makefile user/imp/tbemd/bin/sh/alias.c user/imp/tbemd/bin/sh/cd.c user/imp/tbemd/bin/sh/eval.c user/imp/tbemd/bin/sh/exec.c user/imp/tbemd/bin/sh/expand.c user/imp/tbemd/bin/sh/expand.h user/imp/tbemd/bin/sh/histedit.c user/imp/tbemd/bin/sh/input.c user/imp/tbemd/bin/sh/jobs.c user/imp/tbemd/bin/sh/mail.c user/imp/tbemd/bin/sh/main.c user/imp/tbemd/bin/sh/memalloc.c user/imp/tbemd/bin/sh/memalloc.h user/imp/tbemd/bin/sh/mksyntax.c user/imp/tbemd/bin/sh/nodes.c.pat user/imp/tbemd/bin/sh/options.c user/imp/tbemd/bin/sh/output.c user/imp/tbemd/bin/sh/parser.c user/imp/tbemd/bin/sh/parser.h user/imp/tbemd/bin/sh/redir.c user/imp/tbemd/bin/sh/sh.1 user/imp/tbemd/bin/sh/shell.h user/imp/tbemd/bin/sh/show.c user/imp/tbemd/bin/sh/var.c user/imp/tbemd/bin/stty/key.c user/imp/tbemd/bin/stty/stty.1 user/imp/tbemd/cddl/contrib/opensolaris/cmd/zinject/zinject.c user/imp/tbemd/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c user/imp/tbemd/cddl/contrib/opensolaris/cmd/ztest/ztest.c user/imp/tbemd/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h user/imp/tbemd/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c user/imp/tbemd/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_util.c user/imp/tbemd/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c user/imp/tbemd/cddl/lib/drti/Makefile user/imp/tbemd/cddl/usr.sbin/plockstat/Makefile user/imp/tbemd/contrib/bind9/CHANGES user/imp/tbemd/contrib/bind9/README user/imp/tbemd/contrib/bind9/bin/dnssec/dnssec-dsfromkey.html user/imp/tbemd/contrib/bind9/bin/dnssec/dnssec-keyfromlabel.html user/imp/tbemd/contrib/bind9/bin/dnssec/dnssec-keygen.html user/imp/tbemd/contrib/bind9/bin/dnssec/dnssec-signzone.html user/imp/tbemd/contrib/bind9/bin/named/include/named/globals.h user/imp/tbemd/contrib/bind9/bin/named/main.c user/imp/tbemd/contrib/bind9/bin/named/query.c user/imp/tbemd/contrib/bind9/bin/named/server.c user/imp/tbemd/contrib/bind9/bin/nsupdate/nsupdate.html user/imp/tbemd/contrib/bind9/doc/arm/Bv9ARM-book.xml user/imp/tbemd/contrib/bind9/doc/arm/Bv9ARM.ch06.html user/imp/tbemd/contrib/bind9/doc/arm/Bv9ARM.ch07.html user/imp/tbemd/contrib/bind9/doc/arm/Bv9ARM.ch08.html user/imp/tbemd/contrib/bind9/doc/arm/Bv9ARM.ch09.html user/imp/tbemd/contrib/bind9/doc/arm/Bv9ARM.html user/imp/tbemd/contrib/bind9/doc/arm/Bv9ARM.pdf user/imp/tbemd/contrib/bind9/doc/arm/isc-logo.eps user/imp/tbemd/contrib/bind9/doc/arm/isc-logo.pdf user/imp/tbemd/contrib/bind9/doc/arm/man.dig.html user/imp/tbemd/contrib/bind9/doc/arm/man.dnssec-dsfromkey.html user/imp/tbemd/contrib/bind9/doc/arm/man.dnssec-keyfromlabel.html user/imp/tbemd/contrib/bind9/doc/arm/man.dnssec-keygen.html user/imp/tbemd/contrib/bind9/doc/arm/man.dnssec-signzone.html user/imp/tbemd/contrib/bind9/doc/arm/man.host.html user/imp/tbemd/contrib/bind9/doc/arm/man.named-checkconf.html user/imp/tbemd/contrib/bind9/doc/arm/man.named-checkzone.html user/imp/tbemd/contrib/bind9/doc/arm/man.named.html user/imp/tbemd/contrib/bind9/doc/arm/man.nsupdate.html user/imp/tbemd/contrib/bind9/doc/arm/man.rndc-confgen.html user/imp/tbemd/contrib/bind9/doc/arm/man.rndc.conf.html user/imp/tbemd/contrib/bind9/doc/arm/man.rndc.html user/imp/tbemd/contrib/bind9/lib/dns/adb.c user/imp/tbemd/contrib/bind9/lib/dns/api user/imp/tbemd/contrib/bind9/lib/dns/include/dns/diff.h user/imp/tbemd/contrib/bind9/lib/dns/include/dns/ncache.h user/imp/tbemd/contrib/bind9/lib/dns/include/dns/rdataset.h user/imp/tbemd/contrib/bind9/lib/dns/include/dns/resolver.h user/imp/tbemd/contrib/bind9/lib/dns/include/dns/result.h user/imp/tbemd/contrib/bind9/lib/dns/include/dns/types.h user/imp/tbemd/contrib/bind9/lib/dns/include/dns/validator.h user/imp/tbemd/contrib/bind9/lib/dns/ncache.c user/imp/tbemd/contrib/bind9/lib/dns/rbtdb.c user/imp/tbemd/contrib/bind9/lib/dns/rdatalist.c user/imp/tbemd/contrib/bind9/lib/dns/rdataset.c user/imp/tbemd/contrib/bind9/lib/dns/rdataslab.c user/imp/tbemd/contrib/bind9/lib/dns/resolver.c user/imp/tbemd/contrib/bind9/lib/dns/result.c user/imp/tbemd/contrib/bind9/lib/dns/sdb.c user/imp/tbemd/contrib/bind9/lib/dns/sdlz.c user/imp/tbemd/contrib/bind9/lib/dns/validator.c user/imp/tbemd/contrib/bind9/lib/dns/view.c user/imp/tbemd/contrib/bind9/lib/isc/api user/imp/tbemd/contrib/bind9/lib/isc/include/isc/mem.h user/imp/tbemd/contrib/bind9/lib/isc/mem.c user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_buffer.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_config.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_context.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_gabn.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_gai_strerror.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_getaddrinfo.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_gethostent.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_getipnode.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_getnameinfo.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_getrrsetbyname.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_gnba.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_hstrerror.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_inetntop.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_noop.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_packet.html user/imp/tbemd/contrib/bind9/lib/lwres/man/lwres_resutil.html user/imp/tbemd/contrib/bind9/version user/imp/tbemd/contrib/binutils/bfd/elfxx-mips.c user/imp/tbemd/contrib/binutils/bfd/targets.c user/imp/tbemd/contrib/binutils/include/coff/internal.h user/imp/tbemd/contrib/bsnmp/lib/bsnmplib.3 user/imp/tbemd/contrib/bsnmp/snmpd/bsnmpd.1 user/imp/tbemd/contrib/bzip2/CHANGES user/imp/tbemd/contrib/bzip2/LICENSE user/imp/tbemd/contrib/bzip2/Makefile user/imp/tbemd/contrib/bzip2/Makefile-libbz2_so user/imp/tbemd/contrib/bzip2/README user/imp/tbemd/contrib/bzip2/README.COMPILATION.PROBLEMS user/imp/tbemd/contrib/bzip2/blocksort.c user/imp/tbemd/contrib/bzip2/bzip2.1 user/imp/tbemd/contrib/bzip2/bzip2.c user/imp/tbemd/contrib/bzip2/bzip2recover.c user/imp/tbemd/contrib/bzip2/bzlib.c user/imp/tbemd/contrib/bzip2/bzlib.h user/imp/tbemd/contrib/bzip2/bzlib_private.h user/imp/tbemd/contrib/bzip2/compress.c user/imp/tbemd/contrib/bzip2/crctable.c user/imp/tbemd/contrib/bzip2/decompress.c user/imp/tbemd/contrib/bzip2/huffman.c user/imp/tbemd/contrib/bzip2/randtable.c user/imp/tbemd/contrib/bzip2/spewG.c user/imp/tbemd/contrib/bzip2/unzcrash.c user/imp/tbemd/contrib/ee/ee.c user/imp/tbemd/contrib/ee/ee_version.h user/imp/tbemd/contrib/gcc/config/rs6000/freebsd.h user/imp/tbemd/contrib/gdb/gdb/dwarf2read.c user/imp/tbemd/contrib/gdb/gdb/mips-tdep.c user/imp/tbemd/contrib/gdb/gdb/mips-tdep.h user/imp/tbemd/contrib/gdb/gdb/mipsfbsd-tdep.c user/imp/tbemd/contrib/gdb/gdb/mipsfbsd-tdep.h user/imp/tbemd/contrib/ipfilter/tools/ipf_y.y user/imp/tbemd/contrib/libpcap/CHANGES user/imp/tbemd/contrib/libpcap/CREDITS user/imp/tbemd/contrib/libpcap/INSTALL.txt user/imp/tbemd/contrib/libpcap/Makefile.in user/imp/tbemd/contrib/libpcap/README user/imp/tbemd/contrib/libpcap/TODO user/imp/tbemd/contrib/libpcap/VERSION user/imp/tbemd/contrib/libpcap/arcnet.h user/imp/tbemd/contrib/libpcap/atmuni31.h user/imp/tbemd/contrib/libpcap/bpf/net/bpf_filter.c user/imp/tbemd/contrib/libpcap/bpf_dump.c user/imp/tbemd/contrib/libpcap/bpf_image.c user/imp/tbemd/contrib/libpcap/config.guess user/imp/tbemd/contrib/libpcap/config.h.in user/imp/tbemd/contrib/libpcap/config.sub user/imp/tbemd/contrib/libpcap/configure user/imp/tbemd/contrib/libpcap/configure.in user/imp/tbemd/contrib/libpcap/dlpisubs.c user/imp/tbemd/contrib/libpcap/dlpisubs.h user/imp/tbemd/contrib/libpcap/etherent.c user/imp/tbemd/contrib/libpcap/ethertype.h user/imp/tbemd/contrib/libpcap/fad-getad.c user/imp/tbemd/contrib/libpcap/fad-gifc.c user/imp/tbemd/contrib/libpcap/fad-glifc.c user/imp/tbemd/contrib/libpcap/fad-null.c user/imp/tbemd/contrib/libpcap/fad-win32.c user/imp/tbemd/contrib/libpcap/filtertest.c user/imp/tbemd/contrib/libpcap/gencode.c user/imp/tbemd/contrib/libpcap/gencode.h user/imp/tbemd/contrib/libpcap/grammar.y user/imp/tbemd/contrib/libpcap/inet.c user/imp/tbemd/contrib/libpcap/lbl/os-aix4.h user/imp/tbemd/contrib/libpcap/lbl/os-hpux11.h user/imp/tbemd/contrib/libpcap/lbl/os-osf4.h user/imp/tbemd/contrib/libpcap/lbl/os-osf5.h user/imp/tbemd/contrib/libpcap/lbl/os-solaris2.h user/imp/tbemd/contrib/libpcap/lbl/os-sunos4.h user/imp/tbemd/contrib/libpcap/lbl/os-ultrix4.h user/imp/tbemd/contrib/libpcap/llc.h user/imp/tbemd/contrib/libpcap/missing/snprintf.c user/imp/tbemd/contrib/libpcap/nametoaddr.c user/imp/tbemd/contrib/libpcap/nlpid.h user/imp/tbemd/contrib/libpcap/optimize.c user/imp/tbemd/contrib/libpcap/pcap-bpf.c user/imp/tbemd/contrib/libpcap/pcap-bpf.h user/imp/tbemd/contrib/libpcap/pcap-bt-linux.c user/imp/tbemd/contrib/libpcap/pcap-bt-linux.h user/imp/tbemd/contrib/libpcap/pcap-config.1 user/imp/tbemd/contrib/libpcap/pcap-config.in user/imp/tbemd/contrib/libpcap/pcap-dag.c user/imp/tbemd/contrib/libpcap/pcap-dag.h user/imp/tbemd/contrib/libpcap/pcap-dlpi.c user/imp/tbemd/contrib/libpcap/pcap-dos.c user/imp/tbemd/contrib/libpcap/pcap-dos.h user/imp/tbemd/contrib/libpcap/pcap-enet.c user/imp/tbemd/contrib/libpcap/pcap-filter.manmisc.in user/imp/tbemd/contrib/libpcap/pcap-int.h user/imp/tbemd/contrib/libpcap/pcap-libdlpi.c user/imp/tbemd/contrib/libpcap/pcap-linktype.manmisc.in user/imp/tbemd/contrib/libpcap/pcap-linux.c user/imp/tbemd/contrib/libpcap/pcap-namedb.h user/imp/tbemd/contrib/libpcap/pcap-nit.c user/imp/tbemd/contrib/libpcap/pcap-null.c user/imp/tbemd/contrib/libpcap/pcap-pf.c user/imp/tbemd/contrib/libpcap/pcap-savefile.manfile.in user/imp/tbemd/contrib/libpcap/pcap-septel.c user/imp/tbemd/contrib/libpcap/pcap-septel.h user/imp/tbemd/contrib/libpcap/pcap-sita.html user/imp/tbemd/contrib/libpcap/pcap-snit.c user/imp/tbemd/contrib/libpcap/pcap-snoop.c user/imp/tbemd/contrib/libpcap/pcap-stdinc.h user/imp/tbemd/contrib/libpcap/pcap-usb-linux.c user/imp/tbemd/contrib/libpcap/pcap-usb-linux.h user/imp/tbemd/contrib/libpcap/pcap-win32.c user/imp/tbemd/contrib/libpcap/pcap.3pcap.in user/imp/tbemd/contrib/libpcap/pcap.c user/imp/tbemd/contrib/libpcap/pcap.h user/imp/tbemd/contrib/libpcap/pcap/bluetooth.h user/imp/tbemd/contrib/libpcap/pcap/bpf.h user/imp/tbemd/contrib/libpcap/pcap/namedb.h user/imp/tbemd/contrib/libpcap/pcap/pcap.h user/imp/tbemd/contrib/libpcap/pcap/sll.h user/imp/tbemd/contrib/libpcap/pcap/usb.h user/imp/tbemd/contrib/libpcap/pcap/vlan.h user/imp/tbemd/contrib/libpcap/pcap_activate.3pcap user/imp/tbemd/contrib/libpcap/pcap_breakloop.3pcap user/imp/tbemd/contrib/libpcap/pcap_can_set_rfmon.3pcap user/imp/tbemd/contrib/libpcap/pcap_close.3pcap user/imp/tbemd/contrib/libpcap/pcap_compile.3pcap.in user/imp/tbemd/contrib/libpcap/pcap_create.3pcap user/imp/tbemd/contrib/libpcap/pcap_datalink.3pcap.in user/imp/tbemd/contrib/libpcap/pcap_datalink_name_to_val.3pcap user/imp/tbemd/contrib/libpcap/pcap_datalink_val_to_name.3pcap user/imp/tbemd/contrib/libpcap/pcap_dump.3pcap user/imp/tbemd/contrib/libpcap/pcap_dump_close.3pcap user/imp/tbemd/contrib/libpcap/pcap_dump_file.3pcap user/imp/tbemd/contrib/libpcap/pcap_dump_flush.3pcap user/imp/tbemd/contrib/libpcap/pcap_dump_ftell.3pcap user/imp/tbemd/contrib/libpcap/pcap_dump_open.3pcap.in user/imp/tbemd/contrib/libpcap/pcap_file.3pcap user/imp/tbemd/contrib/libpcap/pcap_fileno.3pcap user/imp/tbemd/contrib/libpcap/pcap_findalldevs.3pcap user/imp/tbemd/contrib/libpcap/pcap_free_datalinks.3pcap user/imp/tbemd/contrib/libpcap/pcap_freealldevs.3pcap user/imp/tbemd/contrib/libpcap/pcap_freecode.3pcap user/imp/tbemd/contrib/libpcap/pcap_get_selectable_fd.3pcap user/imp/tbemd/contrib/libpcap/pcap_geterr.3pcap user/imp/tbemd/contrib/libpcap/pcap_inject.3pcap user/imp/tbemd/contrib/libpcap/pcap_is_swapped.3pcap user/imp/tbemd/contrib/libpcap/pcap_lib_version.3pcap user/imp/tbemd/contrib/libpcap/pcap_list_datalinks.3pcap.in user/imp/tbemd/contrib/libpcap/pcap_lookupdev.3pcap user/imp/tbemd/contrib/libpcap/pcap_lookupnet.3pcap user/imp/tbemd/contrib/libpcap/pcap_loop.3pcap user/imp/tbemd/contrib/libpcap/pcap_major_version.3pcap user/imp/tbemd/contrib/libpcap/pcap_next_ex.3pcap user/imp/tbemd/contrib/libpcap/pcap_offline_filter.3pcap user/imp/tbemd/contrib/libpcap/pcap_open_dead.3pcap.in user/imp/tbemd/contrib/libpcap/pcap_open_live.3pcap user/imp/tbemd/contrib/libpcap/pcap_open_offline.3pcap.in user/imp/tbemd/contrib/libpcap/pcap_set_buffer_size.3pcap user/imp/tbemd/contrib/libpcap/pcap_set_datalink.3pcap user/imp/tbemd/contrib/libpcap/pcap_set_promisc.3pcap user/imp/tbemd/contrib/libpcap/pcap_set_rfmon.3pcap user/imp/tbemd/contrib/libpcap/pcap_set_snaplen.3pcap user/imp/tbemd/contrib/libpcap/pcap_set_timeout.3pcap user/imp/tbemd/contrib/libpcap/pcap_setdirection.3pcap user/imp/tbemd/contrib/libpcap/pcap_setfilter.3pcap user/imp/tbemd/contrib/libpcap/pcap_setnonblock.3pcap user/imp/tbemd/contrib/libpcap/pcap_snapshot.3pcap user/imp/tbemd/contrib/libpcap/pcap_stats.3pcap user/imp/tbemd/contrib/libpcap/pcap_statustostr.3pcap user/imp/tbemd/contrib/libpcap/pcap_strerror.3pcap user/imp/tbemd/contrib/libpcap/ppp.h user/imp/tbemd/contrib/libpcap/runlex.sh user/imp/tbemd/contrib/libpcap/savefile.c user/imp/tbemd/contrib/libpcap/scanner.l user/imp/tbemd/contrib/libpcap/sunatmpos.h user/imp/tbemd/contrib/llvm/include/llvm-c/Core.h user/imp/tbemd/contrib/llvm/include/llvm-c/EnhancedDisassembly.h user/imp/tbemd/contrib/llvm/include/llvm-c/ExecutionEngine.h user/imp/tbemd/contrib/llvm/include/llvm-c/Target.h user/imp/tbemd/contrib/llvm/include/llvm-c/lto.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/APInt.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/DenseMap.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/DenseSet.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/DepthFirstIterator.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/FoldingSet.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/ImmutableIntervalMap.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/STLExtras.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/ScopedHashTable.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/SmallVector.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/StringMap.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/StringRef.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/StringSet.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/StringSwitch.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/Triple.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/ValueMap.h user/imp/tbemd/contrib/llvm/include/llvm/ADT/ilist.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/AliasAnalysis.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/AliasSetTracker.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/DOTGraphTraitsPass.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/DebugInfo.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/Dominators.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/FindUsedTypes.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/IntervalPartition.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/LazyValueInfo.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/LibCallAliasAnalysis.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/LibCallSemantics.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/LoopDependenceAnalysis.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/LoopInfo.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/LoopPass.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/Passes.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/PointerTracking.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/PostDominators.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/ScalarEvolution.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/ScalarEvolutionExpander.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/ScalarEvolutionExpressions.h user/imp/tbemd/contrib/llvm/include/llvm/Analysis/ValueTracking.h user/imp/tbemd/contrib/llvm/include/llvm/AutoUpgrade.h user/imp/tbemd/contrib/llvm/include/llvm/Bitcode/Archive.h user/imp/tbemd/contrib/llvm/include/llvm/Bitcode/BitstreamWriter.h user/imp/tbemd/contrib/llvm/include/llvm/Bitcode/LLVMBitCodes.h user/imp/tbemd/contrib/llvm/include/llvm/CallGraphSCCPass.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/AsmPrinter.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/CalcSpillWeights.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/CallingConvLower.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/FunctionLoweringInfo.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/ISDOpcodes.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/LiveInterval.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/LiveIntervalAnalysis.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/LiveStackAnalysis.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/LiveVariables.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/MachineFrameInfo.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/MachineFunction.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/MachineFunctionPass.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/MachineInstr.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/MachineLoopInfo.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/MachineModuleInfo.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/Passes.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/ProcessImplicitDefs.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/SchedulerRegistry.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/SelectionDAG.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/SlotIndexes.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/TargetLoweringObjectFileImpl.h user/imp/tbemd/contrib/llvm/include/llvm/CodeGen/ValueTypes.h user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/Action.h user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/BuiltinOptions.h user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/Common.td user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/CompilationGraph.h user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/Error.h user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/Main.inc user/imp/tbemd/contrib/llvm/include/llvm/CompilerDriver/Tool.h user/imp/tbemd/contrib/llvm/include/llvm/Constants.h user/imp/tbemd/contrib/llvm/include/llvm/DerivedTypes.h user/imp/tbemd/contrib/llvm/include/llvm/ExecutionEngine/JITMemoryManager.h user/imp/tbemd/contrib/llvm/include/llvm/GlobalValue.h user/imp/tbemd/contrib/llvm/include/llvm/Instruction.h user/imp/tbemd/contrib/llvm/include/llvm/Instructions.h user/imp/tbemd/contrib/llvm/include/llvm/IntrinsicInst.h user/imp/tbemd/contrib/llvm/include/llvm/Intrinsics.td user/imp/tbemd/contrib/llvm/include/llvm/IntrinsicsARM.td user/imp/tbemd/contrib/llvm/include/llvm/IntrinsicsPowerPC.td user/imp/tbemd/contrib/llvm/include/llvm/IntrinsicsX86.td user/imp/tbemd/contrib/llvm/include/llvm/LLVMContext.h user/imp/tbemd/contrib/llvm/include/llvm/LinkAllPasses.h user/imp/tbemd/contrib/llvm/include/llvm/LinkAllVMCore.h user/imp/tbemd/contrib/llvm/include/llvm/Linker.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCAsmInfo.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCAssembler.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCContext.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCObjectStreamer.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCObjectWriter.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCParser/MCAsmParser.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCParser/MCAsmParserExtension.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCParser/MCParsedAsmOperand.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCSectionELF.h user/imp/tbemd/contrib/llvm/include/llvm/MC/MCStreamer.h user/imp/tbemd/contrib/llvm/include/llvm/Metadata.h user/imp/tbemd/contrib/llvm/include/llvm/Module.h user/imp/tbemd/contrib/llvm/include/llvm/Pass.h user/imp/tbemd/contrib/llvm/include/llvm/PassAnalysisSupport.h user/imp/tbemd/contrib/llvm/include/llvm/PassManager.h user/imp/tbemd/contrib/llvm/include/llvm/PassManagers.h user/imp/tbemd/contrib/llvm/include/llvm/PassSupport.h user/imp/tbemd/contrib/llvm/include/llvm/Support/COFF.h user/imp/tbemd/contrib/llvm/include/llvm/Support/CallSite.h user/imp/tbemd/contrib/llvm/include/llvm/Support/Casting.h user/imp/tbemd/contrib/llvm/include/llvm/Support/CommandLine.h user/imp/tbemd/contrib/llvm/include/llvm/Support/Compiler.h user/imp/tbemd/contrib/llvm/include/llvm/Support/ConstantRange.h user/imp/tbemd/contrib/llvm/include/llvm/Support/DataFlow.h user/imp/tbemd/contrib/llvm/include/llvm/Support/ELF.h user/imp/tbemd/contrib/llvm/include/llvm/Support/ErrorHandling.h user/imp/tbemd/contrib/llvm/include/llvm/Support/GraphWriter.h user/imp/tbemd/contrib/llvm/include/llvm/Support/IRBuilder.h user/imp/tbemd/contrib/llvm/include/llvm/Support/IRReader.h user/imp/tbemd/contrib/llvm/include/llvm/Support/MachO.h user/imp/tbemd/contrib/llvm/include/llvm/Support/MathExtras.h user/imp/tbemd/contrib/llvm/include/llvm/Support/PassNameParser.h user/imp/tbemd/contrib/llvm/include/llvm/Support/PatternMatch.h user/imp/tbemd/contrib/llvm/include/llvm/Support/PrettyStackTrace.h user/imp/tbemd/contrib/llvm/include/llvm/Support/Regex.h user/imp/tbemd/contrib/llvm/include/llvm/Support/Registry.h user/imp/tbemd/contrib/llvm/include/llvm/Support/SourceMgr.h user/imp/tbemd/contrib/llvm/include/llvm/Support/StandardPasses.h user/imp/tbemd/contrib/llvm/include/llvm/Support/SystemUtils.h user/imp/tbemd/contrib/llvm/include/llvm/Support/TypeBuilder.h user/imp/tbemd/contrib/llvm/include/llvm/Support/raw_ostream.h user/imp/tbemd/contrib/llvm/include/llvm/System/Memory.h user/imp/tbemd/contrib/llvm/include/llvm/System/Path.h user/imp/tbemd/contrib/llvm/include/llvm/System/Process.h user/imp/tbemd/contrib/llvm/include/llvm/System/Program.h user/imp/tbemd/contrib/llvm/include/llvm/System/Signals.h user/imp/tbemd/contrib/llvm/include/llvm/System/ThreadLocal.h user/imp/tbemd/contrib/llvm/include/llvm/Target/Target.td user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetAsmParser.h user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetCallingConv.td user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetData.h user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetInstrDesc.h user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetInstrInfo.h user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetLowering.h user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetMachine.h user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetOpcodes.h user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetOptions.h user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetRegisterInfo.h user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetRegistry.h user/imp/tbemd/contrib/llvm/include/llvm/Target/TargetSelect.h user/imp/tbemd/contrib/llvm/include/llvm/Transforms/IPO.h user/imp/tbemd/contrib/llvm/include/llvm/Transforms/IPO/InlinerPass.h user/imp/tbemd/contrib/llvm/include/llvm/Transforms/Scalar.h user/imp/tbemd/contrib/llvm/include/llvm/Transforms/Utils/Cloning.h user/imp/tbemd/contrib/llvm/include/llvm/Transforms/Utils/Local.h user/imp/tbemd/contrib/llvm/include/llvm/Transforms/Utils/SSAUpdater.h user/imp/tbemd/contrib/llvm/include/llvm/Transforms/Utils/UnifyFunctionExitNodes.h user/imp/tbemd/contrib/llvm/include/llvm/Type.h user/imp/tbemd/contrib/llvm/include/llvm/Use.h user/imp/tbemd/contrib/llvm/include/llvm/Value.h user/imp/tbemd/contrib/llvm/include/llvm/ValueSymbolTable.h user/imp/tbemd/contrib/llvm/lib/Analysis/AliasAnalysis.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/AliasAnalysisCounter.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/AliasAnalysisEvaluator.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/AliasDebugger.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/AliasSetTracker.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/BasicAliasAnalysis.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/CFGPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/CaptureTracking.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ConstantFolding.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/DbgInfoPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/DebugInfo.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/DomPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/IPA/CallGraph.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/IPA/FindUsedTypes.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/IPA/GlobalsModRef.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/IVUsers.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/InlineCost.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/InstCount.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/IntervalPartition.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/LazyValueInfo.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/LibCallAliasAnalysis.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/LibCallSemantics.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/Lint.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/LiveValues.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/LoopDependenceAnalysis.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/LoopInfo.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/LoopPass.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ModuleDebugInfoPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/PointerTracking.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/PostDominators.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ProfileEstimatorPass.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ProfileInfo.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ProfileInfoLoaderPass.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ProfileVerifierPass.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ScalarEvolution.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ScalarEvolutionAliasAnalysis.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ScalarEvolutionExpander.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ScalarEvolutionNormalization.cpp user/imp/tbemd/contrib/llvm/lib/Analysis/ValueTracking.cpp user/imp/tbemd/contrib/llvm/lib/AsmParser/LLLexer.cpp user/imp/tbemd/contrib/llvm/lib/AsmParser/LLParser.cpp user/imp/tbemd/contrib/llvm/lib/AsmParser/LLParser.h user/imp/tbemd/contrib/llvm/lib/AsmParser/LLToken.h user/imp/tbemd/contrib/llvm/lib/AsmParser/Parser.cpp user/imp/tbemd/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.cpp user/imp/tbemd/contrib/llvm/lib/Bitcode/Reader/BitcodeReader.h user/imp/tbemd/contrib/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp user/imp/tbemd/contrib/llvm/lib/Bitcode/Writer/BitcodeWriterPass.cpp user/imp/tbemd/contrib/llvm/lib/Bitcode/Writer/ValueEnumerator.cpp user/imp/tbemd/contrib/llvm/lib/Bitcode/Writer/ValueEnumerator.h user/imp/tbemd/contrib/llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/AggressiveAntiDepBreaker.h user/imp/tbemd/contrib/llvm/lib/CodeGen/Analysis.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterDwarf.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h user/imp/tbemd/contrib/llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/BranchFolding.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/CalcSpillWeights.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/CodePlacementOpt.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/CriticalAntiDepBreaker.h user/imp/tbemd/contrib/llvm/lib/CodeGen/DeadMachineInstructionElim.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/DwarfEHPrepare.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/ELF.h user/imp/tbemd/contrib/llvm/lib/CodeGen/ELFCodeEmitter.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/ELFWriter.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/ELFWriter.h user/imp/tbemd/contrib/llvm/lib/CodeGen/GCMetadata.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/GCStrategy.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/IfConversion.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/InlineSpiller.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/IntrinsicLowering.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/LLVMTargetMachine.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/LiveInterval.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/LiveStackAnalysis.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/LiveVariables.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/LowerSubregs.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineBasicBlock.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineCSE.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineDominators.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineFunction.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineFunctionAnalysis.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineFunctionPrinterPass.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineInstr.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineLICM.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineLoopInfo.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineModuleInfo.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineSink.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/MachineVerifier.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/OptimizePHIs.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/PBQP/HeuristicBase.h user/imp/tbemd/contrib/llvm/lib/CodeGen/PBQP/HeuristicSolver.h user/imp/tbemd/contrib/llvm/lib/CodeGen/PBQP/Heuristics/Briggs.h user/imp/tbemd/contrib/llvm/lib/CodeGen/PBQP/Solution.h user/imp/tbemd/contrib/llvm/lib/CodeGen/PHIElimination.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/PHIElimination.h user/imp/tbemd/contrib/llvm/lib/CodeGen/PostRASchedulerList.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/PreAllocSplitting.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/ProcessImplicitDefs.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/PrologEpilogInserter.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/PrologEpilogInserter.h user/imp/tbemd/contrib/llvm/lib/CodeGen/RegAllocFast.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/RegAllocLinearScan.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/RegAllocPBQP.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/RegisterCoalescer.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/RegisterScavenging.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/ScheduleDAGInstrs.h user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.h user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SimpleRegisterCoalescing.h user/imp/tbemd/contrib/llvm/lib/CodeGen/SjLjEHPrepare.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/SlotIndexes.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/Spiller.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/Spiller.h user/imp/tbemd/contrib/llvm/lib/CodeGen/StackProtector.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/StackSlotColoring.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/StrongPHIElimination.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/TailDuplication.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/TargetInstrInfoImpl.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/TwoAddressInstructionPass.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/UnreachableBlockElim.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/VirtRegMap.cpp user/imp/tbemd/contrib/llvm/lib/CodeGen/VirtRegMap.h user/imp/tbemd/contrib/llvm/lib/CodeGen/VirtRegRewriter.cpp user/imp/tbemd/contrib/llvm/lib/CompilerDriver/Action.cpp user/imp/tbemd/contrib/llvm/lib/CompilerDriver/BuiltinOptions.cpp user/imp/tbemd/contrib/llvm/lib/CompilerDriver/CompilationGraph.cpp user/imp/tbemd/contrib/llvm/lib/CompilerDriver/Main.cpp user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/ExecutionEngineBindings.cpp user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/JIT/Intercept.cpp user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/JIT/JIT.cpp user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/JIT/JITDwarfEmitter.h user/imp/tbemd/contrib/llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp user/imp/tbemd/contrib/llvm/lib/Linker/LinkModules.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCAsmInfo.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCAsmInfoDarwin.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCAsmStreamer.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCAssembler.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCContext.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCMachOStreamer.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCNullStreamer.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCObjectStreamer.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCParser/AsmLexer.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCParser/AsmParser.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCParser/DarwinAsmParser.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCParser/ELFAsmParser.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCParser/MCAsmParser.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCParser/TargetAsmParser.cpp user/imp/tbemd/contrib/llvm/lib/MC/MCStreamer.cpp user/imp/tbemd/contrib/llvm/lib/MC/MachObjectWriter.cpp user/imp/tbemd/contrib/llvm/lib/MC/WinCOFFObjectWriter.cpp user/imp/tbemd/contrib/llvm/lib/MC/WinCOFFStreamer.cpp user/imp/tbemd/contrib/llvm/lib/Support/APFloat.cpp user/imp/tbemd/contrib/llvm/lib/Support/APInt.cpp user/imp/tbemd/contrib/llvm/lib/Support/ConstantRange.cpp user/imp/tbemd/contrib/llvm/lib/Support/ErrorHandling.cpp user/imp/tbemd/contrib/llvm/lib/Support/FoldingSet.cpp user/imp/tbemd/contrib/llvm/lib/Support/PrettyStackTrace.cpp user/imp/tbemd/contrib/llvm/lib/Support/SmallVector.cpp user/imp/tbemd/contrib/llvm/lib/Support/Statistic.cpp user/imp/tbemd/contrib/llvm/lib/Support/StringRef.cpp user/imp/tbemd/contrib/llvm/lib/Support/SystemUtils.cpp user/imp/tbemd/contrib/llvm/lib/Support/Triple.cpp user/imp/tbemd/contrib/llvm/lib/Support/raw_ostream.cpp user/imp/tbemd/contrib/llvm/lib/System/DynamicLibrary.cpp user/imp/tbemd/contrib/llvm/lib/System/Path.cpp user/imp/tbemd/contrib/llvm/lib/System/RWMutex.cpp user/imp/tbemd/contrib/llvm/lib/System/ThreadLocal.cpp user/imp/tbemd/contrib/llvm/lib/System/Unix/Path.inc user/imp/tbemd/contrib/llvm/lib/System/Unix/Signals.inc user/imp/tbemd/contrib/llvm/lib/System/Unix/ThreadLocal.inc user/imp/tbemd/contrib/llvm/lib/System/Win32/Path.inc user/imp/tbemd/contrib/llvm/lib/System/Win32/Signals.inc user/imp/tbemd/contrib/llvm/lib/System/Win32/ThreadLocal.inc user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARM.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARM.td user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMAddressingModes.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMBaseInstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMBaseRegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMCallingConv.td user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMCodeEmitter.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMConstantIslandPass.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMISelLowering.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMISelLowering.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMInstrFormats.td user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMInstrInfo.td user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMInstrNEON.td user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMInstrThumb.td user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMInstrThumb2.td user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMInstrVFP.td user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMMachineFunctionInfo.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMRegisterInfo.td user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMSubtarget.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMSubtarget.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMTargetMachine.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/ARMTargetMachine.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/AsmPrinter/ARMInstPrinter.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassembler.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/Disassembler/ARMDisassemblerCore.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/Disassembler/ThumbDisassemblerCore.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/NEONMoveFix.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/NEONPreAllocPass.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/Thumb1RegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/Thumb1RegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/ARM/Thumb2ITBlockPass.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/Thumb2InstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/ARM/Thumb2SizeReduction.cpp user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AlphaBranchSelector.cpp user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AlphaCodeEmitter.cpp user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AlphaISelDAGToDAG.cpp user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AlphaInstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AlphaInstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AlphaLLRP.cpp user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AlphaRegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/Alpha/AsmPrinter/AlphaAsmPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/BlackfinInstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/BlackfinInstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/Blackfin/BlackfinRegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/CBackend/CBackend.cpp user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/SPUCallingConv.td user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/SPUISelDAGToDAG.cpp user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/SPUISelLowering.cpp user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/SPUInstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/SPUInstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/SPUInstrInfo.td user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/SPUOperands.td user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/CellSPU/SPURegisterInfo.td user/imp/tbemd/contrib/llvm/lib/Target/CppBackend/CPPBackend.cpp user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/AsmPrinter/MBlazeAsmPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlaze.td user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeCallingConv.td user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeDelaySlotFiller.cpp user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeISelDAGToDAG.cpp user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeInstrFPU.td user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeInstrFSL.td user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeInstrFormats.td user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeInstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeInstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeInstrInfo.td user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeIntrinsics.td user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeRegisterInfo.td user/imp/tbemd/contrib/llvm/lib/Target/MBlaze/MBlazeSchedule.td user/imp/tbemd/contrib/llvm/lib/Target/MSP430/MSP430BranchSelector.cpp user/imp/tbemd/contrib/llvm/lib/Target/MSP430/MSP430InstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/MSP430/MSP430InstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/MSP430/MSP430RegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/Mangler.cpp user/imp/tbemd/contrib/llvm/lib/Target/Mips/AsmPrinter/MipsAsmPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/Mips/Mips.td user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsCallingConv.td user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsDelaySlotFiller.cpp user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsISelDAGToDAG.cpp user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsISelLowering.cpp user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsInstrFPU.td user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsInstrFormats.td user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsInstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsInstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsInstrInfo.td user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsRegisterInfo.td user/imp/tbemd/contrib/llvm/lib/Target/Mips/MipsSchedule.td user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16.h user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16ISelLowering.cpp user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16ISelLowering.h user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16InstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16InstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16MemSelOpt.cpp user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16Passes/PIC16Cloner.cpp user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16Passes/PIC16Cloner.h user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16Passes/PIC16Overlay.cpp user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16Passes/PIC16Overlay.h user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16RegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/PIC16/PIC16RegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCBranchSelector.cpp user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCCallingConv.td user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCISelLowering.cpp user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCInstrInfo.td user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCRegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCSubtarget.cpp user/imp/tbemd/contrib/llvm/lib/Target/PowerPC/PPCSubtarget.h user/imp/tbemd/contrib/llvm/lib/Target/Sparc/DelaySlotFiller.cpp user/imp/tbemd/contrib/llvm/lib/Target/Sparc/FPMover.cpp user/imp/tbemd/contrib/llvm/lib/Target/Sparc/Sparc.td user/imp/tbemd/contrib/llvm/lib/Target/Sparc/SparcISelDAGToDAG.cpp user/imp/tbemd/contrib/llvm/lib/Target/Sparc/SparcInstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/Sparc/SparcInstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/Sparc/SparcInstrInfo.td user/imp/tbemd/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/Sparc/SparcRegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/SystemZ/SystemZInstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/SystemZ/SystemZInstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/SystemZ/SystemZRegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/TargetData.cpp user/imp/tbemd/contrib/llvm/lib/Target/TargetMachine.cpp user/imp/tbemd/contrib/llvm/lib/Target/TargetRegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmParser/X86AsmParser.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.h user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/X86IntelInstPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/AsmPrinter/X86IntelInstPrinter.h user/imp/tbemd/contrib/llvm/lib/Target/X86/SSEDomainFix.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86.h user/imp/tbemd/contrib/llvm/lib/Target/X86/X86.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86AsmBackend.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86CallingConv.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86CodeEmitter.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86FastISel.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86FloatingPoint.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86ISelLowering.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86ISelLowering.h user/imp/tbemd/contrib/llvm/lib/Target/X86/X86Instr64bit.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86InstrFPStack.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86InstrFormats.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86InstrFragmentsSIMD.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86InstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86InstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/X86/X86InstrInfo.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86InstrMMX.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86InstrSSE.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86MCAsmInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86MCCodeEmitter.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86RegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86RegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Target/X86/X86RegisterInfo.td user/imp/tbemd/contrib/llvm/lib/Target/X86/X86Subtarget.cpp user/imp/tbemd/contrib/llvm/lib/Target/X86/X86Subtarget.h user/imp/tbemd/contrib/llvm/lib/Target/X86/X86TargetMachine.cpp user/imp/tbemd/contrib/llvm/lib/Target/XCore/AsmPrinter/XCoreAsmPrinter.cpp user/imp/tbemd/contrib/llvm/lib/Target/XCore/XCoreISelDAGToDAG.cpp user/imp/tbemd/contrib/llvm/lib/Target/XCore/XCoreInstrInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/XCore/XCoreInstrInfo.h user/imp/tbemd/contrib/llvm/lib/Target/XCore/XCoreInstrInfo.td user/imp/tbemd/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.cpp user/imp/tbemd/contrib/llvm/lib/Target/XCore/XCoreRegisterInfo.h user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/ArgumentPromotion.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/ConstantMerge.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/DeadArgumentElimination.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/DeadTypeElimination.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/ExtractGV.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/FunctionAttrs.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/GlobalDCE.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/GlobalOpt.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/IPConstantPropagation.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/InlineAlways.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/InlineSimple.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/Inliner.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/Internalize.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/LoopExtractor.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/LowerSetJmp.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/MergeFunctions.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/PartialInlining.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/PartialSpecialization.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/PruneEH.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/StripDeadPrototypes.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/StripSymbols.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/IPO/StructRetPromotion.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/InstCombine.h user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/InstCombineAndOrXor.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/InstCombineCalls.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/InstCombineCasts.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/InstCombineLoadStoreAlloca.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/InstCombineShifts.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/InstCombine/InstructionCombining.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Instrumentation/EdgeProfiling.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Instrumentation/OptimalEdgeProfiling.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/ADCE.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/BasicBlockPlacement.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/ConstantProp.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/DCE.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/GEPSplitter.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/GVN.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/IndVarSimplify.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/JumpThreading.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/LICM.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/LoopDeletion.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/LoopIndexSplit.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/LoopRotation.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/LoopUnrollPass.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/LoopUnswitch.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/Reassociate.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/Reg2Mem.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/SCCP.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/SimplifyHalfPowrLibCalls.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/SimplifyLibCalls.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/Sink.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/TailDuplication.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Scalar/TailRecursionElimination.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/BasicInliner.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/BuildLibCalls.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/CloneFunction.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/CloneModule.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/InlineFunction.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/InstructionNamer.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/LCSSA.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/Local.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/LoopSimplify.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/LoopUnroll.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/LowerInvoke.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/LowerSwitch.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/Mem2Reg.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/SSAUpdater.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/SimplifyCFG.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp user/imp/tbemd/contrib/llvm/lib/Transforms/Utils/ValueMapper.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/AsmWriter.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/AutoUpgrade.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/ConstantFold.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/Constants.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/ConstantsContext.h user/imp/tbemd/contrib/llvm/lib/VMCore/Core.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/Dominators.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/Globals.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/InlineAsm.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/Instruction.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/Instructions.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/LLVMContext.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/LLVMContextImpl.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/LLVMContextImpl.h user/imp/tbemd/contrib/llvm/lib/VMCore/Metadata.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/Module.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/Pass.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/PassManager.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/PrintModulePass.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/Type.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/TypesContext.h user/imp/tbemd/contrib/llvm/lib/VMCore/Use.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/Value.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/ValueSymbolTable.cpp user/imp/tbemd/contrib/llvm/lib/VMCore/Verifier.cpp user/imp/tbemd/contrib/llvm/tools/clang/include/clang-c/Index.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/ASTConsumer.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/ASTContext.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/ASTImporter.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/Attr.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/CanonicalType.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/Decl.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/DeclBase.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/DeclContextInternals.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/DeclFriend.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/DeclGroup.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/DeclObjC.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/DeclTemplate.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/DeclarationName.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/Expr.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/ExprCXX.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/ExternalASTSource.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/FullExpr.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/NestedNameSpecifier.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/RecursiveASTVisitor.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/Redeclarable.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/Stmt.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/StmtCXX.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/StmtVisitor.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/Type.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/TypeLoc.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/AST/TypeOrdering.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Analysis/Analyses/LiveVariables.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Analysis/AnalysisContext.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Analysis/CFG.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Analysis/FlowSensitive/DataflowSolver.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Analysis/ProgramPoint.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Analysis/Visitors/CFGStmtVisitor.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/Attr.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/Builtins.def user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/Builtins.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsARM.def user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/BuiltinsX86.def user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/DeclNodes.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/Diagnostic.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticCommonKinds.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticDriverKinds.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticFrontendKinds.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticGroups.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticLexKinds.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticParseKinds.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/DiagnosticSemaKinds.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/IdentifierTable.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/LangOptions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/Linkage.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/OnDiskHashTable.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/SourceManager.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/Specifiers.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/StmtNodes.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/TargetInfo.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/TargetOptions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/TokenKinds.def user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Basic/arm_neon.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/BugReporter/BugReporter.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/AnalysisManager.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/Checker.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/ConstraintManager.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/Environment.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/GRCoreEngine.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/GRExprEngine.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/GRState.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/GRSubEngine.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/GRTransferFuncs.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/GRWorkList.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/MemRegion.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/SVals.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/Store.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/SymbolManager.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Checker/PathSensitive/ValueManager.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/CC1Options.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/Compilation.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/Driver.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/HostInfo.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/Job.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/OptParser.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/OptTable.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/Option.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/Options.td user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/Tool.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Driver/ToolChain.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/ASTConsumers.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/ASTUnit.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/AnalyzerOptions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/CodeGenOptions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/CompilerInstance.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/DeclXML.def user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/DiagnosticOptions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/DocumentXML.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/FrontendAction.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/FrontendActions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/FrontendOptions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/HeaderSearchOptions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/PreprocessorOptions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/PreprocessorOutputOptions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/StmtXML.def user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/TypeXML.def user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Frontend/Utils.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Index/TranslationUnit.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Lex/ExternalPreprocessorSource.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Lex/HeaderSearch.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Lex/Lexer.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Lex/MacroInfo.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Lex/PPCallbacks.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Lex/PTHLexer.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Lex/PreprocessingRecord.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Lex/Preprocessor.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Lex/Token.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Parse/Parser.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Rewrite/FixItRewriter.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Rewrite/FrontendActions.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/CodeCompleteConsumer.h user/imp/tbemd/contrib/llvm/tools/clang/include/clang/Sema/ExternalSemaSource.h user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/ASTConsumer.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/ASTContext.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/ASTDiagnostic.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/ASTImporter.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/AttrImpl.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/Decl.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/DeclBase.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/DeclCXX.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/DeclGroup.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/DeclObjC.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/DeclPrinter.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/DeclTemplate.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/DeclarationName.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/Expr.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/ExprCXX.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/ExprClassification.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/ExprConstant.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/FullExpr.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/NestedNameSpecifier.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/ParentMap.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/RecordLayout.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/RecordLayoutBuilder.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/Stmt.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/StmtDumper.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/StmtPrinter.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/StmtProfile.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/TemplateBase.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/Type.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/TypeLoc.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/AST/TypePrinter.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/AnalysisContext.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/CFG.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/LiveVariables.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/PrintfFormatString.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/ReachableCode.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Analysis/UninitializedValues.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Basic/Builtins.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Basic/Diagnostic.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Basic/FileManager.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Basic/IdentifierTable.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Basic/SourceManager.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Basic/TargetInfo.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Basic/Targets.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Basic/Version.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/AdjustedReturnValueChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/AggExprVisitor.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/AnalysisConsumer.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/ArrayBoundChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/BasicObjCFoundationChecks.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/BasicStore.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/BasicValueFactory.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/BugReporter.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/BugReporterVisitors.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/CFRefCount.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/CStringChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/CallAndMessageChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/CastSizeChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/CheckDeadStores.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/CheckSecuritySyntaxOnly.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/CocoaConventions.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/DivZeroChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/Environment.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/FixedAddressChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/FlatStore.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/GRCXXExprEngine.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/GRCoreEngine.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/GRExprEngine.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/GRExprEngineExperimentalChecks.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/GRExprEngineExperimentalChecks.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/GRState.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/IdempotentOperationChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/LLVMConventionsChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/MallocChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/MemRegion.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/OSAtomicChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/PointerArithChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/PointerSubChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/RangeConstraintManager.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/RegionStore.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/ReturnPointerRangeChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/ReturnUndefChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/SVals.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/SValuator.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/SimpleConstraintManager.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/SimpleConstraintManager.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/SimpleSValuator.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/StackAddrLeakChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/Store.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/StreamChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/SymbolManager.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/UndefBranchChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/UndefinedAssignmentChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/UnixAPIChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/VLASizeChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Checker/ValueManager.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/ABIInfo.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGBlocks.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGBuiltin.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGCXX.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGCXXABI.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGCall.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGClass.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGDebugInfo.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGDecl.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGDeclCXX.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGException.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGException.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGExpr.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGExprAgg.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGExprCXX.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGExprComplex.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGExprConstant.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGExprScalar.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGObjC.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGObjCGNU.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGObjCMac.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGObjCRuntime.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGRTTI.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGRecordLayout.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGRecordLayoutBuilder.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGStmt.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGTemporaries.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGVTT.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGVTables.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CGValue.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CodeGenFunction.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CodeGenModule.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/CodeGenTypes.h user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/ItaniumCXXABI.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/Mangle.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/CodeGen/TargetInfo.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/Compilation.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/Driver.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/HostInfo.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/InputInfo.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/Job.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/OptTable.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/Option.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/ToolChain.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/ToolChains.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/ToolChains.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/Tools.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Driver/Tools.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/ASTConsumers.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/ASTMerge.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/ASTUnit.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/CacheTokens.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/CompilerInstance.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/CompilerInvocation.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/DependencyFile.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/DiagChecker.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/FrontendAction.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/FrontendActions.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/InitHeaderSearch.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/InitPreprocessor.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/PrintPreprocessedOutput.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/StmtXML.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/TextDiagnosticPrinter.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Frontend/VerifyDiagnosticsClient.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/altivec.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/emmintrin.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/mmintrin.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/nmmintrin.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/smmintrin.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/stddef.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Headers/xmmintrin.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Index/Entity.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/Lexer.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/LiteralSupport.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/MacroInfo.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/PPDirectives.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/PPExpressions.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/PPMacroExpansion.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/PTHLexer.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/Pragma.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/PreprocessingRecord.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/Preprocessor.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Lex/TokenLexer.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseDecl.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseDeclCXX.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseExpr.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseExprCXX.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseInit.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseObjc.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParsePragma.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParsePragma.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseStmt.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseTemplate.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/ParseTentative.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Parse/Parser.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Rewrite/DeltaTree.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Rewrite/FixItRewriter.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Rewrite/FrontendActions.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Rewrite/HTMLRewrite.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Rewrite/RewriteObjC.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/AnalysisBasedWarnings.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/CodeCompleteConsumer.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/IdentifierResolver.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/JumpDiagnostics.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/Sema.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaAccess.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaAttr.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaCXXCast.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaCXXScopeSpec.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaChecking.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaCodeComplete.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaDecl.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaDeclAttr.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaDeclCXX.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaDeclObjC.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaExceptionSpec.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaExpr.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaExprCXX.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaExprObjC.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaInit.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaLookup.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaObjCProperty.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaOverload.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaStmt.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaTemplate.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaTemplateDeduction.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiate.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/SemaType.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/TargetAttributesSema.cpp user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/TargetAttributesSema.h user/imp/tbemd/contrib/llvm/tools/clang/lib/Sema/TreeTransform.h user/imp/tbemd/contrib/llvm/tools/clang/tools/driver/cc1_main.cpp user/imp/tbemd/contrib/llvm/tools/clang/tools/driver/cc1as_main.cpp user/imp/tbemd/contrib/llvm/tools/clang/tools/driver/driver.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/ARMDecoderEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/AsmMatcherEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/AsmWriterEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/CallingConvEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/ClangAttrEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/ClangAttrEmitter.h user/imp/tbemd/contrib/llvm/utils/TableGen/CodeGenDAGPatterns.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/CodeGenInstruction.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/CodeGenInstruction.h user/imp/tbemd/contrib/llvm/utils/TableGen/CodeGenIntrinsics.h user/imp/tbemd/contrib/llvm/utils/TableGen/CodeGenRegisters.h user/imp/tbemd/contrib/llvm/utils/TableGen/CodeGenTarget.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/DAGISelEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/DAGISelEmitter.h user/imp/tbemd/contrib/llvm/utils/TableGen/DAGISelMatcherEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/DAGISelMatcherGen.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/EDEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/EDEmitter.h user/imp/tbemd/contrib/llvm/utils/TableGen/FastISelEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/InstrInfoEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/IntrinsicEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/LLVMCConfigurationEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/NeonEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/Record.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/Record.h user/imp/tbemd/contrib/llvm/utils/TableGen/RegisterInfoEmitter.cpp user/imp/tbemd/contrib/llvm/utils/TableGen/TableGen.cpp user/imp/tbemd/contrib/netcat/nc.1 user/imp/tbemd/contrib/netcat/netcat.c user/imp/tbemd/contrib/netcat/socks.c user/imp/tbemd/contrib/tcpdump/CHANGES user/imp/tbemd/contrib/tcpdump/CREDITS user/imp/tbemd/contrib/tcpdump/INSTALL.txt user/imp/tbemd/contrib/tcpdump/Makefile.in user/imp/tbemd/contrib/tcpdump/README user/imp/tbemd/contrib/tcpdump/VERSION user/imp/tbemd/contrib/tcpdump/acconfig.h user/imp/tbemd/contrib/tcpdump/addrtoname.c user/imp/tbemd/contrib/tcpdump/af.c user/imp/tbemd/contrib/tcpdump/af.h user/imp/tbemd/contrib/tcpdump/atmuni31.h user/imp/tbemd/contrib/tcpdump/bootp.h user/imp/tbemd/contrib/tcpdump/bpf_dump.c user/imp/tbemd/contrib/tcpdump/checksum.c user/imp/tbemd/contrib/tcpdump/config.guess user/imp/tbemd/contrib/tcpdump/config.h.in user/imp/tbemd/contrib/tcpdump/config.sub user/imp/tbemd/contrib/tcpdump/configure user/imp/tbemd/contrib/tcpdump/configure.in user/imp/tbemd/contrib/tcpdump/ethertype.h user/imp/tbemd/contrib/tcpdump/gmpls.c user/imp/tbemd/contrib/tcpdump/gmpls.h user/imp/tbemd/contrib/tcpdump/gmt2local.h user/imp/tbemd/contrib/tcpdump/icmp6.h user/imp/tbemd/contrib/tcpdump/ieee802_11.h user/imp/tbemd/contrib/tcpdump/ieee802_11_radio.h user/imp/tbemd/contrib/tcpdump/interface.h user/imp/tbemd/contrib/tcpdump/ip6.h user/imp/tbemd/contrib/tcpdump/ipproto.c user/imp/tbemd/contrib/tcpdump/ipproto.h user/imp/tbemd/contrib/tcpdump/isakmp.h user/imp/tbemd/contrib/tcpdump/l2vpn.c user/imp/tbemd/contrib/tcpdump/l2vpn.h user/imp/tbemd/contrib/tcpdump/lbl/os-sunos4.h user/imp/tbemd/contrib/tcpdump/lbl/os-ultrix4.h user/imp/tbemd/contrib/tcpdump/missing/addrinfo.h user/imp/tbemd/contrib/tcpdump/netdissect.h user/imp/tbemd/contrib/tcpdump/nfs.h user/imp/tbemd/contrib/tcpdump/nlpid.c user/imp/tbemd/contrib/tcpdump/nlpid.h user/imp/tbemd/contrib/tcpdump/oui.c user/imp/tbemd/contrib/tcpdump/oui.h user/imp/tbemd/contrib/tcpdump/print-802_11.c user/imp/tbemd/contrib/tcpdump/print-ap1394.c user/imp/tbemd/contrib/tcpdump/print-arcnet.c user/imp/tbemd/contrib/tcpdump/print-atm.c user/imp/tbemd/contrib/tcpdump/print-bfd.c user/imp/tbemd/contrib/tcpdump/print-bgp.c user/imp/tbemd/contrib/tcpdump/print-bootp.c user/imp/tbemd/contrib/tcpdump/print-bt.c user/imp/tbemd/contrib/tcpdump/print-cdp.c user/imp/tbemd/contrib/tcpdump/print-cfm.c user/imp/tbemd/contrib/tcpdump/print-dccp.c user/imp/tbemd/contrib/tcpdump/print-dhcp6.c user/imp/tbemd/contrib/tcpdump/print-domain.c user/imp/tbemd/contrib/tcpdump/print-enc.c user/imp/tbemd/contrib/tcpdump/print-esp.c user/imp/tbemd/contrib/tcpdump/print-ether.c user/imp/tbemd/contrib/tcpdump/print-fr.c user/imp/tbemd/contrib/tcpdump/print-gre.c user/imp/tbemd/contrib/tcpdump/print-icmp6.c user/imp/tbemd/contrib/tcpdump/print-ip.c user/imp/tbemd/contrib/tcpdump/print-ip6.c user/imp/tbemd/contrib/tcpdump/print-isakmp.c user/imp/tbemd/contrib/tcpdump/print-isoclns.c user/imp/tbemd/contrib/tcpdump/print-juniper.c user/imp/tbemd/contrib/tcpdump/print-l2tp.c user/imp/tbemd/contrib/tcpdump/print-lane.c user/imp/tbemd/contrib/tcpdump/print-llc.c user/imp/tbemd/contrib/tcpdump/print-lldp.c user/imp/tbemd/contrib/tcpdump/print-lspping.c user/imp/tbemd/contrib/tcpdump/print-nfs.c user/imp/tbemd/contrib/tcpdump/print-ntp.c user/imp/tbemd/contrib/tcpdump/print-olsr.c user/imp/tbemd/contrib/tcpdump/print-ospf.c user/imp/tbemd/contrib/tcpdump/print-pflog.c user/imp/tbemd/contrib/tcpdump/print-pim.c user/imp/tbemd/contrib/tcpdump/print-ppp.c user/imp/tbemd/contrib/tcpdump/print-rrcp.c user/imp/tbemd/contrib/tcpdump/print-rsvp.c user/imp/tbemd/contrib/tcpdump/print-rx.c user/imp/tbemd/contrib/tcpdump/print-sctp.c user/imp/tbemd/contrib/tcpdump/print-sip.c user/imp/tbemd/contrib/tcpdump/print-sll.c user/imp/tbemd/contrib/tcpdump/print-smb.c user/imp/tbemd/contrib/tcpdump/print-sunrpc.c user/imp/tbemd/contrib/tcpdump/print-symantec.c user/imp/tbemd/contrib/tcpdump/print-tcp.c user/imp/tbemd/contrib/tcpdump/print-tftp.c user/imp/tbemd/contrib/tcpdump/print-token.c user/imp/tbemd/contrib/tcpdump/print-udp.c user/imp/tbemd/contrib/tcpdump/setsignal.h user/imp/tbemd/contrib/tcpdump/sll.h user/imp/tbemd/contrib/tcpdump/smbutil.c user/imp/tbemd/contrib/tcpdump/strcasecmp.c user/imp/tbemd/contrib/tcpdump/tcp.h user/imp/tbemd/contrib/tcpdump/tcpdump-stdinc.h user/imp/tbemd/contrib/tcpdump/tcpdump.c user/imp/tbemd/contrib/tcpdump/tftp.h user/imp/tbemd/contrib/tcpdump/timed.h user/imp/tbemd/contrib/tcpdump/token.h user/imp/tbemd/contrib/tcpdump/util.c user/imp/tbemd/contrib/top/display.c user/imp/tbemd/contrib/top/top.h user/imp/tbemd/contrib/tzcode/stdtime/asctime.c user/imp/tbemd/contrib/tzcode/stdtime/localtime.c user/imp/tbemd/contrib/tzcode/zic/zic.8 user/imp/tbemd/contrib/tzcode/zic/zic.c user/imp/tbemd/contrib/tzdata/asia user/imp/tbemd/contrib/tzdata/australasia user/imp/tbemd/contrib/tzdata/zone.tab user/imp/tbemd/contrib/wpa/src/Makefile user/imp/tbemd/contrib/wpa/src/common/Makefile user/imp/tbemd/contrib/wpa/src/common/defs.h user/imp/tbemd/contrib/wpa/src/common/ieee802_11_common.c user/imp/tbemd/contrib/wpa/src/common/ieee802_11_common.h user/imp/tbemd/contrib/wpa/src/common/ieee802_11_defs.h user/imp/tbemd/contrib/wpa/src/common/privsep_commands.h user/imp/tbemd/contrib/wpa/src/common/version.h user/imp/tbemd/contrib/wpa/src/common/wpa_common.c user/imp/tbemd/contrib/wpa/src/common/wpa_common.h user/imp/tbemd/contrib/wpa/src/common/wpa_ctrl.h user/imp/tbemd/contrib/wpa/src/crypto/Makefile user/imp/tbemd/contrib/wpa/src/crypto/aes.h user/imp/tbemd/contrib/wpa/src/crypto/crypto.h user/imp/tbemd/contrib/wpa/src/crypto/crypto_cryptoapi.c user/imp/tbemd/contrib/wpa/src/crypto/crypto_gnutls.c user/imp/tbemd/contrib/wpa/src/crypto/crypto_internal.c user/imp/tbemd/contrib/wpa/src/crypto/crypto_libtomcrypt.c user/imp/tbemd/contrib/wpa/src/crypto/crypto_none.c user/imp/tbemd/contrib/wpa/src/crypto/crypto_openssl.c user/imp/tbemd/contrib/wpa/src/crypto/dh_groups.c user/imp/tbemd/contrib/wpa/src/crypto/md5.c user/imp/tbemd/contrib/wpa/src/crypto/md5.h user/imp/tbemd/contrib/wpa/src/crypto/ms_funcs.c user/imp/tbemd/contrib/wpa/src/crypto/ms_funcs.h user/imp/tbemd/contrib/wpa/src/crypto/rc4.c user/imp/tbemd/contrib/wpa/src/crypto/sha1.c user/imp/tbemd/contrib/wpa/src/crypto/sha1.h user/imp/tbemd/contrib/wpa/src/crypto/sha256.c user/imp/tbemd/contrib/wpa/src/crypto/tls.h user/imp/tbemd/contrib/wpa/src/crypto/tls_gnutls.c user/imp/tbemd/contrib/wpa/src/crypto/tls_internal.c user/imp/tbemd/contrib/wpa/src/crypto/tls_none.c user/imp/tbemd/contrib/wpa/src/crypto/tls_openssl.c user/imp/tbemd/contrib/wpa/src/crypto/tls_schannel.c user/imp/tbemd/contrib/wpa/src/drivers/Makefile user/imp/tbemd/contrib/wpa/src/drivers/driver.h user/imp/tbemd/contrib/wpa/src/drivers/driver_ndis.c user/imp/tbemd/contrib/wpa/src/drivers/driver_ndis.h user/imp/tbemd/contrib/wpa/src/drivers/driver_ndiswrapper.c user/imp/tbemd/contrib/wpa/src/drivers/driver_wired.c user/imp/tbemd/contrib/wpa/src/drivers/drivers.c user/imp/tbemd/contrib/wpa/src/eap_common/Makefile user/imp/tbemd/contrib/wpa/src/eap_common/chap.c user/imp/tbemd/contrib/wpa/src/eap_common/chap.h user/imp/tbemd/contrib/wpa/src/eap_common/eap_fast_common.c user/imp/tbemd/contrib/wpa/src/eap_common/eap_gpsk_common.c user/imp/tbemd/contrib/wpa/src/eap_common/eap_pax_common.c user/imp/tbemd/contrib/wpa/src/eap_common/eap_peap_common.c user/imp/tbemd/contrib/wpa/src/eap_common/eap_psk_common.c user/imp/tbemd/contrib/wpa/src/eap_common/eap_sake_common.c user/imp/tbemd/contrib/wpa/src/eap_common/eap_sim_common.c user/imp/tbemd/contrib/wpa/src/eap_common/eap_sim_common.h user/imp/tbemd/contrib/wpa/src/eap_common/ikev2_common.c user/imp/tbemd/contrib/wpa/src/eap_peer/Makefile user/imp/tbemd/contrib/wpa/src/eap_peer/eap.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap.h user/imp/tbemd/contrib/wpa/src/eap_peer/eap_aka.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_config.h user/imp/tbemd/contrib/wpa/src/eap_peer/eap_fast.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_fast_pac.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_leap.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_md5.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_methods.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_methods.h user/imp/tbemd/contrib/wpa/src/eap_peer/eap_mschapv2.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_pax.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_peap.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_psk.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_sim.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_tls.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_tls_common.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_tls_common.h user/imp/tbemd/contrib/wpa/src/eap_peer/eap_tnc.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_ttls.c user/imp/tbemd/contrib/wpa/src/eap_peer/eap_wsc.c user/imp/tbemd/contrib/wpa/src/eap_peer/ikev2.c user/imp/tbemd/contrib/wpa/src/eap_peer/mschapv2.c user/imp/tbemd/contrib/wpa/src/eap_peer/mschapv2.h user/imp/tbemd/contrib/wpa/src/eap_server/Makefile user/imp/tbemd/contrib/wpa/src/eap_server/eap.h user/imp/tbemd/contrib/wpa/src/eap_server/eap_i.h user/imp/tbemd/contrib/wpa/src/eap_server/eap_methods.h user/imp/tbemd/contrib/wpa/src/eap_server/eap_sim_db.c user/imp/tbemd/contrib/wpa/src/eap_server/eap_sim_db.h user/imp/tbemd/contrib/wpa/src/eap_server/eap_tls_common.h user/imp/tbemd/contrib/wpa/src/eap_server/ikev2.c user/imp/tbemd/contrib/wpa/src/eap_server/tncs.c user/imp/tbemd/contrib/wpa/src/eapol_supp/Makefile user/imp/tbemd/contrib/wpa/src/eapol_supp/eapol_supp_sm.c user/imp/tbemd/contrib/wpa/src/eapol_supp/eapol_supp_sm.h user/imp/tbemd/contrib/wpa/src/l2_packet/Makefile user/imp/tbemd/contrib/wpa/src/l2_packet/l2_packet_freebsd.c user/imp/tbemd/contrib/wpa/src/l2_packet/l2_packet_ndis.c user/imp/tbemd/contrib/wpa/src/radius/Makefile user/imp/tbemd/contrib/wpa/src/radius/radius.c user/imp/tbemd/contrib/wpa/src/radius/radius.h user/imp/tbemd/contrib/wpa/src/radius/radius_client.c user/imp/tbemd/contrib/wpa/src/radius/radius_client.h user/imp/tbemd/contrib/wpa/src/radius/radius_server.c user/imp/tbemd/contrib/wpa/src/radius/radius_server.h user/imp/tbemd/contrib/wpa/src/rsn_supp/Makefile user/imp/tbemd/contrib/wpa/src/rsn_supp/peerkey.c user/imp/tbemd/contrib/wpa/src/rsn_supp/pmksa_cache.c user/imp/tbemd/contrib/wpa/src/rsn_supp/pmksa_cache.h user/imp/tbemd/contrib/wpa/src/rsn_supp/preauth.c user/imp/tbemd/contrib/wpa/src/rsn_supp/preauth.h user/imp/tbemd/contrib/wpa/src/rsn_supp/wpa.c user/imp/tbemd/contrib/wpa/src/rsn_supp/wpa.h user/imp/tbemd/contrib/wpa/src/rsn_supp/wpa_ft.c user/imp/tbemd/contrib/wpa/src/rsn_supp/wpa_i.h user/imp/tbemd/contrib/wpa/src/rsn_supp/wpa_ie.c user/imp/tbemd/contrib/wpa/src/rsn_supp/wpa_ie.h user/imp/tbemd/contrib/wpa/src/tls/Makefile user/imp/tbemd/contrib/wpa/src/tls/asn1.c user/imp/tbemd/contrib/wpa/src/tls/asn1.h user/imp/tbemd/contrib/wpa/src/tls/rsa.c user/imp/tbemd/contrib/wpa/src/tls/tlsv1_client.c user/imp/tbemd/contrib/wpa/src/tls/tlsv1_client_read.c user/imp/tbemd/contrib/wpa/src/tls/tlsv1_client_write.c user/imp/tbemd/contrib/wpa/src/tls/tlsv1_common.h user/imp/tbemd/contrib/wpa/src/tls/tlsv1_cred.c user/imp/tbemd/contrib/wpa/src/tls/tlsv1_record.c user/imp/tbemd/contrib/wpa/src/tls/tlsv1_record.h user/imp/tbemd/contrib/wpa/src/tls/tlsv1_server.c user/imp/tbemd/contrib/wpa/src/tls/tlsv1_server_read.c user/imp/tbemd/contrib/wpa/src/tls/tlsv1_server_write.c user/imp/tbemd/contrib/wpa/src/tls/x509v3.c user/imp/tbemd/contrib/wpa/src/tls/x509v3.h user/imp/tbemd/contrib/wpa/src/utils/Makefile user/imp/tbemd/contrib/wpa/src/utils/base64.c user/imp/tbemd/contrib/wpa/src/utils/build_config.h user/imp/tbemd/contrib/wpa/src/utils/common.c user/imp/tbemd/contrib/wpa/src/utils/common.h user/imp/tbemd/contrib/wpa/src/utils/eloop.c user/imp/tbemd/contrib/wpa/src/utils/eloop.h user/imp/tbemd/contrib/wpa/src/utils/eloop_none.c user/imp/tbemd/contrib/wpa/src/utils/eloop_win.c user/imp/tbemd/contrib/wpa/src/utils/ip_addr.h user/imp/tbemd/contrib/wpa/src/utils/os.h user/imp/tbemd/contrib/wpa/src/utils/os_internal.c user/imp/tbemd/contrib/wpa/src/utils/os_unix.c user/imp/tbemd/contrib/wpa/src/utils/uuid.c user/imp/tbemd/contrib/wpa/src/utils/uuid.h user/imp/tbemd/contrib/wpa/src/utils/wpa_debug.c user/imp/tbemd/contrib/wpa/src/utils/wpa_debug.h user/imp/tbemd/contrib/wpa/src/utils/wpabuf.c user/imp/tbemd/contrib/wpa/src/utils/wpabuf.h user/imp/tbemd/contrib/wpa/src/wps/Makefile user/imp/tbemd/contrib/wpa/src/wps/httpread.c user/imp/tbemd/contrib/wpa/src/wps/httpread.h user/imp/tbemd/contrib/wpa/src/wps/wps.c user/imp/tbemd/contrib/wpa/src/wps/wps.h user/imp/tbemd/contrib/wpa/src/wps/wps_attr_build.c user/imp/tbemd/contrib/wpa/src/wps/wps_attr_parse.c user/imp/tbemd/contrib/wpa/src/wps/wps_attr_process.c user/imp/tbemd/contrib/wpa/src/wps/wps_common.c user/imp/tbemd/contrib/wpa/src/wps/wps_defs.h user/imp/tbemd/contrib/wpa/src/wps/wps_dev_attr.c user/imp/tbemd/contrib/wpa/src/wps/wps_enrollee.c user/imp/tbemd/contrib/wpa/src/wps/wps_i.h user/imp/tbemd/contrib/wpa/src/wps/wps_registrar.c user/imp/tbemd/contrib/wpa/src/wps/wps_upnp.c user/imp/tbemd/contrib/wpa/src/wps/wps_upnp.h user/imp/tbemd/contrib/wpa/src/wps/wps_upnp_event.c user/imp/tbemd/contrib/wpa/src/wps/wps_upnp_i.h user/imp/tbemd/contrib/wpa/src/wps/wps_upnp_ssdp.c user/imp/tbemd/contrib/wpa/src/wps/wps_upnp_web.c user/imp/tbemd/contrib/wpa/wpa_supplicant/ChangeLog user/imp/tbemd/contrib/wpa/wpa_supplicant/Makefile user/imp/tbemd/contrib/wpa/wpa_supplicant/README user/imp/tbemd/contrib/wpa/wpa_supplicant/README-WPS user/imp/tbemd/contrib/wpa/wpa_supplicant/config.c user/imp/tbemd/contrib/wpa/wpa_supplicant/config.h user/imp/tbemd/contrib/wpa/wpa_supplicant/config_file.c user/imp/tbemd/contrib/wpa/wpa_supplicant/config_ssid.h user/imp/tbemd/contrib/wpa/wpa_supplicant/ctrl_iface.c user/imp/tbemd/contrib/wpa/wpa_supplicant/ctrl_iface_named_pipe.c user/imp/tbemd/contrib/wpa/wpa_supplicant/ctrl_iface_udp.c user/imp/tbemd/contrib/wpa/wpa_supplicant/ctrl_iface_unix.c user/imp/tbemd/contrib/wpa/wpa_supplicant/defconfig user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/docbook/wpa_background.8 user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/docbook/wpa_cli.8 user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/docbook/wpa_gui.8 user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/docbook/wpa_passphrase.8 user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/docbook/wpa_priv.8 user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/docbook/wpa_supplicant.8 user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/docbook/wpa_supplicant.conf.5 user/imp/tbemd/contrib/wpa/wpa_supplicant/doc/docbook/wpa_supplicant.sgml user/imp/tbemd/contrib/wpa/wpa_supplicant/eapol_test.c user/imp/tbemd/contrib/wpa/wpa_supplicant/events.c user/imp/tbemd/contrib/wpa/wpa_supplicant/main.c user/imp/tbemd/contrib/wpa/wpa_supplicant/mlme.c user/imp/tbemd/contrib/wpa/wpa_supplicant/mlme.h user/imp/tbemd/contrib/wpa/wpa_supplicant/nmake.mak user/imp/tbemd/contrib/wpa/wpa_supplicant/preauth_test.c user/imp/tbemd/contrib/wpa/wpa_supplicant/scan.c user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_eap_sim_common.c user/imp/tbemd/contrib/wpa/wpa_supplicant/tests/test_wpa.c user/imp/tbemd/contrib/wpa/wpa_supplicant/todo.txt user/imp/tbemd/contrib/wpa/wpa_supplicant/wpa_cli.c user/imp/tbemd/contrib/wpa/wpa_supplicant/wpa_passphrase.c user/imp/tbemd/contrib/wpa/wpa_supplicant/wpa_priv.c user/imp/tbemd/contrib/wpa/wpa_supplicant/wpa_supplicant.c user/imp/tbemd/contrib/wpa/wpa_supplicant/wpa_supplicant.conf user/imp/tbemd/contrib/wpa/wpa_supplicant/wpa_supplicant.nsi user/imp/tbemd/contrib/wpa/wpa_supplicant/wpa_supplicant_i.h user/imp/tbemd/contrib/wpa/wpa_supplicant/wpas_glue.c user/imp/tbemd/contrib/wpa/wpa_supplicant/wps_supplicant.c user/imp/tbemd/contrib/wpa/wpa_supplicant/wps_supplicant.h user/imp/tbemd/contrib/xz/ChangeLog (contents, props changed) user/imp/tbemd/contrib/xz/README (contents, props changed) user/imp/tbemd/contrib/xz/THANKS (contents, props changed) user/imp/tbemd/contrib/xz/po/LINGUAS (contents, props changed) user/imp/tbemd/contrib/xz/po/POTFILES.in (contents, props changed) user/imp/tbemd/contrib/xz/po/cs.po (contents, props changed) user/imp/tbemd/contrib/xz/src/common/sysdefs.h (contents, props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_cpucores.c (contents, props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_gettext.h (contents, props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_physmem.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma.h (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/index.h (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/lzma.h (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/vli.h (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/block_buffer_encoder.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/block_util.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/common.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/common.h (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/filter_common.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/filter_decoder.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/filter_encoder.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/stream_buffer_encoder.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/delta/delta_encoder.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/lz/lz_decoder.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/lz/lz_decoder.h (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/lz/lz_encoder.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/lz/lz_encoder.h (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/lz/lz_encoder_mf.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma2_encoder.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma_encoder_optimum_fast.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma_encoder_optimum_normal.c (contents, props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma_encoder_presets.c (contents, props changed) user/imp/tbemd/contrib/xz/src/lzmainfo/lzmainfo.1 (contents, props changed) user/imp/tbemd/contrib/xz/src/lzmainfo/lzmainfo.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/args.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/args.h (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/coder.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/coder.h (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/file_io.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/hardware.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/hardware.h (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/list.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/main.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/message.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/message.h (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/options.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/options.h (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/private.h (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/signals.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/signals.h (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/util.c (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/util.h (contents, props changed) user/imp/tbemd/contrib/xz/src/xz/xz.1 (contents, props changed) user/imp/tbemd/contrib/xz/src/xzdec/xzdec.1 (contents, props changed) user/imp/tbemd/contrib/xz/src/xzdec/xzdec.c (contents, props changed) user/imp/tbemd/crypto/openssh/session.c user/imp/tbemd/crypto/openssl/crypto/md32_common.h user/imp/tbemd/crypto/openssl/crypto/rc5/rc5_locl.h user/imp/tbemd/etc/Makefile user/imp/tbemd/etc/defaults/rc.conf user/imp/tbemd/etc/mtree/BSD.usr.dist user/imp/tbemd/etc/periodic/security/Makefile user/imp/tbemd/etc/rc.d/Makefile user/imp/tbemd/etc/rc.d/defaultroute user/imp/tbemd/etc/rc.d/nsswitch user/imp/tbemd/games/caesar/caesar.6 user/imp/tbemd/games/fortune/datfiles/fortunes user/imp/tbemd/gnu/lib/libobjc/Makefile user/imp/tbemd/gnu/usr.bin/Makefile user/imp/tbemd/gnu/usr.bin/binutils/libbfd/Makefile.amd64 user/imp/tbemd/gnu/usr.bin/gdb/arch/mips/Makefile user/imp/tbemd/gnu/usr.bin/gdb/arch/mips/init.c user/imp/tbemd/gnu/usr.bin/gdb/kgdb/main.c user/imp/tbemd/gnu/usr.bin/gdb/kgdb/trgt_mips.c user/imp/tbemd/gnu/usr.bin/groff/tmac/mdoc.local user/imp/tbemd/include/Makefile user/imp/tbemd/include/pthread.h user/imp/tbemd/include/termios.h user/imp/tbemd/include/unistd.h user/imp/tbemd/lib/bind/config.h user/imp/tbemd/lib/bind/isc/isc/platform.h user/imp/tbemd/lib/clang/Makefile user/imp/tbemd/lib/clang/clang.build.mk user/imp/tbemd/lib/clang/include/clang/Basic/Version.inc user/imp/tbemd/lib/clang/include/llvm/Config/config.h user/imp/tbemd/lib/clang/libclanganalysis/Makefile user/imp/tbemd/lib/clang/libclangast/Makefile user/imp/tbemd/lib/clang/libclangbasic/Makefile user/imp/tbemd/lib/clang/libclangchecker/Makefile user/imp/tbemd/lib/clang/libclangcodegen/Makefile user/imp/tbemd/lib/clang/libclangfrontend/Makefile user/imp/tbemd/lib/clang/libclangparse/Makefile user/imp/tbemd/lib/clang/libclangsema/Makefile user/imp/tbemd/lib/clang/libllvmanalysis/Makefile user/imp/tbemd/lib/clang/libllvmarmasmparser/Makefile user/imp/tbemd/lib/clang/libllvmarmasmprinter/Makefile user/imp/tbemd/lib/clang/libllvmarmcodegen/Makefile user/imp/tbemd/lib/clang/libllvmarminfo/Makefile user/imp/tbemd/lib/clang/libllvmbitreader/Makefile user/imp/tbemd/lib/clang/libllvmbitwriter/Makefile user/imp/tbemd/lib/clang/libllvmcodegen/Makefile user/imp/tbemd/lib/clang/libllvmcore/Makefile user/imp/tbemd/lib/clang/libllvminstcombine/Makefile user/imp/tbemd/lib/clang/libllvmipo/Makefile user/imp/tbemd/lib/clang/libllvmmc/Makefile user/imp/tbemd/lib/clang/libllvmmipscodegen/Makefile user/imp/tbemd/lib/clang/libllvmmipsinfo/Makefile user/imp/tbemd/lib/clang/libllvmpowerpccodegen/Makefile user/imp/tbemd/lib/clang/libllvmpowerpcinfo/Makefile user/imp/tbemd/lib/clang/libllvmscalaropts/Makefile user/imp/tbemd/lib/clang/libllvmsupport/Makefile user/imp/tbemd/lib/clang/libllvmsystem/Makefile user/imp/tbemd/lib/clang/libllvmtarget/Makefile user/imp/tbemd/lib/clang/libllvmtransformutils/Makefile user/imp/tbemd/lib/clang/libllvmx86asmparser/Makefile user/imp/tbemd/lib/clang/libllvmx86asmprinter/Makefile user/imp/tbemd/lib/clang/libllvmx86codegen/Makefile user/imp/tbemd/lib/clang/libllvmx86info/Makefile user/imp/tbemd/lib/csu/ia64/crtn.S user/imp/tbemd/lib/libarchive/archive.h user/imp/tbemd/lib/libarchive/archive_private.h user/imp/tbemd/lib/libarchive/archive_read.3 user/imp/tbemd/lib/libarchive/archive_read.c user/imp/tbemd/lib/libarchive/archive_read_disk.3 user/imp/tbemd/lib/libarchive/archive_read_disk.c user/imp/tbemd/lib/libarchive/archive_read_extract.c user/imp/tbemd/lib/libarchive/archive_read_support_format_zip.c user/imp/tbemd/lib/libarchive/archive_virtual.c user/imp/tbemd/lib/libarchive/archive_write.3 user/imp/tbemd/lib/libarchive/archive_write.c user/imp/tbemd/lib/libarchive/archive_write_disk.3 user/imp/tbemd/lib/libarchive/archive_write_disk.c user/imp/tbemd/lib/libarchive/libarchive-formats.5 user/imp/tbemd/lib/libarchive/libarchive.3 user/imp/tbemd/lib/libarchive/libarchive_internals.3 user/imp/tbemd/lib/libarchive/test/test_compat_zip.c user/imp/tbemd/lib/libbluetooth/bluetooth.h user/imp/tbemd/lib/libc/Makefile user/imp/tbemd/lib/libc/gen/Makefile.inc user/imp/tbemd/lib/libc/gen/Symbol.map user/imp/tbemd/lib/libc/gen/_pthread_stubs.c user/imp/tbemd/lib/libc/gen/confstr.3 user/imp/tbemd/lib/libc/gen/getcap.3 user/imp/tbemd/lib/libc/gen/pututxline.c user/imp/tbemd/lib/libc/gen/sem.c user/imp/tbemd/lib/libc/gen/sem_new.c user/imp/tbemd/lib/libc/gen/stringlist.3 user/imp/tbemd/lib/libc/gen/sysconf.c user/imp/tbemd/lib/libc/gen/sysctl.3 user/imp/tbemd/lib/libc/gen/tcsetattr.3 user/imp/tbemd/lib/libc/gen/termios.c user/imp/tbemd/lib/libc/i386/string/Makefile.inc user/imp/tbemd/lib/libc/include/libc_private.h user/imp/tbemd/lib/libc/locale/localeconv.3 user/imp/tbemd/lib/libc/locale/setlocale.3 user/imp/tbemd/lib/libc/mips/SYS.h user/imp/tbemd/lib/libc/net/getnetent.3 user/imp/tbemd/lib/libc/net/getproto.c user/imp/tbemd/lib/libc/net/getprotoent.3 user/imp/tbemd/lib/libc/net/getprotoent.c user/imp/tbemd/lib/libc/net/getprotoname.c user/imp/tbemd/lib/libc/net/nsdispatch.3 user/imp/tbemd/lib/libc/net/nsdispatch.c user/imp/tbemd/lib/libc/net/nslexer.l user/imp/tbemd/lib/libc/posix1e/acl_add_flag_np.3 user/imp/tbemd/lib/libc/posix1e/acl_add_perm.3 user/imp/tbemd/lib/libc/posix1e/acl_get.3 user/imp/tbemd/lib/libc/posix1e/acl_set.3 user/imp/tbemd/lib/libc/posix1e/acl_set_entry_type_np.3 user/imp/tbemd/lib/libc/posix1e/acl_set_tag_type.3 user/imp/tbemd/lib/libc/posix1e/acl_strip.c user/imp/tbemd/lib/libc/regex/re_format.7 user/imp/tbemd/lib/libc/stdlib/malloc.3 user/imp/tbemd/lib/libc/stdlib/rand.3 user/imp/tbemd/lib/libc/stdlib/random.3 user/imp/tbemd/lib/libc/stdlib/strtod.3 user/imp/tbemd/lib/libc/stdlib/strtonum.3 user/imp/tbemd/lib/libc/sys/aio_read.2 user/imp/tbemd/lib/libc/sys/aio_write.2 user/imp/tbemd/lib/libc/sys/chflags.2 user/imp/tbemd/lib/libc/sys/clock_gettime.2 user/imp/tbemd/lib/libc/sys/execve.2 user/imp/tbemd/lib/libc/sys/getpriority.2 user/imp/tbemd/lib/libc/sys/gettimeofday.2 user/imp/tbemd/lib/libc/sys/kldstat.2 user/imp/tbemd/lib/libc/sys/kldsym.2 user/imp/tbemd/lib/libc/sys/kqueue.2 user/imp/tbemd/lib/libc/sys/modstat.2 user/imp/tbemd/lib/libc/sys/pathconf.2 user/imp/tbemd/lib/libc/sys/recv.2 user/imp/tbemd/lib/libc/sys/sched_setscheduler.2 user/imp/tbemd/lib/libc/sys/stack_protector.c user/imp/tbemd/lib/libc/sys/stat.2 user/imp/tbemd/lib/libc/uuid/uuid.3 user/imp/tbemd/lib/libcam/cam.3 user/imp/tbemd/lib/libcam/cam_cdbparse.3 user/imp/tbemd/lib/libcam/camlib.c user/imp/tbemd/lib/libdisk/libdisk.3 user/imp/tbemd/lib/libelf/elf_begin.3 user/imp/tbemd/lib/libfetch/common.c user/imp/tbemd/lib/libgeom/geom_ctl.c user/imp/tbemd/lib/libgeom/geom_xml2tree.c user/imp/tbemd/lib/libgssapi/gssapi.3 user/imp/tbemd/lib/libjail/jail.3 user/imp/tbemd/lib/libjail/jail.c user/imp/tbemd/lib/libkvm/Makefile user/imp/tbemd/lib/libkvm/kvm_mips.c user/imp/tbemd/lib/libkvm/kvm_private.h user/imp/tbemd/lib/liblzma/Makefile user/imp/tbemd/lib/liblzma/config.h user/imp/tbemd/lib/libpcap/Makefile user/imp/tbemd/lib/libpcap/config.h user/imp/tbemd/lib/libpmc/pmc.mips.3 user/imp/tbemd/lib/libpmc/pmc.p4.3 user/imp/tbemd/lib/libpmc/pmc.westmere.3 user/imp/tbemd/lib/libpmc/pmc.westmereuc.3 user/imp/tbemd/lib/libpmc/pmc.xscale.3 user/imp/tbemd/lib/libproc/proc_util.c user/imp/tbemd/lib/libradius/Makefile user/imp/tbemd/lib/libradius/radius.conf.5 user/imp/tbemd/lib/librt/Makefile user/imp/tbemd/lib/librt/mq.c user/imp/tbemd/lib/libstand/libstand.3 user/imp/tbemd/lib/libstand/net.h user/imp/tbemd/lib/libtacplus/libtacplus.3 user/imp/tbemd/lib/libthr/Makefile user/imp/tbemd/lib/libthr/pthread.map user/imp/tbemd/lib/libthr/thread/thr_attr.c user/imp/tbemd/lib/libthr/thread/thr_cancel.c user/imp/tbemd/lib/libthr/thread/thr_clean.c user/imp/tbemd/lib/libthr/thread/thr_cond.c user/imp/tbemd/lib/libthr/thread/thr_create.c user/imp/tbemd/lib/libthr/thread/thr_exit.c user/imp/tbemd/lib/libthr/thread/thr_fork.c user/imp/tbemd/lib/libthr/thread/thr_init.c user/imp/tbemd/lib/libthr/thread/thr_join.c user/imp/tbemd/lib/libthr/thread/thr_mutex.c user/imp/tbemd/lib/libthr/thread/thr_private.h user/imp/tbemd/lib/libthr/thread/thr_rwlock.c user/imp/tbemd/lib/libthr/thread/thr_rwlockattr.c user/imp/tbemd/lib/libthr/thread/thr_sig.c user/imp/tbemd/lib/libulog/ulog_login.3 user/imp/tbemd/lib/libusb/Makefile user/imp/tbemd/lib/libusb/libusb.3 user/imp/tbemd/lib/libusb/libusb.h user/imp/tbemd/lib/libusb/libusb10.c user/imp/tbemd/lib/libusb/libusb10_io.c user/imp/tbemd/lib/libusb/libusb20.3 user/imp/tbemd/lib/libusb/libusb20.c user/imp/tbemd/lib/libusb/libusb20_compat01.c user/imp/tbemd/lib/libusb/libusb20_int.h user/imp/tbemd/lib/libusb/libusb20_ugen20.c user/imp/tbemd/lib/libusb/usb.h user/imp/tbemd/lib/libusbhid/Makefile user/imp/tbemd/lib/libusbhid/descr.c user/imp/tbemd/lib/libusbhid/usbvar.h user/imp/tbemd/lib/libutil/realhostname.3 user/imp/tbemd/lib/libutil/realhostname_sa.3 user/imp/tbemd/lib/libvgl/simple.c user/imp/tbemd/lib/libz/minigzip.c user/imp/tbemd/lib/msun/amd64/s_logbl.S user/imp/tbemd/lib/msun/i387/e_exp.S user/imp/tbemd/lib/msun/i387/e_fmod.S user/imp/tbemd/lib/msun/i387/e_log.S user/imp/tbemd/lib/msun/i387/e_log10.S user/imp/tbemd/lib/msun/i387/e_remainder.S user/imp/tbemd/lib/msun/i387/e_sqrt.S user/imp/tbemd/lib/msun/i387/e_sqrtl.S user/imp/tbemd/lib/msun/i387/s_ceil.S user/imp/tbemd/lib/msun/i387/s_copysign.S user/imp/tbemd/lib/msun/i387/s_cos.S user/imp/tbemd/lib/msun/i387/s_finite.S user/imp/tbemd/lib/msun/i387/s_floor.S user/imp/tbemd/lib/msun/i387/s_logb.S user/imp/tbemd/lib/msun/i387/s_logbl.S user/imp/tbemd/lib/msun/i387/s_rint.S user/imp/tbemd/lib/msun/i387/s_rintl.S user/imp/tbemd/lib/msun/i387/s_scalbn.S user/imp/tbemd/lib/msun/i387/s_significand.S user/imp/tbemd/lib/msun/i387/s_sin.S user/imp/tbemd/lib/msun/i387/s_tan.S user/imp/tbemd/libexec/bootpd/bootptab.5 user/imp/tbemd/libexec/ftpd/ftpd.8 user/imp/tbemd/libexec/getty/gettytab.5 user/imp/tbemd/libexec/getty/main.c user/imp/tbemd/libexec/rlogind/rlogind.c user/imp/tbemd/libexec/rtld-elf/Makefile user/imp/tbemd/libexec/rtld-elf/ia64/reloc.c user/imp/tbemd/libexec/rtld-elf/powerpc/reloc.c user/imp/tbemd/libexec/rtld-elf/rtld.1 user/imp/tbemd/libexec/rtld-elf/rtld.c user/imp/tbemd/libexec/rtld-elf/rtld.h user/imp/tbemd/libexec/tftpd/Makefile user/imp/tbemd/libexec/tftpd/tftp-file.c user/imp/tbemd/libexec/tftpd/tftp-io.c user/imp/tbemd/libexec/tftpd/tftp-options.c user/imp/tbemd/libexec/tftpd/tftp-utils.c user/imp/tbemd/libexec/tftpd/tftp-utils.h user/imp/tbemd/libexec/tftpd/tftpd.8 user/imp/tbemd/libexec/tftpd/tftpd.c user/imp/tbemd/release/Makefile.inc.docports user/imp/tbemd/release/doc/en_US.ISO8859-1/hardware/article.sgml user/imp/tbemd/release/fixit.profile user/imp/tbemd/release/picobsd/build/picobsd user/imp/tbemd/release/powerpc/mkisoimages.sh user/imp/tbemd/release/sparc64/boot_crunch.conf user/imp/tbemd/sbin/camcontrol/camcontrol.8 user/imp/tbemd/sbin/camcontrol/camcontrol.c user/imp/tbemd/sbin/ccdconfig/ccdconfig.8 user/imp/tbemd/sbin/devd/devd.cc user/imp/tbemd/sbin/devd/devd.conf.5 user/imp/tbemd/sbin/fdisk/fdisk.c user/imp/tbemd/sbin/fsirand/fsirand.8 user/imp/tbemd/sbin/geom/class/concat/geom_concat.c user/imp/tbemd/sbin/geom/class/eli/geli.8 user/imp/tbemd/sbin/geom/class/eli/geom_eli.c user/imp/tbemd/sbin/geom/class/journal/geom_journal.c user/imp/tbemd/sbin/geom/class/journal/gjournal.8 user/imp/tbemd/sbin/geom/class/mirror/geom_mirror.c user/imp/tbemd/sbin/geom/class/part/geom_part.c user/imp/tbemd/sbin/geom/class/part/gpart.8 user/imp/tbemd/sbin/geom/class/raid3/geom_raid3.c user/imp/tbemd/sbin/geom/class/raid3/graid3.8 user/imp/tbemd/sbin/geom/class/shsec/geom_shsec.c user/imp/tbemd/sbin/geom/class/stripe/geom_stripe.c user/imp/tbemd/sbin/geom/class/virstor/geom_virstor.c user/imp/tbemd/sbin/geom/core/geom.c user/imp/tbemd/sbin/geom/core/geom.h user/imp/tbemd/sbin/geom/misc/subr.c user/imp/tbemd/sbin/geom/misc/subr.h user/imp/tbemd/sbin/growfs/growfs.c user/imp/tbemd/sbin/hastd/control.c user/imp/tbemd/sbin/hastd/control.h user/imp/tbemd/sbin/hastd/hastd.c user/imp/tbemd/sbin/hastd/hastd.h user/imp/tbemd/sbin/hastd/hooks.c user/imp/tbemd/sbin/hastd/hooks.h user/imp/tbemd/sbin/hastd/nv.c user/imp/tbemd/sbin/hastd/nv.h user/imp/tbemd/sbin/hastd/parse.y user/imp/tbemd/sbin/hastd/pjdlog.c user/imp/tbemd/sbin/hastd/primary.c user/imp/tbemd/sbin/hastd/secondary.c user/imp/tbemd/sbin/hastd/synch.h user/imp/tbemd/sbin/ipfw/ipfw.8 user/imp/tbemd/sbin/mknod/mknod.8 user/imp/tbemd/sbin/mksnap_ffs/mksnap_ffs.c user/imp/tbemd/sbin/mount/mount.c user/imp/tbemd/sbin/mount_nfs/mount_nfs.c user/imp/tbemd/sbin/mount_unionfs/mount_unionfs.8 user/imp/tbemd/sbin/newfs/mkfs.c user/imp/tbemd/sbin/newfs/newfs.8 user/imp/tbemd/sbin/pflogd/Makefile user/imp/tbemd/sbin/reboot/nextboot.sh user/imp/tbemd/sbin/reboot/reboot.8 user/imp/tbemd/sbin/restore/restore.8 user/imp/tbemd/sbin/routed/routed.8 user/imp/tbemd/sbin/setkey/setkey.8 user/imp/tbemd/sbin/sunlabel/sunlabel.8 user/imp/tbemd/sbin/sysctl/sysctl.c user/imp/tbemd/share/dict/web2 user/imp/tbemd/share/examples/Makefile user/imp/tbemd/share/examples/etc/README.examples user/imp/tbemd/share/man/man3/fpgetround.3 user/imp/tbemd/share/man/man3/pthread_attr_affinity_np.3 user/imp/tbemd/share/man/man4/Makefile user/imp/tbemd/share/man/man4/acpi.4 user/imp/tbemd/share/man/man4/acpi_hp.4 user/imp/tbemd/share/man/man4/ada.4 user/imp/tbemd/share/man/man4/ahci.4 user/imp/tbemd/share/man/man4/aibs.4 user/imp/tbemd/share/man/man4/ata.4 user/imp/tbemd/share/man/man4/aue.4 user/imp/tbemd/share/man/man4/axe.4 user/imp/tbemd/share/man/man4/bge.4 user/imp/tbemd/share/man/man4/bpf.4 user/imp/tbemd/share/man/man4/bt.4 user/imp/tbemd/share/man/man4/bwi.4 user/imp/tbemd/share/man/man4/bwn.4 user/imp/tbemd/share/man/man4/cd.4 user/imp/tbemd/share/man/man4/ch.4 user/imp/tbemd/share/man/man4/cpuctl.4 user/imp/tbemd/share/man/man4/dc.4 user/imp/tbemd/share/man/man4/ddb.4 user/imp/tbemd/share/man/man4/de.4 user/imp/tbemd/share/man/man4/digi.4 user/imp/tbemd/share/man/man4/igmp.4 user/imp/tbemd/share/man/man4/inet.4 user/imp/tbemd/share/man/man4/ipw.4 user/imp/tbemd/share/man/man4/iscsi_initiator.4 user/imp/tbemd/share/man/man4/isp.4 user/imp/tbemd/share/man/man4/iwi.4 user/imp/tbemd/share/man/man4/iwn.4 user/imp/tbemd/share/man/man4/joy.4 user/imp/tbemd/share/man/man4/keyboard.4 user/imp/tbemd/share/man/man4/lagg.4 user/imp/tbemd/share/man/man4/led.4 user/imp/tbemd/share/man/man4/lpbb.4 user/imp/tbemd/share/man/man4/mac_biba.4 user/imp/tbemd/share/man/man4/mac_lomac.4 user/imp/tbemd/share/man/man4/mac_portacl.4 user/imp/tbemd/share/man/man4/malo.4 user/imp/tbemd/share/man/man4/man4.arm/mge.4 user/imp/tbemd/share/man/man4/man4.i386/ep.4 user/imp/tbemd/share/man/man4/man4.i386/mse.4 user/imp/tbemd/share/man/man4/man4.powerpc/tsec.4 user/imp/tbemd/share/man/man4/man4.sparc64/openfirm.4 user/imp/tbemd/share/man/man4/man4.sparc64/openprom.4 user/imp/tbemd/share/man/man4/meteor.4 user/imp/tbemd/share/man/man4/mk48txx.4 user/imp/tbemd/share/man/man4/mld.4 user/imp/tbemd/share/man/man4/mpt.4 user/imp/tbemd/share/man/man4/mtio.4 user/imp/tbemd/share/man/man4/mvs.4 user/imp/tbemd/share/man/man4/mwl.4 user/imp/tbemd/share/man/man4/netintro.4 user/imp/tbemd/share/man/man4/ng_UI.4 user/imp/tbemd/share/man/man4/ng_async.4 user/imp/tbemd/share/man/man4/ng_cisco.4 user/imp/tbemd/share/man/man4/ng_frame_relay.4 user/imp/tbemd/share/man/man4/ng_gif.4 user/imp/tbemd/share/man/man4/ng_iface.4 user/imp/tbemd/share/man/man4/ng_l2cap.4 user/imp/tbemd/share/man/man4/ng_lmi.4 user/imp/tbemd/share/man/man4/ng_pppoe.4 user/imp/tbemd/share/man/man4/ng_rfc1490.4 user/imp/tbemd/share/man/man4/ng_tee.4 user/imp/tbemd/share/man/man4/ng_tty.4 user/imp/tbemd/share/man/man4/ng_vjc.4 user/imp/tbemd/share/man/man4/nxge.4 user/imp/tbemd/share/man/man4/pci.4 user/imp/tbemd/share/man/man4/pcn.4 user/imp/tbemd/share/man/man4/psm.4 user/imp/tbemd/share/man/man4/pt.4 user/imp/tbemd/share/man/man4/pts.4 user/imp/tbemd/share/man/man4/pty.4 user/imp/tbemd/share/man/man4/ral.4 user/imp/tbemd/share/man/man4/random.4 user/imp/tbemd/share/man/man4/re.4 user/imp/tbemd/share/man/man4/rl.4 user/imp/tbemd/share/man/man4/rum.4 user/imp/tbemd/share/man/man4/run.4 user/imp/tbemd/share/man/man4/screen.4 user/imp/tbemd/share/man/man4/ses.4 user/imp/tbemd/share/man/man4/sf.4 user/imp/tbemd/share/man/man4/siftr.4 user/imp/tbemd/share/man/man4/siis.4 user/imp/tbemd/share/man/man4/sis.4 user/imp/tbemd/share/man/man4/sk.4 user/imp/tbemd/share/man/man4/smb.4 user/imp/tbemd/share/man/man4/snd_hda.4 user/imp/tbemd/share/man/man4/ste.4 user/imp/tbemd/share/man/man4/sym.4 user/imp/tbemd/share/man/man4/syscons.4 user/imp/tbemd/share/man/man4/tcp.4 user/imp/tbemd/share/man/man4/ti.4 user/imp/tbemd/share/man/man4/tl.4 user/imp/tbemd/share/man/man4/tx.4 user/imp/tbemd/share/man/man4/uath.4 user/imp/tbemd/share/man/man4/upgt.4 user/imp/tbemd/share/man/man4/ural.4 user/imp/tbemd/share/man/man4/urtw.4 user/imp/tbemd/share/man/man4/vr.4 user/imp/tbemd/share/man/man4/wb.4 user/imp/tbemd/share/man/man4/wi.4 user/imp/tbemd/share/man/man4/wpi.4 user/imp/tbemd/share/man/man4/xl.4 user/imp/tbemd/share/man/man5/devfs.5 user/imp/tbemd/share/man/man5/device.hints.5 user/imp/tbemd/share/man/man5/elf.5 user/imp/tbemd/share/man/man5/fdescfs.5 user/imp/tbemd/share/man/man5/freebsd-update.conf.5 user/imp/tbemd/share/man/man5/link.5 user/imp/tbemd/share/man/man5/mailer.conf.5 user/imp/tbemd/share/man/man5/make.conf.5 user/imp/tbemd/share/man/man5/nsmb.conf.5 user/imp/tbemd/share/man/man5/passwd.5 user/imp/tbemd/share/man/man5/quota.user.5 user/imp/tbemd/share/man/man5/resolver.5 user/imp/tbemd/share/man/man7/Makefile user/imp/tbemd/share/man/man7/build.7 user/imp/tbemd/share/man/man7/firewall.7 user/imp/tbemd/share/man/man7/sdoc.7 user/imp/tbemd/share/man/man7/tuning.7 user/imp/tbemd/share/man/man8/picobsd.8 user/imp/tbemd/share/man/man8/rc.8 user/imp/tbemd/share/man/man8/rc.sendmail.8 user/imp/tbemd/share/man/man9/BUS_SETUP_INTR.9 user/imp/tbemd/share/man/man9/DB_COMMAND.9 user/imp/tbemd/share/man/man9/MD5.9 user/imp/tbemd/share/man/man9/Makefile user/imp/tbemd/share/man/man9/VOP_GETPAGES.9 user/imp/tbemd/share/man/man9/VOP_READDIR.9 user/imp/tbemd/share/man/man9/fail.9 user/imp/tbemd/share/man/man9/ieee80211_ddb.9 user/imp/tbemd/share/man/man9/ieee80211_radiotap.9 user/imp/tbemd/share/man/man9/locking.9 user/imp/tbemd/share/man/man9/make_dev.9 user/imp/tbemd/share/man/man9/mbuf.9 user/imp/tbemd/share/man/man9/style.9 user/imp/tbemd/share/man/man9/sysctl_add_oid.9 user/imp/tbemd/share/man/man9/sysctl_ctx_init.9 user/imp/tbemd/share/man/man9/taskqueue.9 user/imp/tbemd/share/man/man9/timeout.9 user/imp/tbemd/share/man/man9/uio.9 user/imp/tbemd/share/man/man9/vm_page_io.9 user/imp/tbemd/share/man/man9/vm_page_wakeup.9 user/imp/tbemd/share/man/man9/vrele.9 user/imp/tbemd/share/man/man9/zone.9 user/imp/tbemd/share/misc/bsd-family-tree user/imp/tbemd/share/misc/committers-ports.dot user/imp/tbemd/share/misc/committers-src.dot user/imp/tbemd/share/mk/bsd.own.mk user/imp/tbemd/share/termcap/termcap.5 user/imp/tbemd/sys/amd64/acpica/acpi_wakeup.c user/imp/tbemd/sys/amd64/amd64/amd64_mem.c user/imp/tbemd/sys/amd64/amd64/apic_vector.S user/imp/tbemd/sys/amd64/amd64/busdma_machdep.c user/imp/tbemd/sys/amd64/amd64/fpu.c user/imp/tbemd/sys/amd64/amd64/genassym.c user/imp/tbemd/sys/amd64/amd64/identcpu.c user/imp/tbemd/sys/amd64/amd64/intr_machdep.c user/imp/tbemd/sys/amd64/amd64/machdep.c user/imp/tbemd/sys/amd64/amd64/mp_machdep.c user/imp/tbemd/sys/amd64/amd64/mp_watchdog.c user/imp/tbemd/sys/amd64/amd64/pmap.c user/imp/tbemd/sys/amd64/amd64/trap.c user/imp/tbemd/sys/amd64/conf/GENERIC user/imp/tbemd/sys/amd64/conf/NOTES user/imp/tbemd/sys/amd64/include/pmap.h user/imp/tbemd/sys/amd64/include/profile.h user/imp/tbemd/sys/amd64/include/specialreg.h user/imp/tbemd/sys/amd64/include/vmparam.h user/imp/tbemd/sys/amd64/linux32/linux32_proto.h user/imp/tbemd/sys/amd64/linux32/linux32_syscall.h user/imp/tbemd/sys/amd64/linux32/linux32_sysent.c user/imp/tbemd/sys/amd64/linux32/linux32_sysvec.c user/imp/tbemd/sys/amd64/linux32/syscalls.master user/imp/tbemd/sys/arm/arm/cpufunc.c user/imp/tbemd/sys/arm/arm/cpufunc_asm_sheeva.S user/imp/tbemd/sys/arm/arm/elf_trampoline.c user/imp/tbemd/sys/arm/arm/machdep.c user/imp/tbemd/sys/arm/at91/at91.c user/imp/tbemd/sys/arm/at91/at91_machdep.c user/imp/tbemd/sys/arm/at91/at91_mci.c user/imp/tbemd/sys/arm/at91/at91_pio.c user/imp/tbemd/sys/arm/at91/at91_pio_rm9200.h user/imp/tbemd/sys/arm/at91/at91_pioreg.h user/imp/tbemd/sys/arm/at91/at91_pit.c user/imp/tbemd/sys/arm/at91/at91_pmc.c user/imp/tbemd/sys/arm/at91/at91_pmcreg.h user/imp/tbemd/sys/arm/at91/at91_pmcvar.h user/imp/tbemd/sys/arm/at91/at91_twi.c user/imp/tbemd/sys/arm/at91/at91_twireg.h user/imp/tbemd/sys/arm/at91/at91rm92reg.h user/imp/tbemd/sys/arm/at91/at91sam9g20reg.h user/imp/tbemd/sys/arm/at91/at91var.h user/imp/tbemd/sys/arm/at91/board_hl201.c user/imp/tbemd/sys/arm/at91/board_kb920x.c user/imp/tbemd/sys/arm/at91/files.at91 user/imp/tbemd/sys/arm/at91/files.at91sam9 user/imp/tbemd/sys/arm/at91/if_ate.c user/imp/tbemd/sys/arm/at91/if_atereg.h user/imp/tbemd/sys/arm/at91/if_macb.c user/imp/tbemd/sys/arm/at91/std.at91sam9 user/imp/tbemd/sys/arm/at91/std.kb920x user/imp/tbemd/sys/arm/at91/uart_cpu_at91rm9200usart.c user/imp/tbemd/sys/arm/at91/uart_dev_at91usart.c user/imp/tbemd/sys/arm/conf/AVILA user/imp/tbemd/sys/arm/conf/AVILA.hints user/imp/tbemd/sys/arm/econa/if_ece.c user/imp/tbemd/sys/arm/include/cpuconf.h user/imp/tbemd/sys/arm/include/cpufunc.h user/imp/tbemd/sys/arm/mv/mv_sata.c user/imp/tbemd/sys/arm/mv/timer.c user/imp/tbemd/sys/arm/xscale/ixp425/files.avila user/imp/tbemd/sys/arm/xscale/ixp425/if_npe.c user/imp/tbemd/sys/arm/xscale/ixp425/ixp425_qmgr.c user/imp/tbemd/sys/arm/xscale/ixp425/ixp425reg.h user/imp/tbemd/sys/boot/arm/ixp425/boot2/ixp425_board.c user/imp/tbemd/sys/boot/common/loader.8 user/imp/tbemd/sys/boot/forth/beastie.4th user/imp/tbemd/sys/boot/forth/loader.conf user/imp/tbemd/sys/boot/i386/boot2/Makefile user/imp/tbemd/sys/boot/i386/boot2/boot2.c user/imp/tbemd/sys/boot/i386/gptboot/Makefile user/imp/tbemd/sys/boot/i386/gptboot/gptboot.c user/imp/tbemd/sys/boot/i386/gptzfsboot/Makefile user/imp/tbemd/sys/boot/i386/libi386/biosacpi.c user/imp/tbemd/sys/boot/i386/libi386/biosdisk.c user/imp/tbemd/sys/boot/i386/libi386/i386_module.c user/imp/tbemd/sys/boot/i386/loader/help.i386 user/imp/tbemd/sys/boot/i386/zfsboot/Makefile user/imp/tbemd/sys/boot/i386/zfsboot/zfsboot.c user/imp/tbemd/sys/boot/ofw/common/main.c user/imp/tbemd/sys/boot/ofw/libofw/ofw_memory.c user/imp/tbemd/sys/boot/ofw/libofw/ofw_net.c user/imp/tbemd/sys/boot/ofw/libofw/openfirm.c user/imp/tbemd/sys/boot/pc98/boot2/Makefile user/imp/tbemd/sys/boot/pc98/boot2/boot2.c user/imp/tbemd/sys/boot/sparc64/boot1/boot1.c user/imp/tbemd/sys/boot/sparc64/loader/main.c user/imp/tbemd/sys/boot/zfs/Makefile user/imp/tbemd/sys/boot/zfs/zfs.c user/imp/tbemd/sys/boot/zfs/zfsimpl.c user/imp/tbemd/sys/cam/ata/ata_da.c user/imp/tbemd/sys/cam/cam_periph.c user/imp/tbemd/sys/cam/cam_xpt.c user/imp/tbemd/sys/cam/scsi/scsi_da.c user/imp/tbemd/sys/cam/scsi/scsi_pass.c user/imp/tbemd/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c user/imp/tbemd/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c user/imp/tbemd/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c user/imp/tbemd/sys/cddl/compat/opensolaris/sys/vnode.h user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scrub.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ctldir.h user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil.h user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c user/imp/tbemd/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c user/imp/tbemd/sys/compat/linprocfs/linprocfs.c user/imp/tbemd/sys/compat/linux/linux_futex.c user/imp/tbemd/sys/compat/linux/linux_util.h user/imp/tbemd/sys/compat/ndis/kern_ndis.c user/imp/tbemd/sys/compat/ndis/subr_ndis.c user/imp/tbemd/sys/compat/ndis/subr_ntoskrnl.c user/imp/tbemd/sys/compat/svr4/svr4_sysvec.c user/imp/tbemd/sys/compat/x86bios/x86bios.c user/imp/tbemd/sys/conf/NOTES user/imp/tbemd/sys/conf/files user/imp/tbemd/sys/conf/files.amd64 user/imp/tbemd/sys/conf/files.i386 user/imp/tbemd/sys/conf/files.mips user/imp/tbemd/sys/conf/files.pc98 user/imp/tbemd/sys/conf/files.powerpc user/imp/tbemd/sys/conf/kern.post.mk user/imp/tbemd/sys/conf/kmod.mk user/imp/tbemd/sys/conf/ldscript.mips.octeon1.64 user/imp/tbemd/sys/conf/newvers.sh user/imp/tbemd/sys/conf/options user/imp/tbemd/sys/conf/options.amd64 user/imp/tbemd/sys/conf/options.arm user/imp/tbemd/sys/conf/options.powerpc user/imp/tbemd/sys/contrib/dev/acpica/acpica_prep.sh user/imp/tbemd/sys/contrib/dev/acpica/changes.txt user/imp/tbemd/sys/contrib/dev/acpica/common/adfile.c user/imp/tbemd/sys/contrib/dev/acpica/common/adisasm.c user/imp/tbemd/sys/contrib/dev/acpica/common/adwalk.c user/imp/tbemd/sys/contrib/dev/acpica/common/dmrestag.c user/imp/tbemd/sys/contrib/dev/acpica/common/getopt.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslanalyze.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcodegen.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompile.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslcompiler.h user/imp/tbemd/sys/contrib/dev/acpica/compiler/asldefine.h user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslerror.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslfiles.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/asllisting.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/asllookup.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslmain.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslopcodes.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslpredef.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslresource.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslrestype1.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslrestype1i.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslrestype2d.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslrestype2e.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslrestype2q.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslrestype2w.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslstartup.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/asltypes.h user/imp/tbemd/sys/contrib/dev/acpica/compiler/aslutils.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/dtcompile.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/dtio.c user/imp/tbemd/sys/contrib/dev/acpica/compiler/dttemplate.c user/imp/tbemd/sys/contrib/dev/acpica/debugger/dbexec.c user/imp/tbemd/sys/contrib/dev/acpica/events/evrgnini.c user/imp/tbemd/sys/contrib/dev/acpica/events/evxfregn.c user/imp/tbemd/sys/contrib/dev/acpica/executer/exmutex.c user/imp/tbemd/sys/contrib/dev/acpica/include/acapps.h user/imp/tbemd/sys/contrib/dev/acpica/include/acglobal.h user/imp/tbemd/sys/contrib/dev/acpica/include/achware.h user/imp/tbemd/sys/contrib/dev/acpica/include/aclocal.h user/imp/tbemd/sys/contrib/dev/acpica/include/acmacros.h user/imp/tbemd/sys/contrib/dev/acpica/include/acnamesp.h user/imp/tbemd/sys/contrib/dev/acpica/include/acpiosxf.h user/imp/tbemd/sys/contrib/dev/acpica/include/acpixf.h user/imp/tbemd/sys/contrib/dev/acpica/include/actypes.h user/imp/tbemd/sys/contrib/dev/acpica/include/acutils.h user/imp/tbemd/sys/contrib/dev/acpica/include/platform/acenv.h user/imp/tbemd/sys/contrib/dev/acpica/include/platform/acfreebsd.h user/imp/tbemd/sys/contrib/dev/acpica/include/platform/acgcc.h user/imp/tbemd/sys/contrib/dev/acpica/namespace/nsrepair2.c user/imp/tbemd/sys/contrib/dev/acpica/namespace/nsutils.c user/imp/tbemd/sys/contrib/dev/acpica/osunixxf.c user/imp/tbemd/sys/contrib/dev/acpica/tables/tbfadt.c user/imp/tbemd/sys/contrib/dev/acpica/tools/acpiexec/aecommon.h user/imp/tbemd/sys/contrib/dev/acpica/utilities/utdebug.c user/imp/tbemd/sys/contrib/dev/acpica/utilities/utglobal.c user/imp/tbemd/sys/contrib/dev/acpica/utilities/utids.c user/imp/tbemd/sys/contrib/dev/acpica/utilities/utmath.c user/imp/tbemd/sys/contrib/dev/acpica/utilities/utmisc.c user/imp/tbemd/sys/contrib/dev/acpica/utilities/utmutex.c user/imp/tbemd/sys/contrib/dev/acpica/utilities/utosi.c user/imp/tbemd/sys/contrib/ipfilter/netinet/mlfk_ipl.c user/imp/tbemd/sys/contrib/ngatm/netnatm/api/cc_conn.c user/imp/tbemd/sys/contrib/ngatm/netnatm/msg/privmsg.c user/imp/tbemd/sys/contrib/ngatm/netnatm/msg/uni_ie.c user/imp/tbemd/sys/contrib/ngatm/netnatm/sig/sig_call.c user/imp/tbemd/sys/contrib/ngatm/netnatm/sig/sig_reset.c user/imp/tbemd/sys/contrib/octeon-sdk/cvmx-app-init.h user/imp/tbemd/sys/contrib/octeon-sdk/cvmx-helper-board.c user/imp/tbemd/sys/contrib/octeon-sdk/cvmx-helper-spi.c user/imp/tbemd/sys/contrib/octeon-sdk/cvmx-helper.c user/imp/tbemd/sys/contrib/octeon-sdk/cvmx-spi.c user/imp/tbemd/sys/contrib/pf/netinet/in4_cksum.c user/imp/tbemd/sys/crypto/aesni/aeskeys_i386.S user/imp/tbemd/sys/crypto/aesni/aesni.c user/imp/tbemd/sys/crypto/aesni/aesni.h user/imp/tbemd/sys/crypto/aesni/aesni_wrap.c user/imp/tbemd/sys/dev/aac/aac.c user/imp/tbemd/sys/dev/aac/aac_cam.c user/imp/tbemd/sys/dev/aac/aac_disk.c user/imp/tbemd/sys/dev/aac/aacreg.h user/imp/tbemd/sys/dev/aac/aacvar.h user/imp/tbemd/sys/dev/acpi_support/acpi_wmi.c user/imp/tbemd/sys/dev/acpica/Osd/OsdHardware.c user/imp/tbemd/sys/dev/acpica/acpi.c user/imp/tbemd/sys/dev/acpica/acpi_cpu.c user/imp/tbemd/sys/dev/acpica/acpi_ec.c user/imp/tbemd/sys/dev/acpica/acpi_hpet.c user/imp/tbemd/sys/dev/acpica/acpi_if.m user/imp/tbemd/sys/dev/acpica/acpi_pci.c user/imp/tbemd/sys/dev/acpica/acpi_pci_link.c user/imp/tbemd/sys/dev/ae/if_ae.c user/imp/tbemd/sys/dev/ae/if_aevar.h user/imp/tbemd/sys/dev/age/if_age.c user/imp/tbemd/sys/dev/agp/agp.c user/imp/tbemd/sys/dev/ahci/ahci.c user/imp/tbemd/sys/dev/alc/if_alc.c user/imp/tbemd/sys/dev/ale/if_ale.c user/imp/tbemd/sys/dev/ata/ata-all.c user/imp/tbemd/sys/dev/ata/ata-all.h user/imp/tbemd/sys/dev/ata/ata-disk.c user/imp/tbemd/sys/dev/ata/ata-lowlevel.c user/imp/tbemd/sys/dev/ata/ata-pci.c user/imp/tbemd/sys/dev/ata/ata-sata.c user/imp/tbemd/sys/dev/ata/chipsets/ata-ahci.c user/imp/tbemd/sys/dev/ata/chipsets/ata-intel.c user/imp/tbemd/sys/dev/ata/chipsets/ata-marvell.c user/imp/tbemd/sys/dev/ata/chipsets/ata-nvidia.c user/imp/tbemd/sys/dev/ata/chipsets/ata-promise.c user/imp/tbemd/sys/dev/ata/chipsets/ata-siliconimage.c user/imp/tbemd/sys/dev/ata/chipsets/ata-via.c user/imp/tbemd/sys/dev/bce/if_bce.c user/imp/tbemd/sys/dev/bce/if_bcereg.h user/imp/tbemd/sys/dev/bfe/if_bfe.c user/imp/tbemd/sys/dev/bge/if_bge.c user/imp/tbemd/sys/dev/bge/if_bgereg.h user/imp/tbemd/sys/dev/bm/if_bm.c user/imp/tbemd/sys/dev/bwi/if_bwi.c user/imp/tbemd/sys/dev/bwn/if_bwn.c user/imp/tbemd/sys/dev/cas/if_cas.c user/imp/tbemd/sys/dev/cas/if_casvar.h user/imp/tbemd/sys/dev/ciss/ciss.c user/imp/tbemd/sys/dev/cxgb/common/cxgb_t3_hw.c user/imp/tbemd/sys/dev/cxgb/cxgb_sge.c user/imp/tbemd/sys/dev/dc/dcphy.c user/imp/tbemd/sys/dev/dc/if_dc.c user/imp/tbemd/sys/dev/dc/if_dcreg.h user/imp/tbemd/sys/dev/dc/pnphy.c user/imp/tbemd/sys/dev/drm/r300_reg.h user/imp/tbemd/sys/dev/e1000/e1000_82571.c user/imp/tbemd/sys/dev/e1000/e1000_82571.h user/imp/tbemd/sys/dev/e1000/e1000_82575.c user/imp/tbemd/sys/dev/e1000/e1000_82575.h user/imp/tbemd/sys/dev/e1000/e1000_api.c user/imp/tbemd/sys/dev/e1000/e1000_api.h user/imp/tbemd/sys/dev/e1000/e1000_defines.h user/imp/tbemd/sys/dev/e1000/e1000_hw.h user/imp/tbemd/sys/dev/e1000/e1000_ich8lan.c user/imp/tbemd/sys/dev/e1000/e1000_ich8lan.h user/imp/tbemd/sys/dev/e1000/e1000_mac.c user/imp/tbemd/sys/dev/e1000/e1000_nvm.c user/imp/tbemd/sys/dev/e1000/e1000_nvm.h user/imp/tbemd/sys/dev/e1000/e1000_phy.c user/imp/tbemd/sys/dev/e1000/e1000_phy.h user/imp/tbemd/sys/dev/e1000/e1000_regs.h user/imp/tbemd/sys/dev/e1000/if_em.c user/imp/tbemd/sys/dev/e1000/if_em.h user/imp/tbemd/sys/dev/e1000/if_igb.c user/imp/tbemd/sys/dev/e1000/if_igb.h user/imp/tbemd/sys/dev/e1000/if_lem.c user/imp/tbemd/sys/dev/e1000/if_lem.h user/imp/tbemd/sys/dev/ed/if_ed_pccard.c user/imp/tbemd/sys/dev/et/if_et.c user/imp/tbemd/sys/dev/firewire/fwohci.c user/imp/tbemd/sys/dev/fxp/if_fxp.c user/imp/tbemd/sys/dev/gem/if_gem.c user/imp/tbemd/sys/dev/gem/if_gem_pci.c user/imp/tbemd/sys/dev/gem/if_gem_sbus.c user/imp/tbemd/sys/dev/gem/if_gemvar.h user/imp/tbemd/sys/dev/hifn/hifn7751.c user/imp/tbemd/sys/dev/hifn/hifn7751var.h user/imp/tbemd/sys/dev/hme/if_hme.c user/imp/tbemd/sys/dev/hptrr/hptrr_osm_bsd.c user/imp/tbemd/sys/dev/hwpmc/pmc_events.h user/imp/tbemd/sys/dev/if_ndis/if_ndis.c user/imp/tbemd/sys/dev/iicbus/iiconf.c user/imp/tbemd/sys/dev/isp/isp_freebsd.c user/imp/tbemd/sys/dev/iwi/if_iwi.c user/imp/tbemd/sys/dev/iwi/if_iwivar.h user/imp/tbemd/sys/dev/iwn/if_iwn.c user/imp/tbemd/sys/dev/iwn/if_iwnvar.h user/imp/tbemd/sys/dev/ixgbe/ixgbe.c user/imp/tbemd/sys/dev/jme/if_jme.c user/imp/tbemd/sys/dev/kbd/kbd.c user/imp/tbemd/sys/dev/kbdmux/kbdmux.c user/imp/tbemd/sys/dev/lge/if_lge.c user/imp/tbemd/sys/dev/md/md.c user/imp/tbemd/sys/dev/mfi/mfireg.h user/imp/tbemd/sys/dev/mge/if_mge.c user/imp/tbemd/sys/dev/mge/if_mgevar.h user/imp/tbemd/sys/dev/mii/acphy.c user/imp/tbemd/sys/dev/mii/amphy.c user/imp/tbemd/sys/dev/mii/atphy.c user/imp/tbemd/sys/dev/mii/axphy.c user/imp/tbemd/sys/dev/mii/bmtphy.c user/imp/tbemd/sys/dev/mii/brgphy.c user/imp/tbemd/sys/dev/mii/ciphy.c user/imp/tbemd/sys/dev/mii/e1000phy.c user/imp/tbemd/sys/dev/mii/exphy.c user/imp/tbemd/sys/dev/mii/gentbi.c user/imp/tbemd/sys/dev/mii/icsphy.c user/imp/tbemd/sys/dev/mii/inphy.c user/imp/tbemd/sys/dev/mii/ip1000phy.c user/imp/tbemd/sys/dev/mii/jmphy.c user/imp/tbemd/sys/dev/mii/lxtphy.c user/imp/tbemd/sys/dev/mii/mii.c user/imp/tbemd/sys/dev/mii/mii.h user/imp/tbemd/sys/dev/mii/mii_physubr.c user/imp/tbemd/sys/dev/mii/miidevs user/imp/tbemd/sys/dev/mii/miivar.h user/imp/tbemd/sys/dev/mii/mlphy.c user/imp/tbemd/sys/dev/mii/nsgphy.c user/imp/tbemd/sys/dev/mii/nsphy.c user/imp/tbemd/sys/dev/mii/nsphyter.c user/imp/tbemd/sys/dev/mii/pnaphy.c user/imp/tbemd/sys/dev/mii/qsphy.c user/imp/tbemd/sys/dev/mii/rgephy.c user/imp/tbemd/sys/dev/mii/rlphy.c user/imp/tbemd/sys/dev/mii/rlswitch.c user/imp/tbemd/sys/dev/mii/ruephy.c user/imp/tbemd/sys/dev/mii/smcphy.c user/imp/tbemd/sys/dev/mii/tdkphy.c user/imp/tbemd/sys/dev/mii/tlphy.c user/imp/tbemd/sys/dev/mii/tlphyreg.h user/imp/tbemd/sys/dev/mii/truephy.c user/imp/tbemd/sys/dev/mii/ukphy.c user/imp/tbemd/sys/dev/mii/ukphy_subr.c user/imp/tbemd/sys/dev/mii/xmphy.c user/imp/tbemd/sys/dev/mps/mps.c user/imp/tbemd/sys/dev/mps/mps_ioctl.h user/imp/tbemd/sys/dev/mps/mps_sas.c user/imp/tbemd/sys/dev/mps/mps_user.c user/imp/tbemd/sys/dev/mps/mpsvar.h user/imp/tbemd/sys/dev/mpt/mpt.c user/imp/tbemd/sys/dev/mpt/mpt.h user/imp/tbemd/sys/dev/msk/if_msk.c user/imp/tbemd/sys/dev/mvs/mvs.c user/imp/tbemd/sys/dev/mvs/mvs_pci.c user/imp/tbemd/sys/dev/mvs/mvs_soc.c user/imp/tbemd/sys/dev/nfe/if_nfe.c user/imp/tbemd/sys/dev/nge/if_nge.c user/imp/tbemd/sys/dev/nve/if_nve.c user/imp/tbemd/sys/dev/ofw/openfirm.c user/imp/tbemd/sys/dev/pccard/pccardvar.h user/imp/tbemd/sys/dev/pci/pci.c user/imp/tbemd/sys/dev/pci/pci_pci.c user/imp/tbemd/sys/dev/pci/pci_private.h user/imp/tbemd/sys/dev/pci/pcireg.h user/imp/tbemd/sys/dev/pci/pcivar.h user/imp/tbemd/sys/dev/pcn/if_pcn.c user/imp/tbemd/sys/dev/ral/rt2560.c user/imp/tbemd/sys/dev/ral/rt2661.c user/imp/tbemd/sys/dev/re/if_re.c user/imp/tbemd/sys/dev/sf/if_sf.c user/imp/tbemd/sys/dev/sge/if_sge.c user/imp/tbemd/sys/dev/siis/siis.c user/imp/tbemd/sys/dev/sis/if_sis.c user/imp/tbemd/sys/dev/sk/if_sk.c user/imp/tbemd/sys/dev/smc/if_smc.c user/imp/tbemd/sys/dev/sound/pci/envy24ht.c user/imp/tbemd/sys/dev/sound/pci/spicds.c user/imp/tbemd/sys/dev/sound/pcm/channel.c user/imp/tbemd/sys/dev/sound/sbus/cs4231.c user/imp/tbemd/sys/dev/ste/if_ste.c user/imp/tbemd/sys/dev/stge/if_stge.c user/imp/tbemd/sys/dev/syscons/schistory.c user/imp/tbemd/sys/dev/syscons/scvgarndr.c user/imp/tbemd/sys/dev/syscons/syscons.c user/imp/tbemd/sys/dev/tl/if_tl.c user/imp/tbemd/sys/dev/tl/if_tlreg.h user/imp/tbemd/sys/dev/tsec/if_tsec.c user/imp/tbemd/sys/dev/tx/if_tx.c user/imp/tbemd/sys/dev/uart/uart_subr.c user/imp/tbemd/sys/dev/usb/controller/at91dci.c user/imp/tbemd/sys/dev/usb/controller/atmegadci.c user/imp/tbemd/sys/dev/usb/controller/avr32dci.c user/imp/tbemd/sys/dev/usb/controller/ehci.c user/imp/tbemd/sys/dev/usb/controller/ehci.h user/imp/tbemd/sys/dev/usb/controller/ehci_pci.c user/imp/tbemd/sys/dev/usb/controller/ehcireg.h user/imp/tbemd/sys/dev/usb/controller/musb_otg.c user/imp/tbemd/sys/dev/usb/controller/ohci.c user/imp/tbemd/sys/dev/usb/controller/usb_controller.c user/imp/tbemd/sys/dev/usb/controller/uss820dci.c user/imp/tbemd/sys/dev/usb/net/if_axe.c user/imp/tbemd/sys/dev/usb/net/if_axereg.h user/imp/tbemd/sys/dev/usb/net/if_cdce.c user/imp/tbemd/sys/dev/usb/net/if_cdcereg.h user/imp/tbemd/sys/dev/usb/net/uhso.c user/imp/tbemd/sys/dev/usb/net/usb_ethernet.c user/imp/tbemd/sys/dev/usb/quirk/usb_quirk.c user/imp/tbemd/sys/dev/usb/serial/u3g.c user/imp/tbemd/sys/dev/usb/serial/uark.c user/imp/tbemd/sys/dev/usb/serial/ubsa.c user/imp/tbemd/sys/dev/usb/serial/ubser.c user/imp/tbemd/sys/dev/usb/serial/uchcom.c user/imp/tbemd/sys/dev/usb/serial/ucycom.c user/imp/tbemd/sys/dev/usb/serial/ufoma.c user/imp/tbemd/sys/dev/usb/serial/uftdi.c user/imp/tbemd/sys/dev/usb/serial/ugensa.c user/imp/tbemd/sys/dev/usb/serial/uipaq.c user/imp/tbemd/sys/dev/usb/serial/umct.c user/imp/tbemd/sys/dev/usb/serial/umodem.c user/imp/tbemd/sys/dev/usb/serial/umoscom.c user/imp/tbemd/sys/dev/usb/serial/uplcom.c user/imp/tbemd/sys/dev/usb/serial/usb_serial.c user/imp/tbemd/sys/dev/usb/serial/usb_serial.h user/imp/tbemd/sys/dev/usb/serial/uslcom.c user/imp/tbemd/sys/dev/usb/serial/uvisor.c user/imp/tbemd/sys/dev/usb/serial/uvscom.c user/imp/tbemd/sys/dev/usb/storage/umass.c user/imp/tbemd/sys/dev/usb/usb.h user/imp/tbemd/sys/dev/usb/usb_busdma.c user/imp/tbemd/sys/dev/usb/usb_cdc.h user/imp/tbemd/sys/dev/usb/usb_controller.h user/imp/tbemd/sys/dev/usb/usb_dev.c user/imp/tbemd/sys/dev/usb/usb_device.c user/imp/tbemd/sys/dev/usb/usb_device.h user/imp/tbemd/sys/dev/usb/usb_freebsd.h user/imp/tbemd/sys/dev/usb/usb_generic.c user/imp/tbemd/sys/dev/usb/usb_handle_request.c user/imp/tbemd/sys/dev/usb/usb_hub.c user/imp/tbemd/sys/dev/usb/usb_hub.h user/imp/tbemd/sys/dev/usb/usb_ioctl.h user/imp/tbemd/sys/dev/usb/usb_msctest.c user/imp/tbemd/sys/dev/usb/usb_msctest.h user/imp/tbemd/sys/dev/usb/usb_parse.c user/imp/tbemd/sys/dev/usb/usb_request.c user/imp/tbemd/sys/dev/usb/usb_request.h user/imp/tbemd/sys/dev/usb/usb_transfer.c user/imp/tbemd/sys/dev/usb/usb_transfer.h user/imp/tbemd/sys/dev/usb/usbdevs user/imp/tbemd/sys/dev/usb/usbdi.h user/imp/tbemd/sys/dev/usb/usbdi_util.h user/imp/tbemd/sys/dev/usb/wlan/if_rum.c user/imp/tbemd/sys/dev/usb/wlan/if_run.c user/imp/tbemd/sys/dev/usb/wlan/if_upgt.c user/imp/tbemd/sys/dev/usb/wlan/if_ural.c user/imp/tbemd/sys/dev/usb/wlan/if_zyd.c user/imp/tbemd/sys/dev/vge/if_vge.c user/imp/tbemd/sys/dev/vr/if_vr.c user/imp/tbemd/sys/dev/vr/if_vrreg.h user/imp/tbemd/sys/dev/wb/if_wb.c user/imp/tbemd/sys/dev/wpi/if_wpi.c user/imp/tbemd/sys/dev/xen/balloon/balloon.c user/imp/tbemd/sys/dev/xen/blkback/blkback.c user/imp/tbemd/sys/dev/xen/blkfront/blkfront.c user/imp/tbemd/sys/dev/xen/blkfront/block.h user/imp/tbemd/sys/dev/xen/netfront/netfront.c user/imp/tbemd/sys/dev/xen/xenpci/evtchn.c user/imp/tbemd/sys/dev/xen/xenpci/xenpci.c user/imp/tbemd/sys/dev/xl/if_xl.c user/imp/tbemd/sys/fs/cd9660/cd9660_mount.h user/imp/tbemd/sys/fs/cd9660/cd9660_vfsops.c user/imp/tbemd/sys/fs/devfs/devfs.h user/imp/tbemd/sys/fs/devfs/devfs_devs.c user/imp/tbemd/sys/fs/devfs/devfs_int.h user/imp/tbemd/sys/fs/devfs/devfs_vnops.c user/imp/tbemd/sys/fs/hpfs/hpfs_vfsops.c user/imp/tbemd/sys/fs/hpfs/hpfsmount.h user/imp/tbemd/sys/fs/msdosfs/msdosfs_denode.c user/imp/tbemd/sys/fs/msdosfs/msdosfs_lookup.c user/imp/tbemd/sys/fs/msdosfs/msdosfs_vfsops.c user/imp/tbemd/sys/fs/msdosfs/msdosfs_vnops.c user/imp/tbemd/sys/fs/msdosfs/msdosfsmount.h user/imp/tbemd/sys/fs/nfs/nfs_var.h user/imp/tbemd/sys/fs/nfs/nfsclstate.h user/imp/tbemd/sys/fs/nfs/nfsdport.h user/imp/tbemd/sys/fs/nfsclient/nfs_clnode.c user/imp/tbemd/sys/fs/nfsclient/nfs_clstate.c user/imp/tbemd/sys/fs/nfsclient/nfs_clvfsops.c user/imp/tbemd/sys/fs/nfsclient/nfs_clvnops.c user/imp/tbemd/sys/fs/nfsclient/nfsmount.h user/imp/tbemd/sys/fs/nfsserver/nfs_nfsdport.c user/imp/tbemd/sys/fs/nfsserver/nfs_nfsdstate.c user/imp/tbemd/sys/fs/ntfs/ntfs_vfsops.c user/imp/tbemd/sys/fs/ntfs/ntfsmount.h user/imp/tbemd/sys/fs/nwfs/nwfs_vfsops.c user/imp/tbemd/sys/fs/smbfs/smbfs_vfsops.c user/imp/tbemd/sys/fs/tmpfs/tmpfs_vnops.c user/imp/tbemd/sys/gdb/gdb_cons.c user/imp/tbemd/sys/geom/concat/g_concat.c user/imp/tbemd/sys/geom/eli/g_eli.c user/imp/tbemd/sys/geom/eli/g_eli.h user/imp/tbemd/sys/geom/eli/g_eli_crypto.c user/imp/tbemd/sys/geom/eli/g_eli_ctl.c user/imp/tbemd/sys/geom/eli/g_eli_integrity.c user/imp/tbemd/sys/geom/eli/g_eli_key.c user/imp/tbemd/sys/geom/eli/g_eli_privacy.c user/imp/tbemd/sys/geom/geom_dev.c user/imp/tbemd/sys/geom/geom_event.c user/imp/tbemd/sys/geom/part/g_part.c user/imp/tbemd/sys/geom/part/g_part.h user/imp/tbemd/sys/geom/part/g_part_ebr.c user/imp/tbemd/sys/geom/part/g_part_gpt.c user/imp/tbemd/sys/geom/part/g_part_if.m user/imp/tbemd/sys/geom/part/g_part_mbr.c user/imp/tbemd/sys/geom/part/g_part_pc98.c user/imp/tbemd/sys/geom/vinum/geom_vinum_move.c user/imp/tbemd/sys/geom/vinum/geom_vinum_rename.c user/imp/tbemd/sys/geom/virstor/g_virstor.c user/imp/tbemd/sys/gnu/fs/reiserfs/reiserfs_mount.h user/imp/tbemd/sys/gnu/fs/reiserfs/reiserfs_vfsops.c user/imp/tbemd/sys/i386/acpica/acpi_wakeup.c user/imp/tbemd/sys/i386/conf/GENERIC user/imp/tbemd/sys/i386/conf/NOTES user/imp/tbemd/sys/i386/i386/apic_vector.s user/imp/tbemd/sys/i386/i386/busdma_machdep.c user/imp/tbemd/sys/i386/i386/elan-mmcr.c user/imp/tbemd/sys/i386/i386/genassym.c user/imp/tbemd/sys/i386/i386/identcpu.c user/imp/tbemd/sys/i386/i386/initcpu.c user/imp/tbemd/sys/i386/i386/intr_machdep.c user/imp/tbemd/sys/i386/i386/locore.s user/imp/tbemd/sys/i386/i386/longrun.c user/imp/tbemd/sys/i386/i386/machdep.c user/imp/tbemd/sys/i386/i386/mp_machdep.c user/imp/tbemd/sys/i386/i386/mp_watchdog.c user/imp/tbemd/sys/i386/i386/mpboot.s user/imp/tbemd/sys/i386/i386/perfmon.c user/imp/tbemd/sys/i386/i386/pmap.c user/imp/tbemd/sys/i386/i386/support.s user/imp/tbemd/sys/i386/i386/trap.c user/imp/tbemd/sys/i386/ibcs2/ibcs2_sysvec.c user/imp/tbemd/sys/i386/include/pmap.h user/imp/tbemd/sys/i386/include/profile.h user/imp/tbemd/sys/i386/include/specialreg.h user/imp/tbemd/sys/i386/isa/npx.c user/imp/tbemd/sys/i386/linux/linux_sysvec.c user/imp/tbemd/sys/i386/xen/mp_machdep.c user/imp/tbemd/sys/i386/xen/mptable.c user/imp/tbemd/sys/i386/xen/xen_machdep.c user/imp/tbemd/sys/ia64/acpica/OsdEnvironment.c user/imp/tbemd/sys/ia64/ia64/busdma_machdep.c user/imp/tbemd/sys/ia64/ia64/machdep.c user/imp/tbemd/sys/ia64/include/_stdint.h user/imp/tbemd/sys/ia64/include/bus.h user/imp/tbemd/sys/kern/imgact_shell.c user/imp/tbemd/sys/kern/init_main.c user/imp/tbemd/sys/kern/kern_clock.c user/imp/tbemd/sys/kern/kern_clocksource.c user/imp/tbemd/sys/kern/kern_conf.c user/imp/tbemd/sys/kern/kern_cpuset.c user/imp/tbemd/sys/kern/kern_exec.c user/imp/tbemd/sys/kern/kern_exit.c user/imp/tbemd/sys/kern/kern_fork.c user/imp/tbemd/sys/kern/kern_kthread.c user/imp/tbemd/sys/kern/kern_ktrace.c user/imp/tbemd/sys/kern/kern_linker.c user/imp/tbemd/sys/kern/kern_malloc.c user/imp/tbemd/sys/kern/kern_ntptime.c user/imp/tbemd/sys/kern/kern_proc.c user/imp/tbemd/sys/kern/kern_resource.c user/imp/tbemd/sys/kern/kern_shutdown.c user/imp/tbemd/sys/kern/kern_sig.c user/imp/tbemd/sys/kern/kern_syscalls.c user/imp/tbemd/sys/kern/kern_sysctl.c user/imp/tbemd/sys/kern/kern_tc.c user/imp/tbemd/sys/kern/kern_thr.c user/imp/tbemd/sys/kern/kern_thread.c user/imp/tbemd/sys/kern/kern_time.c user/imp/tbemd/sys/kern/kern_timeout.c user/imp/tbemd/sys/kern/kern_umtx.c user/imp/tbemd/sys/kern/link_elf.c user/imp/tbemd/sys/kern/link_elf_obj.c user/imp/tbemd/sys/kern/p1003_1b.c user/imp/tbemd/sys/kern/sched_ule.c user/imp/tbemd/sys/kern/subr_acl_nfs4.c user/imp/tbemd/sys/kern/subr_bus.c user/imp/tbemd/sys/kern/subr_clock.c user/imp/tbemd/sys/kern/subr_kdb.c user/imp/tbemd/sys/kern/subr_lock.c user/imp/tbemd/sys/kern/subr_sbuf.c user/imp/tbemd/sys/kern/subr_sleepqueue.c user/imp/tbemd/sys/kern/subr_smp.c user/imp/tbemd/sys/kern/subr_stack.c user/imp/tbemd/sys/kern/subr_taskqueue.c user/imp/tbemd/sys/kern/subr_trap.c user/imp/tbemd/sys/kern/subr_witness.c user/imp/tbemd/sys/kern/sys_process.c user/imp/tbemd/sys/kern/tty.c user/imp/tbemd/sys/kern/uipc_mqueue.c user/imp/tbemd/sys/kern/uipc_socket.c user/imp/tbemd/sys/kern/vfs_aio.c user/imp/tbemd/sys/kern/vfs_bio.c user/imp/tbemd/sys/kern/vfs_cache.c user/imp/tbemd/sys/kern/vfs_mount.c user/imp/tbemd/sys/mips/atheros/ar71xx_machdep.c user/imp/tbemd/sys/mips/atheros/ar71xxreg.h user/imp/tbemd/sys/mips/atheros/files.ar71xx user/imp/tbemd/sys/mips/atheros/if_arge.c user/imp/tbemd/sys/mips/cavium/ciu.c user/imp/tbemd/sys/mips/cavium/files.octeon1 user/imp/tbemd/sys/mips/cavium/obio.c user/imp/tbemd/sys/mips/cavium/octe/cavium-ethernet.h user/imp/tbemd/sys/mips/cavium/octe/ethernet-common.c user/imp/tbemd/sys/mips/cavium/octe/ethernet-headers.h user/imp/tbemd/sys/mips/cavium/octe/ethernet-mdio.c user/imp/tbemd/sys/mips/cavium/octe/ethernet-rgmii.c user/imp/tbemd/sys/mips/cavium/octe/ethernet-rx.c user/imp/tbemd/sys/mips/cavium/octe/ethernet-sgmii.c user/imp/tbemd/sys/mips/cavium/octe/ethernet-tx.c user/imp/tbemd/sys/mips/cavium/octe/ethernet-xaui.c user/imp/tbemd/sys/mips/cavium/octe/ethernet.c user/imp/tbemd/sys/mips/cavium/octe/octe.c user/imp/tbemd/sys/mips/cavium/octeon_ebt3000_cf.c user/imp/tbemd/sys/mips/cavium/octeon_machdep.c user/imp/tbemd/sys/mips/cavium/octeon_mp.c user/imp/tbemd/sys/mips/cavium/octopci.c user/imp/tbemd/sys/mips/cavium/octopcireg.h user/imp/tbemd/sys/mips/cavium/std.octeon1 user/imp/tbemd/sys/mips/cavium/uart_bus_octeonusart.c user/imp/tbemd/sys/mips/cavium/uart_cpu_octeonusart.c user/imp/tbemd/sys/mips/cavium/uart_dev_oct16550.c user/imp/tbemd/sys/mips/cavium/usb/octusb.c user/imp/tbemd/sys/mips/conf/AR71XX user/imp/tbemd/sys/mips/conf/AR71XX.hints user/imp/tbemd/sys/mips/conf/OCTEON1 user/imp/tbemd/sys/mips/conf/SWARM user/imp/tbemd/sys/mips/conf/SWARM_SMP user/imp/tbemd/sys/mips/idt/if_kr.c user/imp/tbemd/sys/mips/include/cpufunc.h user/imp/tbemd/sys/mips/include/cpuregs.h user/imp/tbemd/sys/mips/include/md_var.h user/imp/tbemd/sys/mips/include/pmap.h user/imp/tbemd/sys/mips/mips/dump_machdep.c user/imp/tbemd/sys/mips/mips/gdb_machdep.c user/imp/tbemd/sys/mips/mips/locore.S user/imp/tbemd/sys/mips/mips/machdep.c user/imp/tbemd/sys/mips/mips/mp_machdep.c user/imp/tbemd/sys/mips/mips/pmap.c user/imp/tbemd/sys/mips/mips/trap.c user/imp/tbemd/sys/mips/mips/vm_machdep.c user/imp/tbemd/sys/mips/rmi/board.c user/imp/tbemd/sys/mips/rmi/board.h user/imp/tbemd/sys/mips/rmi/dev/nlge/if_nlge.c user/imp/tbemd/sys/mips/rmi/dev/nlge/if_nlge.h user/imp/tbemd/sys/mips/rmi/dev/sec/desc.h user/imp/tbemd/sys/mips/rmi/dev/sec/rmilib.c user/imp/tbemd/sys/mips/rmi/dev/sec/rmilib.h user/imp/tbemd/sys/mips/rmi/dev/sec/rmisec.c user/imp/tbemd/sys/mips/rmi/dev/xlr/rge.c user/imp/tbemd/sys/mips/rmi/dev/xlr/rge.h user/imp/tbemd/sys/mips/rmi/fmn.c user/imp/tbemd/sys/mips/rmi/iodi.c user/imp/tbemd/sys/mips/rmi/msgring.h user/imp/tbemd/sys/mips/rmi/pic.h user/imp/tbemd/sys/mips/rmi/rmi_mips_exts.h user/imp/tbemd/sys/mips/rmi/xlr_machdep.c user/imp/tbemd/sys/mips/rmi/xlr_pci.c user/imp/tbemd/sys/mips/sibyte/sb_machdep.c user/imp/tbemd/sys/mips/sibyte/sb_zbpci.c user/imp/tbemd/sys/modules/Makefile user/imp/tbemd/sys/modules/acpi/Makefile user/imp/tbemd/sys/modules/acpi/acpi/Makefile user/imp/tbemd/sys/modules/agp/Makefile user/imp/tbemd/sys/modules/cryptodev/Makefile user/imp/tbemd/sys/modules/gem/Makefile user/imp/tbemd/sys/modules/krpc/Makefile user/imp/tbemd/sys/modules/mem/Makefile user/imp/tbemd/sys/modules/mii/Makefile user/imp/tbemd/sys/modules/mps/Makefile user/imp/tbemd/sys/modules/sysvipc/sysvmsg/Makefile user/imp/tbemd/sys/modules/sysvipc/sysvsem/Makefile user/imp/tbemd/sys/modules/usb/Makefile user/imp/tbemd/sys/modules/wlan/Makefile user/imp/tbemd/sys/net/bpf.c user/imp/tbemd/sys/net/bpf.h user/imp/tbemd/sys/net/if.c user/imp/tbemd/sys/net/if.h user/imp/tbemd/sys/net/if_llatbl.c user/imp/tbemd/sys/net/if_llatbl.h user/imp/tbemd/sys/net/if_tap.c user/imp/tbemd/sys/net/if_tun.c user/imp/tbemd/sys/net/rtsock.c user/imp/tbemd/sys/net80211/ieee80211.c user/imp/tbemd/sys/net80211/ieee80211_node.c user/imp/tbemd/sys/net80211/ieee80211_ratectl.c user/imp/tbemd/sys/net80211/ieee80211_ratectl.h user/imp/tbemd/sys/net80211/ieee80211_scan_sta.c user/imp/tbemd/sys/net80211/ieee80211_sta.c user/imp/tbemd/sys/net80211/ieee80211_var.h user/imp/tbemd/sys/netgraph/ng_UI.c user/imp/tbemd/sys/netgraph/ng_async.c user/imp/tbemd/sys/netgraph/ng_frame_relay.c user/imp/tbemd/sys/netgraph/ng_gif_demux.c user/imp/tbemd/sys/netgraph/ng_iface.c user/imp/tbemd/sys/netgraph/ng_rfc1490.c user/imp/tbemd/sys/netgraph/ng_socket.c user/imp/tbemd/sys/netgraph/ng_tty.c user/imp/tbemd/sys/netinet/if_ether.c user/imp/tbemd/sys/netinet/igmp.c user/imp/tbemd/sys/netinet/in.c user/imp/tbemd/sys/netinet/in.h user/imp/tbemd/sys/netinet/in_rmx.c user/imp/tbemd/sys/netinet/ip_carp.c user/imp/tbemd/sys/netinet/ip_ipsec.c user/imp/tbemd/sys/netinet/ip_options.c user/imp/tbemd/sys/netinet/ip_output.c user/imp/tbemd/sys/netinet/ipfw/dn_sched.h user/imp/tbemd/sys/netinet/ipfw/dn_sched_qfq.c user/imp/tbemd/sys/netinet/ipfw/dn_sched_wf2q.c user/imp/tbemd/sys/netinet/ipfw/ip_dn_glue.c user/imp/tbemd/sys/netinet/ipfw/ip_dn_io.c user/imp/tbemd/sys/netinet/ipfw/ip_dn_private.h user/imp/tbemd/sys/netinet/ipfw/ip_dummynet.c user/imp/tbemd/sys/netinet/ipfw/ip_fw_pfil.c user/imp/tbemd/sys/netinet/libalias/alias.c user/imp/tbemd/sys/netinet/libalias/libalias.3 user/imp/tbemd/sys/netinet/sctp.h user/imp/tbemd/sys/netinet/sctp_asconf.c user/imp/tbemd/sys/netinet/sctp_asconf.h user/imp/tbemd/sys/netinet/sctp_auth.c user/imp/tbemd/sys/netinet/sctp_bsd_addr.c user/imp/tbemd/sys/netinet/sctp_cc_functions.c user/imp/tbemd/sys/netinet/sctp_constants.h user/imp/tbemd/sys/netinet/sctp_indata.c user/imp/tbemd/sys/netinet/sctp_input.c user/imp/tbemd/sys/netinet/sctp_os_bsd.h user/imp/tbemd/sys/netinet/sctp_output.c user/imp/tbemd/sys/netinet/sctp_output.h user/imp/tbemd/sys/netinet/sctp_pcb.c user/imp/tbemd/sys/netinet/sctp_sysctl.c user/imp/tbemd/sys/netinet/sctp_sysctl.h user/imp/tbemd/sys/netinet/sctp_timer.c user/imp/tbemd/sys/netinet/sctp_timer.h user/imp/tbemd/sys/netinet/sctp_uio.h user/imp/tbemd/sys/netinet/sctp_usrreq.c user/imp/tbemd/sys/netinet/sctputil.c user/imp/tbemd/sys/netinet/sctputil.h user/imp/tbemd/sys/netinet/siftr.c user/imp/tbemd/sys/netinet/tcp.h user/imp/tbemd/sys/netinet/tcp_input.c user/imp/tbemd/sys/netinet/tcp_output.c user/imp/tbemd/sys/netinet/tcp_reass.c user/imp/tbemd/sys/netinet/tcp_subr.c user/imp/tbemd/sys/netinet/tcp_timer.h user/imp/tbemd/sys/netinet/tcp_usrreq.c user/imp/tbemd/sys/netinet/tcp_var.h user/imp/tbemd/sys/netinet6/in6_cksum.c user/imp/tbemd/sys/netinet6/in6_rmx.c user/imp/tbemd/sys/netinet6/ip6_ipsec.c user/imp/tbemd/sys/netinet6/ip6_output.c user/imp/tbemd/sys/netinet6/sctp6_usrreq.c user/imp/tbemd/sys/netipsec/ipsec.c user/imp/tbemd/sys/netipsec/ipsec_input.c user/imp/tbemd/sys/netipsec/ipsec_output.c user/imp/tbemd/sys/netipsec/key.c user/imp/tbemd/sys/netipsec/keydb.h user/imp/tbemd/sys/nfs/nfs_lock.c user/imp/tbemd/sys/nfs/nfs_lock.h user/imp/tbemd/sys/nfsclient/nfs.h user/imp/tbemd/sys/nfsclient/nfs_bio.c user/imp/tbemd/sys/nfsclient/nfs_nfsiod.c user/imp/tbemd/sys/nfsclient/nfs_node.c user/imp/tbemd/sys/nfsclient/nfs_vfsops.c user/imp/tbemd/sys/nfsclient/nfs_vnops.c user/imp/tbemd/sys/nfsclient/nfsmount.h user/imp/tbemd/sys/nfsclient/nfsnode.h user/imp/tbemd/sys/nfsserver/nfs_serv.c user/imp/tbemd/sys/nlm/nlm_advlock.c user/imp/tbemd/sys/nlm/nlm_prot_impl.c user/imp/tbemd/sys/opencrypto/cryptodev.c user/imp/tbemd/sys/opencrypto/cryptodev.h user/imp/tbemd/sys/opencrypto/cryptosoft.c user/imp/tbemd/sys/opencrypto/xform.c user/imp/tbemd/sys/opencrypto/xform.h user/imp/tbemd/sys/pc98/conf/GENERIC user/imp/tbemd/sys/pc98/include/bus.h user/imp/tbemd/sys/pc98/pc98/busiosubr.c user/imp/tbemd/sys/pc98/pc98/machdep.c user/imp/tbemd/sys/pci/if_rl.c user/imp/tbemd/sys/pci/if_rlreg.h user/imp/tbemd/sys/powerpc/aim/copyinout.c user/imp/tbemd/sys/powerpc/aim/machdep.c user/imp/tbemd/sys/powerpc/aim/mmu_oea.c user/imp/tbemd/sys/powerpc/aim/mmu_oea64.c user/imp/tbemd/sys/powerpc/aim/slb.c user/imp/tbemd/sys/powerpc/aim/swtch32.S user/imp/tbemd/sys/powerpc/aim/swtch64.S user/imp/tbemd/sys/powerpc/aim/trap.c user/imp/tbemd/sys/powerpc/aim/trap_subr32.S user/imp/tbemd/sys/powerpc/aim/trap_subr64.S user/imp/tbemd/sys/powerpc/aim/vm_machdep.c user/imp/tbemd/sys/powerpc/booke/machdep.c user/imp/tbemd/sys/powerpc/booke/pmap.c user/imp/tbemd/sys/powerpc/conf/GENERIC user/imp/tbemd/sys/powerpc/conf/GENERIC64 user/imp/tbemd/sys/powerpc/conf/NOTES user/imp/tbemd/sys/powerpc/include/altivec.h user/imp/tbemd/sys/powerpc/include/memdev.h user/imp/tbemd/sys/powerpc/include/mmuvar.h user/imp/tbemd/sys/powerpc/include/pcb.h user/imp/tbemd/sys/powerpc/include/pcpu.h user/imp/tbemd/sys/powerpc/include/pmap.h user/imp/tbemd/sys/powerpc/include/slb.h user/imp/tbemd/sys/powerpc/include/trap_aim.h user/imp/tbemd/sys/powerpc/include/vm.h user/imp/tbemd/sys/powerpc/mambo/mambo_console.c user/imp/tbemd/sys/powerpc/ofw/ofw_syscons.c user/imp/tbemd/sys/powerpc/powermac/cpcht.c user/imp/tbemd/sys/powerpc/powermac/kiic.c user/imp/tbemd/sys/powerpc/powerpc/bus_machdep.c user/imp/tbemd/sys/powerpc/powerpc/busdma_machdep.c user/imp/tbemd/sys/powerpc/powerpc/exec_machdep.c user/imp/tbemd/sys/powerpc/powerpc/genassym.c user/imp/tbemd/sys/powerpc/powerpc/mem.c user/imp/tbemd/sys/powerpc/powerpc/mmu_if.m user/imp/tbemd/sys/powerpc/powerpc/pmap_dispatch.c user/imp/tbemd/sys/rpc/clnt_dg.c user/imp/tbemd/sys/rpc/clnt_vc.c user/imp/tbemd/sys/rpc/rpc_com.h user/imp/tbemd/sys/rpc/rpc_generic.c user/imp/tbemd/sys/security/mac/mac_vfs.c user/imp/tbemd/sys/security/mac_portacl/mac_portacl.c user/imp/tbemd/sys/sparc64/conf/GENERIC user/imp/tbemd/sys/sparc64/include/asm.h user/imp/tbemd/sys/sparc64/include/endian.h user/imp/tbemd/sys/sparc64/include/md_var.h user/imp/tbemd/sys/sparc64/include/tick.h user/imp/tbemd/sys/sparc64/sparc64/bus_machdep.c user/imp/tbemd/sys/sparc64/sparc64/elf_machdep.c user/imp/tbemd/sys/sparc64/sparc64/iommu.c user/imp/tbemd/sys/sparc64/sparc64/machdep.c user/imp/tbemd/sys/sparc64/sparc64/mp_machdep.c user/imp/tbemd/sys/sparc64/sparc64/pmap.c user/imp/tbemd/sys/sparc64/sparc64/support.S user/imp/tbemd/sys/sparc64/sparc64/tick.c user/imp/tbemd/sys/sparc64/sparc64/vm_machdep.c user/imp/tbemd/sys/sun4v/conf/GENERIC user/imp/tbemd/sys/sun4v/include/endian.h user/imp/tbemd/sys/sun4v/sun4v/bus_machdep.c user/imp/tbemd/sys/sun4v/sun4v/hviommu.c user/imp/tbemd/sys/sun4v/sun4v/machdep.c user/imp/tbemd/sys/sys/_task.h user/imp/tbemd/sys/sys/acl.h user/imp/tbemd/sys/sys/callout.h user/imp/tbemd/sys/sys/conf.h user/imp/tbemd/sys/sys/disklabel.h user/imp/tbemd/sys/sys/exec.h user/imp/tbemd/sys/sys/gpt.h user/imp/tbemd/sys/sys/interrupt.h user/imp/tbemd/sys/sys/kerneldump.h user/imp/tbemd/sys/sys/ktrace.h user/imp/tbemd/sys/sys/module.h user/imp/tbemd/sys/sys/mount.h user/imp/tbemd/sys/sys/mutex.h user/imp/tbemd/sys/sys/param.h user/imp/tbemd/sys/sys/pcpu.h user/imp/tbemd/sys/sys/proc.h user/imp/tbemd/sys/sys/sched.h user/imp/tbemd/sys/sys/signalvar.h user/imp/tbemd/sys/sys/socketvar.h user/imp/tbemd/sys/sys/sockio.h user/imp/tbemd/sys/sys/sysctl.h user/imp/tbemd/sys/sys/systm.h user/imp/tbemd/sys/sys/taskqueue.h user/imp/tbemd/sys/sys/time.h user/imp/tbemd/sys/sys/timetc.h user/imp/tbemd/sys/sys/unistd.h user/imp/tbemd/sys/sys/user.h user/imp/tbemd/sys/teken/sequences user/imp/tbemd/sys/teken/teken_subr_compat.h user/imp/tbemd/sys/ufs/ffs/ffs_softdep.c user/imp/tbemd/sys/ufs/ffs/ffs_vfsops.c user/imp/tbemd/sys/ufs/ffs/fs.h user/imp/tbemd/sys/ufs/ffs/softdep.h user/imp/tbemd/sys/ufs/ufs/ufs_dirhash.c user/imp/tbemd/sys/ufs/ufs/ufsmount.h user/imp/tbemd/sys/vm/swap_pager.c user/imp/tbemd/sys/vm/uma.h user/imp/tbemd/sys/vm/uma_core.c user/imp/tbemd/sys/vm/vm_kern.c user/imp/tbemd/sys/vm/vm_map.c user/imp/tbemd/sys/vm/vm_map.h user/imp/tbemd/sys/vm/vm_mmap.c user/imp/tbemd/sys/vm/vm_page.c user/imp/tbemd/sys/vm/vm_phys.c user/imp/tbemd/sys/vm/vm_reserv.c user/imp/tbemd/sys/x86/cpufreq/est.c user/imp/tbemd/sys/x86/isa/atrtc.c user/imp/tbemd/sys/x86/isa/clock.c user/imp/tbemd/sys/x86/x86/io_apic.c user/imp/tbemd/sys/x86/x86/local_apic.c user/imp/tbemd/sys/x86/x86/mca.c user/imp/tbemd/sys/x86/x86/msi.c user/imp/tbemd/sys/xen/evtchn/evtchn.c user/imp/tbemd/sys/xen/gnttab.c user/imp/tbemd/sys/xen/gnttab.h user/imp/tbemd/sys/xen/interface/grant_table.h user/imp/tbemd/sys/xen/interface/hvm/params.h user/imp/tbemd/sys/xen/interface/io/blkif.h user/imp/tbemd/sys/xen/interface/io/protocols.h user/imp/tbemd/sys/xen/interface/io/ring.h user/imp/tbemd/sys/xen/interface/io/xenbus.h user/imp/tbemd/sys/xen/xen_intr.h user/imp/tbemd/sys/xen/xenbus/xenbus_if.m user/imp/tbemd/sys/xen/xenbus/xenbusvar.h user/imp/tbemd/tools/build/mk/OptionalObsoleteFiles.inc user/imp/tbemd/tools/regression/acltools/run user/imp/tbemd/tools/regression/acltools/tools-nfs4.test user/imp/tbemd/tools/regression/bin/Makefile user/imp/tbemd/tools/regression/bin/sh/Makefile user/imp/tbemd/tools/regression/bin/sh/builtins/cd1.0 user/imp/tbemd/tools/regression/bin/sh/builtins/command8.0 user/imp/tbemd/tools/regression/bin/sh/builtins/exec1.0 user/imp/tbemd/tools/regression/bin/sh/builtins/exec2.0 user/imp/tbemd/tools/regression/bin/sh/builtins/fc1.0 user/imp/tbemd/tools/regression/bin/sh/builtins/fc2.0 user/imp/tbemd/tools/regression/bin/sh/builtins/getopts1.0 user/imp/tbemd/tools/regression/bin/sh/builtins/getopts1.0.stdout user/imp/tbemd/tools/regression/bin/sh/builtins/trap1.0 user/imp/tbemd/tools/regression/bin/sh/builtins/var-assign.0 user/imp/tbemd/tools/regression/bin/sh/builtins/var-assign2.0 user/imp/tbemd/tools/regression/bin/sh/errors/assignment-error1.0 user/imp/tbemd/tools/regression/bin/sh/errors/backquote-error1.0 user/imp/tbemd/tools/regression/bin/sh/errors/backquote-error2.0 user/imp/tbemd/tools/regression/bin/sh/errors/option-error.0 user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error.0 user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error2.2 user/imp/tbemd/tools/regression/bin/sh/errors/redirection-error3.0 user/imp/tbemd/tools/regression/bin/sh/execution/fork1.0 user/imp/tbemd/tools/regression/bin/sh/execution/fork2.0 user/imp/tbemd/tools/regression/bin/sh/execution/func1.0 user/imp/tbemd/tools/regression/bin/sh/execution/redir2.0 user/imp/tbemd/tools/regression/bin/sh/expansion/question1.0 user/imp/tbemd/tools/regression/bin/sh/expansion/set-u1.0 user/imp/tbemd/tools/regression/bin/sh/parameters/mail1.0 user/imp/tbemd/tools/regression/bin/sh/parameters/mail2.0 user/imp/tbemd/tools/regression/bin/sh/parameters/pwd1.0 user/imp/tbemd/tools/regression/bin/sh/parameters/pwd2.0 user/imp/tbemd/tools/regression/bin/sh/regress.sh user/imp/tbemd/tools/regression/bin/sh/regress.t user/imp/tbemd/tools/regression/geom_eli/init-a.t user/imp/tbemd/tools/regression/geom_eli/init.t user/imp/tbemd/tools/regression/geom_eli/integrity-copy.t user/imp/tbemd/tools/regression/geom_eli/integrity-data.t user/imp/tbemd/tools/regression/geom_eli/integrity-hmac.t user/imp/tbemd/tools/regression/geom_eli/onetime-a.t user/imp/tbemd/tools/regression/geom_eli/onetime.t user/imp/tbemd/tools/regression/usr.bin/tr/regress.sh user/imp/tbemd/tools/tools/mctest/mctest.cc user/imp/tbemd/tools/tools/mctest/mctest_run.sh user/imp/tbemd/tools/tools/nanobsd/nanobsd.sh user/imp/tbemd/tools/tools/nanobsd/rescue/common user/imp/tbemd/tools/tools/nanobsd/rescue/isoamd64.conf user/imp/tbemd/tools/tools/nanobsd/rescue/isoi386.conf user/imp/tbemd/tools/tools/netrate/juggle/juggle.c user/imp/tbemd/tools/tools/netrate/tcpconnect/tcpconnect.c user/imp/tbemd/tools/tools/syscall_timing/syscall_timing.c user/imp/tbemd/tools/tools/umastat/umastat.c user/imp/tbemd/usr.bin/Makefile user/imp/tbemd/usr.bin/ar/ar.1 user/imp/tbemd/usr.bin/ar/ar.c user/imp/tbemd/usr.bin/ar/ar.h user/imp/tbemd/usr.bin/ar/write.c user/imp/tbemd/usr.bin/calendar/calendar.1 user/imp/tbemd/usr.bin/calendar/calendars/calendar.freebsd user/imp/tbemd/usr.bin/calendar/calendars/calendar.history user/imp/tbemd/usr.bin/calendar/calendars/calendar.judaic user/imp/tbemd/usr.bin/calendar/parsedata.c user/imp/tbemd/usr.bin/chat/chat.8 user/imp/tbemd/usr.bin/cksum/cksum.1 user/imp/tbemd/usr.bin/clang/clang/Makefile user/imp/tbemd/usr.bin/clang/tblgen/Makefile user/imp/tbemd/usr.bin/colldef/colldef.1 user/imp/tbemd/usr.bin/compress/zopen.c user/imp/tbemd/usr.bin/csup/cpasswd.1 user/imp/tbemd/usr.bin/csup/rcsparse.c user/imp/tbemd/usr.bin/fold/fold.c user/imp/tbemd/usr.bin/gencat/gencat.1 user/imp/tbemd/usr.bin/getopt/getopt.1 user/imp/tbemd/usr.bin/grep/nls/Makefile.inc user/imp/tbemd/usr.bin/gzip/gzip.c user/imp/tbemd/usr.bin/gzip/unpack.c user/imp/tbemd/usr.bin/gzip/zuncompress.c user/imp/tbemd/usr.bin/kdump/kdump.1 user/imp/tbemd/usr.bin/kdump/mksubr user/imp/tbemd/usr.bin/lex/Makefile user/imp/tbemd/usr.bin/lex/flex.skl user/imp/tbemd/usr.bin/lex/initscan.c user/imp/tbemd/usr.bin/locate/locate/locate.rc user/imp/tbemd/usr.bin/locate/locate/updatedb.sh user/imp/tbemd/usr.bin/login/login.c user/imp/tbemd/usr.bin/make/main.c user/imp/tbemd/usr.bin/mesg/mesg.1 user/imp/tbemd/usr.bin/nc/Makefile user/imp/tbemd/usr.bin/netstat/inet.c user/imp/tbemd/usr.bin/netstat/sctp.c user/imp/tbemd/usr.bin/nl/nl.1 user/imp/tbemd/usr.bin/ruptime/ruptime.c user/imp/tbemd/usr.bin/script/script.1 user/imp/tbemd/usr.bin/script/script.c user/imp/tbemd/usr.bin/seq/seq.c user/imp/tbemd/usr.bin/setchannel/setchannel.1 user/imp/tbemd/usr.bin/setchannel/setchannel.c user/imp/tbemd/usr.bin/tar/pathmatch.c user/imp/tbemd/usr.bin/tftp/Makefile user/imp/tbemd/usr.bin/tftp/main.c user/imp/tbemd/usr.bin/tr/str.c user/imp/tbemd/usr.bin/truss/amd64-fbsd.c user/imp/tbemd/usr.bin/truss/amd64-fbsd32.c user/imp/tbemd/usr.bin/truss/i386-fbsd.c user/imp/tbemd/usr.bin/truss/ia64-fbsd.c user/imp/tbemd/usr.bin/truss/mips-fbsd.c user/imp/tbemd/usr.bin/truss/powerpc-fbsd.c user/imp/tbemd/usr.bin/truss/powerpc64-fbsd.c user/imp/tbemd/usr.bin/truss/setup.c user/imp/tbemd/usr.bin/truss/sparc64-fbsd.c user/imp/tbemd/usr.bin/unzip/unzip.1 user/imp/tbemd/usr.bin/unzip/unzip.c user/imp/tbemd/usr.bin/uudecode/uudecode.c user/imp/tbemd/usr.bin/vmstat/vmstat.8 user/imp/tbemd/usr.bin/xz/Makefile user/imp/tbemd/usr.bin/yacc/Makefile user/imp/tbemd/usr.bin/yacc/closure.c user/imp/tbemd/usr.bin/yacc/defs.h user/imp/tbemd/usr.bin/yacc/error.c user/imp/tbemd/usr.bin/yacc/lalr.c user/imp/tbemd/usr.bin/yacc/lr0.c user/imp/tbemd/usr.bin/yacc/main.c user/imp/tbemd/usr.bin/yacc/mkpar.c user/imp/tbemd/usr.bin/yacc/output.c user/imp/tbemd/usr.bin/yacc/reader.c user/imp/tbemd/usr.bin/yacc/skeleton.c user/imp/tbemd/usr.bin/yacc/symtab.c user/imp/tbemd/usr.bin/yacc/verbose.c user/imp/tbemd/usr.bin/yacc/warshall.c user/imp/tbemd/usr.bin/yacc/yacc.1 user/imp/tbemd/usr.sbin/Makefile user/imp/tbemd/usr.sbin/acpi/acpidb/Makefile user/imp/tbemd/usr.sbin/acpi/iasl/Makefile user/imp/tbemd/usr.sbin/apmd/apmd.8 user/imp/tbemd/usr.sbin/bsnmpd/modules/snmp_hostres/hostres_processor_tbl.c user/imp/tbemd/usr.sbin/burncd/burncd.8 user/imp/tbemd/usr.sbin/ckdist/ckdist.1 user/imp/tbemd/usr.sbin/config/config.5 user/imp/tbemd/usr.sbin/config/configvers.h user/imp/tbemd/usr.sbin/config/main.c user/imp/tbemd/usr.sbin/config/mkmakefile.c user/imp/tbemd/usr.sbin/crunch/crunchgen/crunchgen.1 user/imp/tbemd/usr.sbin/dconschat/dconschat.8 user/imp/tbemd/usr.sbin/flowctl/flowctl.8 user/imp/tbemd/usr.sbin/freebsd-update/freebsd-update.8 user/imp/tbemd/usr.sbin/i2c/i2c.8 user/imp/tbemd/usr.sbin/jail/jail.8 user/imp/tbemd/usr.sbin/lpr/lpq/lpq.1 user/imp/tbemd/usr.sbin/lpr/lpr/lpr.c user/imp/tbemd/usr.sbin/lpr/lprm/lprm.1 user/imp/tbemd/usr.sbin/mailwrapper/Makefile user/imp/tbemd/usr.sbin/makefs/Makefile user/imp/tbemd/usr.sbin/makefs/ffs.c user/imp/tbemd/usr.sbin/makefs/ffs/buf.c user/imp/tbemd/usr.sbin/makefs/ffs/ffs_alloc.c user/imp/tbemd/usr.sbin/makefs/ffs/mkfs.c user/imp/tbemd/usr.sbin/makefs/makefs.8 user/imp/tbemd/usr.sbin/makefs/makefs.c user/imp/tbemd/usr.sbin/makefs/makefs.h user/imp/tbemd/usr.sbin/makefs/walk.c user/imp/tbemd/usr.sbin/mergemaster/mergemaster.8 user/imp/tbemd/usr.sbin/mfiutil/mfi_cmd.c user/imp/tbemd/usr.sbin/mfiutil/mfi_config.c user/imp/tbemd/usr.sbin/mfiutil/mfi_drive.c user/imp/tbemd/usr.sbin/mfiutil/mfi_evt.c user/imp/tbemd/usr.sbin/mfiutil/mfi_flash.c user/imp/tbemd/usr.sbin/mfiutil/mfi_patrol.c user/imp/tbemd/usr.sbin/mfiutil/mfi_show.c user/imp/tbemd/usr.sbin/mfiutil/mfi_volume.c user/imp/tbemd/usr.sbin/mfiutil/mfiutil.c user/imp/tbemd/usr.sbin/mixer/mixer.8 user/imp/tbemd/usr.sbin/mlxcontrol/mlxcontrol.8 user/imp/tbemd/usr.sbin/mptutil/mpt_cam.c user/imp/tbemd/usr.sbin/mptutil/mpt_cmd.c user/imp/tbemd/usr.sbin/mptutil/mpt_config.c user/imp/tbemd/usr.sbin/mptutil/mpt_drive.c user/imp/tbemd/usr.sbin/mptutil/mpt_evt.c user/imp/tbemd/usr.sbin/mptutil/mpt_show.c user/imp/tbemd/usr.sbin/mptutil/mpt_volume.c user/imp/tbemd/usr.sbin/mptutil/mptutil.c user/imp/tbemd/usr.sbin/mtest/mtest.8 user/imp/tbemd/usr.sbin/named/Makefile user/imp/tbemd/usr.sbin/ntp/config.h user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/disk-info.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/list-components.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/list-tzones.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/query-langs.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/sys-mem.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend-query/test-live.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-bsdlabel.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-cleanup.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-disk.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-extractimage.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-mountdisk.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-newfs.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions-unmount.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/functions.sh user/imp/tbemd/usr.sbin/pc-sysinstall/backend/parseconfig.sh user/imp/tbemd/usr.sbin/pc-sysinstall/conf/pc-sysinstall.conf user/imp/tbemd/usr.sbin/pc-sysinstall/examples/README user/imp/tbemd/usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.8 user/imp/tbemd/usr.sbin/pciconf/cap.c user/imp/tbemd/usr.sbin/pkg_install/Makefile.inc user/imp/tbemd/usr.sbin/pkg_install/add/main.c user/imp/tbemd/usr.sbin/pkg_install/create/create.h user/imp/tbemd/usr.sbin/pkg_install/create/main.c user/imp/tbemd/usr.sbin/pkg_install/create/perform.c user/imp/tbemd/usr.sbin/pkg_install/create/pkg_create.1 user/imp/tbemd/usr.sbin/pmcannotate/pmcannotate.c user/imp/tbemd/usr.sbin/pmccontrol/pmccontrol.c user/imp/tbemd/usr.sbin/portsnap/portsnap/portsnap.8 user/imp/tbemd/usr.sbin/ppp/ipcp.c user/imp/tbemd/usr.sbin/ppp/throughput.c user/imp/tbemd/usr.sbin/pw/pw.8 user/imp/tbemd/usr.sbin/rtadvd/rtadvd.conf.5 user/imp/tbemd/usr.sbin/services_mkdb/services_mkdb.8 user/imp/tbemd/usr.sbin/sysinstall/dist.c user/imp/tbemd/usr.sbin/sysinstall/dist.h user/imp/tbemd/usr.sbin/sysinstall/install.c user/imp/tbemd/usr.sbin/sysinstall/menus.c user/imp/tbemd/usr.sbin/sysinstall/sysinstall.8 user/imp/tbemd/usr.sbin/sysinstall/tcpip.c user/imp/tbemd/usr.sbin/tcpdump/tcpdump/Makefile user/imp/tbemd/usr.sbin/tcpdump/tcpdump/config.h user/imp/tbemd/usr.sbin/usbconfig/usbconfig.c user/imp/tbemd/usr.sbin/vidcontrol/vidcontrol.1 user/imp/tbemd/usr.sbin/watchdogd/watchdogd.c user/imp/tbemd/usr.sbin/wpa/hostapd/Makefile user/imp/tbemd/usr.sbin/wpa/hostapd/driver_freebsd.c user/imp/tbemd/usr.sbin/wpa/wpa_passphrase/Makefile user/imp/tbemd/usr.sbin/wpa/wpa_supplicant/Makefile user/imp/tbemd/usr.sbin/wpa/wpa_supplicant/driver_freebsd.c user/imp/tbemd/usr.sbin/ypbind/ypbind.c Directory Properties: user/imp/tbemd/ (props changed) user/imp/tbemd/cddl/contrib/opensolaris/ (props changed) user/imp/tbemd/contrib/bind9/ (props changed) user/imp/tbemd/contrib/binutils/ (props changed) user/imp/tbemd/contrib/bzip2/ (props changed) user/imp/tbemd/contrib/ee/ (props changed) user/imp/tbemd/contrib/expat/ (props changed) user/imp/tbemd/contrib/file/ (props changed) user/imp/tbemd/contrib/gdb/ (props changed) user/imp/tbemd/contrib/gdtoa/ (props changed) user/imp/tbemd/contrib/gnu-sort/ (props changed) user/imp/tbemd/contrib/groff/ (props changed) user/imp/tbemd/contrib/less/ (props changed) user/imp/tbemd/contrib/libpcap/ (props changed) user/imp/tbemd/contrib/llvm/ (props changed) user/imp/tbemd/contrib/llvm/tools/clang/ (props changed) user/imp/tbemd/contrib/ncurses/ (props changed) user/imp/tbemd/contrib/netcat/ (props changed) user/imp/tbemd/contrib/ntp/ (props changed) user/imp/tbemd/contrib/one-true-awk/ (props changed) user/imp/tbemd/contrib/openbsm/ (props changed) user/imp/tbemd/contrib/openpam/ (props changed) user/imp/tbemd/contrib/pf/ (props changed) user/imp/tbemd/contrib/sendmail/ (props changed) user/imp/tbemd/contrib/tcpdump/ (props changed) user/imp/tbemd/contrib/tcsh/ (props changed) user/imp/tbemd/contrib/top/ (props changed) user/imp/tbemd/contrib/top/install-sh (props changed) user/imp/tbemd/contrib/tzcode/stdtime/ (props changed) user/imp/tbemd/contrib/tzcode/zic/ (props changed) user/imp/tbemd/contrib/tzdata/ (props changed) user/imp/tbemd/contrib/wpa/ (props changed) user/imp/tbemd/contrib/xz/ (props changed) user/imp/tbemd/contrib/xz/AUTHORS (props changed) user/imp/tbemd/contrib/xz/COPYING (props changed) user/imp/tbemd/contrib/xz/TODO (props changed) user/imp/tbemd/contrib/xz/po/Makevars (props changed) user/imp/tbemd/contrib/xz/src/common/mythread.h (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_common.h (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_config.h (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_cpucores.h (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_exit.c (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_exit.h (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_integer.h (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_open_stdxxx.c (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_open_stdxxx.h (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_physmem.h (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_progname.c (props changed) user/imp/tbemd/contrib/xz/src/common/tuklib_progname.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/base.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/bcj.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/block.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/check.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/container.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/delta.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/filter.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/hardware.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/index_hash.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/stream_flags.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/api/lzma/version.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/check.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/check.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc32_fast.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc32_small.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc32_table.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc32_table_be.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc32_table_le.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc32_tablegen.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc32_x86.S (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc64_fast.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc64_small.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc64_table.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc64_table_be.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc64_table_le.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc64_tablegen.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc64_x86.S (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/crc_macros.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/check/sha256.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/alone_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/alone_decoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/alone_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/auto_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/block_buffer_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/block_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/block_decoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/block_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/block_encoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/block_header_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/block_header_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/easy_buffer_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/easy_decoder_memusage.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/easy_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/easy_encoder_memusage.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/easy_preset.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/easy_preset.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/filter_buffer_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/filter_buffer_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/filter_common.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/filter_decoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/filter_encoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/filter_flags_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/filter_flags_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/hardware_physmem.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/index.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/index.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/index_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/index_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/index_encoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/index_hash.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/stream_buffer_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/stream_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/stream_decoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/stream_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/stream_encoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/stream_flags_common.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/stream_flags_common.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/stream_flags_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/stream_flags_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/vli_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/vli_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/common/vli_size.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/delta/delta_common.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/delta/delta_common.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/delta/delta_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/delta/delta_decoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/delta/delta_encoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/delta/delta_private.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lz/lz_encoder_hash.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lz/lz_encoder_hash_table.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/fastpos.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/fastpos_table.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/fastpos_tablegen.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma2_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma2_decoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma2_encoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma_common.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma_decoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma_encoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/lzma/lzma_encoder_private.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/rangecoder/price.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/rangecoder/price_table.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/rangecoder/price_tablegen.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/rangecoder/range_common.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/rangecoder/range_decoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/rangecoder/range_encoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/arm.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/armthumb.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/ia64.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/powerpc.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/simple_coder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/simple_coder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/simple_decoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/simple_decoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/simple_encoder.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/simple_encoder.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/simple_private.h (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/sparc.c (props changed) user/imp/tbemd/contrib/xz/src/liblzma/simple/x86.c (props changed) user/imp/tbemd/contrib/xz/src/xz/file_io.h (props changed) user/imp/tbemd/contrib/xz/src/xz/list.h (props changed) user/imp/tbemd/contrib/xz/src/xz/main.h (props changed) user/imp/tbemd/contrib/xz/src/xz/suffix.c (props changed) user/imp/tbemd/contrib/xz/src/xz/suffix.h (props changed) user/imp/tbemd/crypto/openssh/ (props changed) user/imp/tbemd/crypto/openssl/ (props changed) user/imp/tbemd/lib/libc/ (props changed) user/imp/tbemd/lib/libc/stdtime/ (props changed) user/imp/tbemd/lib/libutil/ (props changed) user/imp/tbemd/lib/libz/ (props changed) user/imp/tbemd/sbin/ (props changed) user/imp/tbemd/sbin/ipfw/ (props changed) user/imp/tbemd/share/zoneinfo/ (props changed) user/imp/tbemd/sys/ (props changed) user/imp/tbemd/sys/amd64/include/xen/ (props changed) user/imp/tbemd/sys/cddl/contrib/opensolaris/ (props changed) user/imp/tbemd/sys/contrib/dev/acpica/ (props changed) user/imp/tbemd/sys/contrib/pf/ (props changed) user/imp/tbemd/sys/contrib/x86emu/ (props changed) user/imp/tbemd/sys/dev/usb/controller/ (props changed) user/imp/tbemd/sys/dev/xen/xenpci/ (props changed) user/imp/tbemd/usr.bin/calendar/ (props changed) user/imp/tbemd/usr.bin/csup/ (props changed) user/imp/tbemd/usr.bin/procstat/ (props changed) user/imp/tbemd/usr.sbin/zic/ (props changed) Modified: user/imp/tbemd/ObsoleteFiles.inc ============================================================================== --- user/imp/tbemd/ObsoleteFiles.inc Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/ObsoleteFiles.inc Tue Nov 9 22:09:22 2010 (r215061) @@ -14,6 +14,18 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20101101: headers moved to machine/ to x86/ +.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" +OLD_FILES+=usr/include/machine/apicreg.h +OLD_FILES+=usr/include/machine/mca.h +.endif +# 20101020: catch up with vm_page_sleep_if_busy rename +OLD_FILES+=usr/share/man/man9/vm_page_sleep_busy.9.gz +# 20101011: removed subblock.h from liblzma +OLD_FILES+=usr/include/lzma/subblock.h +# 20101002: removed manpath.config +OLD_FILES+=etc/manpath.config +OLD_FILES+=usr/share/examples/etc/manpath.config # 20100910: renamed sbuf_overflowed to sbuf_error OLD_FILES+=usr/share/man/man9/sbuf_overflowed.9.gz # 20100815: retired last traces of chooseproc(9) @@ -23,8 +35,13 @@ OLD_FILES+=usr/share/man/man3/ascftime.3 OLD_FILES+=usr/share/man/man3/cfree.3.gz OLD_FILES+=usr/share/man/man3/cftime.3.gz OLD_FILES+=usr/share/man/man3/getpw.3.gz +# 20100801: tzdata2010k import +OLD_FILES+=usr/share/zoneinfo/Pacific/Ponape +OLD_FILES+=usr/share/zoneinfo/Pacific/Truk # 20100725: acpi_aiboost(4) removal. OLD_FILES+=usr/share/man/man4/acpi_aiboost.4.gz +# 20100724: nfsclient/nfs_lock.h moved to nfs/nfs_lock.h +OLD_FILES+=usr/include/nfsclient/nfs_lock.h # 20100720: new clang import which bumps version from 2.0 to 2.8 OLD_FILES+=usr/include/clang/2.0/emmintrin.h OLD_FILES+=usr/include/clang/2.0/mm_malloc.h @@ -4961,7 +4978,7 @@ OLD_FILES+=usr/share/man/man5/usbd.conf. .if ${TARGET_ARCH} != "i386" && ${TARGET_ARCH} != "amd64" OLD_FILES+=usr/share/man/man8/boot_i386.8.gz .endif -.if ${TARGET_ARCH} != "powerpc" && ${TARGET_ARCH} != "sparc64" +.if ${TARGET_ARCH} != "powerpc" && ${TARGET_ARCH} != "powerpc64" && ${TARGET_ARCH} != "sparc64" OLD_FILES+=usr/share/man/man8/ofwdump.8.gz .endif OLD_FILES+=usr/share/man/man8/mount_reiserfs.8.gz Modified: user/imp/tbemd/UPDATING ============================================================================== --- user/imp/tbemd/UPDATING Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/UPDATING Tue Nov 9 22:09:22 2010 (r215061) @@ -22,6 +22,24 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 9. machines to maximize performance. (To disable malloc debugging, run ln -s aj /etc/malloc.conf.) +20101002: + The man(1) utility has been replaced by a new version that no longer + uses /etc/manpath.config. Please consult man.conf(5) for how to + migrate local entries to the new format. + +20100928: + The copyright strings printed by login(1) and sshd(8) at the time of a + new connection have been removed to follow other operating systems and + upstream sshd. + +20100915: + A workaround for a fixed ld bug has been removed in kernel code, + so make sure that your system ld is built from sources after + revision 210245 from 2010-07-19 (r211583 if building head kernel + on stable/8, r211584 for stable/7; both from 2010-08-21). + A symptom of incorrect ld version is different addresses for + set_pcpu section and __start_set_pcpu symbol in kernel and/or modules. + 20100913: The $ipv6_prefer variable in rc.conf(5) has been split into $ip6addrctl_policy and $ipv6_activate_all_interfaces. Modified: user/imp/tbemd/bin/chflags/chflags.1 ============================================================================== --- user/imp/tbemd/bin/chflags/chflags.1 Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/chflags/chflags.1 Tue Nov 9 22:09:22 2010 (r215061) @@ -98,7 +98,6 @@ will also be printed, in octal notation. The flags are specified as an octal number or a comma separated list of keywords. The following keywords are currently defined: -.Pp .Bl -tag -offset indent -width ".Cm opaque" .It Cm arch , archived set the archived flag (super-user only) Modified: user/imp/tbemd/bin/ps/extern.h ============================================================================== --- user/imp/tbemd/bin/ps/extern.h Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/ps/extern.h Tue Nov 9 22:09:22 2010 (r215061) @@ -80,8 +80,8 @@ int s_uname(KINFO *); void showkey(void); void started(KINFO *, VARENT *); void state(KINFO *, VARENT *); -void tdnam(KINFO *, VARENT *); void tdev(KINFO *, VARENT *); +void tdnam(KINFO *, VARENT *); void tname(KINFO *, VARENT *); void ucomm(KINFO *, VARENT *); void uname(KINFO *, VARENT *); Modified: user/imp/tbemd/bin/ps/keyword.c ============================================================================== --- user/imp/tbemd/bin/ps/keyword.c Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/ps/keyword.c Tue Nov 9 22:09:22 2010 (r215061) @@ -187,6 +187,8 @@ static VAR var[] = { UINT, UIDFMT, 0}, {"svuid", "SVUID", NULL, 0, kvar, NULL, UIDLEN, KOFF(ki_svuid), UINT, UIDFMT, 0}, + {"tdaddr", "TDADDR", NULL, 0, kvar, NULL, sizeof(void *) * 2, + KOFF(ki_tdaddr), KPTR, "lx", 0}, {"tdev", "TDEV", NULL, 0, tdev, NULL, 5, 0, CHAR, NULL, 0}, {"tdnam", "TDNAM", NULL, LJUST, tdnam, NULL, COMMLEN, 0, CHAR, NULL, 0}, {"time", "TIME", NULL, USER, cputime, NULL, 9, 0, CHAR, NULL, 0}, Modified: user/imp/tbemd/bin/ps/ps.1 ============================================================================== --- user/imp/tbemd/bin/ps/ps.1 Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/ps/ps.1 Tue Nov 9 22:09:22 2010 (r215061) @@ -591,6 +591,8 @@ symbolic process state (alias saved gid from a setgid executable .It Cm svuid saved UID from a setuid executable +.It Cm tdaddr +thread address .It Cm tdev control terminal device number .It Cm time Modified: user/imp/tbemd/bin/rm/rm.1 ============================================================================== --- user/imp/tbemd/bin/rm/rm.1 Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/rm/rm.1 Tue Nov 9 22:09:22 2010 (r215061) @@ -32,7 +32,7 @@ .\" @(#)rm.1 8.5 (Berkeley) 12/5/94 .\" $FreeBSD$ .\" -.Dd December 26, 2006 +.Dd October 31, 2010 .Dt RM 1 .Os .Sh NAME @@ -88,14 +88,23 @@ yet provides almost the same level of pr Overwrite regular files before deleting them. Files are overwritten three times, first with the byte pattern 0xff, then 0x00, and then 0xff again, before they are deleted. -Files with multiple links will not be overwritten nor deleted unless +Files with multiple links will not be overwritten nor deleted +and a warning will be issued. +If the .Fl f -is specified, a warning is generated instead. +option is specified, files with multiple links will also be overwritten +and deleted. +No warning will be issued. .Pp Specifying this flag for a read only file will cause .Nm to generate an error message and exit. The file will not be removed or overwritten. +.Pp +N.B.: The +.Fl P +flag is not considered a security feature +.Pq see Sx BUGS . .It Fl R Attempt to remove the file hierarchy rooted in each .Ar file @@ -225,8 +234,12 @@ command appeared in .Sh BUGS The .Fl P -option assumes that the underlying file system is a fixed-block file -system. -UFS is a fixed-block file system, LFS is not. -In addition, only regular files are overwritten, other types of files -are not. +option assumes that the underlying storage overwrites file blocks +when data is written to an existing offset. +Several factors including the file system and its backing store could defeat +this assumption. +This includes, but is not limited to file systems that use a +Copy-On-Write strategy (e.g. ZFS or UFS when snapshots are being used), Flash +media that are using a wear leveling algorithm, or when the backing datastore +does journaling, etc. +In addition, only regular files are overwritten, other types of files are not. Modified: user/imp/tbemd/bin/rm/rm.c ============================================================================== --- user/imp/tbemd/bin/rm/rm.c Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/rm/rm.c Tue Nov 9 22:09:22 2010 (r215061) @@ -402,8 +402,8 @@ rm_file(char **argv) * This is a cheap way to *really* delete files. Note that only regular * files are deleted, directories (and therefore names) will remain. * Also, this assumes a fixed-block file system (like FFS, or a V7 or a - * System V file system). In a logging file system, you'll have to have - * kernel support. + * System V file system). In a logging or COW file system, you'll have to + * have kernel support. */ int rm_overwrite(char *file, struct stat *sbp) Modified: user/imp/tbemd/bin/sh/Makefile ============================================================================== --- user/imp/tbemd/bin/sh/Makefile Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/sh/Makefile Tue Nov 9 22:09:22 2010 (r215061) @@ -21,12 +21,12 @@ LDADD= -ll -ledit -ltermcap LFLAGS= -8 # 8-bit lex scanner for arithmetic CFLAGS+=-DSHELL -I. -I${.CURDIR} # for debug: -# CFLAGS+= -g -DDEBUG=2 +# DEBUG_FLAGS+= -g -DDEBUG=2 -fno-inline WARNS?= 2 WFORMAT=0 .PATH: ${.CURDIR}/bltin \ - ${.CURDIR}/../../bin/test + ${.CURDIR}/../test CLEANFILES+= mkinit mkinit.o mknodes mknodes.o \ mksyntax mksyntax.o @@ -62,4 +62,7 @@ syntax.c syntax.h: mksyntax token.h: mktokens sh ${.CURDIR}/mktokens +regress: + cd ${.CURDIR}/../../tools/regression/bin/sh && ${MAKE} SH=${.OBJDIR}/sh + .include Modified: user/imp/tbemd/bin/sh/alias.c ============================================================================== --- user/imp/tbemd/bin/sh/alias.c Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/sh/alias.c Tue Nov 9 22:09:22 2010 (r215061) @@ -49,14 +49,14 @@ __FBSDID("$FreeBSD$"); #define ATABSIZE 39 -STATIC struct alias *atab[ATABSIZE]; -STATIC int aliases; +static struct alias *atab[ATABSIZE]; +static int aliases; -STATIC void setalias(const char *, const char *); -STATIC int unalias(const char *); -STATIC struct alias **hashalias(const char *); +static void setalias(const char *, const char *); +static int unalias(const char *); +static struct alias **hashalias(const char *); -STATIC +static void setalias(const char *name, const char *val) { @@ -111,7 +111,7 @@ setalias(const char *name, const char *v INTON; } -STATIC int +static int unalias(const char *name) { struct alias *ap, **app; @@ -276,7 +276,7 @@ unaliascmd(int argc __unused, char **arg return (i); } -STATIC struct alias ** +static struct alias ** hashalias(const char *p) { unsigned int hashval; Modified: user/imp/tbemd/bin/sh/cd.c ============================================================================== --- user/imp/tbemd/bin/sh/cd.c Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/sh/cd.c Tue Nov 9 22:09:22 2010 (r215061) @@ -64,18 +64,18 @@ __FBSDID("$FreeBSD$"); #include "show.h" #include "cd.h" -STATIC int cdlogical(char *); -STATIC int cdphysical(char *); -STATIC int docd(char *, int, int); -STATIC char *getcomponent(void); -STATIC char *findcwd(char *); -STATIC void updatepwd(char *); -STATIC char *getpwd(void); -STATIC char *getpwd2(void); - -STATIC char *curdir = NULL; /* current working directory */ -STATIC char *prevdir; /* previous working directory */ -STATIC char *cdcomppath; +static int cdlogical(char *); +static int cdphysical(char *); +static int docd(char *, int, int); +static char *getcomponent(void); +static char *findcwd(char *); +static void updatepwd(char *); +static char *getpwd(void); +static char *getpwd2(void); + +static char *curdir = NULL; /* current working directory */ +static char *prevdir; /* previous working directory */ +static char *cdcomppath; int cdcmd(int argc, char **argv) @@ -145,7 +145,7 @@ cdcmd(int argc, char **argv) * Actually change the directory. In an interactive shell, print the * directory name if "print" is nonzero. */ -STATIC int +static int docd(char *dest, int print, int phys) { @@ -161,7 +161,7 @@ docd(char *dest, int print, int phys) return 0; } -STATIC int +static int cdlogical(char *dest) { char *p; @@ -213,7 +213,7 @@ cdlogical(char *dest) return (0); } -STATIC int +static int cdphysical(char *dest) { char *p; @@ -232,7 +232,7 @@ cdphysical(char *dest) * Get the next component of the path name pointed to by cdcomppath. * This routine overwrites the string pointed to by cdcomppath. */ -STATIC char * +static char * getcomponent(void) { char *p; @@ -253,7 +253,7 @@ getcomponent(void) } -STATIC char * +static char * findcwd(char *dir) { char *new; @@ -296,7 +296,7 @@ findcwd(char *dir) * cd command. We also call hashcd to let the routines in exec.c know * that the current directory has changed. */ -STATIC void +static void updatepwd(char *dir) { hashcd(); /* update command hash table */ @@ -352,7 +352,7 @@ pwdcmd(int argc, char **argv) /* * Get the current directory and cache the result in curdir. */ -STATIC char * +static char * getpwd(void) { char *p; @@ -372,7 +372,7 @@ getpwd(void) /* * Return the current directory. */ -STATIC char * +static char * getpwd2(void) { char *pwd; Modified: user/imp/tbemd/bin/sh/eval.c ============================================================================== --- user/imp/tbemd/bin/sh/eval.c Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/sh/eval.c Tue Nov 9 22:09:22 2010 (r215061) @@ -75,10 +75,10 @@ __FBSDID("$FreeBSD$"); int evalskip; /* set if we are skipping commands */ -STATIC int skipcount; /* number of levels to skip */ +static int skipcount; /* number of levels to skip */ MKINIT int loopnest; /* current loop nesting level */ int funcnest; /* depth of function calls */ -STATIC int builtin_flags; /* evalcommand flags for builtins */ +static int builtin_flags; /* evalcommand flags for builtins */ char *commandname; @@ -87,15 +87,15 @@ int exitstatus; /* exit status of last int oexitstatus; /* saved exit status */ -STATIC void evalloop(union node *, int); -STATIC void evalfor(union node *, int); -STATIC void evalcase(union node *, int); -STATIC void evalsubshell(union node *, int); -STATIC void evalredir(union node *, int); -STATIC void expredir(union node *); -STATIC void evalpipe(union node *); -STATIC void evalcommand(union node *, int, struct backcmd *); -STATIC void prehash(union node *); +static void evalloop(union node *, int); +static void evalfor(union node *, int); +static void evalcase(union node *, int); +static void evalsubshell(union node *, int); +static void evalredir(union node *, int); +static void expredir(union node *); +static void evalpipe(union node *); +static void evalcommand(union node *, int, struct backcmd *); +static void prehash(union node *); /* @@ -196,6 +196,7 @@ void evaltree(union node *n, int flags) { int do_etest; + union node *next; do_etest = 0; if (n == NULL) { @@ -203,84 +204,88 @@ evaltree(union node *n, int flags) exitstatus = 0; goto out; } + do { + next = NULL; #ifndef NO_HISTORY - displayhist = 1; /* show history substitutions done with fc */ + displayhist = 1; /* show history substitutions done with fc */ #endif - TRACE(("evaltree(%p: %d) called\n", (void *)n, n->type)); - switch (n->type) { - case NSEMI: - evaltree(n->nbinary.ch1, flags & ~EV_EXIT); - if (evalskip) - goto out; - evaltree(n->nbinary.ch2, flags); - break; - case NAND: - evaltree(n->nbinary.ch1, EV_TESTED); - if (evalskip || exitstatus != 0) { - goto out; + TRACE(("evaltree(%p: %d) called\n", (void *)n, n->type)); + switch (n->type) { + case NSEMI: + evaltree(n->nbinary.ch1, flags & ~EV_EXIT); + if (evalskip) + goto out; + next = n->nbinary.ch2; + break; + case NAND: + evaltree(n->nbinary.ch1, EV_TESTED); + if (evalskip || exitstatus != 0) { + goto out; + } + next = n->nbinary.ch2; + break; + case NOR: + evaltree(n->nbinary.ch1, EV_TESTED); + if (evalskip || exitstatus == 0) + goto out; + next = n->nbinary.ch2; + break; + case NREDIR: + evalredir(n, flags); + break; + case NSUBSHELL: + evalsubshell(n, flags); + do_etest = !(flags & EV_TESTED); + break; + case NBACKGND: + evalsubshell(n, flags); + break; + case NIF: { + evaltree(n->nif.test, EV_TESTED); + if (evalskip) + goto out; + if (exitstatus == 0) + next = n->nif.ifpart; + else if (n->nif.elsepart) + next = n->nif.elsepart; + else + exitstatus = 0; + break; } - evaltree(n->nbinary.ch2, flags); - break; - case NOR: - evaltree(n->nbinary.ch1, EV_TESTED); - if (evalskip || exitstatus == 0) - goto out; - evaltree(n->nbinary.ch2, flags); - break; - case NREDIR: - evalredir(n, flags); - break; - case NSUBSHELL: - evalsubshell(n, flags); - do_etest = !(flags & EV_TESTED); - break; - case NBACKGND: - evalsubshell(n, flags); - break; - case NIF: { - evaltree(n->nif.test, EV_TESTED); - if (evalskip) - goto out; - if (exitstatus == 0) - evaltree(n->nif.ifpart, flags); - else if (n->nif.elsepart) - evaltree(n->nif.elsepart, flags); - else + case NWHILE: + case NUNTIL: + evalloop(n, flags & ~EV_EXIT); + break; + case NFOR: + evalfor(n, flags & ~EV_EXIT); + break; + case NCASE: + evalcase(n, flags); + break; + case NDEFUN: + defun(n->narg.text, n->narg.next); exitstatus = 0; - break; - } - case NWHILE: - case NUNTIL: - evalloop(n, flags & ~EV_EXIT); - break; - case NFOR: - evalfor(n, flags & ~EV_EXIT); - break; - case NCASE: - evalcase(n, flags); - break; - case NDEFUN: - defun(n->narg.text, n->narg.next); - exitstatus = 0; - break; - case NNOT: - evaltree(n->nnot.com, EV_TESTED); - exitstatus = !exitstatus; - break; - - case NPIPE: - evalpipe(n); - do_etest = !(flags & EV_TESTED); - break; - case NCMD: - evalcommand(n, flags, (struct backcmd *)NULL); - do_etest = !(flags & EV_TESTED); - break; - default: - out1fmt("Node type = %d\n", n->type); - flushout(&output); - break; - } + break; + case NNOT: + evaltree(n->nnot.com, EV_TESTED); + exitstatus = !exitstatus; + break; + + case NPIPE: + evalpipe(n); + do_etest = !(flags & EV_TESTED); + break; + case NCMD: + evalcommand(n, flags, (struct backcmd *)NULL); + do_etest = !(flags & EV_TESTED); + break; + default: + out1fmt("Node type = %d\n", n->type); + flushout(&output); + break; + } + n = next; + } while (n != NULL); out: if (pendingsigs) dotrap(); @@ -289,7 +294,7 @@ out: } -STATIC void +static void evalloop(union node *n, int flags) { int status; @@ -327,7 +332,7 @@ skipping: if (evalskip == SKIPCONT && -STATIC void +static void evalfor(union node *n, int flags) { struct arglist arglist; @@ -367,7 +372,7 @@ out: -STATIC void +static void evalcase(union node *n, int flags) { union node *cp; @@ -400,7 +405,7 @@ out: * Kick off a subshell to evaluate a tree. */ -STATIC void +static void evalsubshell(union node *n, int flags) { struct job *jp; @@ -425,7 +430,7 @@ evalsubshell(union node *n, int flags) * Evaluate a redirected compound command. */ -STATIC void +static void evalredir(union node *n, int flags) { struct jmploc jmploc; @@ -466,7 +471,7 @@ evalredir(union node *n, int flags) * Compute the names of the files in a redirection list. */ -STATIC void +static void expredir(union node *n) { union node *redir; @@ -504,7 +509,7 @@ expredir(union node *n) * of all the rest.) */ -STATIC void +static void evalpipe(union node *n) { struct job *jp; @@ -617,7 +622,7 @@ out: * Execute a simple command. */ -STATIC void +static void evalcommand(union node *cmd, int flags, struct backcmd *backcmd) { struct stackmark smark; @@ -1028,7 +1033,7 @@ out: * check that the name will not be subject to expansion. */ -STATIC void +static void prehash(union node *n) { struct cmdentry entry; @@ -1130,7 +1135,7 @@ commandcmd(int argc, char **argv) return typecmd_impl(2, argv - 1, cmd, path); } if (argc != 0) - error("commandcmd() called while it should not be"); + error("commandcmd bad call"); /* * Do nothing successfully if no command was specified; Modified: user/imp/tbemd/bin/sh/exec.c ============================================================================== --- user/imp/tbemd/bin/sh/exec.c Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/sh/exec.c Tue Nov 9 22:09:22 2010 (r215061) @@ -91,15 +91,15 @@ struct tblentry { }; -STATIC struct tblentry *cmdtable[CMDTABLESIZE]; -STATIC int builtinloc = -1; /* index in path of %builtin, or -1 */ +static struct tblentry *cmdtable[CMDTABLESIZE]; +static int builtinloc = -1; /* index in path of %builtin, or -1 */ int exerrno = 0; /* Last exec error */ -STATIC void tryexec(char *, char **, char **); -STATIC void printentry(struct tblentry *, int); -STATIC struct tblentry *cmdlookup(const char *, int); -STATIC void delete_cmd_entry(void); +static void tryexec(char *, char **, char **); +static void printentry(struct tblentry *, int); +static struct tblentry *cmdlookup(const char *, int); +static void delete_cmd_entry(void); @@ -147,7 +147,7 @@ shellexec(char **argv, char **envp, cons } -STATIC void +static void tryexec(char *cmd, char **argv, char **envp) { int e; @@ -265,7 +265,7 @@ hashcmd(int argc __unused, char **argv _ } -STATIC void +static void printentry(struct tblentry *cmdp, int verbose) { int idx; @@ -615,10 +615,10 @@ deletefuncs(void) * entry. */ -STATIC struct tblentry **lastcmdentry; +static struct tblentry **lastcmdentry; -STATIC struct tblentry * +static struct tblentry * cmdlookup(const char *name, int add) { int hashval; @@ -655,7 +655,7 @@ cmdlookup(const char *name, int add) * Delete the command entry returned on the last lookup. */ -STATIC void +static void delete_cmd_entry(void) { struct tblentry *cmdp; Modified: user/imp/tbemd/bin/sh/expand.c ============================================================================== --- user/imp/tbemd/bin/sh/expand.c Tue Nov 9 22:03:39 2010 (r215060) +++ user/imp/tbemd/bin/sh/expand.c Tue Nov 9 22:09:22 2010 (r215061) @@ -43,14 +43,15 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include -#include -#include -#include +#include +#include #include +#include #include +#include #include +#include /* * Routines to expand arguments to commands. We have to deal with @@ -88,31 +89,31 @@ struct ifsregion { }; -STATIC char *expdest; /* output of current string */ -STATIC struct nodelist *argbackq; /* list of back quote expressions */ -STATIC struct ifsregion ifsfirst; /* first struct in list of ifs regions */ -STATIC struct ifsregion *ifslastp; /* last struct in list */ -STATIC struct arglist exparg; /* holds expanded arg list */ - -STATIC void argstr(char *, int); -STATIC char *exptilde(char *, int); -STATIC void expbackq(union node *, int, int); -STATIC int subevalvar(char *, char *, int, int, int, int); -STATIC char *evalvar(char *, int); -STATIC int varisset(char *, int); -STATIC void varvalue(char *, int, int, int); -STATIC void recordregion(int, int, int); -STATIC void removerecordregions(int); -STATIC void ifsbreakup(char *, struct arglist *); -STATIC void expandmeta(struct strlist *, int); -STATIC void expmeta(char *, char *); -STATIC void addfname(char *); -STATIC struct strlist *expsort(struct strlist *); -STATIC struct strlist *msort(struct strlist *, int); -STATIC char *cvtnum(int, char *); -STATIC int collate_range_cmp(int, int); +static char *expdest; /* output of current string */ +static struct nodelist *argbackq; /* list of back quote expressions */ +static struct ifsregion ifsfirst; /* first struct in list of ifs regions */ +static struct ifsregion *ifslastp; /* last struct in list */ +static struct arglist exparg; /* holds expanded arg list */ + +static void argstr(char *, int); +static char *exptilde(char *, int); +static void expbackq(union node *, int, int); +static int subevalvar(char *, char *, int, int, int, int, int); +static char *evalvar(char *, int); +static int varisset(char *, int); +static void varvalue(char *, int, int, int); +static void recordregion(int, int, int); +static void removerecordregions(int); +static void ifsbreakup(char *, struct arglist *); +static void expandmeta(struct strlist *, int); +static void expmeta(char *, char *); +static void addfname(char *); +static struct strlist *expsort(struct strlist *); +static struct strlist *msort(struct strlist *, int); +static char *cvtnum(int, char *); +static int collate_range_cmp(int, int); -STATIC int +static int collate_range_cmp(int c1, int c2) { static char s1[2], s2[2]; @@ -209,13 +210,18 @@ expandarg(union node *arg, struct arglis * characters to allow for further processing. * If EXP_FULL is set, also preserve CTLQUOTEMARK characters. */ -STATIC void +static void argstr(char *p, int flag) { char c; int quotes = flag & (EXP_FULL | EXP_CASE | EXP_REDIR); /* do CTLESC */ int firsteq = 1; + int split_lit; + int lit_quoted; + split_lit = flag & EXP_SPLIT_LIT; + lit_quoted = flag & EXP_LIT_QUOTED; + flag &= ~(EXP_SPLIT_LIT | EXP_LIT_QUOTED); if (*p == '~' && (flag & (EXP_TILDE | EXP_VARTILDE))) p = exptilde(p, flag); for (;;) { @@ -224,17 +230,25 @@ argstr(char *p, int flag) case CTLENDVAR: goto breakloop; case CTLQUOTEMARK: + lit_quoted = 1; /* "$@" syntax adherence hack */ if (p[0] == CTLVAR && p[2] == '@' && p[3] == '=') break; if ((flag & EXP_FULL) != 0) STPUTC(c, expdest); break; + case CTLQUOTEEND: + lit_quoted = 0; + break; case CTLESC: if (quotes) STPUTC(c, expdest); c = *p++; STPUTC(c, expdest); + if (split_lit && !lit_quoted) + recordregion(expdest - stackblock() - + (quotes ? 2 : 1), + expdest - stackblock(), 0); break; case CTLVAR: p = evalvar(p, flag); @@ -254,18 +268,21 @@ argstr(char *p, int flag) * assignments (after the first '=' and after ':'s). */ STPUTC(c, expdest); - if (flag & EXP_VARTILDE && *p == '~') { - if (c == '=') { - if (firsteq) - firsteq = 0; - else - break; - } + if (split_lit && !lit_quoted) + recordregion(expdest - stackblock() - 1, + expdest - stackblock(), 0); + if (flag & EXP_VARTILDE && *p == '~' && + (c != '=' || firsteq)) { + if (c == '=') + firsteq = 0; p = exptilde(p, flag); } break; default: STPUTC(c, expdest); + if (split_lit && !lit_quoted) + recordregion(expdest - stackblock() - 1, + expdest - stackblock(), 0); } } breakloop:; @@ -275,7 +292,7 @@ breakloop:; * Perform tilde expansion, placing the result in the stack string and * returning the next position in the input string to process. */ -STATIC char * +static char * exptilde(char *p, int flag) { char c, *startp = p; @@ -328,7 +345,7 @@ lose: } -STATIC void +static void removerecordregions(int endoff) { if (ifslastp == NULL) @@ -427,7 +444,7 @@ expari(int flag) /* * Perform command substitution. */ -STATIC void +static void expbackq(union node *cmd, int quoted, int flag) { struct backcmd in; @@ -497,9 +514,9 @@ expbackq(union node *cmd, int quoted, in exitstatus = waitforjob(in.jp, (int *)NULL); if (quoted == 0) recordregion(startloc, dest - stackblock(), 0); - TRACE(("evalbackq: size=%d: \"%.*s\"\n", - (dest - stackblock()) - startloc, - (dest - stackblock()) - startloc, + TRACE(("expbackq: size=%td: \"%.*s\"\n", + ((dest - stackblock()) - startloc), + (int)((dest - stackblock()) - startloc), stackblock() + startloc)); expdest = dest; INTON; @@ -507,9 +524,9 @@ expbackq(union node *cmd, int quoted, in -STATIC int +static int subevalvar(char *p, char *str, int strloc, int subtype, int startloc, - int varflags) + int varflags, int quotes) { char *startp; char *loc = NULL; @@ -554,12 +571,12 @@ subevalvar(char *p, char *str, int strlo for (loc = startp; loc < str; loc++) { c = *loc; *loc = '\0'; - if (patmatch(str, startp, varflags & VSQUOTE)) { + if (patmatch(str, startp, quotes)) { *loc = c; goto recordleft; } *loc = c; - if ((varflags & VSQUOTE) && *loc == CTLESC) + if (quotes && *loc == CTLESC) loc++; } return 0; @@ -568,14 +585,13 @@ subevalvar(char *p, char *str, int strlo for (loc = str - 1; loc >= startp;) { c = *loc; *loc = '\0'; - if (patmatch(str, startp, varflags & VSQUOTE)) { + if (patmatch(str, startp, quotes)) { *loc = c; goto recordleft; } *loc = c; loc--; - if ((varflags & VSQUOTE) && loc > startp && - *(loc - 1) == CTLESC) { + if (quotes && loc > startp && *(loc - 1) == CTLESC) { for (q = startp; q < loc; q++) if (*q == CTLESC) q++; @@ -587,14 +603,13 @@ subevalvar(char *p, char *str, int strlo case VSTRIMRIGHT: for (loc = str - 1; loc >= startp;) { - if (patmatch(str, loc, varflags & VSQUOTE)) { + if (patmatch(str, loc, quotes)) { amount = loc - expdest; STADJUST(amount, expdest); return 1; } loc--; - if ((varflags & VSQUOTE) && loc > startp && - *(loc - 1) == CTLESC) { + if (quotes && loc > startp && *(loc - 1) == CTLESC) { for (q = startp; q < loc; q++) if (*q == CTLESC) q++; @@ -606,12 +621,12 @@ subevalvar(char *p, char *str, int strlo case VSTRIMRIGHTMAX: for (loc = startp; loc < str - 1; loc++) { - if (patmatch(str, loc, varflags & VSQUOTE)) { + if (patmatch(str, loc, quotes)) { amount = loc - expdest; STADJUST(amount, expdest); return 1; } - if ((varflags & VSQUOTE) && *loc == CTLESC) + if (quotes && *loc == CTLESC) loc++; } return 0; @@ -635,7 +650,7 @@ recordleft: * input string. */ -STATIC char * +static char * evalvar(char *p, int flag) { int subtype; @@ -741,7 +756,8 @@ record: case VSPLUS: case VSMINUS: *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Tue Nov 9 22:16:48 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 771CE1065670; Tue, 9 Nov 2010 22:16:48 +0000 (UTC) (envelope-from imp@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6178A8FC0A; Tue, 9 Nov 2010 22:16:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oA9MGmFt053953; Tue, 9 Nov 2010 22:16:48 GMT (envelope-from imp@svn.freebsd.org) Received: (from imp@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oA9MGmv3053939; Tue, 9 Nov 2010 22:16:48 GMT (envelope-from imp@svn.freebsd.org) Message-Id: <201011092216.oA9MGmv3053939@svn.freebsd.org> From: Warner Losh Date: Tue, 9 Nov 2010 22:16:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215062 - in user/imp/tbemd: . contrib/top sys/amd64/include sys/arm/include sys/fs/nwfs sys/i386/include sys/i386/xen sys/ia64/ia64 sys/ia64/include sys/kern sys/mips/include sys/pc98/... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 09 Nov 2010 22:16:48 -0000 Author: imp Date: Tue Nov 9 22:16:47 2010 New Revision: 215062 URL: http://svn.freebsd.org/changeset/base/215062 Log: merge from currnet @215061 Added: user/imp/tbemd/sys/x86/include/mptable.h - copied unchanged from r215061, head/sys/x86/include/mptable.h Deleted: user/imp/tbemd/sys/amd64/include/mptable.h user/imp/tbemd/sys/amd64/include/mutex.h user/imp/tbemd/sys/arm/include/mutex.h user/imp/tbemd/sys/i386/include/mptable.h user/imp/tbemd/sys/i386/include/mutex.h user/imp/tbemd/sys/ia64/include/mutex.h user/imp/tbemd/sys/mips/include/mutex.h user/imp/tbemd/sys/pc98/include/mptable.h user/imp/tbemd/sys/pc98/include/mutex.h user/imp/tbemd/sys/powerpc/include/mutex.h user/imp/tbemd/sys/sparc64/include/mutex.h user/imp/tbemd/sys/sun4v/include/mutex.h Modified: user/imp/tbemd/ObsoleteFiles.inc user/imp/tbemd/sys/fs/nwfs/nwfs_vnops.c user/imp/tbemd/sys/i386/xen/mptable.c user/imp/tbemd/sys/ia64/ia64/db_machdep.c user/imp/tbemd/sys/ia64/ia64/genassym.c user/imp/tbemd/sys/ia64/ia64/machdep.c user/imp/tbemd/sys/kern/kern_mutex.c user/imp/tbemd/sys/powerpc/booke/locore.S user/imp/tbemd/sys/sys/mutex.h user/imp/tbemd/sys/ufs/ufs/ufs_vnops.c user/imp/tbemd/sys/x86/x86/mptable.c user/imp/tbemd/sys/x86/x86/mptable_pci.c Directory Properties: user/imp/tbemd/ (props changed) user/imp/tbemd/cddl/contrib/opensolaris/ (props changed) user/imp/tbemd/contrib/bind9/ (props changed) user/imp/tbemd/contrib/binutils/ (props changed) user/imp/tbemd/contrib/bzip2/ (props changed) user/imp/tbemd/contrib/ee/ (props changed) user/imp/tbemd/contrib/expat/ (props changed) user/imp/tbemd/contrib/file/ (props changed) user/imp/tbemd/contrib/gdb/ (props changed) user/imp/tbemd/contrib/gdtoa/ (props changed) user/imp/tbemd/contrib/gnu-sort/ (props changed) user/imp/tbemd/contrib/groff/ (props changed) user/imp/tbemd/contrib/less/ (props changed) user/imp/tbemd/contrib/libpcap/ (props changed) user/imp/tbemd/contrib/llvm/ (props changed) user/imp/tbemd/contrib/llvm/tools/clang/ (props changed) user/imp/tbemd/contrib/ncurses/ (props changed) user/imp/tbemd/contrib/netcat/ (props changed) user/imp/tbemd/contrib/ntp/ (props changed) user/imp/tbemd/contrib/one-true-awk/ (props changed) user/imp/tbemd/contrib/openbsm/ (props changed) user/imp/tbemd/contrib/openpam/ (props changed) user/imp/tbemd/contrib/pf/ (props changed) user/imp/tbemd/contrib/sendmail/ (props changed) user/imp/tbemd/contrib/tcpdump/ (props changed) user/imp/tbemd/contrib/tcsh/ (props changed) user/imp/tbemd/contrib/top/ (props changed) user/imp/tbemd/contrib/top/install-sh (props changed) user/imp/tbemd/contrib/tzcode/stdtime/ (props changed) user/imp/tbemd/contrib/tzcode/zic/ (props changed) user/imp/tbemd/contrib/tzdata/ (props changed) user/imp/tbemd/contrib/wpa/ (props changed) user/imp/tbemd/contrib/xz/ (props changed) user/imp/tbemd/crypto/openssh/ (props changed) user/imp/tbemd/crypto/openssl/ (props changed) user/imp/tbemd/lib/libc/ (props changed) user/imp/tbemd/lib/libc/stdtime/ (props changed) user/imp/tbemd/lib/libutil/ (props changed) user/imp/tbemd/lib/libz/ (props changed) user/imp/tbemd/sbin/ (props changed) user/imp/tbemd/sbin/ipfw/ (props changed) user/imp/tbemd/share/zoneinfo/ (props changed) user/imp/tbemd/sys/ (props changed) user/imp/tbemd/sys/amd64/include/xen/ (props changed) user/imp/tbemd/sys/cddl/contrib/opensolaris/ (props changed) user/imp/tbemd/sys/contrib/dev/acpica/ (props changed) user/imp/tbemd/sys/contrib/pf/ (props changed) user/imp/tbemd/sys/contrib/x86emu/ (props changed) user/imp/tbemd/sys/dev/xen/xenpci/ (props changed) user/imp/tbemd/usr.bin/calendar/ (props changed) user/imp/tbemd/usr.bin/csup/ (props changed) user/imp/tbemd/usr.bin/procstat/ (props changed) user/imp/tbemd/usr.sbin/zic/ (props changed) Modified: user/imp/tbemd/ObsoleteFiles.inc ============================================================================== --- user/imp/tbemd/ObsoleteFiles.inc Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/ObsoleteFiles.inc Tue Nov 9 22:16:47 2010 (r215062) @@ -14,6 +14,10 @@ # The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last. # +# 20101109: headers moved to machine/ to x86/ +.if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" +OLD_FILES+=usr/include/machine/mptable.h +.endif # 20101101: headers moved to machine/ to x86/ .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" OLD_FILES+=usr/include/machine/apicreg.h Modified: user/imp/tbemd/sys/fs/nwfs/nwfs_vnops.c ============================================================================== --- user/imp/tbemd/sys/fs/nwfs/nwfs_vnops.c Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/fs/nwfs/nwfs_vnops.c Tue Nov 9 22:16:47 2010 (r215062) @@ -39,8 +39,6 @@ #include #include -#include - #include #include #include Modified: user/imp/tbemd/sys/i386/xen/mptable.c ============================================================================== --- user/imp/tbemd/sys/i386/xen/mptable.c Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/i386/xen/mptable.c Tue Nov 9 22:16:47 2010 (r215062) @@ -38,11 +38,11 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include #include -#include #include #include Modified: user/imp/tbemd/sys/ia64/ia64/db_machdep.c ============================================================================== --- user/imp/tbemd/sys/ia64/ia64/db_machdep.c Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/ia64/ia64/db_machdep.c Tue Nov 9 22:16:47 2010 (r215062) @@ -48,7 +48,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include Modified: user/imp/tbemd/sys/ia64/ia64/genassym.c ============================================================================== --- user/imp/tbemd/sys/ia64/ia64/genassym.c Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/ia64/ia64/genassym.c Tue Nov 9 22:16:47 2010 (r215062) @@ -49,7 +49,6 @@ #include #include #include -#include #include #include #include Modified: user/imp/tbemd/sys/ia64/ia64/machdep.c ============================================================================== --- user/imp/tbemd/sys/ia64/ia64/machdep.c Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/ia64/ia64/machdep.c Tue Nov 9 22:16:47 2010 (r215062) @@ -88,7 +88,6 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include #include #include #include Modified: user/imp/tbemd/sys/kern/kern_mutex.c ============================================================================== --- user/imp/tbemd/sys/kern/kern_mutex.c Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/kern/kern_mutex.c Tue Nov 9 22:16:47 2010 (r215062) @@ -200,7 +200,7 @@ _mtx_lock_flags(struct mtx *m, int opts, WITNESS_CHECKORDER(&m->lock_object, opts | LOP_NEWORDER | LOP_EXCLUSIVE, file, line, NULL); - _get_sleep_lock(m, curthread, opts, file, line); + __mtx_lock(m, curthread, opts, file, line); LOCK_LOG_LOCK("LOCK", &m->lock_object, opts, m->mtx_recurse, file, line); WITNESS_LOCK(&m->lock_object, opts | LOP_EXCLUSIVE, file, line); @@ -224,7 +224,7 @@ _mtx_unlock_flags(struct mtx *m, int opt if (m->mtx_recurse == 0) LOCKSTAT_PROFILE_RELEASE_LOCK(LS_MTX_UNLOCK_RELEASE, m); - _rel_sleep_lock(m, curthread, opts, file, line); + __mtx_unlock(m, curthread, opts, file, line); } void @@ -243,7 +243,7 @@ _mtx_lock_spin_flags(struct mtx *m, int m->lock_object.lo_name, file, line)); WITNESS_CHECKORDER(&m->lock_object, opts | LOP_NEWORDER | LOP_EXCLUSIVE, file, line, NULL); - _get_spin_lock(m, curthread, opts, file, line); + __mtx_lock_spin(m, curthread, opts, file, line); LOCK_LOG_LOCK("LOCK", &m->lock_object, opts, m->mtx_recurse, file, line); WITNESS_LOCK(&m->lock_object, opts | LOP_EXCLUSIVE, file, line); @@ -264,7 +264,7 @@ _mtx_unlock_spin_flags(struct mtx *m, in line); mtx_assert(m, MA_OWNED); - _rel_spin_lock(m); + __mtx_unlock_spin(m); } /* @@ -293,7 +293,7 @@ _mtx_trylock(struct mtx *m, int opts, co atomic_set_ptr(&m->mtx_lock, MTX_RECURSED); rval = 1; } else - rval = _obtain_lock(m, (uintptr_t)curthread); + rval = _mtx_obtain_lock(m, (uintptr_t)curthread); LOCK_LOG_TRY("LOCK", &m->lock_object, opts, rval, file, line); if (rval) { @@ -355,7 +355,7 @@ _mtx_lock_sleep(struct mtx *m, uintptr_t "_mtx_lock_sleep: %s contested (lock=%p) at %s:%d", m->lock_object.lo_name, (void *)m->mtx_lock, file, line); - while (!_obtain_lock(m, tid)) { + while (!_mtx_obtain_lock(m, tid)) { #ifdef KDTRACE_HOOKS spin_cnt++; #endif @@ -511,7 +511,7 @@ _mtx_lock_spin(struct mtx *m, uintptr_t CTR1(KTR_LOCK, "_mtx_lock_spin: %p spinning", m); lock_profile_obtain_lock_failed(&m->lock_object, &contested, &waittime); - while (!_obtain_lock(m, tid)) { + while (!_mtx_obtain_lock(m, tid)) { /* Give interrupts a chance while we spin. */ spinlock_exit(); @@ -569,7 +569,7 @@ retry: m->lock_object.lo_name, file, line)); WITNESS_CHECKORDER(&m->lock_object, opts | LOP_NEWORDER | LOP_EXCLUSIVE, file, line, NULL); - while (!_obtain_lock(m, tid)) { + while (!_mtx_obtain_lock(m, tid)) { #ifdef KDTRACE_HOOKS spin_cnt++; #endif @@ -597,7 +597,7 @@ retry: } if (m == td->td_lock) break; - _rel_spin_lock(m); /* does spinlock_exit() */ + __mtx_unlock_spin(m); /* does spinlock_exit() */ #ifdef KDTRACE_HOOKS spin_cnt++; #endif @@ -673,7 +673,7 @@ _mtx_unlock_sleep(struct mtx *m, int opt CTR1(KTR_LOCK, "_mtx_unlock_sleep: %p contested", m); MPASS(ts != NULL); turnstile_broadcast(ts, TS_EXCLUSIVE_QUEUE); - _release_lock_quick(m); + _mtx_release_lock_quick(m); /* * This turnstile is now no longer associated with the mutex. We can @@ -685,7 +685,7 @@ _mtx_unlock_sleep(struct mtx *m, int opt /* * All the unlocking of MTX_SPIN locks is done inline. - * See the _rel_spin_lock() macro for the details. + * See the __mtx_unlock_spin() macro for the details. */ /* Modified: user/imp/tbemd/sys/powerpc/booke/locore.S ============================================================================== --- user/imp/tbemd/sys/powerpc/booke/locore.S Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/powerpc/booke/locore.S Tue Nov 9 22:16:47 2010 (r215062) @@ -28,8 +28,6 @@ #include "assym.s" -#include - #include #include #include Modified: user/imp/tbemd/sys/sys/mutex.h ============================================================================== --- user/imp/tbemd/sys/sys/mutex.h Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/sys/mutex.h Tue Nov 9 22:16:47 2010 (r215062) @@ -32,7 +32,6 @@ #ifndef _SYS_MUTEX_H_ #define _SYS_MUTEX_H_ -#ifndef LOCORE #include #include #include @@ -43,12 +42,6 @@ #include #include #include -#endif /* _KERNEL_ */ -#endif /* !LOCORE */ - -#include - -#ifdef _KERNEL /* * Mutex types and options passed to mtx_init(). MTX_QUIET and MTX_DUPOK @@ -83,8 +76,6 @@ #endif /* _KERNEL */ -#ifndef LOCORE - /* * XXX: Friendly reminder to fix things in MP code that is presently being * XXX: worked on. @@ -137,68 +128,59 @@ void _thread_lock_flags(struct thread *, #define mtx_recurse lock_object.lo_data -/* - * We define our machine-independent (unoptimized) mutex micro-operations - * here, if they are not already defined in the machine-dependent mutex.h - */ +/* Very simple operations on mtx_lock. */ /* Try to obtain mtx_lock once. */ -#ifndef _obtain_lock -#define _obtain_lock(mp, tid) \ +#define _mtx_obtain_lock(mp, tid) \ atomic_cmpset_acq_ptr(&(mp)->mtx_lock, MTX_UNOWNED, (tid)) -#endif /* Try to release mtx_lock if it is unrecursed and uncontested. */ -#ifndef _release_lock -#define _release_lock(mp, tid) \ +#define _mtx_release_lock(mp, tid) \ atomic_cmpset_rel_ptr(&(mp)->mtx_lock, (tid), MTX_UNOWNED) -#endif /* Release mtx_lock quickly, assuming we own it. */ -#ifndef _release_lock_quick -#define _release_lock_quick(mp) \ +#define _mtx_release_lock_quick(mp) \ atomic_store_rel_ptr(&(mp)->mtx_lock, MTX_UNOWNED) -#endif /* - * Obtain a sleep lock inline, or call the "hard" function if we can't get it - * easy. + * Full lock operations that are suitable to be inlined in non-debug + * kernels. If the lock cannot be acquired or released trivially then + * the work is deferred to another function. */ -#ifndef _get_sleep_lock -#define _get_sleep_lock(mp, tid, opts, file, line) do { \ + +/* Lock a normal mutex. */ +#define __mtx_lock(mp, tid, opts, file, line) do { \ uintptr_t _tid = (uintptr_t)(tid); \ - if (!_obtain_lock((mp), _tid)) \ + \ + if (!_mtx_obtain_lock((mp), _tid)) \ _mtx_lock_sleep((mp), _tid, (opts), (file), (line)); \ else \ LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_MTX_LOCK_ACQUIRE, \ mp, 0, 0, (file), (line)); \ } while (0) -#endif /* - * Obtain a spin lock inline, or call the "hard" function if we can't get it - * easy. For spinlocks, we handle recursion inline (it turns out that function - * calls can be significantly expensive on some architectures). - * Since spin locks are not _too_ common, inlining this code is not too big - * a deal. + * Lock a spin mutex. For spinlocks, we handle recursion inline (it + * turns out that function calls can be significantly expensive on + * some architectures). Since spin locks are not _too_ common, + * inlining this code is not too big a deal. */ -#ifndef _get_spin_lock #ifdef SMP -#define _get_spin_lock(mp, tid, opts, file, line) do { \ +#define __mtx_lock_spin(mp, tid, opts, file, line) do { \ uintptr_t _tid = (uintptr_t)(tid); \ + \ spinlock_enter(); \ - if (!_obtain_lock((mp), _tid)) { \ + if (!_mtx_obtain_lock((mp), _tid)) { \ if ((mp)->mtx_lock == _tid) \ (mp)->mtx_recurse++; \ - else { \ + else \ _mtx_lock_spin((mp), _tid, (opts), (file), (line)); \ - } \ } else \ LOCKSTAT_PROFILE_OBTAIN_LOCK_SUCCESS(LS_MTX_SPIN_LOCK_ACQUIRE, \ mp, 0, 0, (file), (line)); \ } while (0) #else /* SMP */ -#define _get_spin_lock(mp, tid, opts, file, line) do { \ +#define __mtx_lock_spin(mp, tid, opts, file, line) do { \ uintptr_t _tid = (uintptr_t)(tid); \ \ spinlock_enter(); \ @@ -206,49 +188,42 @@ void _thread_lock_flags(struct thread *, (mp)->mtx_recurse++; \ else { \ KASSERT((mp)->mtx_lock == MTX_UNOWNED, ("corrupt spinlock")); \ - (mp)->mtx_lock = _tid; \ + (mp)->mtx_lock = _tid; \ } \ } while (0) #endif /* SMP */ -#endif -/* - * Release a sleep lock inline, or call the "hard" function if we can't do it - * easy. - */ -#ifndef _rel_sleep_lock -#define _rel_sleep_lock(mp, tid, opts, file, line) do { \ +/* Unlock a normal mutex. */ +#define __mtx_unlock(mp, tid, opts, file, line) do { \ uintptr_t _tid = (uintptr_t)(tid); \ \ - if (!_release_lock((mp), _tid)) \ + if (!_mtx_release_lock((mp), _tid)) \ _mtx_unlock_sleep((mp), (opts), (file), (line)); \ } while (0) -#endif /* - * For spinlocks, we can handle everything inline, as it's pretty simple and - * a function call would be too expensive (at least on some architectures). - * Since spin locks are not _too_ common, inlining this code is not too big - * a deal. + * Unlock a spin mutex. For spinlocks, we can handle everything + * inline, as it's pretty simple and a function call would be too + * expensive (at least on some architectures). Since spin locks are + * not _too_ common, inlining this code is not too big a deal. * * Since we always perform a spinlock_enter() when attempting to acquire a * spin lock, we need to always perform a matching spinlock_exit() when * releasing a spin lock. This includes the recursion cases. */ -#ifndef _rel_spin_lock #ifdef SMP -#define _rel_spin_lock(mp) do { \ +#define __mtx_unlock_spin(mp) do { \ if (mtx_recursed((mp))) \ (mp)->mtx_recurse--; \ else { \ LOCKSTAT_PROFILE_RELEASE_LOCK(LS_MTX_SPIN_UNLOCK_RELEASE, \ mp); \ - _release_lock_quick((mp)); \ + _mtx_release_lock_quick((mp)); \ } \ spinlock_exit(); \ } while (0) #else /* SMP */ -#define _rel_spin_lock(mp) do { \ +#define __mtx_unlock_spin(mp) do { \ if (mtx_recursed((mp))) \ (mp)->mtx_recurse--; \ else { \ @@ -259,7 +234,6 @@ void _thread_lock_flags(struct thread *, spinlock_exit(); \ } while (0) #endif /* SMP */ -#endif /* * Exported lock manipulation interface. @@ -336,13 +310,13 @@ extern struct mtx_pool *mtxpool_sleep; _mtx_unlock_spin_flags((m), (opts), LOCK_FILE, LOCK_LINE) #else /* LOCK_DEBUG == 0 && !MUTEX_NOINLINE */ #define mtx_lock_flags(m, opts) \ - _get_sleep_lock((m), curthread, (opts), LOCK_FILE, LOCK_LINE) + __mtx_lock((m), curthread, (opts), LOCK_FILE, LOCK_LINE) #define mtx_unlock_flags(m, opts) \ - _rel_sleep_lock((m), curthread, (opts), LOCK_FILE, LOCK_LINE) + __mtx_unlock((m), curthread, (opts), LOCK_FILE, LOCK_LINE) #define mtx_lock_spin_flags(m, opts) \ - _get_spin_lock((m), curthread, (opts), LOCK_FILE, LOCK_LINE) + __mtx_lock_spin((m), curthread, (opts), LOCK_FILE, LOCK_LINE) #define mtx_unlock_spin_flags(m, opts) \ - _rel_spin_lock((m)) + __mtx_unlock_spin((m)) #endif /* LOCK_DEBUG > 0 || MUTEX_NOINLINE */ #define mtx_trylock_flags(m, opts) \ @@ -451,5 +425,4 @@ struct mtx_args { #define MTX_NETWORK_LOCK "network driver" #endif /* _KERNEL */ -#endif /* !LOCORE */ #endif /* _SYS_MUTEX_H_ */ Modified: user/imp/tbemd/sys/ufs/ufs/ufs_vnops.c ============================================================================== --- user/imp/tbemd/sys/ufs/ufs/ufs_vnops.c Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/ufs/ufs/ufs_vnops.c Tue Nov 9 22:16:47 2010 (r215062) @@ -61,8 +61,6 @@ __FBSDID("$FreeBSD$"); #include #include -#include - #include #include /* XXX */ Copied: user/imp/tbemd/sys/x86/include/mptable.h (from r215061, head/sys/x86/include/mptable.h) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ user/imp/tbemd/sys/x86/include/mptable.h Tue Nov 9 22:16:47 2010 (r215062, copy of r215061, head/sys/x86/include/mptable.h) @@ -0,0 +1,146 @@ +/*- + * Copyright (c) 1996, by Steve Passe + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. The name of the developer may NOT be used to endorse or promote products + * derived from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef __MACHINE_MPTABLE_H__ +#define __MACHINE_MPTABLE_H__ + +enum busTypes { + NOBUS = 0, + EISA = 3, + ISA = 6, + MCA = 9, + PCI = 13, + MAX_BUSTYPE = 18, + UNKNOWN_BUSTYPE = 0xff +}; + +/* MP Floating Pointer Structure */ +typedef struct MPFPS { + char signature[4]; + u_int32_t pap; + u_char length; + u_char spec_rev; + u_char checksum; + u_char config_type; + u_char mpfb2; + u_char mpfb3; + u_char mpfb4; + u_char mpfb5; +} *mpfps_t; + +#define MPFB2_IMCR_PRESENT 0x80 +#define MPFB2_MUL_CLK_SRCS 0x40 + +/* MP Configuration Table Header */ +typedef struct MPCTH { + char signature[4]; + u_short base_table_length; + u_char spec_rev; + u_char checksum; + u_char oem_id[8]; + u_char product_id[12]; + u_int32_t oem_table_pointer; + u_short oem_table_size; + u_short entry_count; + u_int32_t apic_address; + u_short extended_table_length; + u_char extended_table_checksum; + u_char reserved; +} *mpcth_t; + +#define MPCT_ENTRY_PROCESSOR 0 +#define MPCT_ENTRY_BUS 1 +#define MPCT_ENTRY_IOAPIC 2 +#define MPCT_ENTRY_INT 3 +#define MPCT_ENTRY_LOCAL_INT 4 + +typedef struct PROCENTRY { + u_char type; + u_char apic_id; + u_char apic_version; + u_char cpu_flags; + u_long cpu_signature; + u_long feature_flags; + u_long reserved1; + u_long reserved2; +} *proc_entry_ptr; + +#define PROCENTRY_FLAG_EN 0x01 +#define PROCENTRY_FLAG_BP 0x02 + +typedef struct BUSENTRY { + u_char type; + u_char bus_id; + char bus_type[6]; +} *bus_entry_ptr; + +typedef struct IOAPICENTRY { + u_char type; + u_char apic_id; + u_char apic_version; + u_char apic_flags; + u_int32_t apic_address; +} *io_apic_entry_ptr; + +#define IOAPICENTRY_FLAG_EN 0x01 + +typedef struct INTENTRY { + u_char type; + u_char int_type; + u_short int_flags; + u_char src_bus_id; + u_char src_bus_irq; + u_char dst_apic_id; + u_char dst_apic_int; +} *int_entry_ptr; + +#define INTENTRY_TYPE_INT 0 +#define INTENTRY_TYPE_NMI 1 +#define INTENTRY_TYPE_SMI 2 +#define INTENTRY_TYPE_EXTINT 3 + +#define INTENTRY_FLAGS_POLARITY 0x3 +#define INTENTRY_FLAGS_POLARITY_CONFORM 0x0 +#define INTENTRY_FLAGS_POLARITY_ACTIVEHI 0x1 +#define INTENTRY_FLAGS_POLARITY_ACTIVELO 0x3 +#define INTENTRY_FLAGS_TRIGGER 0xc +#define INTENTRY_FLAGS_TRIGGER_CONFORM 0x0 +#define INTENTRY_FLAGS_TRIGGER_EDGE 0x4 +#define INTENTRY_FLAGS_TRIGGER_LEVEL 0xc + +/* descriptions of MP basetable entries */ +typedef struct BASETABLE_ENTRY { + u_char type; + u_char length; + char name[16]; +} basetable_entry; + +#ifdef _KERNEL +int mptable_pci_probe_table(int bus); +int mptable_pci_route_interrupt(device_t pcib, device_t dev, int pin); +#endif +#endif /* !__MACHINE_MPTABLE_H__ */ Modified: user/imp/tbemd/sys/x86/x86/mptable.c ============================================================================== --- user/imp/tbemd/sys/x86/x86/mptable.c Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/x86/x86/mptable.c Tue Nov 9 22:16:47 2010 (r215062) @@ -39,11 +39,11 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include #include -#include #include #include Modified: user/imp/tbemd/sys/x86/x86/mptable_pci.c ============================================================================== --- user/imp/tbemd/sys/x86/x86/mptable_pci.c Tue Nov 9 22:09:22 2010 (r215061) +++ user/imp/tbemd/sys/x86/x86/mptable_pci.c Tue Nov 9 22:16:47 2010 (r215062) @@ -44,8 +44,8 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include -#include #include #include "pcib_if.h" From owner-svn-src-user@FreeBSD.ORG Wed Nov 10 01:27:48 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B53491065672; Wed, 10 Nov 2010 01:27:48 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A1DDB8FC17; Wed, 10 Nov 2010 01:27:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAA1Rm2w069671; Wed, 10 Nov 2010 01:27:48 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAA1Rmrh069656; Wed, 10 Nov 2010 01:27:48 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011100127.oAA1Rmrh069656@svn.freebsd.org> From: David Xu Date: Wed, 10 Nov 2010 01:27:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215071 - in user/davidxu/libthr: include lib/libc lib/libc/gen lib/libc/stdio lib/libthr lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Nov 2010 01:27:48 -0000 Author: davidxu Date: Wed Nov 10 01:27:48 2010 New Revision: 215071 URL: http://svn.freebsd.org/changeset/base/215071 Log: Convert pthread_mutex_t and pthread_cond_t to structure based instead of pointer type, this allows us to support process-shared. Modified: user/davidxu/libthr/include/pthread.h user/davidxu/libthr/lib/libc/Makefile user/davidxu/libthr/lib/libc/gen/closedir.c user/davidxu/libthr/lib/libc/gen/opendir.c user/davidxu/libthr/lib/libc/gen/readdir.c user/davidxu/libthr/lib/libc/gen/seekdir.c user/davidxu/libthr/lib/libc/gen/telldir.c user/davidxu/libthr/lib/libc/stdio/_flock_stub.c user/davidxu/libthr/lib/libc/stdio/findfp.c user/davidxu/libthr/lib/libc/stdio/local.h user/davidxu/libthr/lib/libthr/Makefile user/davidxu/libthr/lib/libthr/pthread.map user/davidxu/libthr/lib/libthr/thread/thr_cond.c user/davidxu/libthr/lib/libthr/thread/thr_init.c user/davidxu/libthr/lib/libthr/thread/thr_mutex.c user/davidxu/libthr/lib/libthr/thread/thr_private.h Modified: user/davidxu/libthr/include/pthread.h ============================================================================== --- user/davidxu/libthr/include/pthread.h Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/include/pthread.h Wed Nov 10 01:27:48 2010 (r215071) @@ -92,14 +92,19 @@ /* * Static once initialization values. */ -#define PTHREAD_ONCE_INIT { PTHREAD_NEEDS_INIT, NULL } +#define PTHREAD_ONCE_INIT { PTHREAD_NEEDS_INIT } /* * Static initialization values. */ -#define PTHREAD_MUTEX_INITIALIZER NULL -#define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP ((pthread_mutex_t)1) -#define PTHREAD_COND_INITIALIZER NULL +#define PTHREAD_MUTEX_INITIALIZER \ + {PTHREAD_MUTEX_DEFAULT, 0, 0, NULL, 0, 0x0010, {0, 0}, 0, 0} + +#define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ + {PTHREAD_MUTEX_DEFAULT, 2000, 0, NULL, 0, 0x0010, {0, 0}, 0, 0} + +#define PTHREAD_COND_INITIALIZER \ + {0, 0, 0, 0, 0, 0, 0, 0, 0, CLOCK_REALTIME} #define PTHREAD_RWLOCK_INITIALIZER NULL /* @@ -148,7 +153,34 @@ enum pthread_rwlocktype_np }; struct _pthread_cleanup_info { - __uintptr_t pthread_cleanup_pad[8]; + __uintptr_t __pthread_cleanup_pad[8]; +}; + +struct pthread_mutex { + __int16_t __flags; + __int16_t __spinloops; + __int32_t __recurse; + struct pthread *__ownertd; + /* kernel umtx part */ + volatile __uint32_t __lockword; + __uint32_t __lockflags; + __uint32_t __ceilings[2]; + __uint8_t __robstate; + __uint8_t __pad1; +}; + +struct pthread_cond { + __uint32_t __lock; + int __waiters; + int __signals; + __uint32_t __seq; + __uint64_t __broadcast_seq; + int __refcount; + int __destroying; + /* kernel part */ + __uint32_t __kern_has_waiters; + __uint32_t __flags; + __uint32_t __clock_id; }; /* Modified: user/davidxu/libthr/lib/libc/Makefile ============================================================================== --- user/davidxu/libthr/lib/libc/Makefile Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libc/Makefile Wed Nov 10 01:27:48 2010 (r215071) @@ -152,3 +152,4 @@ SSP_CFLAGS:= ${SSP_CFLAGS:S/^-fstack-pro SSP_CFLAGS:= ${.IMPSRC:N*/stack_protector.c:C/^.+$/${SSP_CFLAGS}/} # Generate stack unwinding tables for cancellation points CANCELPOINTS_CFLAGS:= ${.IMPSRC:Mcancelpoints_*:C/^.+$/${CANCELPOINTS_CFLAGS}/:C/^$//} +CFLAGS+=-g -O0 Modified: user/davidxu/libthr/lib/libc/gen/closedir.c ============================================================================== --- user/davidxu/libthr/lib/libc/gen/closedir.c Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libc/gen/closedir.c Wed Nov 10 01:27:48 2010 (r215071) @@ -54,7 +54,7 @@ closedir(dirp) int fd; if (__isthreaded) - _pthread_mutex_lock(&dirp->dd_lock); + _pthread_mutex_lock(dirp->dd_lock); _seekdir(dirp, dirp->dd_rewind); /* free seekdir storage */ fd = dirp->dd_fd; dirp->dd_fd = -1; @@ -62,8 +62,9 @@ closedir(dirp) free((void *)dirp->dd_buf); _reclaim_telldir(dirp); if (__isthreaded) { - _pthread_mutex_unlock(&dirp->dd_lock); - _pthread_mutex_destroy(&dirp->dd_lock); + _pthread_mutex_unlock(dirp->dd_lock); + _pthread_mutex_destroy(dirp->dd_lock); + free(dirp->dd_lock); } free((void *)dirp); return(_close(fd)); Modified: user/davidxu/libthr/lib/libc/gen/opendir.c ============================================================================== --- user/davidxu/libthr/lib/libc/gen/opendir.c Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libc/gen/opendir.c Wed Nov 10 01:27:48 2010 (r215071) @@ -41,6 +41,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -297,7 +298,8 @@ __opendir_common(int fd, const char *nam dirp->dd_loc = 0; dirp->dd_fd = fd; dirp->dd_flags = flags; - dirp->dd_lock = NULL; + dirp->dd_lock = malloc(sizeof(struct pthread_mutex)); + _pthread_mutex_init(dirp->dd_lock, NULL); /* * Set up seek point for rewinddir. Modified: user/davidxu/libthr/lib/libc/gen/readdir.c ============================================================================== --- user/davidxu/libthr/lib/libc/gen/readdir.c Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libc/gen/readdir.c Wed Nov 10 01:27:48 2010 (r215071) @@ -88,9 +88,9 @@ readdir(dirp) struct dirent *dp; if (__isthreaded) { - _pthread_mutex_lock(&dirp->dd_lock); + _pthread_mutex_lock(dirp->dd_lock); dp = _readdir_unlocked(dirp, 1); - _pthread_mutex_unlock(&dirp->dd_lock); + _pthread_mutex_unlock(dirp->dd_lock); } else dp = _readdir_unlocked(dirp, 1); @@ -109,10 +109,10 @@ readdir_r(dirp, entry, result) saved_errno = errno; errno = 0; if (__isthreaded) { - _pthread_mutex_lock(&dirp->dd_lock); + _pthread_mutex_lock(dirp->dd_lock); if ((dp = _readdir_unlocked(dirp, 1)) != NULL) memcpy(entry, dp, _GENERIC_DIRSIZ(dp)); - _pthread_mutex_unlock(&dirp->dd_lock); + _pthread_mutex_unlock(dirp->dd_lock); } else if ((dp = _readdir_unlocked(dirp, 1)) != NULL) memcpy(entry, dp, _GENERIC_DIRSIZ(dp)); Modified: user/davidxu/libthr/lib/libc/gen/seekdir.c ============================================================================== --- user/davidxu/libthr/lib/libc/gen/seekdir.c Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libc/gen/seekdir.c Wed Nov 10 01:27:48 2010 (r215071) @@ -52,8 +52,8 @@ seekdir(dirp, loc) long loc; { if (__isthreaded) - _pthread_mutex_lock(&dirp->dd_lock); + _pthread_mutex_lock(dirp->dd_lock); _seekdir(dirp, loc); if (__isthreaded) - _pthread_mutex_unlock(&dirp->dd_lock); + _pthread_mutex_unlock(dirp->dd_lock); } Modified: user/davidxu/libthr/lib/libc/gen/telldir.c ============================================================================== --- user/davidxu/libthr/lib/libc/gen/telldir.c Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libc/gen/telldir.c Wed Nov 10 01:27:48 2010 (r215071) @@ -64,13 +64,13 @@ telldir(dirp) if ((lp = (struct ddloc *)malloc(sizeof(struct ddloc))) == NULL) return (-1); if (__isthreaded) - _pthread_mutex_lock(&dirp->dd_lock); + _pthread_mutex_lock(dirp->dd_lock); lp->loc_index = dirp->dd_td->td_loccnt++; lp->loc_seek = dirp->dd_seek; lp->loc_loc = dirp->dd_loc; LIST_INSERT_HEAD(&dirp->dd_td->td_locq, lp, loc_lqe); if (__isthreaded) - _pthread_mutex_unlock(&dirp->dd_lock); + _pthread_mutex_unlock(dirp->dd_lock); return (lp->loc_index); } Modified: user/davidxu/libthr/lib/libc/stdio/_flock_stub.c ============================================================================== --- user/davidxu/libthr/lib/libc/stdio/_flock_stub.c Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libc/stdio/_flock_stub.c Wed Nov 10 01:27:48 2010 (r215071) @@ -67,7 +67,7 @@ _flockfile(FILE *fp) * Make sure this mutex is treated as a private * internal mutex: */ - _pthread_mutex_lock(&fp->_fl_mutex); + _pthread_mutex_lock(fp->_fl_mutex); fp->_fl_owner = curthread; fp->_fl_count = 1; } @@ -94,7 +94,7 @@ _ftrylockfile(FILE *fp) * Make sure this mutex is treated as a private * internal mutex: */ - else if (_pthread_mutex_trylock(&fp->_fl_mutex) == 0) { + else if (_pthread_mutex_trylock(fp->_fl_mutex) == 0) { fp->_fl_owner = curthread; fp->_fl_count = 1; } @@ -130,7 +130,7 @@ _funlockfile(FILE *fp) */ fp->_fl_count = 0; fp->_fl_owner = NULL; - _pthread_mutex_unlock(&fp->_fl_mutex); + _pthread_mutex_unlock(fp->_fl_mutex); } } } Modified: user/davidxu/libthr/lib/libc/stdio/findfp.c ============================================================================== --- user/davidxu/libthr/lib/libc/stdio/findfp.c Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libc/stdio/findfp.c Wed Nov 10 01:27:48 2010 (r215071) @@ -36,6 +36,7 @@ static char sccsid[] = "@(#)findfp.c 8.2 #include __FBSDID("$FreeBSD$"); +#include "namespace.h" #include #include #include @@ -48,12 +49,14 @@ __FBSDID("$FreeBSD$"); #include "libc_private.h" #include "local.h" #include "glue.h" +#include "un-namespace.h" int __sdidinit; #define NDYNAMIC 10 /* add ten more whenever necessary */ -#define std(flags, file) { \ + +#define std(flags, file, lock) { \ ._flags = (flags), \ ._file = (file), \ ._cookie = __sF + (file), \ @@ -61,16 +64,21 @@ int __sdidinit; ._read = __sread, \ ._seek = __sseek, \ ._write = __swrite, \ - ._fl_mutex = PTHREAD_MUTEX_INITIALIZER, \ + ._fl_mutex = &lock, \ } /* the usual - (stdin + stdout + stderr) */ static FILE usual[FOPEN_MAX - 3]; static struct glue uglue = { NULL, FOPEN_MAX - 3, usual }; +static pthread_mutex_t sfLOCK[3] = { + PTHREAD_MUTEX_INITIALIZER, + PTHREAD_MUTEX_INITIALIZER, + PTHREAD_MUTEX_INITIALIZER +}; static FILE __sF[3] = { - std(__SRD, STDIN_FILENO), - std(__SWR, STDOUT_FILENO), - std(__SWR|__SNBF, STDERR_FILENO) + std(__SRD, STDIN_FILENO, sfLOCK[0]), + std(__SWR, STDOUT_FILENO, sfLOCK[1]), + std(__SWR|__SNBF, STDERR_FILENO, sfLOCK[2]) }; FILE *__stdinp = &__sF[0]; @@ -97,7 +105,7 @@ moreglue(n) int n; { struct glue *g; - static FILE empty = { ._fl_mutex = PTHREAD_MUTEX_INITIALIZER }; + static FILE empty = { ._fl_mutex = NULL }; FILE *p; g = (struct glue *)malloc(sizeof(*g) + ALIGNBYTES + n * sizeof(FILE)); @@ -155,7 +163,10 @@ found: fp->_ub._size = 0; fp->_lb._base = NULL; /* no line buffer */ fp->_lb._size = 0; -/* fp->_fl_mutex = NULL; */ /* once set always set (reused) */ + if (fp->_fl_mutex == NULL) { /* once set always set (reused) */ + fp->_fl_mutex = malloc(sizeof(struct pthread_mutex)); + _pthread_mutex_init(fp->_fl_mutex, NULL); + } fp->_orientation = 0; memset(&fp->_mbstate, 0, sizeof(mbstate_t)); return (fp); Modified: user/davidxu/libthr/lib/libc/stdio/local.h ============================================================================== --- user/davidxu/libthr/lib/libc/stdio/local.h Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libc/stdio/local.h Wed Nov 10 01:27:48 2010 (r215071) @@ -114,7 +114,7 @@ extern int __sdidinit; */ #define FAKE_FILE { \ ._file = -1, \ - ._fl_mutex = PTHREAD_MUTEX_INITIALIZER, \ + ._fl_mutex = NULL, \ } /* Modified: user/davidxu/libthr/lib/libthr/Makefile ============================================================================== --- user/davidxu/libthr/lib/libthr/Makefile Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libthr/Makefile Wed Nov 10 01:27:48 2010 (r215071) @@ -40,7 +40,7 @@ MAN= libthr.3 # enable extra internal consistancy checks CFLAGS+=-D_PTHREADS_INVARIANTS -#CFLAGS+=-g +CFLAGS+=-g -O0 PRECIOUSLIB= Modified: user/davidxu/libthr/lib/libthr/pthread.map ============================================================================== --- user/davidxu/libthr/lib/libthr/pthread.map Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libthr/pthread.map Wed Nov 10 01:27:48 2010 (r215071) @@ -55,12 +55,6 @@ FBSD_1.0 { pthread_cancel; pthread_cleanup_pop; pthread_cleanup_push; - pthread_cond_broadcast; - pthread_cond_destroy; - pthread_cond_init; - pthread_cond_signal; - pthread_cond_timedwait; - pthread_cond_wait; pthread_condattr_destroy; pthread_condattr_getclock; pthread_condattr_getpshared; @@ -81,14 +75,6 @@ FBSD_1.0 { pthread_kill; pthread_main_np; pthread_multi_np; - pthread_mutex_destroy; - pthread_mutex_getprioceiling; - pthread_mutex_init; - pthread_mutex_lock; - pthread_mutex_setprioceiling; - pthread_mutex_timedlock; - pthread_mutex_trylock; - pthread_mutex_unlock; pthread_mutexattr_destroy; pthread_mutexattr_getkind_np; pthread_mutexattr_getprioceiling; @@ -395,18 +381,32 @@ FBSD_1.1 { pthread_getaffinity_np; pthread_getcpuclockid; pthread_setaffinity_np; - pthread_mutex_getspinloops_np; - pthread_mutex_getyieldloops_np; - pthread_mutex_isowned_np; - pthread_mutex_setspinloops_np; - pthread_mutex_setyieldloops_np; }; FBSD_1.2 { openat; - setcontext; - swapcontext; + pthread_cond_broadcast; + pthread_cond_destroy; + pthread_cond_init; + pthread_cond_signal; + pthread_cond_timedwait; + pthread_cond_wait; + pthread_mutex_destroy; pthread_mutexattr_getrobust; pthread_mutexattr_setrobust; pthread_mutex_consistent; + pthread_mutex_getprioceiling; + pthread_mutex_getspinloops_np; + pthread_mutex_getyieldloops_np; + pthread_mutex_init; + pthread_mutex_isowned_np; + pthread_mutex_lock; + pthread_mutex_setprioceiling; + pthread_mutex_setspinloops_np; + pthread_mutex_setyieldloops_np; + pthread_mutex_timedlock; + pthread_mutex_trylock; + pthread_mutex_unlock; + setcontext; + swapcontext; }; Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_cond.c Wed Nov 10 00:56:44 2010 (r215070) +++ user/davidxu/libthr/lib/libthr/thread/thr_cond.c Wed Nov 10 01:27:48 2010 (r215071) @@ -61,114 +61,68 @@ __weak_reference(_pthread_cond_destroy, __weak_reference(_pthread_cond_signal, pthread_cond_signal); __weak_reference(_pthread_cond_broadcast, pthread_cond_broadcast); -#define CV_PSHARED(cv) (((cv)->c_kerncv.c_flags & USYNC_PROCESS_SHARED) != 0) +int _pthread_cond_init_1_0(pthread_cond_old_t *, const pthread_condattr_t *); +int _pthread_cond_signal_1_0(pthread_cond_old_t *); +int _pthread_cond_destroy_1_0(pthread_cond_old_t *); +int _pthread_cond_wait_1_0(pthread_cond_old_t *, pthread_mutex_old_t *); +int _pthread_cond_timedwait_1_0(pthread_cond_old_t *, pthread_mutex_old_t *, + const struct timespec *); +int _pthread_cond_broadcast_1_0(pthread_cond_old_t *); + +#define CV_PSHARED(cvp) (((cvp)->__flags & USYNC_PROCESS_SHARED) != 0) static int -cond_init(pthread_cond_t *cond, const pthread_condattr_t *cond_attr) +cond_init(struct pthread_cond *cvp, const pthread_condattr_t *cond_attr) { - pthread_cond_t pcond; - int rval = 0; + int error = 0; - if ((pcond = (pthread_cond_t) - calloc(1, sizeof(struct pthread_cond))) == NULL) { - rval = ENOMEM; + /* + * Initialise the condition variable structure: + */ + memset(cvp, 0, sizeof(*cvp)); + if (cond_attr == NULL || *cond_attr == NULL) { + cvp->__clock_id = CLOCK_REALTIME; } else { - /* - * Initialise the condition variable structure: - */ - if (cond_attr == NULL || *cond_attr == NULL) { - pcond->c_kerncv.c_clockid = CLOCK_REALTIME; - } else { - if ((*cond_attr)->c_pshared) - pcond->c_kerncv.c_flags |= USYNC_PROCESS_SHARED; - pcond->c_kerncv.c_clockid = (*cond_attr)->c_clockid; - } - pcond->c_kerncv.c_flags |= UCOND_BIND_MUTEX; - *cond = pcond; + if ((*cond_attr)->c_pshared) + cvp->__flags |= USYNC_PROCESS_SHARED; + cvp->__clock_id = (*cond_attr)->c_clockid; } - /* Return the completion status: */ - return (rval); -} - -static int -init_static(struct pthread *thread, pthread_cond_t *cond) -{ - int error; - - THR_LOCK_ACQUIRE(thread, &_cond_static_lock); - - if (*cond == NULL) - error = cond_init(cond, NULL); - else - error = 0; - - THR_LOCK_RELEASE(thread, &_cond_static_lock); - return (error); } -#define CHECK_AND_INIT_COND \ - if (__predict_false((cv = (*cond)) <= THR_COND_DESTROYED)) { \ - if (cv == THR_COND_INITIALIZER) { \ - int error; \ - error = init_static(_get_curthread(), cond); \ - if (error) \ - return (error); \ - } else if (cv == THR_COND_DESTROYED) { \ - return (EINVAL); \ - } \ - cv = *cond; \ - } - int _pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *cond_attr) { - *cond = NULL; return (cond_init(cond, cond_attr)); } int -_pthread_cond_destroy(pthread_cond_t *cond) +_pthread_cond_destroy(pthread_cond_t *cvp) { - struct pthread_cond *cv; - int rval = 0; + int error = 0; - if ((cv = *cond) == THR_COND_INITIALIZER) - rval = 0; - else if (cv == THR_COND_DESTROYED) - rval = EINVAL; - else { - cv = *cond; - if (cv->c_refcount == 0) - goto next; - _thr_umtx_lock_spin(&cv->c_lock); - while (cv->c_refcount != 0) { - cv->c_destroying = 1; - if (cv->c_waiters > 0) { - cv->c_seq++; - cv->c_broadcast_seq++; - cv->c_waiters = 0; - cv->c_signals = 0; - _thr_umtx_wake(&cv->c_seq, INT_MAX, CV_PSHARED(cv)); - } - _thr_umtx_unlock(&cv->c_lock); - _thr_umtx_wait_uint((u_int *)&cv->c_destroying, - 1, NULL, CV_PSHARED(cv)); - _thr_umtx_lock_spin(&cv->c_lock); + if (cvp->__refcount == 0) + goto next; + _thr_umtx_lock_spin(&cvp->__lock); + while (cvp->__refcount != 0) { + cvp->__destroying = 1; + if (cvp->__waiters > 0) { + cvp->__seq++; + cvp->__broadcast_seq++; + cvp->__waiters = 0; + cvp->__signals = 0; + _thr_umtx_wake(&cvp->__seq, INT_MAX, CV_PSHARED(cvp)); } - _thr_umtx_unlock(&cv->c_lock); - next: - _thr_ucond_broadcast(&cv->c_kerncv); - *cond = THR_COND_DESTROYED; - - /* - * Free the memory allocated for the condition - * variable structure: - */ - free(cv); - } - return (rval); + _thr_umtx_unlock(&cvp->__lock); + _thr_umtx_wait_uint((u_int *)&cvp->__destroying, + 1, NULL, CV_PSHARED(cvp)); + _thr_umtx_lock_spin(&cvp->__lock); + } + _thr_umtx_unlock(&cvp->__lock); +next: + _thr_ucond_broadcast((struct ucond *)&cvp->__kern_has_waiters); + return (error); } /* @@ -180,28 +134,26 @@ _pthread_cond_destroy(pthread_cond_t *co * to be lost. */ static int -cond_wait_kernel(pthread_cond_t *cond, pthread_mutex_t *mutex, +cond_wait_kernel(struct pthread_cond *cvp, struct pthread_mutex *mp, const struct timespec *abstime, int cancel) { struct pthread *curthread = _get_curthread(); - pthread_cond_t cv; - struct pthread_mutex *m; int recurse; int error, error2 = 0; - cv = *cond; - error = _mutex_cv_detach(mutex, &recurse); + error = _mutex_cv_detach(mp, &recurse); if (__predict_false(error != 0)) return (error); - m = *mutex; if (cancel) { _thr_cancel_enter2(curthread, 0); - error = _thr_ucond_wait(&cv->c_kerncv, &m->m_lock, abstime, + error = _thr_ucond_wait((struct ucond *)&cvp->__kern_has_waiters, + (struct umutex *)&mp->__lockword, abstime, CVWAIT_ABSTIME|CVWAIT_CLOCKID); _thr_cancel_leave(curthread, 0); } else { - error = _thr_ucond_wait(&cv->c_kerncv, &m->m_lock, abstime, + error = _thr_ucond_wait((struct ucond *)&cvp->__kern_has_waiters, + (struct umutex *)&mp->__lockword, abstime, CVWAIT_ABSTIME|CVWAIT_CLOCKID); } @@ -210,16 +162,16 @@ cond_wait_kernel(pthread_cond_t *cond, p * interesting error codes. */ if (error == 0) { - error2 = _mutex_cv_lock(mutex, recurse); + error2 = _mutex_cv_lock(mp, recurse); } else if (error == EINTR || error == ETIMEDOUT) { - error2 = _mutex_cv_lock(mutex, recurse); + error2 = _mutex_cv_lock(mp, recurse); if (error2 == 0 && cancel) _thr_testcancel(curthread); if (error2 == EINTR) error = 0; } else { /* We know that it didn't unlock the mutex. */ - error2 = _mutex_cv_attach(mutex, recurse); + error2 = _mutex_cv_attach(mp, recurse); if (error2 == 0 && cancel) _thr_testcancel(curthread); } @@ -227,38 +179,36 @@ cond_wait_kernel(pthread_cond_t *cond, p } static int -cond_wait_user(pthread_cond_t *cond, pthread_mutex_t *mutex, +cond_wait_user(struct pthread_cond *cvp, struct pthread_mutex *mp, const struct timespec *abstime, int cancel) { struct pthread *curthread = _get_curthread(); struct timespec ts, ts2, *tsp; int recurse; - pthread_cond_t cv; int error; uint64_t seq, bseq; - cv = *cond; - _thr_umtx_lock_spin(&cv->c_lock); - if (cv->c_destroying) { - _thr_umtx_unlock(&cv->c_lock); + _thr_umtx_lock_spin(&cvp->__lock); + if (cvp->__destroying) { + _thr_umtx_unlock(&cvp->__lock); return (EINVAL); } - cv->c_waiters++; - error = _mutex_cv_unlock(mutex, &recurse); + cvp->__waiters++; + error = _mutex_cv_unlock(mp, &recurse); if (__predict_false(error != 0)) { - cv->c_waiters--; - _thr_umtx_unlock(&cv->c_lock); + cvp->__waiters--; + _thr_umtx_unlock(&cvp->__lock); return (error); } - bseq = cv->c_broadcast_seq; - cv->c_refcount++; + bseq = cvp->__broadcast_seq; + cvp->__refcount++; for(;;) { - seq = cv->c_seq; - _thr_umtx_unlock(&cv->c_lock); + seq = cvp->__seq; + _thr_umtx_unlock(&cvp->__lock); if (abstime != NULL) { - clock_gettime(cv->c_kerncv.c_clockid, &ts); + clock_gettime(cvp->__clock_id, &ts); TIMESPEC_SUB(&ts2, abstime, &ts); tsp = &ts2; } else @@ -266,73 +216,63 @@ cond_wait_user(pthread_cond_t *cond, pth if (cancel) { _thr_cancel_enter2(curthread, 0); - error = _thr_umtx_wait_uint((u_int *)&cv->c_seq, - (u_int)seq, tsp, CV_PSHARED(cv)); + error = _thr_umtx_wait_uint((u_int *)&cvp->__seq, + (u_int)seq, tsp, CV_PSHARED(cvp)); _thr_cancel_leave(curthread, 0); } else { - error = _thr_umtx_wait_uint((u_int *)&cv->c_seq, - (u_int)seq, tsp, CV_PSHARED(cv)); + error = _thr_umtx_wait_uint((u_int *)&cvp->__seq, + (u_int)seq, tsp, CV_PSHARED(cvp)); } - _thr_umtx_lock_spin(&cv->c_lock); - if (cv->c_broadcast_seq != bseq) { - cv->c_refcount--; + _thr_umtx_lock_spin(&cvp->__lock); + if (cvp->__broadcast_seq != bseq) { + cvp->__refcount--; error = 0; break; } - if (cv->c_signals > 0) { - cv->c_refcount--; - cv->c_signals--; + if (cvp->__signals > 0) { + cvp->__refcount--; + cvp->__signals--; error = 0; break; } else if (error == ETIMEDOUT) { - cv->c_refcount--; - cv->c_waiters--; + cvp->__refcount--; + cvp->__waiters--; break; } else if (cancel && SHOULD_CANCEL(curthread) && !THR_IN_CRITICAL(curthread)) { - cv->c_waiters--; - cv->c_refcount--; - if (cv->c_destroying && cv->c_refcount == 0) { - cv->c_destroying = 2; - _thr_umtx_wake(&cv->c_destroying, INT_MAX, CV_PSHARED(cv)); + cvp->__waiters--; + cvp->__refcount--; + if (cvp->__destroying && cvp->__refcount == 0) { + cvp->__destroying = 2; + _thr_umtx_wake(&cvp->__destroying, INT_MAX, CV_PSHARED(cvp)); } - _thr_umtx_unlock(&cv->c_lock); - _mutex_cv_lock(mutex, recurse); + _thr_umtx_unlock(&cvp->__lock); + _mutex_cv_lock(mp, recurse); _pthread_exit(PTHREAD_CANCELED); } } - if (cv->c_destroying && cv->c_refcount == 0) { - cv->c_destroying = 2; - _thr_umtx_wake(&cv->c_destroying, INT_MAX, CV_PSHARED(cv)); + if (cvp->__destroying && cvp->__refcount == 0) { + cvp->__destroying = 2; + _thr_umtx_wake(&cvp->__destroying, INT_MAX, CV_PSHARED(cvp)); } - _thr_umtx_unlock(&cv->c_lock); - _mutex_cv_lock(mutex, recurse); + _thr_umtx_unlock(&cvp->__lock); + _mutex_cv_lock(mp, recurse); return (error); } static int -cond_wait_common(pthread_cond_t *cond, pthread_mutex_t *mutex, +cond_wait_common(struct pthread_cond *cvp, struct pthread_mutex *mp, const struct timespec *abstime, int cancel) { struct pthread *curthread = _get_curthread(); - struct pthread_mutex *m; - pthread_cond_t cv; - int err; - - /* - * If the condition variable is statically initialized, - * perform the dynamic initialization: - */ - CHECK_AND_INIT_COND - - if ((err = _mutex_owned(curthread, mutex)) != 0) - return (err); + int error; - m = *mutex; + if ((error = _mutex_owned(curthread, mp)) != 0) + return (error); - if ((m->m_lock.m_flags & USYNC_PROCESS_SHARED) != - (cv->c_kerncv.c_flags & USYNC_PROCESS_SHARED)) + if ((mp->__lockflags & USYNC_PROCESS_SHARED) != + (cvp->__flags & USYNC_PROCESS_SHARED)) return (EINVAL); /* @@ -342,31 +282,31 @@ cond_wait_common(pthread_cond_t *cond, p * Note that if it is robust type of mutex, we should not use * the internal lock too, because it is not robust. */ - if (curthread->attr.sched_policy != SCHED_OTHER || + if (1 || curthread->attr.sched_policy != SCHED_OTHER || curthread->priority_mutex_count != 0 || - (m->m_lock.m_flags & (UMUTEX_PRIO_PROTECT|UMUTEX_PRIO_INHERIT| + (mp->__lockflags & (UMUTEX_PRIO_PROTECT|UMUTEX_PRIO_INHERIT| UMUTEX_ROBUST)) != 0) - return cond_wait_kernel(cond, mutex, abstime, cancel); + return cond_wait_kernel(cvp, mp, abstime, cancel); else - return cond_wait_user(cond, mutex, abstime, cancel); + return cond_wait_user(cvp, mp, abstime, cancel); } int -_pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) +_pthread_cond_wait(pthread_cond_t *cvp, pthread_mutex_t *mp) { - return (cond_wait_common(cond, mutex, NULL, 0)); + return (cond_wait_common(cvp, mp, NULL, 0)); } int -__pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex) +__pthread_cond_wait(pthread_cond_t *cvp, pthread_mutex_t *mp) { - return (cond_wait_common(cond, mutex, NULL, 1)); + return (cond_wait_common(cvp, mp, NULL, 1)); } int -_pthread_cond_timedwait(pthread_cond_t * cond, pthread_mutex_t * mutex, +_pthread_cond_timedwait(pthread_cond_t *cvp, pthread_mutex_t *mp, const struct timespec * abstime) { @@ -374,65 +314,159 @@ _pthread_cond_timedwait(pthread_cond_t * abstime->tv_nsec >= 1000000000) return (EINVAL); - return (cond_wait_common(cond, mutex, abstime, 0)); + return (cond_wait_common(cvp, mp, abstime, 0)); } int -__pthread_cond_timedwait(pthread_cond_t *cond, pthread_mutex_t *mutex, - const struct timespec *abstime) +__pthread_cond_timedwait(pthread_cond_t *cvp, pthread_mutex_t *mp, + const struct timespec * abstime) { if (abstime == NULL || abstime->tv_sec < 0 || abstime->tv_nsec < 0 || abstime->tv_nsec >= 1000000000) return (EINVAL); - return (cond_wait_common(cond, mutex, abstime, 1)); + return (cond_wait_common(cvp, mp, abstime, 1)); } static int -cond_signal_common(struct pthread_cond *cv) +cond_signal_common(struct pthread_cond *cvp) { - _thr_ucond_signal(&cv->c_kerncv); + _thr_ucond_signal((struct ucond *)&cvp->__kern_has_waiters); - if (cv->c_waiters == 0) + if (cvp->__waiters == 0) return (0); - _thr_umtx_lock_spin(&cv->c_lock); - if (cv->c_waiters > 0) { - cv->c_seq++; - cv->c_signals++; - cv->c_waiters--; - _thr_umtx_wake(&cv->c_seq, 1, CV_PSHARED(cv)); + _thr_umtx_lock_spin(&cvp->__lock); + if (cvp->__waiters > 0) { + cvp->__seq++; + cvp->__signals++; + cvp->__waiters--; + _thr_umtx_wake(&cvp->__seq, 1, CV_PSHARED(cvp)); } - _thr_umtx_unlock(&cv->c_lock); + _thr_umtx_unlock(&cvp->__lock); return (0); } static int -cond_broadcast_common(struct pthread_cond *cv) +cond_broadcast_common(struct pthread_cond *cvp) { - _thr_ucond_broadcast(&cv->c_kerncv); - if (cv->c_waiters == 0) + _thr_ucond_broadcast((struct ucond *)&cvp->__kern_has_waiters); + + if (cvp->__waiters == 0) return (0); - _thr_umtx_lock_spin(&cv->c_lock); - if (cv->c_waiters > 0) { - cv->c_seq++; - cv->c_broadcast_seq++; - cv->c_waiters = 0; - cv->c_signals = 0; - _thr_umtx_wake(&cv->c_seq, INT_MAX, CV_PSHARED(cv)); + _thr_umtx_lock_spin(&cvp->__lock); + if (cvp->__waiters > 0) { + cvp->__seq++; + cvp->__broadcast_seq++; + cvp->__waiters = 0; + cvp->__signals = 0; + _thr_umtx_wake(&cvp->__seq, INT_MAX, CV_PSHARED(cvp)); } - _thr_umtx_unlock(&cv->c_lock); + _thr_umtx_unlock(&cvp->__lock); return (0); } int -_pthread_cond_signal(pthread_cond_t * cond) +_pthread_cond_signal(pthread_cond_t *cvp) +{ + return (cond_signal_common(cvp)); +} + +int +_pthread_cond_broadcast(pthread_cond_t *cvp) +{ + return (cond_broadcast_common(cvp)); +} + +#define CHECK_AND_INIT_COND \ + if (__predict_false((cvp = (*cond)) <= THR_COND_DESTROYED)) { \ + if (cvp == THR_COND_INITIALIZER) { \ + int error; \ + error = init_static(_get_curthread(), cond); \ + if (error) \ + return (error); \ + } else if (cvp == THR_COND_DESTROYED) { \ + return (EINVAL); \ + } \ + cvp = *cond; \ + } + +static int +cond_init_old(pthread_cond_old_t *cond, const pthread_condattr_t *cond_attr) +{ + struct pthread_cond *cvp = NULL; + int error = 0; + + if ((cvp = (struct pthread_cond *) + calloc(1, sizeof(struct pthread_cond))) == NULL) { + error = ENOMEM; + } else { + error = cond_init(cvp, cond_attr); + if (error != 0) + free(cvp); + else + *cond = cvp; + } + return (error); +} + +static int +init_static(struct pthread *thread, pthread_cond_old_t *cond) +{ + int error; + + THR_LOCK_ACQUIRE(thread, &_cond_static_lock); + + if (*cond == NULL) + error = cond_init_old(cond, NULL); + else + error = 0; + + THR_LOCK_RELEASE(thread, &_cond_static_lock); + + return (error); +} + +int +_pthread_cond_init_1_0(pthread_cond_old_t *cond, const pthread_condattr_t *cond_attr) +{ + + *cond = NULL; + return (cond_init_old(cond, cond_attr)); +} + +int +_pthread_cond_destroy_1_0(pthread_cond_old_t *cond) { - pthread_cond_t cv; + struct pthread_cond *cvp; + int error = 0; + + if ((cvp = *cond) == THR_COND_INITIALIZER) + error = 0; + else if (cvp == THR_COND_DESTROYED) + error = EINVAL; + else { + cvp = *cond; + /* XXX */ + *cond = THR_COND_DESTROYED; + + /* + * Free the memory allocated for the condition + * variable structure: + */ + free(cvp); + } + return (error); +} + +int +_pthread_cond_signal_1_0(pthread_cond_old_t *cond) +{ + pthread_cond_t *cvp; /* * If the condition variable is statically initialized, perform dynamic @@ -440,13 +474,13 @@ _pthread_cond_signal(pthread_cond_t * co */ CHECK_AND_INIT_COND - return (cond_signal_common(cv)); + return (cond_signal_common(cvp)); } int -_pthread_cond_broadcast(pthread_cond_t * cond) +_pthread_cond_broadcast_1_0(pthread_cond_old_t *cond) { - pthread_cond_t cv; + pthread_cond_t *cvp; /* * If the condition variable is statically initialized, perform dynamic @@ -454,5 +488,49 @@ _pthread_cond_broadcast(pthread_cond_t * */ CHECK_AND_INIT_COND - return (cond_broadcast_common(cv)); + return (cond_broadcast_common(cvp)); } + +int +_pthread_cond_wait_1_0(pthread_cond_old_t *cond, pthread_mutex_old_t *mutex) +{ + pthread_cond_t *cvp; + int error; + + /* + * If the condition variable is statically initialized, perform dynamic + * initialization. + */ + CHECK_AND_INIT_COND + + if ((error = _mutex_owned_old(_get_curthread(), mutex)) != 0) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Wed Nov 10 01:52:10 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C38C2106566C; Wed, 10 Nov 2010 01:52:10 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A7FC68FC0A; Wed, 10 Nov 2010 01:52:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAA1qA4P071195; Wed, 10 Nov 2010 01:52:10 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAA1qAKa071192; Wed, 10 Nov 2010 01:52:10 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011100152.oAA1qAKa071192@svn.freebsd.org> From: David Xu Date: Wed, 10 Nov 2010 01:52:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215073 - user/davidxu/libthr/lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Nov 2010 01:52:10 -0000 Author: davidxu Date: Wed Nov 10 01:52:10 2010 New Revision: 215073 URL: http://svn.freebsd.org/changeset/base/215073 Log: Remove debug code. Use same condition variable destroying code for FBSD_1.1 interface. Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_cond.c Wed Nov 10 01:29:56 2010 (r215072) +++ user/davidxu/libthr/lib/libthr/thread/thr_cond.c Wed Nov 10 01:52:10 2010 (r215073) @@ -97,23 +97,20 @@ _pthread_cond_init(pthread_cond_t *cond, return (cond_init(cond, cond_attr)); } -int -_pthread_cond_destroy(pthread_cond_t *cvp) +static int +cond_destroy_common(pthread_cond_t *cvp) { int error = 0; if (cvp->__refcount == 0) goto next; _thr_umtx_lock_spin(&cvp->__lock); + if (cvp->__waiters > 0) { + _thr_umtx_unlock(&cvp->__lock); + return (EBUSY); + } while (cvp->__refcount != 0) { cvp->__destroying = 1; - if (cvp->__waiters > 0) { - cvp->__seq++; - cvp->__broadcast_seq++; - cvp->__waiters = 0; - cvp->__signals = 0; - _thr_umtx_wake(&cvp->__seq, INT_MAX, CV_PSHARED(cvp)); - } _thr_umtx_unlock(&cvp->__lock); _thr_umtx_wait_uint((u_int *)&cvp->__destroying, 1, NULL, CV_PSHARED(cvp)); @@ -125,6 +122,12 @@ next: return (error); } +int +_pthread_cond_destroy(pthread_cond_t *cvp) +{ + return cond_destroy_common(cvp); +} + /* * Cancellation behaivor: * Thread may be canceled at start, if thread is canceled, it means it @@ -282,7 +285,7 @@ cond_wait_common(struct pthread_cond *cv * Note that if it is robust type of mutex, we should not use * the internal lock too, because it is not robust. */ - if (1 || curthread->attr.sched_policy != SCHED_OTHER || + if (curthread->attr.sched_policy != SCHED_OTHER || curthread->priority_mutex_count != 0 || (mp->__lockflags & (UMUTEX_PRIO_PROTECT|UMUTEX_PRIO_INHERIT| UMUTEX_ROBUST)) != 0) @@ -451,13 +454,10 @@ _pthread_cond_destroy_1_0(pthread_cond_o error = EINVAL; else { cvp = *cond; - /* XXX */ + error = cond_destroy_common(cvp); + if (error) + return (error); *cond = THR_COND_DESTROYED; - - /* - * Free the memory allocated for the condition - * variable structure: - */ free(cvp); } return (error); Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutex.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Wed Nov 10 01:29:56 2010 (r215072) +++ user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Wed Nov 10 01:52:10 2010 (r215073) @@ -1101,12 +1101,9 @@ _pthread_mutex_init_calloc_cb(pthread_mu .m_robust = PTHREAD_MUTEX_STALLED }; int error; - _thread_printf(2, "%s mp=%p\n", __func__, mp); error = mutex_init(mp, &attr); - if (error == 0) { + if (error == 0) mp->__flags |= PMUTEX_FLAG_PRIVATE; - } - _thread_printf(2, "%s init erro=%dr\n", __func__, error); return (error); } From owner-svn-src-user@FreeBSD.ORG Wed Nov 10 03:18:14 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C49E41065697; Wed, 10 Nov 2010 03:18:14 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B25488FC1B; Wed, 10 Nov 2010 03:18:14 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAA3IE1g076788; Wed, 10 Nov 2010 03:18:14 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAA3IEkT076782; Wed, 10 Nov 2010 03:18:14 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011100318.oAA3IEkT076782@svn.freebsd.org> From: David Xu Date: Wed, 10 Nov 2010 03:18:14 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215074 - in user/davidxu/libthr: include lib/libthr lib/libthr/thread sys/sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Nov 2010 03:18:14 -0000 Author: davidxu Date: Wed Nov 10 03:18:14 2010 New Revision: 215074 URL: http://svn.freebsd.org/changeset/base/215074 Log: Convert pthread_rwlock_t from pointer to structure, this allows us to use process-shared rwlock. Modified: user/davidxu/libthr/include/pthread.h user/davidxu/libthr/lib/libthr/pthread.map user/davidxu/libthr/lib/libthr/thread/thr_private.h user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c user/davidxu/libthr/sys/sys/_pthreadtypes.h Modified: user/davidxu/libthr/include/pthread.h ============================================================================== --- user/davidxu/libthr/include/pthread.h Wed Nov 10 01:52:10 2010 (r215073) +++ user/davidxu/libthr/include/pthread.h Wed Nov 10 03:18:14 2010 (r215074) @@ -105,7 +105,7 @@ #define PTHREAD_COND_INITIALIZER \ {0, 0, 0, 0, 0, 0, 0, 0, 0, CLOCK_REALTIME} -#define PTHREAD_RWLOCK_INITIALIZER NULL +#define PTHREAD_RWLOCK_INITIALIZER { .__owner.__ownertd = 0, 0, 0, 0, 0} /* * Default attribute arguments (draft 4, deprecated). @@ -183,6 +183,18 @@ struct pthread_cond { __uint32_t __clock_id; }; +struct pthread_rwlock { + union { + __uint32_t __ownertid; + struct pthread *__ownertd; + char __pad[8]; + } __owner; + __uint32_t __state; + __uint32_t __flags; + __uint32_t __blocked_readers; + __uint32_t __blocked_writers; +}; + /* * Thread function prototype definitions: */ Modified: user/davidxu/libthr/lib/libthr/pthread.map ============================================================================== --- user/davidxu/libthr/lib/libthr/pthread.map Wed Nov 10 01:52:10 2010 (r215073) +++ user/davidxu/libthr/lib/libthr/pthread.map Wed Nov 10 03:18:14 2010 (r215074) @@ -90,15 +90,6 @@ FBSD_1.0 { pthread_once; pthread_resume_all_np; pthread_resume_np; - pthread_rwlock_destroy; - pthread_rwlock_init; - pthread_rwlock_rdlock; - pthread_rwlock_timedrdlock; - pthread_rwlock_timedwrlock; - pthread_rwlock_tryrdlock; - pthread_rwlock_trywrlock; - pthread_rwlock_unlock; - pthread_rwlock_wrlock; pthread_rwlockattr_destroy; pthread_rwlockattr_getpshared; pthread_rwlockattr_init; @@ -407,6 +398,15 @@ FBSD_1.2 { pthread_mutex_timedlock; pthread_mutex_trylock; pthread_mutex_unlock; + pthread_rwlock_destroy; + pthread_rwlock_init; + pthread_rwlock_rdlock; + pthread_rwlock_timedrdlock; + pthread_rwlock_timedwrlock; + pthread_rwlock_tryrdlock; + pthread_rwlock_trywrlock; + pthread_rwlock_unlock; + pthread_rwlock_wrlock; setcontext; swapcontext; }; Modified: user/davidxu/libthr/lib/libthr/thread/thr_private.h ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_private.h Wed Nov 10 01:52:10 2010 (r215073) +++ user/davidxu/libthr/lib/libthr/thread/thr_private.h Wed Nov 10 03:18:14 2010 (r215074) @@ -278,11 +278,6 @@ struct pthread_rwlockattr { int pshared; }; -struct pthread_rwlock { - struct urwlock lock; - struct pthread *owner; -}; - /* * Thread states. */ Modified: user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c Wed Nov 10 01:52:10 2010 (r215073) +++ user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c Wed Nov 10 03:18:14 2010 (r215074) @@ -29,6 +29,7 @@ #include #include #include +#include #include "namespace.h" #include @@ -45,89 +46,66 @@ __weak_reference(_pthread_rwlock_unlock, __weak_reference(_pthread_rwlock_wrlock, pthread_rwlock_wrlock); __weak_reference(_pthread_rwlock_timedwrlock, pthread_rwlock_timedwrlock); -#define CHECK_AND_INIT_RWLOCK \ - if (__predict_false((prwlock = (*rwlock)) <= THR_RWLOCK_DESTROYED)) { \ - if (prwlock == THR_RWLOCK_INITIALIZER) { \ - int ret; \ - ret = init_static(_get_curthread(), rwlock); \ - if (ret) \ - return (ret); \ - } else if (prwlock == THR_RWLOCK_DESTROYED) { \ - return (EINVAL); \ - } \ - prwlock = *rwlock; \ - } +typedef struct pthread_rwlock *pthread_rwlock_old_t; + +int _pthread_rwlock_destroy_1_0(pthread_rwlock_old_t *); +int _pthread_rwlock_init_1_0(pthread_rwlock_old_t *, + const pthread_rwlockattr_t *); +int _pthread_rwlock_timedrdlock_1_0(pthread_rwlock_old_t *, + const struct timespec *); +int _pthread_rwlock_tryrdlock_1_0(pthread_rwlock_old_t *); +int _pthread_rwlock_trywrlock_1_0(pthread_rwlock_old_t *); +int _pthread_rwlock_rdlock_1_0(pthread_rwlock_old_t *, const struct timespec *); +int _pthread_rwlock_unlock_1_0(pthread_rwlock_old_t *); + +#define RWL_PSHARED(rwp) ((rwp->__flags & USYNC_PROCESS_SHARED) != 0) /* * Prototypes */ static int -rwlock_init(pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr __unused) -{ - pthread_rwlock_t prwlock; - - prwlock = (pthread_rwlock_t)calloc(1, sizeof(struct pthread_rwlock)); - if (prwlock == NULL) - return (ENOMEM); - *rwlock = prwlock; - return (0); -} - -int -_pthread_rwlock_destroy (pthread_rwlock_t *rwlock) +rwlock_init(struct pthread_rwlock *rwp, const pthread_rwlockattr_t *attr) { - pthread_rwlock_t prwlock; - int ret; - prwlock = *rwlock; - if (prwlock == THR_RWLOCK_INITIALIZER) - ret = 0; - else if (prwlock == THR_RWLOCK_DESTROYED) - ret = EINVAL; + memset(rwp, 0, sizeof(*rwp)); + if (attr == NULL || *attr == NULL) + return (0); else { - *rwlock = THR_RWLOCK_DESTROYED; - - free(prwlock); - ret = 0; + if ((*attr)->pshared) + rwp->__flags |= USYNC_PROCESS_SHARED; } - return (ret); + + return (0); } static int -init_static(struct pthread *thread, pthread_rwlock_t *rwlock) +rwlock_destroy_common(struct pthread_rwlock *rwp) { - int ret; - - THR_LOCK_ACQUIRE(thread, &_rwlock_static_lock); - - if (*rwlock == THR_RWLOCK_INITIALIZER) - ret = rwlock_init(rwlock, NULL); - else - ret = 0; - - THR_LOCK_RELEASE(thread, &_rwlock_static_lock); + if (rwp->__state != 0) + return (EBUSY); + return (0); +} - return (ret); +int +_pthread_rwlock_destroy (pthread_rwlock_t *rwp) +{ + return rwlock_destroy_common(rwp); } int -_pthread_rwlock_init (pthread_rwlock_t *rwlock, const pthread_rwlockattr_t *attr) +_pthread_rwlock_init(pthread_rwlock_t *rwp, const pthread_rwlockattr_t *attr) { - *rwlock = NULL; - return (rwlock_init(rwlock, attr)); + return (rwlock_init(rwp, attr)); } static int -rwlock_rdlock_common(pthread_rwlock_t *rwlock, const struct timespec *abstime) +rwlock_rdlock_common(struct pthread_rwlock *rwlp, const struct timespec *abstime) { struct pthread *curthread = _get_curthread(); - pthread_rwlock_t prwlock; struct timespec ts, ts2, *tsp; int flags; - int ret; - - CHECK_AND_INIT_RWLOCK + int error; if (curthread->rdlock_count) { /* @@ -148,13 +126,13 @@ rwlock_rdlock_common(pthread_rwlock_t *r } /* - * POSIX said the validity of the abstimeout parameter need + * POSIX said the validity of the abstime parameter need * not be checked if the lock can be immediately acquired. */ - ret = _thr_rwlock_tryrdlock(&prwlock->lock, flags); - if (ret == 0) { + error = _thr_rwlock_tryrdlock((struct urwlock *)&rwlp->__state, flags); + if (error == 0) { curthread->rdlock_count++; - return (ret); + return (error); } if (__predict_false(abstime && @@ -173,43 +151,40 @@ rwlock_rdlock_common(pthread_rwlock_t *r tsp = NULL; /* goto kernel and lock it */ - ret = __thr_rwlock_rdlock(&prwlock->lock, flags, tsp); - if (ret != EINTR) + error = __thr_rwlock_rdlock((struct urwlock *)&rwlp->__state, flags, tsp); + if (error != EINTR) break; /* if interrupted, try to lock it in userland again. */ - if (_thr_rwlock_tryrdlock(&prwlock->lock, flags) == 0) { - ret = 0; + if (_thr_rwlock_tryrdlock((struct urwlock *)&rwlp->__state, flags) == 0) { + error = 0; break; } } - if (ret == 0) + if (error == 0) curthread->rdlock_count++; - return (ret); + return (error); } int -_pthread_rwlock_rdlock (pthread_rwlock_t *rwlock) +_pthread_rwlock_rdlock (pthread_rwlock_t *rwlp) { - return (rwlock_rdlock_common(rwlock, NULL)); + return (rwlock_rdlock_common(rwlp, NULL)); } int -_pthread_rwlock_timedrdlock (pthread_rwlock_t *rwlock, - const struct timespec *abstime) +_pthread_rwlock_timedrdlock (pthread_rwlock_t *rwlp, + const struct timespec *abstime) { - return (rwlock_rdlock_common(rwlock, abstime)); + return (rwlock_rdlock_common(rwlp, abstime)); } int -_pthread_rwlock_tryrdlock (pthread_rwlock_t *rwlock) +_pthread_rwlock_tryrdlock (pthread_rwlock_t *rwlp) { struct pthread *curthread = _get_curthread(); - pthread_rwlock_t prwlock; int flags; - int ret; - - CHECK_AND_INIT_RWLOCK + int error; if (curthread->rdlock_count) { /* @@ -229,45 +204,48 @@ _pthread_rwlock_tryrdlock (pthread_rwloc flags = 0; } - ret = _thr_rwlock_tryrdlock(&prwlock->lock, flags); - if (ret == 0) + error = _thr_rwlock_tryrdlock((struct urwlock *)&rwlp->__state, flags); + if (error == 0) curthread->rdlock_count++; - return (ret); + return (error); +} + +static void +rwlock_setowner(struct pthread_rwlock *rwlp, struct pthread *td) +{ + if (!RWL_PSHARED(rwlp)) + rwlp->__owner.__ownertd = td; + else + rwlp->__owner.__ownertid = TID(td); } int -_pthread_rwlock_trywrlock (pthread_rwlock_t *rwlock) +_pthread_rwlock_trywrlock (pthread_rwlock_t *rwlp) { struct pthread *curthread = _get_curthread(); - pthread_rwlock_t prwlock; - int ret; + int error; - CHECK_AND_INIT_RWLOCK - - ret = _thr_rwlock_trywrlock(&prwlock->lock); - if (ret == 0) - prwlock->owner = curthread; - return (ret); + error = _thr_rwlock_trywrlock((struct urwlock *)&rwlp->__state); + if (error == 0) + rwlock_setowner(rwlp, curthread); + return (error); } static int -rwlock_wrlock_common (pthread_rwlock_t *rwlock, const struct timespec *abstime) +rwlock_wrlock_common(pthread_rwlock_t *rwlp, const struct timespec *abstime) { struct pthread *curthread = _get_curthread(); - pthread_rwlock_t prwlock; struct timespec ts, ts2, *tsp; - int ret; - - CHECK_AND_INIT_RWLOCK + int error; /* - * POSIX said the validity of the abstimeout parameter need + * POSIX said the validity of the abstime parameter need * not be checked if the lock can be immediately acquired. */ - ret = _thr_rwlock_trywrlock(&prwlock->lock); - if (ret == 0) { - prwlock->owner = curthread; - return (ret); + error = _thr_rwlock_trywrlock((struct urwlock *)&rwlp->__state); + if (error == 0) { + rwlock_setowner(rwlp, curthread); + return (error); } if (__predict_false(abstime && @@ -286,61 +264,196 @@ rwlock_wrlock_common (pthread_rwlock_t * tsp = NULL; /* goto kernel and lock it */ - ret = __thr_rwlock_wrlock(&prwlock->lock, tsp); - if (ret == 0) { - prwlock->owner = curthread; + error = __thr_rwlock_wrlock((struct urwlock *)&rwlp->__state, tsp); + if (error == 0) { + rwlock_setowner(rwlp, curthread); break; } - if (ret != EINTR) + if (error != EINTR) break; /* if interrupted, try to lock it in userland again. */ - if (_thr_rwlock_trywrlock(&prwlock->lock) == 0) { - ret = 0; - prwlock->owner = curthread; + if (_thr_rwlock_trywrlock((struct urwlock *)&rwlp->__state) == 0) { + error = 0; + rwlock_setowner(rwlp, curthread); break; } } - return (ret); + return (error); } int -_pthread_rwlock_wrlock (pthread_rwlock_t *rwlock) +_pthread_rwlock_wrlock (pthread_rwlock_t *rwlp) { - return (rwlock_wrlock_common (rwlock, NULL)); + return (rwlock_wrlock_common(rwlp, NULL)); } int -_pthread_rwlock_timedwrlock (pthread_rwlock_t *rwlock, - const struct timespec *abstime) +_pthread_rwlock_timedwrlock(pthread_rwlock_t *rwlp, + const struct timespec *abstime) { - return (rwlock_wrlock_common (rwlock, abstime)); + return (rwlock_wrlock_common(rwlp, abstime)); } int -_pthread_rwlock_unlock (pthread_rwlock_t *rwlock) +_pthread_rwlock_unlock(pthread_rwlock_t *rwlp) { struct pthread *curthread = _get_curthread(); - pthread_rwlock_t prwlock; - int ret; - int32_t state; - - prwlock = *rwlock; - - if (__predict_false(prwlock <= THR_RWLOCK_DESTROYED)) - return (EINVAL); + int error; + uint32_t state; - state = prwlock->lock.rw_state; + state = rwlp->__state; if (state & URWLOCK_WRITE_OWNER) { - if (__predict_false(prwlock->owner != curthread)) + if (RWL_PSHARED(rwlp) && + rwlp->__owner.__ownertid == TID(curthread)) { + rwlp->__owner.__ownertid = 0; + } else if (!RWL_PSHARED(rwlp) && + rwlp->__owner.__ownertd == curthread) { + rwlp->__owner.__ownertd = NULL; + } else return (EPERM); - prwlock->owner = NULL; } - - ret = _thr_rwlock_unlock(&prwlock->lock); - if (ret == 0 && (state & URWLOCK_WRITE_OWNER) == 0) + error = _thr_rwlock_unlock((struct urwlock *)&rwlp->__state); + if (error == 0 && (state & URWLOCK_WRITE_OWNER) == 0) curthread->rdlock_count--; + return (error); +} + +#define CHECK_AND_INIT_RWLOCK \ + if (__predict_false((rwlp = (*rwlpp)) <= THR_RWLOCK_DESTROYED)) { \ + if (rwlp == THR_RWLOCK_INITIALIZER) { \ + int error; \ + error = init_static(_get_curthread(), rwlpp); \ + if (error) \ + return (error); \ + } else if (rwlp == THR_RWLOCK_DESTROYED) { \ + return (EINVAL); \ + } \ + *rwlpp = rwlp; \ + } + +static int +rwlock_init_old(pthread_rwlock_old_t *rwlpp, const pthread_rwlockattr_t *attr) +{ + struct pthread_rwlock *rwlp; + int error; + + rwlp = (struct pthread_rwlock *)malloc(sizeof(struct pthread_rwlock)); + if (rwlp == NULL) + return (ENOMEM); + error = rwlock_init(rwlp, attr); + if (error) { + free(rwlp); + return (error); + } + *rwlpp = rwlp; + return (0); +} + +static int +init_static(struct pthread *thread, pthread_rwlock_old_t *rwlpp) +{ + int error; + + THR_LOCK_ACQUIRE(thread, &_rwlock_static_lock); + + if (*rwlpp == THR_RWLOCK_INITIALIZER) + error = rwlock_init_old(rwlpp, NULL); + else + error = 0; + + THR_LOCK_RELEASE(thread, &_rwlock_static_lock); + + return (error); +} - return (ret); +int +_pthread_rwlock_destroy_1_0(pthread_rwlock_old_t *rwlpp) +{ + struct pthread_rwlock *rwlp; + int error; + + rwlp = *rwlpp; + if (rwlp == THR_RWLOCK_INITIALIZER) + error = 0; + else if (rwlp == THR_RWLOCK_DESTROYED) + error = EINVAL; + else { + error = rwlock_destroy_common(rwlp); + if (error) + return (error); + *rwlpp = THR_RWLOCK_DESTROYED; + free(rwlp); + } + return (error); +} + +int +_pthread_rwlock_init_1_0(pthread_rwlock_old_t *rwlpp, const pthread_rwlockattr_t *attr) +{ + *rwlpp = NULL; + return (rwlock_init_old(rwlpp, attr)); } + +int +_pthread_rwlock_timedrdlock_1_0(pthread_rwlock_old_t *rwlpp, + const struct timespec *abstime) +{ + struct pthread_rwlock *rwlp; + + CHECK_AND_INIT_RWLOCK + + return (rwlock_rdlock_common(rwlp, abstime)); +} + +int +_pthread_rwlock_tryrdlock_1_0(pthread_rwlock_old_t *rwlpp) +{ + struct pthread_rwlock *rwlp; + + CHECK_AND_INIT_RWLOCK + + return _pthread_rwlock_tryrdlock(rwlp); +} + +int +_pthread_rwlock_trywrlock_1_0(pthread_rwlock_old_t *rwlpp) +{ + struct pthread_rwlock *rwlp; + + CHECK_AND_INIT_RWLOCK + + return _pthread_rwlock_trywrlock(rwlp); +} + +int +_pthread_rwlock_rdlock_1_0(pthread_rwlock_old_t *rwlpp, const struct timespec *abstime) +{ + struct pthread_rwlock *rwlp; + + CHECK_AND_INIT_RWLOCK + + return rwlock_rdlock_common(rwlp, abstime); +} + +int +_pthread_rwlock_unlock_1_0(pthread_rwlock_old_t *rwlpp) +{ + struct pthread_rwlock *rwlp; + + rwlp = *rwlpp; + if (__predict_false(rwlp <= THR_RWLOCK_DESTROYED)) + return (EINVAL); + return _pthread_rwlock_unlock(rwlp); +} + +FB10_COMPAT(_pthread_rwlock_destroy_1_0, pthread_rwlock_destroy); +FB10_COMPAT(_pthread_rwlock_init_1_0, pthread_rwlock_init); +FB10_COMPAT(_pthread_rwlock_rdlock_1_0, pthread_rwlock_rdlock); +FB10_COMPAT(_pthread_rwlock_timedrdlock_1_0, pthread_rwlock_timedrdlock); +FB10_COMPAT(_pthread_rwlock_tryrdlock_1_0, pthread_rwlock_tryrdlock); +FB10_COMPAT(_pthread_rwlock_trywrlock_1_0, pthread_rwlock_trywrlock); +FB10_COMPAT(_pthread_rwlock_unlock_1_0, pthread_rwlock_unlock); +FB10_COMPAT(_pthread_rwlock_wrlock_1_0, pthread_rwlock_wrlock); +FB10_COMPAT(_pthread_rwlock_timedwrlock_1_0, pthread_rwlock_timedwrlock); Modified: user/davidxu/libthr/sys/sys/_pthreadtypes.h ============================================================================== --- user/davidxu/libthr/sys/sys/_pthreadtypes.h Wed Nov 10 01:52:10 2010 (r215073) +++ user/davidxu/libthr/sys/sys/_pthreadtypes.h Wed Nov 10 03:18:14 2010 (r215074) @@ -66,13 +66,13 @@ typedef struct pthread *pthread_t; #define _PTHREAD_T_DECLARED #endif typedef struct pthread_attr *pthread_attr_t; -typedef struct pthread_mutex *pthread_mutex_t; +typedef struct pthread_mutex pthread_mutex_t; typedef struct pthread_mutex_attr *pthread_mutexattr_t; -typedef struct pthread_cond *pthread_cond_t; +typedef struct pthread_cond pthread_cond_t; typedef struct pthread_cond_attr *pthread_condattr_t; typedef int pthread_key_t; typedef struct pthread_once pthread_once_t; -typedef struct pthread_rwlock *pthread_rwlock_t; +typedef struct pthread_rwlock pthread_rwlock_t; typedef struct pthread_rwlockattr *pthread_rwlockattr_t; typedef struct pthread_barrier *pthread_barrier_t; typedef struct pthread_barrierattr *pthread_barrierattr_t; @@ -92,7 +92,6 @@ typedef void *(*pthread_startroutine_t)( */ struct pthread_once { int state; - pthread_mutex_t mutex; }; #endif /* ! _SYS__PTHREADTYPES_H_ */ From owner-svn-src-user@FreeBSD.ORG Wed Nov 10 04:35:37 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E2987106564A; Wed, 10 Nov 2010 04:35:37 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B7B348FC14; Wed, 10 Nov 2010 04:35:37 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAA4ZbXZ081888; Wed, 10 Nov 2010 04:35:37 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAA4ZbWO081886; Wed, 10 Nov 2010 04:35:37 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011100435.oAA4ZbWO081886@svn.freebsd.org> From: David Xu Date: Wed, 10 Nov 2010 04:35:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215075 - user/davidxu/libthr/lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Nov 2010 04:35:38 -0000 Author: davidxu Date: Wed Nov 10 04:35:37 2010 New Revision: 215075 URL: http://svn.freebsd.org/changeset/base/215075 Log: Add missing functions and copyright. Modified: user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c Modified: user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c Wed Nov 10 03:18:14 2010 (r215074) +++ user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c Wed Nov 10 04:35:37 2010 (r215075) @@ -1,4 +1,5 @@ /*- + * Copyright (c) 2010 David Xu * Copyright (c) 1998 Alex Nash * All rights reserved. * @@ -53,9 +54,12 @@ int _pthread_rwlock_init_1_0(pthread_rwl const pthread_rwlockattr_t *); int _pthread_rwlock_timedrdlock_1_0(pthread_rwlock_old_t *, const struct timespec *); +int _pthread_rwlock_timedwrlock_1_0(pthread_rwlock_old_t *, + const struct timespec *); int _pthread_rwlock_tryrdlock_1_0(pthread_rwlock_old_t *); int _pthread_rwlock_trywrlock_1_0(pthread_rwlock_old_t *); -int _pthread_rwlock_rdlock_1_0(pthread_rwlock_old_t *, const struct timespec *); +int _pthread_rwlock_rdlock_1_0(pthread_rwlock_old_t *); +int _pthread_rwlock_wrlock_1_0(pthread_rwlock_old_t *); int _pthread_rwlock_unlock_1_0(pthread_rwlock_old_t *); #define RWL_PSHARED(rwp) ((rwp->__flags & USYNC_PROCESS_SHARED) != 0) @@ -408,6 +412,17 @@ _pthread_rwlock_timedrdlock_1_0(pthread_ } int +_pthread_rwlock_timedwrlock_1_0(pthread_rwlock_old_t *rwlpp, + const struct timespec *abstime) +{ + struct pthread_rwlock *rwlp; + + CHECK_AND_INIT_RWLOCK + + return (rwlock_wrlock_common(rwlp, abstime)); +} + +int _pthread_rwlock_tryrdlock_1_0(pthread_rwlock_old_t *rwlpp) { struct pthread_rwlock *rwlp; @@ -428,13 +443,23 @@ _pthread_rwlock_trywrlock_1_0(pthread_rw } int -_pthread_rwlock_rdlock_1_0(pthread_rwlock_old_t *rwlpp, const struct timespec *abstime) +_pthread_rwlock_rdlock_1_0(pthread_rwlock_old_t *rwlpp) { struct pthread_rwlock *rwlp; CHECK_AND_INIT_RWLOCK - return rwlock_rdlock_common(rwlp, abstime); + return rwlock_rdlock_common(rwlp, NULL); +} + +int +_pthread_rwlock_wrlock_1_0(pthread_rwlock_old_t *rwlpp) +{ + struct pthread_rwlock *rwlp; + + CHECK_AND_INIT_RWLOCK + + return (rwlock_wrlock_common(rwlp, NULL)); } int From owner-svn-src-user@FreeBSD.ORG Wed Nov 10 04:37:10 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 448D6106564A; Wed, 10 Nov 2010 04:37:10 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 32E108FC13; Wed, 10 Nov 2010 04:37:10 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAA4bA7s082105; Wed, 10 Nov 2010 04:37:10 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAA4bA9I082099; Wed, 10 Nov 2010 04:37:10 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011100437.oAA4bA9I082099@svn.freebsd.org> From: David Xu Date: Wed, 10 Nov 2010 04:37:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215076 - in user/davidxu/libthr: include lib/libthr lib/libthr/thread sys/sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Nov 2010 04:37:10 -0000 Author: davidxu Date: Wed Nov 10 04:37:09 2010 New Revision: 215076 URL: http://svn.freebsd.org/changeset/base/215076 Log: Convert pthread_barrier_t from pointer to structure. Modified: user/davidxu/libthr/include/pthread.h user/davidxu/libthr/lib/libthr/pthread.map user/davidxu/libthr/lib/libthr/thread/thr_barrier.c user/davidxu/libthr/lib/libthr/thread/thr_private.h user/davidxu/libthr/sys/sys/_pthreadtypes.h Modified: user/davidxu/libthr/include/pthread.h ============================================================================== --- user/davidxu/libthr/include/pthread.h Wed Nov 10 04:35:37 2010 (r215075) +++ user/davidxu/libthr/include/pthread.h Wed Nov 10 04:37:09 2010 (r215076) @@ -195,6 +195,14 @@ struct pthread_rwlock { __uint32_t __blocked_writers; }; +struct pthread_barrier { + pthread_mutex_t __lock; + pthread_cond_t __cond; + __uint64_t __cycle; + __uint32_t __count; + __uint32_t __waiters; +}; + /* * Thread function prototype definitions: */ Modified: user/davidxu/libthr/lib/libthr/pthread.map ============================================================================== --- user/davidxu/libthr/lib/libthr/pthread.map Wed Nov 10 04:35:37 2010 (r215075) +++ user/davidxu/libthr/lib/libthr/pthread.map Wed Nov 10 04:37:09 2010 (r215076) @@ -23,9 +23,6 @@ FBSD_1.0 { poll; pselect; pthread_atfork; - pthread_barrier_destroy; - pthread_barrier_init; - pthread_barrier_wait; pthread_barrierattr_destroy; pthread_barrierattr_getpshared; pthread_barrierattr_init; @@ -376,6 +373,9 @@ FBSD_1.1 { FBSD_1.2 { openat; + pthread_barrier_destroy; + pthread_barrier_init; + pthread_barrier_wait; pthread_cond_broadcast; pthread_cond_destroy; pthread_cond_init; Modified: user/davidxu/libthr/lib/libthr/thread/thr_barrier.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_barrier.c Wed Nov 10 04:35:37 2010 (r215075) +++ user/davidxu/libthr/lib/libthr/thread/thr_barrier.c Wed Nov 10 04:37:09 2010 (r215076) @@ -29,6 +29,7 @@ #include "namespace.h" #include #include +#include #include #include "un-namespace.h" @@ -38,76 +39,111 @@ __weak_reference(_pthread_barrier_init, __weak_reference(_pthread_barrier_wait, pthread_barrier_wait); __weak_reference(_pthread_barrier_destroy, pthread_barrier_destroy); +typedef struct pthread_barrier *pthread_barrier_old_t; +int _pthread_barrier_destroy_1_0(pthread_barrier_old_t *); +int _pthread_barrier_wait_1_0(pthread_barrier_old_t *); +int _pthread_barrier_init_1_0(pthread_barrier_old_t *, + const pthread_barrierattr_t *, unsigned); + int -_pthread_barrier_destroy(pthread_barrier_t *barrier) +_pthread_barrier_destroy(pthread_barrier_t *barp) { - pthread_barrier_t bar; + (void)_pthread_cond_destroy(&barp->__cond); + (void)_pthread_mutex_destroy(&barp->__lock); + memset(barp, -1, sizeof(*barp)); + return (0); +} - if (barrier == NULL || *barrier == NULL) +int +_pthread_barrier_init(pthread_barrier_t *barp, + const pthread_barrierattr_t *attr, unsigned count) +{ + if (count == 0) return (EINVAL); - bar = *barrier; - if (bar->b_waiters > 0) - return (EBUSY); - *barrier = NULL; - free(bar); + _pthread_mutex_init(&barp->__lock, NULL); + _pthread_cond_init(&barp->__cond, NULL); + if (attr != NULL && *attr != NULL) { + if ((*attr)->pshared == PTHREAD_PROCESS_SHARED) { + barp->__lock.__lockflags |= USYNC_PROCESS_SHARED; + barp->__cond.__flags |= USYNC_PROCESS_SHARED; + } else if ((*attr)->pshared != PTHREAD_PROCESS_PRIVATE) { + return (EINVAL); + } + } + barp->__cycle = 0; + barp->__waiters = 0; + barp->__count = count; return (0); } int -_pthread_barrier_init(pthread_barrier_t *barrier, - const pthread_barrierattr_t *attr, unsigned count) +_pthread_barrier_wait(pthread_barrier_t *barp) { - pthread_barrier_t bar; + uint64_t cycle; + int error; - (void)attr; + _pthread_mutex_lock(&barp->__lock); + if (++barp->__waiters == barp->__count) { + /* Current thread is lastest thread. */ + barp->__waiters = 0; + barp->__cycle++; + _pthread_cond_broadcast(&barp->__cond); + _pthread_mutex_unlock(&barp->__lock); + error = PTHREAD_BARRIER_SERIAL_THREAD; + } else { + cycle = barp->__cycle; + do { + _pthread_cond_wait(&barp->__cond, &barp->__lock); + /* test cycle to avoid bogus wakeup */ + } while (cycle == barp->__cycle); + _pthread_mutex_unlock(&barp->__lock); + error = 0; + } + return (error); +} - if (barrier == NULL || count <= 0) - return (EINVAL); +int +_pthread_barrier_destroy_1_0(pthread_barrier_old_t *barpp) +{ + struct pthread_barrier *barp; - bar = malloc(sizeof(struct pthread_barrier)); - if (bar == NULL) - return (ENOMEM); + if ((barp = *barpp) == NULL) + return (EINVAL); + _pthread_barrier_destroy(barp); + free(barp); + return (0); +} - _thr_umutex_init(&bar->b_lock); - _thr_ucond_init(&bar->b_cv); - bar->b_cycle = 0; - bar->b_waiters = 0; - bar->b_count = count; - *barrier = bar; +int +_pthread_barrier_init_1_0(pthread_barrier_old_t *barpp, + const pthread_barrierattr_t *attr, unsigned count) +{ + struct pthread_barrier *barp; + int error; + barp = malloc(sizeof(struct pthread_barrier)); + if (barp == NULL) + return (ENOMEM); + error = _pthread_barrier_init(barp, attr, count); + if (error) { + free(barp); + return (error); + } + *barpp = barp; return (0); } int -_pthread_barrier_wait(pthread_barrier_t *barrier) +_pthread_barrier_wait_1_0(pthread_barrier_old_t *barpp) { - struct pthread *curthread = _get_curthread(); - pthread_barrier_t bar; - int64_t cycle; - int ret; + struct pthread_barrier *barp; - if (barrier == NULL || *barrier == NULL) + if ((barp = *barpp) == NULL) return (EINVAL); - - bar = *barrier; - THR_UMUTEX_LOCK(curthread, &bar->b_lock); - if (++bar->b_waiters == bar->b_count) { - /* Current thread is lastest thread */ - bar->b_waiters = 0; - bar->b_cycle++; - _thr_ucond_broadcast(&bar->b_cv); - THR_UMUTEX_UNLOCK(curthread, &bar->b_lock); - ret = PTHREAD_BARRIER_SERIAL_THREAD; - } else { - cycle = bar->b_cycle; - do { - _thr_ucond_wait(&bar->b_cv, &bar->b_lock, NULL, 0); - THR_UMUTEX_LOCK(curthread, &bar->b_lock); - /* test cycle to avoid bogus wakeup */ - } while (cycle == bar->b_cycle); - THR_UMUTEX_UNLOCK(curthread, &bar->b_lock); - ret = 0; - } - return (ret); + return _pthread_barrier_wait(barp); } + +FB10_COMPAT(_pthread_barrier_destroy_1_0, pthread_barrier_destroy); +FB10_COMPAT(_pthread_barrier_init_1_0, pthread_barrier_init); +FB10_COMPAT(_pthread_barrier_wait_1_0, pthread_barrier_wait); Modified: user/davidxu/libthr/lib/libthr/thread/thr_private.h ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_private.h Wed Nov 10 04:35:37 2010 (r215075) +++ user/davidxu/libthr/lib/libthr/thread/thr_private.h Wed Nov 10 04:37:09 2010 (r215076) @@ -163,14 +163,6 @@ struct pthread_cond_attr { int c_clockid; }; -struct pthread_barrier { - struct umutex b_lock; - struct ucond b_cv; - volatile int64_t b_cycle; - volatile int b_count; - volatile int b_waiters; -}; - struct pthread_barrierattr { int pshared; }; @@ -180,13 +172,6 @@ struct pthread_spinlock { }; /* - * Flags for condition variables. - */ -#define COND_FLAGS_PRIVATE 0x01 -#define COND_FLAGS_INITED 0x02 -#define COND_FLAGS_BUSY 0x04 - -/* * Cleanup definitions. */ struct pthread_cleanup { Modified: user/davidxu/libthr/sys/sys/_pthreadtypes.h ============================================================================== --- user/davidxu/libthr/sys/sys/_pthreadtypes.h Wed Nov 10 04:35:37 2010 (r215075) +++ user/davidxu/libthr/sys/sys/_pthreadtypes.h Wed Nov 10 04:37:09 2010 (r215076) @@ -74,7 +74,7 @@ typedef int pthread_key_t; typedef struct pthread_once pthread_once_t; typedef struct pthread_rwlock pthread_rwlock_t; typedef struct pthread_rwlockattr *pthread_rwlockattr_t; -typedef struct pthread_barrier *pthread_barrier_t; +typedef struct pthread_barrier pthread_barrier_t; typedef struct pthread_barrierattr *pthread_barrierattr_t; typedef struct pthread_spinlock *pthread_spinlock_t; From owner-svn-src-user@FreeBSD.ORG Wed Nov 10 05:49:44 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EB7B81065673; Wed, 10 Nov 2010 05:49:44 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DB83E8FC26; Wed, 10 Nov 2010 05:49:44 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAA5niLv086531; Wed, 10 Nov 2010 05:49:44 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAA5nicN086529; Wed, 10 Nov 2010 05:49:44 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011100549.oAA5nicN086529@svn.freebsd.org> From: David Xu Date: Wed, 10 Nov 2010 05:49:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215079 - user/davidxu/libthr/include X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Nov 2010 05:49:45 -0000 Author: davidxu Date: Wed Nov 10 05:49:44 2010 New Revision: 215079 URL: http://svn.freebsd.org/changeset/base/215079 Log: Add missing pthread_barrier. Modified: user/davidxu/libthr/include/pthread.h Modified: user/davidxu/libthr/include/pthread.h ============================================================================== --- user/davidxu/libthr/include/pthread.h Wed Nov 10 05:32:36 2010 (r215078) +++ user/davidxu/libthr/include/pthread.h Wed Nov 10 05:49:44 2010 (r215079) @@ -196,11 +196,11 @@ struct pthread_rwlock { }; struct pthread_barrier { - pthread_mutex_t __lock; - pthread_cond_t __cond; - __uint64_t __cycle; - __uint32_t __count; - __uint32_t __waiters; + pthread_mutex_t __lock; + pthread_cond_t __cond; + __uint64_t __cycle; + __uint32_t __count; + __uint32_t __waiters; }; /* From owner-svn-src-user@FreeBSD.ORG Wed Nov 10 05:54:06 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2FC61106564A; Wed, 10 Nov 2010 05:54:06 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1E2CC8FC15; Wed, 10 Nov 2010 05:54:06 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAA5s6xB086804; Wed, 10 Nov 2010 05:54:06 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAA5s5RF086798; Wed, 10 Nov 2010 05:54:05 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011100554.oAA5s5RF086798@svn.freebsd.org> From: David Xu Date: Wed, 10 Nov 2010 05:54:05 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215080 - in user/davidxu/libthr: include lib/libthr lib/libthr/thread sys/sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Nov 2010 05:54:06 -0000 Author: davidxu Date: Wed Nov 10 05:54:05 2010 New Revision: 215080 URL: http://svn.freebsd.org/changeset/base/215080 Log: Convert pthread_spinlock from pointer to structure. Modified: user/davidxu/libthr/include/pthread.h user/davidxu/libthr/lib/libthr/pthread.map user/davidxu/libthr/lib/libthr/thread/thr_private.h user/davidxu/libthr/lib/libthr/thread/thr_pspinlock.c user/davidxu/libthr/sys/sys/_pthreadtypes.h Modified: user/davidxu/libthr/include/pthread.h ============================================================================== --- user/davidxu/libthr/include/pthread.h Wed Nov 10 05:49:44 2010 (r215079) +++ user/davidxu/libthr/include/pthread.h Wed Nov 10 05:54:05 2010 (r215080) @@ -203,6 +203,10 @@ struct pthread_barrier { __uint32_t __waiters; }; +struct pthread_spinlock { + __uint32_t __lock; +}; + /* * Thread function prototype definitions: */ Modified: user/davidxu/libthr/lib/libthr/pthread.map ============================================================================== --- user/davidxu/libthr/lib/libthr/pthread.map Wed Nov 10 05:49:44 2010 (r215079) +++ user/davidxu/libthr/lib/libthr/pthread.map Wed Nov 10 05:54:05 2010 (r215080) @@ -101,11 +101,6 @@ FBSD_1.0 { pthread_setspecific; pthread_sigmask; pthread_single_np; - pthread_spin_destroy; - pthread_spin_init; - pthread_spin_lock; - pthread_spin_trylock; - pthread_spin_unlock; pthread_suspend_all_np; pthread_suspend_np; pthread_switch_add_np; @@ -398,6 +393,11 @@ FBSD_1.2 { pthread_mutex_timedlock; pthread_mutex_trylock; pthread_mutex_unlock; + pthread_spin_destroy; + pthread_spin_init; + pthread_spin_lock; + pthread_spin_trylock; + pthread_spin_unlock; pthread_rwlock_destroy; pthread_rwlock_init; pthread_rwlock_rdlock; Modified: user/davidxu/libthr/lib/libthr/thread/thr_private.h ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_private.h Wed Nov 10 05:49:44 2010 (r215079) +++ user/davidxu/libthr/lib/libthr/thread/thr_private.h Wed Nov 10 05:54:05 2010 (r215080) @@ -167,10 +167,6 @@ struct pthread_barrierattr { int pshared; }; -struct pthread_spinlock { - struct umutex s_lock; -}; - /* * Cleanup definitions. */ Modified: user/davidxu/libthr/lib/libthr/thread/thr_pspinlock.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_pspinlock.c Wed Nov 10 05:49:44 2010 (r215079) +++ user/davidxu/libthr/lib/libthr/thread/thr_pspinlock.c Wed Nov 10 05:54:05 2010 (r215080) @@ -34,105 +34,135 @@ #include "thr_private.h" -#define SPIN_COUNT 100000 - __weak_reference(_pthread_spin_init, pthread_spin_init); __weak_reference(_pthread_spin_destroy, pthread_spin_destroy); __weak_reference(_pthread_spin_trylock, pthread_spin_trylock); __weak_reference(_pthread_spin_lock, pthread_spin_lock); __weak_reference(_pthread_spin_unlock, pthread_spin_unlock); +typedef pthread_spinlock_t *pthread_spinlock_old_t; +int _pthread_spin_destroy_1_0(pthread_spinlock_old_t *); +int _pthread_spin_init_1_0(pthread_spinlock_old_t *, int); +int _pthread_spin_lock_1_0(pthread_spinlock_old_t *); +int _pthread_spin_trylock_1_0(pthread_spinlock_old_t *); +int _pthread_spin_unlock_1_0(pthread_spinlock_old_t *); + int -_pthread_spin_init(pthread_spinlock_t *lock, int pshared) +_pthread_spin_init(pthread_spinlock_t *lckp, int pshared) { - struct pthread_spinlock *lck; - int ret; - - if (lock == NULL || pshared != PTHREAD_PROCESS_PRIVATE) - ret = EINVAL; - else if ((lck = malloc(sizeof(struct pthread_spinlock))) == NULL) - ret = ENOMEM; - else { - _thr_umutex_init(&lck->s_lock); - *lock = lck; - ret = 0; - } + if (pshared != PTHREAD_PROCESS_PRIVATE && + pshared != PTHREAD_PROCESS_SHARED) + return (EINVAL); + lckp->__lock = 0; + return (0); +} - return (ret); +int +_pthread_spin_destroy(pthread_spinlock_t *lckp) +{ + /* Nothing to do. */ + return (0); } int -_pthread_spin_destroy(pthread_spinlock_t *lock) +_pthread_spin_trylock(pthread_spinlock_t *lckp) { - int ret; + if (atomic_cmpset_acq_32(&lckp->__lock, 0, 1)) + return (0); + return (EBUSY); +} - if (lock == NULL || *lock == NULL) - ret = EINVAL; - else { - free(*lock); - *lock = NULL; - ret = 0; +int +_pthread_spin_lock(pthread_spinlock_t *lckp) +{ + /* + * Nothing has been checked, the lock should be + * as fast as possible. + */ + if (atomic_cmpset_acq_32(&lckp->__lock, 0, 1)) + return (0); + for (;;) { + if (*(volatile int32_t *)&(lckp->__lock) == 0) + if (atomic_cmpset_acq_32(&lckp->__lock, 0, 1)) + break; + if (!_thr_is_smp) + _pthread_yield(); + else + CPU_SPINWAIT; } + return (0); +} + +int +_pthread_spin_unlock(pthread_spinlock_t *lckp) +{ + lckp->__lock = 0; + wmb(); + return (0); +} + +int +_pthread_spin_init_1_0(pthread_spinlock_old_t *lckpp, int pshared) +{ + pthread_spinlock_t *lckp; - return (ret); + if (pshared != PTHREAD_PROCESS_PRIVATE && + pshared != PTHREAD_PROCESS_SHARED) + return (EINVAL); + + lckp = malloc(sizeof(pthread_spinlock_t)); + if (lckp == NULL) + return (ENOMEM); + lckp->__lock = 0; + *lckpp = lckp; + return (0); } int -_pthread_spin_trylock(pthread_spinlock_t *lock) +_pthread_spin_destroy_1_0(pthread_spinlock_old_t *lckpp) { - struct pthread *curthread = _get_curthread(); - struct pthread_spinlock *lck; - int ret; + pthread_spinlock_t *lckp = *lckpp; - if (lock == NULL || (lck = *lock) == NULL) - ret = EINVAL; - else - ret = THR_UMUTEX_TRYLOCK(curthread, &lck->s_lock); - return (ret); + if (lckp != NULL) { + free(lckp); + *lckpp = NULL; + return (0); + } else + return (EINVAL); } int -_pthread_spin_lock(pthread_spinlock_t *lock) +_pthread_spin_trylock_1_0(pthread_spinlock_old_t *lckpp) { - struct pthread *curthread = _get_curthread(); - struct pthread_spinlock *lck; - int ret, count; + pthread_spinlock_t *lckp = *lckpp; - if (lock == NULL || (lck = *lock) == NULL) - ret = EINVAL; - else { - count = SPIN_COUNT; - while ((ret = THR_UMUTEX_TRYLOCK(curthread, &lck->s_lock)) != 0) { - while (lck->s_lock.m_owner) { - if (!_thr_is_smp) { - _pthread_yield(); - } else { - CPU_SPINWAIT; + if (lckp == NULL) + return (EINVAL); + return _pthread_spin_trylock(lckp); +} - if (--count <= 0) { - count = SPIN_COUNT; - _pthread_yield(); - } - } - } - } - ret = 0; - } +int +_pthread_spin_lock_1_0(pthread_spinlock_old_t *lckpp) +{ + pthread_spinlock_t *lckp = *lckpp; - return (ret); + if (lckp == NULL) + return (EINVAL); + return _pthread_spin_lock(lckp); } int -_pthread_spin_unlock(pthread_spinlock_t *lock) +_pthread_spin_unlock_1_0(pthread_spinlock_old_t *lckpp) { - struct pthread *curthread = _get_curthread(); - struct pthread_spinlock *lck; - int ret; + pthread_spinlock_t *lckp = *lckpp; - if (lock == NULL || (lck = *lock) == NULL) - ret = EINVAL; - else { - ret = THR_UMUTEX_UNLOCK(curthread, &lck->s_lock); - } - return (ret); + if (lckp == NULL) + return (EINVAL); + return _pthread_spin_unlock(lckp); } + +FB10_COMPAT(_pthread_spin_destroy_1_0, pthread_spin_destroy); +FB10_COMPAT(_pthread_spin_init_1_0, pthread_spin_init); +FB10_COMPAT(_pthread_spin_lock_1_0, pthread_spin_lock); +FB10_COMPAT(_pthread_spin_trylock_1_0, pthread_spin_trylock); +FB10_COMPAT(_pthread_spin_unlock_1_0, pthread_spin_unlock); Modified: user/davidxu/libthr/sys/sys/_pthreadtypes.h ============================================================================== --- user/davidxu/libthr/sys/sys/_pthreadtypes.h Wed Nov 10 05:49:44 2010 (r215079) +++ user/davidxu/libthr/sys/sys/_pthreadtypes.h Wed Nov 10 05:54:05 2010 (r215080) @@ -76,7 +76,7 @@ typedef struct pthread_rwlock pthread_r typedef struct pthread_rwlockattr *pthread_rwlockattr_t; typedef struct pthread_barrier pthread_barrier_t; typedef struct pthread_barrierattr *pthread_barrierattr_t; -typedef struct pthread_spinlock *pthread_spinlock_t; +typedef struct pthread_spinlock pthread_spinlock_t; /* * Additional type definitions: From owner-svn-src-user@FreeBSD.ORG Wed Nov 10 13:58:24 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id BD05610656A8; Wed, 10 Nov 2010 13:58:24 +0000 (UTC) (envelope-from ae@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id ABDDB8FC12; Wed, 10 Nov 2010 13:58:24 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAADwOY6020018; Wed, 10 Nov 2010 13:58:24 GMT (envelope-from ae@svn.freebsd.org) Received: (from ae@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAADwOEn020013; Wed, 10 Nov 2010 13:58:24 GMT (envelope-from ae@svn.freebsd.org) Message-Id: <201011101358.oAADwOEn020013@svn.freebsd.org> From: "Andrey V. Elsukov" Date: Wed, 10 Nov 2010 13:58:24 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215086 - user/ae/usr.sbin/sade X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 10 Nov 2010 13:58:24 -0000 Author: ae Date: Wed Nov 10 13:58:24 2010 New Revision: 215086 URL: http://svn.freebsd.org/changeset/base/215086 Log: Add ability to destroy and recover corrupt GPT. Modified: user/ae/usr.sbin/sade/devices.c user/ae/usr.sbin/sade/libsade.h user/ae/usr.sbin/sade/parted.c user/ae/usr.sbin/sade/parts.c Modified: user/ae/usr.sbin/sade/devices.c ============================================================================== --- user/ae/usr.sbin/sade/devices.c Wed Nov 10 10:23:39 2010 (r215085) +++ user/ae/usr.sbin/sade/devices.c Wed Nov 10 13:58:24 2010 (r215086) @@ -59,6 +59,7 @@ de_device_add(struct de_devlist *pd, str const char *classname, const char *classdesc) { struct de_device *pdev; + const char *s; pdev = malloc(sizeof(struct de_device)); if (pdev == NULL) Modified: user/ae/usr.sbin/sade/libsade.h ============================================================================== --- user/ae/usr.sbin/sade/libsade.h Wed Nov 10 10:23:39 2010 (r215085) +++ user/ae/usr.sbin/sade/libsade.h Wed Nov 10 13:58:24 2010 (r215086) @@ -78,6 +78,7 @@ struct de_device * de_dev_find(struct de_devlist *pd, const char *name); int de_dev_scheme_create(struct de_device *pdev, const char *scheme); int de_dev_scheme_destroy(struct de_device *pdev); +int de_dev_scheme_recover(struct de_device *pdev); int de_dev_bootcode(struct de_device *pdev, const char *path); int de_dev_undo(struct de_device *pdev); int de_dev_commit(struct de_device *pdev); Modified: user/ae/usr.sbin/sade/parted.c ============================================================================== --- user/ae/usr.sbin/sade/parted.c Wed Nov 10 10:23:39 2010 (r215085) +++ user/ae/usr.sbin/sade/parted.c Wed Nov 10 13:58:24 2010 (r215086) @@ -108,6 +108,12 @@ static char *mbr_bootmgr_msg = "Press \"YES\" to install boot manager or \"NO\" to use standard MBR."; static char *gpt_bootcode_msg = "Would you like to use a ZFS aware bootstrap code?"; +static char *corrupt_scheme_msg = + "WARNING: This partition table marked as corrupt. Any changes are\n" + "prohibited until it will be recovered. Would you like to recover it?"; +static char *destroy_corrupt_scheme_msg = + "WARNING: This partition table marked as corrupt. You can not\n" + "modify it. Would you like to destroy it?"; static char *add_slice_title = "Please specify the slice type (or select it from the list),\n" @@ -620,6 +626,18 @@ reload: error = de_dev_commit(pdev); ret = 1; /* any way we are exiting */ } + } else if (pdev->de_state != 0) { + if (dmenu_open_yesno(corrupt_scheme_msg) == 0) { + error = de_dev_scheme_recover(pdev); + if (error == 0) { + changed = 1; + pdev->de_state = 0; + } else { + dmenu_open_errormsg((error < 0) ? de_error(): + strerror(error)); + error = 0; + } + } } if (ret == 0 && error == 0) { WINDOW *win; @@ -808,8 +826,14 @@ resize: } break; case 'D': - if (count == 1 && selected->de_type == NULL) { - if (dmenu_open_noyes( + /* Ask to destroy partition scheme when: + * 1. Partition table is corrupt; + * 2. Partition table is empty; + */ + if (pdev->de_state != 0 || (count == 1 && + selected->de_type == NULL)) { + if (dmenu_open_noyes(pdev->de_state ? + destroy_corrupt_scheme_msg: destroy_scheme_msg)) break; error = de_dev_scheme_destroy(pdev); Modified: user/ae/usr.sbin/sade/parts.c ============================================================================== --- user/ae/usr.sbin/sade/parts.c Wed Nov 10 10:23:39 2010 (r215085) +++ user/ae/usr.sbin/sade/parts.c Wed Nov 10 13:58:24 2010 (r215086) @@ -133,7 +133,8 @@ de_partlist_get(struct de_device *pdev) } s = find_geomcfg(gp, "scheme"); pdev->de_scheme = strdup(s); - + s = find_geomcfg(gp, "state"); + pdev->de_state = (strcmp(s, "OK") != 0); s = find_geomcfg(gp, "first"); first = (off_t)strtoimax(s, NULL, 0); s = find_geomcfg(gp, "last"); @@ -270,6 +271,31 @@ de_dev_scheme_destroy(struct de_device * gctl_ro_param(req, "class", -1, class_name); gctl_ro_param(req, arg0_name, -1, pdev->de_name); gctl_ro_param(req, "flags", -1, sade_flags); + error = 1; + gctl_ro_param(req, "force", sizeof(int), &error); + + error = de_gpart_issue(req); + gctl_free(req); + return (error); +} + +int +de_dev_scheme_recover(struct de_device *pdev) +{ + int error; + struct gctl_req *req; + + assert(pdev != NULL); + assert(pdev->de_name != NULL); + + req = gctl_get_handle(); + if (req == NULL) + return (ENOMEM); + + gctl_ro_param(req, "verb", -1, "recover"); + gctl_ro_param(req, "class", -1, class_name); + gctl_ro_param(req, arg0_name, -1, pdev->de_name); + gctl_ro_param(req, "flags", -1, sade_flags); error = de_gpart_issue(req); gctl_free(req); From owner-svn-src-user@FreeBSD.ORG Thu Nov 11 05:35:43 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0467A1065670; Thu, 11 Nov 2010 05:35:43 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id CDA458FC08; Thu, 11 Nov 2010 05:35:42 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAB5ZglL049161; Thu, 11 Nov 2010 05:35:42 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAB5ZgXO049160; Thu, 11 Nov 2010 05:35:42 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201011110535.oAB5ZgXO049160@svn.freebsd.org> From: "Jayachandran C." Date: Thu, 11 Nov 2010 05:35:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215108 - user/jchandra X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Nov 2010 05:35:43 -0000 Author: jchandra Date: Thu Nov 11 05:35:42 2010 New Revision: 215108 URL: http://svn.freebsd.org/changeset/base/215108 Log: Create user work area. Added: user/jchandra/ From owner-svn-src-user@FreeBSD.ORG Thu Nov 11 05:38:33 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 40DE1106564A; Thu, 11 Nov 2010 05:38:33 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 160688FC14; Thu, 11 Nov 2010 05:38:33 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAB5cWa6049251; Thu, 11 Nov 2010 05:38:32 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAB5cW3K049250; Thu, 11 Nov 2010 05:38:32 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201011110538.oAB5cW3K049250@svn.freebsd.org> From: "Jayachandran C." Date: Thu, 11 Nov 2010 05:38:32 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215109 - user/jchandra/8-stable-mips X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Nov 2010 05:38:33 -0000 Author: jchandra Date: Thu Nov 11 05:38:32 2010 New Revision: 215109 URL: http://svn.freebsd.org/changeset/base/215109 Log: Branch to do a test merge of mips from -current to 8-stable copy. Added: - copied from r215108, stable/8/ Directory Properties: user/jchandra/8-stable-mips/ (props changed) From owner-svn-src-user@FreeBSD.ORG Thu Nov 11 17:08:34 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7EB5F106566C; Thu, 11 Nov 2010 17:08:34 +0000 (UTC) (envelope-from ed@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 54B258FC17; Thu, 11 Nov 2010 17:08:34 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oABH8YDn077281; Thu, 11 Nov 2010 17:08:34 GMT (envelope-from ed@svn.freebsd.org) Received: (from ed@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oABH8Ybj077280; Thu, 11 Nov 2010 17:08:34 GMT (envelope-from ed@svn.freebsd.org) Message-Id: <201011111708.oABH8Ybj077280@svn.freebsd.org> From: Ed Schouten Date: Thu, 11 Nov 2010 17:08:34 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215130 - user/ed/compiler-rt X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 11 Nov 2010 17:08:34 -0000 Author: ed Date: Thu Nov 11 17:08:34 2010 New Revision: 215130 URL: http://svn.freebsd.org/changeset/base/215130 Log: Remove now obsolete branch. Deleted: user/ed/compiler-rt/ From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 02:35:23 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2B1CA1065693; Fri, 12 Nov 2010 02:35:23 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 156408FC13; Fri, 12 Nov 2010 02:35:23 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC2ZN6P092711; Fri, 12 Nov 2010 02:35:23 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC2ZMxZ092698; Fri, 12 Nov 2010 02:35:22 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201011120235.oAC2ZMxZ092698@svn.freebsd.org> From: Weongyo Jeong Date: Fri, 12 Nov 2010 02:35:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215156 - in user/weongyo/usb/sys: amd64/acpica amd64/amd64 amd64/conf amd64/include amd64/linux32 arm/arm arm/at91 arm/conf arm/econa arm/include arm/mv arm/xscale/ixp425 boot/arm/ixp4... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 02:35:23 -0000 Author: weongyo Date: Fri Nov 12 02:35:21 2010 New Revision: 215156 URL: http://svn.freebsd.org/changeset/base/215156 Log: IFC. Added: user/weongyo/usb/sys/boot/i386/common/ - copied from r215146, head/sys/boot/i386/common/ user/weongyo/usb/sys/dev/gpio/ - copied from r215146, head/sys/dev/gpio/ user/weongyo/usb/sys/dev/mps/ - copied from r215146, head/sys/dev/mps/ user/weongyo/usb/sys/dev/xen/control/ - copied from r215146, head/sys/dev/xen/control/ user/weongyo/usb/sys/modules/mps/ - copied from r215146, head/sys/modules/mps/ user/weongyo/usb/sys/modules/usb/ipheth/ - copied from r215146, head/sys/modules/usb/ipheth/ user/weongyo/usb/sys/modules/usb/xhci/ - copied from r215146, head/sys/modules/usb/xhci/ user/weongyo/usb/sys/x86/include/ - copied from r215146, head/sys/x86/include/ user/weongyo/usb/sys/xen/xenstore/ - copied from r215146, head/sys/xen/xenstore/ Replaced: user/weongyo/usb/sys/kern/Makefile - copied unchanged from r215146, head/sys/kern/Makefile Deleted: user/weongyo/usb/sys/amd64/acpica/OsdEnvironment.c user/weongyo/usb/sys/amd64/acpica/madt.c user/weongyo/usb/sys/amd64/amd64/dump_machdep.c user/weongyo/usb/sys/amd64/amd64/mptable.c user/weongyo/usb/sys/amd64/amd64/mptable_pci.c user/weongyo/usb/sys/amd64/amd64/nexus.c user/weongyo/usb/sys/amd64/include/apicreg.h user/weongyo/usb/sys/amd64/include/mca.h user/weongyo/usb/sys/amd64/include/mptable.h user/weongyo/usb/sys/amd64/include/mutex.h user/weongyo/usb/sys/arm/at91/at91_pio_sam9.h user/weongyo/usb/sys/arm/at91/at91sam9.c user/weongyo/usb/sys/arm/at91/at91sam9_machdep.c user/weongyo/usb/sys/arm/include/mutex.h user/weongyo/usb/sys/dev/mii/axphyreg.h user/weongyo/usb/sys/i386/acpica/OsdEnvironment.c user/weongyo/usb/sys/i386/acpica/madt.c user/weongyo/usb/sys/i386/i386/dump_machdep.c user/weongyo/usb/sys/i386/i386/mptable.c user/weongyo/usb/sys/i386/i386/mptable_pci.c user/weongyo/usb/sys/i386/i386/nexus.c user/weongyo/usb/sys/i386/include/apicreg.h user/weongyo/usb/sys/i386/include/mca.h user/weongyo/usb/sys/i386/include/mptable.h user/weongyo/usb/sys/i386/include/mutex.h user/weongyo/usb/sys/ia64/include/mutex.h user/weongyo/usb/sys/mips/include/mutex.h user/weongyo/usb/sys/mips/mips/psraccess.S user/weongyo/usb/sys/mips/rmi/dev/sec/stats.h user/weongyo/usb/sys/pc98/include/apicreg.h user/weongyo/usb/sys/pc98/include/mca.h user/weongyo/usb/sys/pc98/include/mptable.h user/weongyo/usb/sys/pc98/include/mutex.h user/weongyo/usb/sys/powerpc/include/mutex.h user/weongyo/usb/sys/rpc/inet_ntop.c user/weongyo/usb/sys/rpc/inet_pton.c user/weongyo/usb/sys/sparc64/include/mutex.h user/weongyo/usb/sys/sun4v/include/mutex.h user/weongyo/usb/sys/xen/reboot.c user/weongyo/usb/sys/xen/xenbus/init.txt user/weongyo/usb/sys/xen/xenbus/xenbus_client.c user/weongyo/usb/sys/xen/xenbus/xenbus_comms.c user/weongyo/usb/sys/xen/xenbus/xenbus_comms.h user/weongyo/usb/sys/xen/xenbus/xenbus_dev.c user/weongyo/usb/sys/xen/xenbus/xenbus_probe.c user/weongyo/usb/sys/xen/xenbus/xenbus_probe_backend.c user/weongyo/usb/sys/xen/xenbus/xenbus_xs.c Modified: user/weongyo/usb/sys/amd64/acpica/acpi_machdep.c user/weongyo/usb/sys/amd64/acpica/acpi_wakeup.c user/weongyo/usb/sys/amd64/amd64/amd64_mem.c user/weongyo/usb/sys/amd64/amd64/apic_vector.S user/weongyo/usb/sys/amd64/amd64/busdma_machdep.c user/weongyo/usb/sys/amd64/amd64/fpu.c user/weongyo/usb/sys/amd64/amd64/genassym.c user/weongyo/usb/sys/amd64/amd64/identcpu.c user/weongyo/usb/sys/amd64/amd64/intr_machdep.c user/weongyo/usb/sys/amd64/amd64/legacy.c user/weongyo/usb/sys/amd64/amd64/machdep.c user/weongyo/usb/sys/amd64/amd64/minidump_machdep.c user/weongyo/usb/sys/amd64/amd64/mp_machdep.c user/weongyo/usb/sys/amd64/amd64/mp_watchdog.c user/weongyo/usb/sys/amd64/amd64/pmap.c user/weongyo/usb/sys/amd64/amd64/trap.c user/weongyo/usb/sys/amd64/conf/GENERIC user/weongyo/usb/sys/amd64/conf/NOTES user/weongyo/usb/sys/amd64/include/apicvar.h user/weongyo/usb/sys/amd64/include/apm_bios.h user/weongyo/usb/sys/amd64/include/minidump.h user/weongyo/usb/sys/amd64/include/pmap.h user/weongyo/usb/sys/amd64/include/profile.h user/weongyo/usb/sys/amd64/include/specialreg.h user/weongyo/usb/sys/amd64/include/vmparam.h user/weongyo/usb/sys/amd64/linux32/linux32_proto.h user/weongyo/usb/sys/amd64/linux32/linux32_syscall.h user/weongyo/usb/sys/amd64/linux32/linux32_sysent.c user/weongyo/usb/sys/amd64/linux32/linux32_sysvec.c user/weongyo/usb/sys/amd64/linux32/syscalls.master user/weongyo/usb/sys/arm/arm/cpufunc.c user/weongyo/usb/sys/arm/arm/cpufunc_asm_sheeva.S user/weongyo/usb/sys/arm/arm/elf_trampoline.c user/weongyo/usb/sys/arm/arm/machdep.c user/weongyo/usb/sys/arm/arm/nexus.c user/weongyo/usb/sys/arm/arm/pmap.c user/weongyo/usb/sys/arm/at91/at91.c user/weongyo/usb/sys/arm/at91/at91_machdep.c user/weongyo/usb/sys/arm/at91/at91_mci.c user/weongyo/usb/sys/arm/at91/at91_pio.c user/weongyo/usb/sys/arm/at91/at91_pio_rm9200.h user/weongyo/usb/sys/arm/at91/at91_pioreg.h user/weongyo/usb/sys/arm/at91/at91_pit.c user/weongyo/usb/sys/arm/at91/at91_pmc.c user/weongyo/usb/sys/arm/at91/at91_pmcreg.h user/weongyo/usb/sys/arm/at91/at91_pmcvar.h user/weongyo/usb/sys/arm/at91/at91_twi.c user/weongyo/usb/sys/arm/at91/at91_twireg.h user/weongyo/usb/sys/arm/at91/at91rm92reg.h user/weongyo/usb/sys/arm/at91/at91sam9g20reg.h user/weongyo/usb/sys/arm/at91/at91var.h user/weongyo/usb/sys/arm/at91/board_hl201.c user/weongyo/usb/sys/arm/at91/board_kb920x.c user/weongyo/usb/sys/arm/at91/files.at91 user/weongyo/usb/sys/arm/at91/files.at91sam9 user/weongyo/usb/sys/arm/at91/if_ate.c user/weongyo/usb/sys/arm/at91/if_atereg.h user/weongyo/usb/sys/arm/at91/if_macb.c user/weongyo/usb/sys/arm/at91/std.at91sam9 user/weongyo/usb/sys/arm/at91/std.kb920x user/weongyo/usb/sys/arm/at91/uart_cpu_at91rm9200usart.c user/weongyo/usb/sys/arm/at91/uart_dev_at91usart.c user/weongyo/usb/sys/arm/conf/AVILA user/weongyo/usb/sys/arm/conf/AVILA.hints user/weongyo/usb/sys/arm/conf/BWCT.hints user/weongyo/usb/sys/arm/conf/CAMBRIA user/weongyo/usb/sys/arm/conf/CAMBRIA.hints user/weongyo/usb/sys/arm/econa/if_ece.c user/weongyo/usb/sys/arm/include/cpuconf.h user/weongyo/usb/sys/arm/include/cpufunc.h user/weongyo/usb/sys/arm/mv/mv_sata.c user/weongyo/usb/sys/arm/mv/timer.c user/weongyo/usb/sys/arm/xscale/ixp425/files.avila user/weongyo/usb/sys/arm/xscale/ixp425/if_npe.c user/weongyo/usb/sys/arm/xscale/ixp425/ixp425.c user/weongyo/usb/sys/arm/xscale/ixp425/ixp425_qmgr.c user/weongyo/usb/sys/arm/xscale/ixp425/ixp425reg.h user/weongyo/usb/sys/boot/arm/ixp425/boot2/ixp425_board.c user/weongyo/usb/sys/boot/common/loader.8 user/weongyo/usb/sys/boot/fdt/dts/mpc8555cds.dts user/weongyo/usb/sys/boot/forth/beastie.4th user/weongyo/usb/sys/boot/forth/loader.conf user/weongyo/usb/sys/boot/i386/boot2/Makefile user/weongyo/usb/sys/boot/i386/boot2/boot2.c user/weongyo/usb/sys/boot/i386/gptboot/Makefile user/weongyo/usb/sys/boot/i386/gptboot/gptboot.c user/weongyo/usb/sys/boot/i386/gptzfsboot/Makefile user/weongyo/usb/sys/boot/i386/libi386/biosacpi.c user/weongyo/usb/sys/boot/i386/libi386/biosdisk.c user/weongyo/usb/sys/boot/i386/libi386/i386_module.c user/weongyo/usb/sys/boot/i386/loader/help.i386 user/weongyo/usb/sys/boot/i386/zfsboot/Makefile user/weongyo/usb/sys/boot/i386/zfsboot/zfsboot.c user/weongyo/usb/sys/boot/ofw/common/main.c user/weongyo/usb/sys/boot/ofw/libofw/ofw_memory.c user/weongyo/usb/sys/boot/ofw/libofw/ofw_net.c user/weongyo/usb/sys/boot/ofw/libofw/openfirm.c user/weongyo/usb/sys/boot/pc98/boot2/Makefile user/weongyo/usb/sys/boot/pc98/boot2/boot2.c user/weongyo/usb/sys/boot/sparc64/boot1/boot1.c user/weongyo/usb/sys/boot/sparc64/loader/main.c user/weongyo/usb/sys/boot/zfs/Makefile user/weongyo/usb/sys/boot/zfs/zfs.c user/weongyo/usb/sys/boot/zfs/zfsimpl.c user/weongyo/usb/sys/cam/ata/ata_da.c user/weongyo/usb/sys/cam/cam_periph.c user/weongyo/usb/sys/cam/cam_xpt.c user/weongyo/usb/sys/cam/scsi/scsi_da.c user/weongyo/usb/sys/cam/scsi/scsi_pass.c user/weongyo/usb/sys/cddl/boot/zfs/zfsimpl.h user/weongyo/usb/sys/cddl/compat/opensolaris/kern/opensolaris_cmn_err.c user/weongyo/usb/sys/cddl/compat/opensolaris/kern/opensolaris_kmem.c user/weongyo/usb/sys/cddl/compat/opensolaris/kern/opensolaris_taskq.c user/weongyo/usb/sys/cddl/compat/opensolaris/sys/vnode.h user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scrub.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev.h user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ctldir.h user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zil.h user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_disk.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_label.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ctldir.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_fm.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h user/weongyo/usb/sys/cddl/contrib/opensolaris/uts/intel/dtrace/fasttrap_isa.c user/weongyo/usb/sys/compat/linprocfs/linprocfs.c user/weongyo/usb/sys/compat/linux/linux_futex.c user/weongyo/usb/sys/compat/linux/linux_ioctl.c user/weongyo/usb/sys/compat/linux/linux_util.h user/weongyo/usb/sys/compat/ndis/kern_ndis.c user/weongyo/usb/sys/compat/ndis/subr_ndis.c user/weongyo/usb/sys/compat/ndis/subr_ntoskrnl.c user/weongyo/usb/sys/compat/svr4/svr4_sysvec.c user/weongyo/usb/sys/compat/x86bios/x86bios.c user/weongyo/usb/sys/conf/Makefile.mips user/weongyo/usb/sys/conf/NOTES user/weongyo/usb/sys/conf/files user/weongyo/usb/sys/conf/files.amd64 user/weongyo/usb/sys/conf/files.i386 user/weongyo/usb/sys/conf/files.mips user/weongyo/usb/sys/conf/files.pc98 user/weongyo/usb/sys/conf/files.powerpc user/weongyo/usb/sys/conf/kern.mk user/weongyo/usb/sys/conf/kern.post.mk user/weongyo/usb/sys/conf/kern.pre.mk user/weongyo/usb/sys/conf/kmod.mk user/weongyo/usb/sys/conf/ldscript.mips.octeon1.64 user/weongyo/usb/sys/conf/newvers.sh user/weongyo/usb/sys/conf/options user/weongyo/usb/sys/conf/options.amd64 user/weongyo/usb/sys/conf/options.arm user/weongyo/usb/sys/conf/options.powerpc user/weongyo/usb/sys/contrib/dev/acpica/acpica_prep.sh user/weongyo/usb/sys/contrib/dev/acpica/changes.txt user/weongyo/usb/sys/contrib/dev/acpica/common/adfile.c user/weongyo/usb/sys/contrib/dev/acpica/common/adisasm.c user/weongyo/usb/sys/contrib/dev/acpica/common/adwalk.c user/weongyo/usb/sys/contrib/dev/acpica/common/dmrestag.c user/weongyo/usb/sys/contrib/dev/acpica/common/getopt.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslanalyze.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslcodegen.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslcompile.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslcompiler.h user/weongyo/usb/sys/contrib/dev/acpica/compiler/asldefine.h user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslerror.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslfiles.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/asllisting.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/asllookup.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslmain.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslopcodes.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslpredef.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslresource.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslrestype1.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslrestype1i.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslrestype2d.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslrestype2e.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslrestype2q.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslrestype2w.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslstartup.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/asltypes.h user/weongyo/usb/sys/contrib/dev/acpica/compiler/aslutils.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/dtcompile.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/dtio.c user/weongyo/usb/sys/contrib/dev/acpica/compiler/dttemplate.c user/weongyo/usb/sys/contrib/dev/acpica/debugger/dbexec.c user/weongyo/usb/sys/contrib/dev/acpica/events/evrgnini.c user/weongyo/usb/sys/contrib/dev/acpica/events/evxfregn.c user/weongyo/usb/sys/contrib/dev/acpica/executer/exmutex.c user/weongyo/usb/sys/contrib/dev/acpica/include/acapps.h user/weongyo/usb/sys/contrib/dev/acpica/include/acglobal.h user/weongyo/usb/sys/contrib/dev/acpica/include/achware.h user/weongyo/usb/sys/contrib/dev/acpica/include/aclocal.h user/weongyo/usb/sys/contrib/dev/acpica/include/acmacros.h user/weongyo/usb/sys/contrib/dev/acpica/include/acnamesp.h user/weongyo/usb/sys/contrib/dev/acpica/include/acpiosxf.h user/weongyo/usb/sys/contrib/dev/acpica/include/acpixf.h user/weongyo/usb/sys/contrib/dev/acpica/include/actypes.h user/weongyo/usb/sys/contrib/dev/acpica/include/acutils.h user/weongyo/usb/sys/contrib/dev/acpica/include/platform/acenv.h user/weongyo/usb/sys/contrib/dev/acpica/include/platform/acfreebsd.h user/weongyo/usb/sys/contrib/dev/acpica/include/platform/acgcc.h user/weongyo/usb/sys/contrib/dev/acpica/namespace/nsrepair2.c user/weongyo/usb/sys/contrib/dev/acpica/namespace/nsutils.c user/weongyo/usb/sys/contrib/dev/acpica/osunixxf.c user/weongyo/usb/sys/contrib/dev/acpica/tables/tbfadt.c user/weongyo/usb/sys/contrib/dev/acpica/tools/acpiexec/aecommon.h user/weongyo/usb/sys/contrib/dev/acpica/utilities/utdebug.c user/weongyo/usb/sys/contrib/dev/acpica/utilities/utglobal.c user/weongyo/usb/sys/contrib/dev/acpica/utilities/utids.c user/weongyo/usb/sys/contrib/dev/acpica/utilities/utmath.c user/weongyo/usb/sys/contrib/dev/acpica/utilities/utmisc.c user/weongyo/usb/sys/contrib/dev/acpica/utilities/utmutex.c user/weongyo/usb/sys/contrib/dev/acpica/utilities/utosi.c user/weongyo/usb/sys/contrib/ipfilter/netinet/mlfk_ipl.c user/weongyo/usb/sys/contrib/ngatm/netnatm/api/cc_conn.c user/weongyo/usb/sys/contrib/ngatm/netnatm/msg/privmsg.c user/weongyo/usb/sys/contrib/ngatm/netnatm/msg/uni_ie.c user/weongyo/usb/sys/contrib/ngatm/netnatm/sig/sig_call.c user/weongyo/usb/sys/contrib/ngatm/netnatm/sig/sig_reset.c user/weongyo/usb/sys/contrib/octeon-sdk/cvmx-app-init.h user/weongyo/usb/sys/contrib/octeon-sdk/cvmx-helper-board.c user/weongyo/usb/sys/contrib/octeon-sdk/cvmx-helper-spi.c user/weongyo/usb/sys/contrib/octeon-sdk/cvmx-helper.c user/weongyo/usb/sys/contrib/octeon-sdk/cvmx-spi.c user/weongyo/usb/sys/contrib/pf/net/pf.c user/weongyo/usb/sys/contrib/pf/netinet/in4_cksum.c user/weongyo/usb/sys/crypto/aesni/aeskeys_i386.S user/weongyo/usb/sys/crypto/aesni/aesni.c user/weongyo/usb/sys/crypto/aesni/aesni.h user/weongyo/usb/sys/crypto/aesni/aesni_wrap.c user/weongyo/usb/sys/dev/aac/aac.c user/weongyo/usb/sys/dev/aac/aac_cam.c user/weongyo/usb/sys/dev/aac/aac_disk.c user/weongyo/usb/sys/dev/aac/aacreg.h user/weongyo/usb/sys/dev/aac/aacvar.h user/weongyo/usb/sys/dev/acpi_support/acpi_hp.c user/weongyo/usb/sys/dev/acpi_support/acpi_wmi.c user/weongyo/usb/sys/dev/acpica/Osd/OsdHardware.c user/weongyo/usb/sys/dev/acpica/acpi.c user/weongyo/usb/sys/dev/acpica/acpi_cpu.c user/weongyo/usb/sys/dev/acpica/acpi_ec.c user/weongyo/usb/sys/dev/acpica/acpi_hpet.c user/weongyo/usb/sys/dev/acpica/acpi_if.m user/weongyo/usb/sys/dev/acpica/acpi_pci.c user/weongyo/usb/sys/dev/acpica/acpi_pci_link.c user/weongyo/usb/sys/dev/acpica/acpivar.h user/weongyo/usb/sys/dev/ae/if_ae.c user/weongyo/usb/sys/dev/ae/if_aevar.h user/weongyo/usb/sys/dev/age/if_age.c user/weongyo/usb/sys/dev/agp/agp.c user/weongyo/usb/sys/dev/ahci/ahci.c user/weongyo/usb/sys/dev/alc/if_alc.c user/weongyo/usb/sys/dev/ale/if_ale.c user/weongyo/usb/sys/dev/ata/ata-all.c user/weongyo/usb/sys/dev/ata/ata-all.h user/weongyo/usb/sys/dev/ata/ata-disk.c user/weongyo/usb/sys/dev/ata/ata-lowlevel.c user/weongyo/usb/sys/dev/ata/ata-pci.c user/weongyo/usb/sys/dev/ata/ata-sata.c user/weongyo/usb/sys/dev/ata/chipsets/ata-ahci.c user/weongyo/usb/sys/dev/ata/chipsets/ata-intel.c user/weongyo/usb/sys/dev/ata/chipsets/ata-marvell.c user/weongyo/usb/sys/dev/ata/chipsets/ata-nvidia.c user/weongyo/usb/sys/dev/ata/chipsets/ata-promise.c user/weongyo/usb/sys/dev/ata/chipsets/ata-serverworks.c user/weongyo/usb/sys/dev/ata/chipsets/ata-siliconimage.c user/weongyo/usb/sys/dev/ata/chipsets/ata-via.c user/weongyo/usb/sys/dev/atkbdc/atkbdc_isa.c user/weongyo/usb/sys/dev/atkbdc/psm.c user/weongyo/usb/sys/dev/bce/if_bce.c user/weongyo/usb/sys/dev/bce/if_bcereg.h user/weongyo/usb/sys/dev/bfe/if_bfe.c user/weongyo/usb/sys/dev/bge/if_bge.c user/weongyo/usb/sys/dev/bge/if_bgereg.h user/weongyo/usb/sys/dev/bm/if_bm.c user/weongyo/usb/sys/dev/bwi/if_bwi.c user/weongyo/usb/sys/dev/bwn/if_bwn.c user/weongyo/usb/sys/dev/cas/if_cas.c user/weongyo/usb/sys/dev/cas/if_casvar.h user/weongyo/usb/sys/dev/ciss/ciss.c user/weongyo/usb/sys/dev/cxgb/common/cxgb_t3_hw.c user/weongyo/usb/sys/dev/cxgb/cxgb_sge.c user/weongyo/usb/sys/dev/dc/dcphy.c user/weongyo/usb/sys/dev/dc/if_dc.c user/weongyo/usb/sys/dev/dc/if_dcreg.h user/weongyo/usb/sys/dev/dc/pnphy.c user/weongyo/usb/sys/dev/drm/r300_reg.h user/weongyo/usb/sys/dev/e1000/e1000_82571.c user/weongyo/usb/sys/dev/e1000/e1000_82571.h user/weongyo/usb/sys/dev/e1000/e1000_82575.c user/weongyo/usb/sys/dev/e1000/e1000_82575.h user/weongyo/usb/sys/dev/e1000/e1000_api.c user/weongyo/usb/sys/dev/e1000/e1000_api.h user/weongyo/usb/sys/dev/e1000/e1000_defines.h user/weongyo/usb/sys/dev/e1000/e1000_hw.h user/weongyo/usb/sys/dev/e1000/e1000_ich8lan.c user/weongyo/usb/sys/dev/e1000/e1000_ich8lan.h user/weongyo/usb/sys/dev/e1000/e1000_mac.c user/weongyo/usb/sys/dev/e1000/e1000_nvm.c user/weongyo/usb/sys/dev/e1000/e1000_nvm.h user/weongyo/usb/sys/dev/e1000/e1000_phy.c user/weongyo/usb/sys/dev/e1000/e1000_phy.h user/weongyo/usb/sys/dev/e1000/e1000_regs.h user/weongyo/usb/sys/dev/e1000/if_em.c user/weongyo/usb/sys/dev/e1000/if_em.h user/weongyo/usb/sys/dev/e1000/if_igb.c user/weongyo/usb/sys/dev/e1000/if_igb.h user/weongyo/usb/sys/dev/e1000/if_lem.c user/weongyo/usb/sys/dev/e1000/if_lem.h user/weongyo/usb/sys/dev/ed/if_ed_pccard.c user/weongyo/usb/sys/dev/et/if_et.c user/weongyo/usb/sys/dev/fb/vesa.c user/weongyo/usb/sys/dev/firewire/firewire.c user/weongyo/usb/sys/dev/firewire/fwohci.c user/weongyo/usb/sys/dev/firewire/fwohci_pci.c user/weongyo/usb/sys/dev/fxp/if_fxp.c user/weongyo/usb/sys/dev/gem/if_gem.c user/weongyo/usb/sys/dev/gem/if_gem_pci.c user/weongyo/usb/sys/dev/gem/if_gem_sbus.c user/weongyo/usb/sys/dev/gem/if_gemvar.h user/weongyo/usb/sys/dev/hifn/hifn7751.c user/weongyo/usb/sys/dev/hifn/hifn7751var.h user/weongyo/usb/sys/dev/hme/if_hme.c user/weongyo/usb/sys/dev/hptrr/hptrr_osm_bsd.c user/weongyo/usb/sys/dev/hwpmc/pmc_events.h user/weongyo/usb/sys/dev/if_ndis/if_ndis.c user/weongyo/usb/sys/dev/iicbus/iicbus.c user/weongyo/usb/sys/dev/iicbus/iiconf.c user/weongyo/usb/sys/dev/isp/isp_freebsd.c user/weongyo/usb/sys/dev/iwi/if_iwi.c user/weongyo/usb/sys/dev/iwi/if_iwivar.h user/weongyo/usb/sys/dev/iwn/if_iwn.c user/weongyo/usb/sys/dev/iwn/if_iwnvar.h user/weongyo/usb/sys/dev/ixgbe/ixgbe.c user/weongyo/usb/sys/dev/jme/if_jme.c user/weongyo/usb/sys/dev/kbd/kbd.c user/weongyo/usb/sys/dev/kbdmux/kbdmux.c user/weongyo/usb/sys/dev/led/led.c user/weongyo/usb/sys/dev/lge/if_lge.c user/weongyo/usb/sys/dev/malo/if_malo_pci.c user/weongyo/usb/sys/dev/md/md.c user/weongyo/usb/sys/dev/mfi/mfireg.h user/weongyo/usb/sys/dev/mge/if_mge.c user/weongyo/usb/sys/dev/mge/if_mgevar.h user/weongyo/usb/sys/dev/mii/acphy.c user/weongyo/usb/sys/dev/mii/amphy.c user/weongyo/usb/sys/dev/mii/atphy.c user/weongyo/usb/sys/dev/mii/axphy.c user/weongyo/usb/sys/dev/mii/bmtphy.c user/weongyo/usb/sys/dev/mii/brgphy.c user/weongyo/usb/sys/dev/mii/brgphyreg.h user/weongyo/usb/sys/dev/mii/ciphy.c user/weongyo/usb/sys/dev/mii/e1000phy.c user/weongyo/usb/sys/dev/mii/exphy.c user/weongyo/usb/sys/dev/mii/gentbi.c user/weongyo/usb/sys/dev/mii/icsphy.c user/weongyo/usb/sys/dev/mii/inphy.c user/weongyo/usb/sys/dev/mii/ip1000phy.c user/weongyo/usb/sys/dev/mii/jmphy.c user/weongyo/usb/sys/dev/mii/lxtphy.c user/weongyo/usb/sys/dev/mii/mii.c user/weongyo/usb/sys/dev/mii/mii.h user/weongyo/usb/sys/dev/mii/mii_physubr.c user/weongyo/usb/sys/dev/mii/miidevs user/weongyo/usb/sys/dev/mii/miivar.h user/weongyo/usb/sys/dev/mii/mlphy.c user/weongyo/usb/sys/dev/mii/nsgphy.c user/weongyo/usb/sys/dev/mii/nsphy.c user/weongyo/usb/sys/dev/mii/nsphyter.c user/weongyo/usb/sys/dev/mii/pnaphy.c user/weongyo/usb/sys/dev/mii/qsphy.c user/weongyo/usb/sys/dev/mii/rgephy.c user/weongyo/usb/sys/dev/mii/rlphy.c user/weongyo/usb/sys/dev/mii/rlswitch.c user/weongyo/usb/sys/dev/mii/ruephy.c user/weongyo/usb/sys/dev/mii/smcphy.c user/weongyo/usb/sys/dev/mii/tdkphy.c user/weongyo/usb/sys/dev/mii/tlphy.c user/weongyo/usb/sys/dev/mii/tlphyreg.h user/weongyo/usb/sys/dev/mii/truephy.c user/weongyo/usb/sys/dev/mii/ukphy.c user/weongyo/usb/sys/dev/mii/ukphy_subr.c user/weongyo/usb/sys/dev/mii/xmphy.c user/weongyo/usb/sys/dev/mpt/mpt.c user/weongyo/usb/sys/dev/mpt/mpt.h user/weongyo/usb/sys/dev/msk/if_msk.c user/weongyo/usb/sys/dev/mvs/mvs.c user/weongyo/usb/sys/dev/mvs/mvs_pci.c user/weongyo/usb/sys/dev/mvs/mvs_soc.c user/weongyo/usb/sys/dev/mwl/if_mwl_pci.c user/weongyo/usb/sys/dev/nfe/if_nfe.c user/weongyo/usb/sys/dev/nfe/if_nfereg.h user/weongyo/usb/sys/dev/nfe/if_nfevar.h user/weongyo/usb/sys/dev/nge/if_nge.c user/weongyo/usb/sys/dev/nve/if_nve.c user/weongyo/usb/sys/dev/ofw/ofw_fdt.c user/weongyo/usb/sys/dev/ofw/ofw_if.m user/weongyo/usb/sys/dev/ofw/ofw_iicbus.c user/weongyo/usb/sys/dev/ofw/ofw_standard.c user/weongyo/usb/sys/dev/ofw/openfirm.c user/weongyo/usb/sys/dev/pccard/pccardvar.h user/weongyo/usb/sys/dev/pci/pci.c user/weongyo/usb/sys/dev/pci/pci_pci.c user/weongyo/usb/sys/dev/pci/pci_private.h user/weongyo/usb/sys/dev/pci/pcireg.h user/weongyo/usb/sys/dev/pci/pcivar.h user/weongyo/usb/sys/dev/pcn/if_pcn.c user/weongyo/usb/sys/dev/ppbus/ppbconf.c user/weongyo/usb/sys/dev/ral/rt2560.c user/weongyo/usb/sys/dev/ral/rt2661.c user/weongyo/usb/sys/dev/re/if_re.c user/weongyo/usb/sys/dev/sf/if_sf.c user/weongyo/usb/sys/dev/sge/if_sge.c user/weongyo/usb/sys/dev/siba/siba.c user/weongyo/usb/sys/dev/siis/siis.c user/weongyo/usb/sys/dev/sis/if_sis.c user/weongyo/usb/sys/dev/sk/if_sk.c user/weongyo/usb/sys/dev/smc/if_smc.c user/weongyo/usb/sys/dev/sound/pci/envy24ht.c user/weongyo/usb/sys/dev/sound/pci/spicds.c user/weongyo/usb/sys/dev/sound/pcm/channel.c user/weongyo/usb/sys/dev/sound/sbus/cs4231.c user/weongyo/usb/sys/dev/spibus/spibus.c user/weongyo/usb/sys/dev/ste/if_ste.c user/weongyo/usb/sys/dev/stge/if_stge.c user/weongyo/usb/sys/dev/syscons/schistory.c user/weongyo/usb/sys/dev/syscons/scvgarndr.c user/weongyo/usb/sys/dev/syscons/syscons.c user/weongyo/usb/sys/dev/tl/if_tl.c user/weongyo/usb/sys/dev/tl/if_tlreg.h user/weongyo/usb/sys/dev/tsec/if_tsec.c user/weongyo/usb/sys/dev/tx/if_tx.c user/weongyo/usb/sys/dev/uart/uart_subr.c user/weongyo/usb/sys/dev/usb/controller/at91dci.c user/weongyo/usb/sys/dev/usb/controller/atmegadci.c user/weongyo/usb/sys/dev/usb/controller/avr32dci.c user/weongyo/usb/sys/dev/usb/controller/ehci.c user/weongyo/usb/sys/dev/usb/controller/ehci.h user/weongyo/usb/sys/dev/usb/controller/ehci_pci.c user/weongyo/usb/sys/dev/usb/controller/ehcireg.h user/weongyo/usb/sys/dev/usb/controller/musb_otg.c user/weongyo/usb/sys/dev/usb/controller/ohci.c user/weongyo/usb/sys/dev/usb/controller/usb_controller.c user/weongyo/usb/sys/dev/usb/controller/uss820dci.c user/weongyo/usb/sys/dev/usb/net/if_aue.c user/weongyo/usb/sys/dev/usb/net/if_axe.c user/weongyo/usb/sys/dev/usb/net/if_axereg.h user/weongyo/usb/sys/dev/usb/net/if_cdce.c user/weongyo/usb/sys/dev/usb/net/if_cdcereg.h user/weongyo/usb/sys/dev/usb/net/if_rue.c user/weongyo/usb/sys/dev/usb/net/if_udav.c user/weongyo/usb/sys/dev/usb/net/uhso.c user/weongyo/usb/sys/dev/usb/quirk/usb_quirk.c user/weongyo/usb/sys/dev/usb/quirk/usb_quirk.h user/weongyo/usb/sys/dev/usb/serial/u3g.c user/weongyo/usb/sys/dev/usb/serial/uark.c user/weongyo/usb/sys/dev/usb/serial/ubsa.c user/weongyo/usb/sys/dev/usb/serial/ubser.c user/weongyo/usb/sys/dev/usb/serial/uchcom.c user/weongyo/usb/sys/dev/usb/serial/ucycom.c user/weongyo/usb/sys/dev/usb/serial/ufoma.c user/weongyo/usb/sys/dev/usb/serial/uftdi.c user/weongyo/usb/sys/dev/usb/serial/ugensa.c user/weongyo/usb/sys/dev/usb/serial/uipaq.c user/weongyo/usb/sys/dev/usb/serial/umct.c user/weongyo/usb/sys/dev/usb/serial/umodem.c user/weongyo/usb/sys/dev/usb/serial/umoscom.c user/weongyo/usb/sys/dev/usb/serial/uplcom.c user/weongyo/usb/sys/dev/usb/serial/usb_serial.c user/weongyo/usb/sys/dev/usb/serial/usb_serial.h user/weongyo/usb/sys/dev/usb/serial/uslcom.c user/weongyo/usb/sys/dev/usb/serial/uvisor.c user/weongyo/usb/sys/dev/usb/serial/uvscom.c user/weongyo/usb/sys/dev/usb/storage/umass.c user/weongyo/usb/sys/dev/usb/usb.h user/weongyo/usb/sys/dev/usb/usb_busdma.c user/weongyo/usb/sys/dev/usb/usb_cdc.h user/weongyo/usb/sys/dev/usb/usb_controller.h user/weongyo/usb/sys/dev/usb/usb_dev.c user/weongyo/usb/sys/dev/usb/usb_device.c user/weongyo/usb/sys/dev/usb/usb_device.h user/weongyo/usb/sys/dev/usb/usb_freebsd.h user/weongyo/usb/sys/dev/usb/usb_generic.c user/weongyo/usb/sys/dev/usb/usb_handle_request.c user/weongyo/usb/sys/dev/usb/usb_hub.c user/weongyo/usb/sys/dev/usb/usb_hub.h user/weongyo/usb/sys/dev/usb/usb_ioctl.h user/weongyo/usb/sys/dev/usb/usb_msctest.c user/weongyo/usb/sys/dev/usb/usb_msctest.h user/weongyo/usb/sys/dev/usb/usb_parse.c user/weongyo/usb/sys/dev/usb/usb_request.c user/weongyo/usb/sys/dev/usb/usb_request.h user/weongyo/usb/sys/dev/usb/usb_transfer.c user/weongyo/usb/sys/dev/usb/usb_transfer.h user/weongyo/usb/sys/dev/usb/usbdevs user/weongyo/usb/sys/dev/usb/usbdi.h user/weongyo/usb/sys/dev/usb/usbdi_util.h user/weongyo/usb/sys/dev/usb/wlan/if_rum.c user/weongyo/usb/sys/dev/usb/wlan/if_run.c user/weongyo/usb/sys/dev/usb/wlan/if_upgt.c user/weongyo/usb/sys/dev/usb/wlan/if_ural.c user/weongyo/usb/sys/dev/usb/wlan/if_zyd.c user/weongyo/usb/sys/dev/vge/if_vge.c user/weongyo/usb/sys/dev/vr/if_vr.c user/weongyo/usb/sys/dev/vr/if_vrreg.h user/weongyo/usb/sys/dev/wb/if_wb.c user/weongyo/usb/sys/dev/wpi/if_wpi.c user/weongyo/usb/sys/dev/xen/balloon/balloon.c user/weongyo/usb/sys/dev/xen/blkback/blkback.c user/weongyo/usb/sys/dev/xen/blkfront/blkfront.c user/weongyo/usb/sys/dev/xen/blkfront/block.h user/weongyo/usb/sys/dev/xen/netfront/netfront.c user/weongyo/usb/sys/dev/xen/xenpci/evtchn.c user/weongyo/usb/sys/dev/xen/xenpci/xenpci.c user/weongyo/usb/sys/dev/xl/if_xl.c user/weongyo/usb/sys/fs/cd9660/cd9660_mount.h user/weongyo/usb/sys/fs/cd9660/cd9660_vfsops.c user/weongyo/usb/sys/fs/devfs/devfs.h user/weongyo/usb/sys/fs/devfs/devfs_devs.c user/weongyo/usb/sys/fs/devfs/devfs_int.h user/weongyo/usb/sys/fs/devfs/devfs_vnops.c user/weongyo/usb/sys/fs/hpfs/hpfs_vfsops.c user/weongyo/usb/sys/fs/hpfs/hpfsmount.h user/weongyo/usb/sys/fs/msdosfs/msdosfs_denode.c user/weongyo/usb/sys/fs/msdosfs/msdosfs_lookup.c user/weongyo/usb/sys/fs/msdosfs/msdosfs_vfsops.c user/weongyo/usb/sys/fs/msdosfs/msdosfs_vnops.c user/weongyo/usb/sys/fs/msdosfs/msdosfsmount.h user/weongyo/usb/sys/fs/nfs/nfs_var.h user/weongyo/usb/sys/fs/nfs/nfsclstate.h user/weongyo/usb/sys/fs/nfs/nfsdport.h user/weongyo/usb/sys/fs/nfsclient/nfs_clnode.c user/weongyo/usb/sys/fs/nfsclient/nfs_clrpcops.c user/weongyo/usb/sys/fs/nfsclient/nfs_clstate.c user/weongyo/usb/sys/fs/nfsclient/nfs_clvfsops.c user/weongyo/usb/sys/fs/nfsclient/nfs_clvnops.c user/weongyo/usb/sys/fs/nfsclient/nfsmount.h user/weongyo/usb/sys/fs/nfsclient/nfsnode.h user/weongyo/usb/sys/fs/nfsserver/nfs_nfsdport.c user/weongyo/usb/sys/fs/nfsserver/nfs_nfsdstate.c user/weongyo/usb/sys/fs/ntfs/ntfs_vfsops.c user/weongyo/usb/sys/fs/ntfs/ntfsmount.h user/weongyo/usb/sys/fs/nwfs/nwfs_vfsops.c user/weongyo/usb/sys/fs/nwfs/nwfs_vnops.c user/weongyo/usb/sys/fs/smbfs/smbfs_vfsops.c user/weongyo/usb/sys/fs/tmpfs/tmpfs_vnops.c user/weongyo/usb/sys/gdb/gdb_cons.c user/weongyo/usb/sys/geom/concat/g_concat.c user/weongyo/usb/sys/geom/eli/g_eli.c user/weongyo/usb/sys/geom/eli/g_eli.h user/weongyo/usb/sys/geom/eli/g_eli_crypto.c user/weongyo/usb/sys/geom/eli/g_eli_ctl.c user/weongyo/usb/sys/geom/eli/g_eli_integrity.c user/weongyo/usb/sys/geom/eli/g_eli_key.c user/weongyo/usb/sys/geom/eli/g_eli_privacy.c user/weongyo/usb/sys/geom/geom_dev.c user/weongyo/usb/sys/geom/geom_event.c user/weongyo/usb/sys/geom/mirror/g_mirror_ctl.c user/weongyo/usb/sys/geom/part/g_part.c user/weongyo/usb/sys/geom/part/g_part.h user/weongyo/usb/sys/geom/part/g_part_ebr.c user/weongyo/usb/sys/geom/part/g_part_gpt.c user/weongyo/usb/sys/geom/part/g_part_if.m user/weongyo/usb/sys/geom/part/g_part_mbr.c user/weongyo/usb/sys/geom/part/g_part_pc98.c user/weongyo/usb/sys/geom/vinum/geom_vinum_move.c user/weongyo/usb/sys/geom/vinum/geom_vinum_rename.c user/weongyo/usb/sys/geom/virstor/g_virstor.c user/weongyo/usb/sys/gnu/fs/reiserfs/reiserfs_mount.h user/weongyo/usb/sys/gnu/fs/reiserfs/reiserfs_vfsops.c user/weongyo/usb/sys/i386/acpica/acpi_machdep.c user/weongyo/usb/sys/i386/acpica/acpi_wakeup.c user/weongyo/usb/sys/i386/bios/apm.c user/weongyo/usb/sys/i386/conf/GENERIC user/weongyo/usb/sys/i386/conf/NOTES user/weongyo/usb/sys/i386/i386/apic_vector.s user/weongyo/usb/sys/i386/i386/busdma_machdep.c user/weongyo/usb/sys/i386/i386/elan-mmcr.c user/weongyo/usb/sys/i386/i386/genassym.c user/weongyo/usb/sys/i386/i386/identcpu.c user/weongyo/usb/sys/i386/i386/initcpu.c user/weongyo/usb/sys/i386/i386/intr_machdep.c user/weongyo/usb/sys/i386/i386/legacy.c user/weongyo/usb/sys/i386/i386/locore.s user/weongyo/usb/sys/i386/i386/longrun.c user/weongyo/usb/sys/i386/i386/machdep.c user/weongyo/usb/sys/i386/i386/mp_machdep.c user/weongyo/usb/sys/i386/i386/mp_watchdog.c user/weongyo/usb/sys/i386/i386/mpboot.s user/weongyo/usb/sys/i386/i386/perfmon.c user/weongyo/usb/sys/i386/i386/pmap.c user/weongyo/usb/sys/i386/i386/support.s user/weongyo/usb/sys/i386/i386/trap.c user/weongyo/usb/sys/i386/ibcs2/ibcs2_sysvec.c user/weongyo/usb/sys/i386/include/apicvar.h user/weongyo/usb/sys/i386/include/apm_bios.h user/weongyo/usb/sys/i386/include/pmap.h user/weongyo/usb/sys/i386/include/profile.h user/weongyo/usb/sys/i386/include/specialreg.h user/weongyo/usb/sys/i386/isa/npx.c user/weongyo/usb/sys/i386/linux/linux_sysvec.c user/weongyo/usb/sys/i386/xen/mp_machdep.c user/weongyo/usb/sys/i386/xen/mptable.c user/weongyo/usb/sys/i386/xen/xen_machdep.c user/weongyo/usb/sys/ia64/acpica/OsdEnvironment.c user/weongyo/usb/sys/ia64/ia64/busdma_machdep.c user/weongyo/usb/sys/ia64/ia64/db_machdep.c user/weongyo/usb/sys/ia64/ia64/genassym.c user/weongyo/usb/sys/ia64/ia64/machdep.c user/weongyo/usb/sys/ia64/ia64/nexus.c user/weongyo/usb/sys/ia64/include/_stdint.h user/weongyo/usb/sys/ia64/include/bus.h user/weongyo/usb/sys/isa/isa_common.c user/weongyo/usb/sys/kern/bus_if.m user/weongyo/usb/sys/kern/imgact_shell.c user/weongyo/usb/sys/kern/init_main.c user/weongyo/usb/sys/kern/kern_clock.c user/weongyo/usb/sys/kern/kern_clocksource.c user/weongyo/usb/sys/kern/kern_conf.c user/weongyo/usb/sys/kern/kern_cpuset.c user/weongyo/usb/sys/kern/kern_et.c user/weongyo/usb/sys/kern/kern_exec.c user/weongyo/usb/sys/kern/kern_exit.c user/weongyo/usb/sys/kern/kern_fork.c user/weongyo/usb/sys/kern/kern_jail.c user/weongyo/usb/sys/kern/kern_kthread.c user/weongyo/usb/sys/kern/kern_ktrace.c user/weongyo/usb/sys/kern/kern_linker.c user/weongyo/usb/sys/kern/kern_malloc.c user/weongyo/usb/sys/kern/kern_mutex.c user/weongyo/usb/sys/kern/kern_ntptime.c user/weongyo/usb/sys/kern/kern_proc.c user/weongyo/usb/sys/kern/kern_resource.c user/weongyo/usb/sys/kern/kern_shutdown.c user/weongyo/usb/sys/kern/kern_sig.c user/weongyo/usb/sys/kern/kern_syscalls.c user/weongyo/usb/sys/kern/kern_sysctl.c user/weongyo/usb/sys/kern/kern_tc.c user/weongyo/usb/sys/kern/kern_thr.c user/weongyo/usb/sys/kern/kern_thread.c user/weongyo/usb/sys/kern/kern_time.c user/weongyo/usb/sys/kern/kern_timeout.c user/weongyo/usb/sys/kern/kern_umtx.c user/weongyo/usb/sys/kern/link_elf.c user/weongyo/usb/sys/kern/link_elf_obj.c user/weongyo/usb/sys/kern/p1003_1b.c user/weongyo/usb/sys/kern/sched_4bsd.c user/weongyo/usb/sys/kern/sched_ule.c user/weongyo/usb/sys/kern/subr_acl_nfs4.c user/weongyo/usb/sys/kern/subr_bus.c user/weongyo/usb/sys/kern/subr_clock.c user/weongyo/usb/sys/kern/subr_kdb.c user/weongyo/usb/sys/kern/subr_lock.c user/weongyo/usb/sys/kern/subr_sbuf.c user/weongyo/usb/sys/kern/subr_sleepqueue.c user/weongyo/usb/sys/kern/subr_smp.c user/weongyo/usb/sys/kern/subr_stack.c user/weongyo/usb/sys/kern/subr_taskqueue.c user/weongyo/usb/sys/kern/subr_trap.c user/weongyo/usb/sys/kern/subr_witness.c user/weongyo/usb/sys/kern/sys_process.c user/weongyo/usb/sys/kern/tty.c user/weongyo/usb/sys/kern/uipc_mqueue.c user/weongyo/usb/sys/kern/uipc_socket.c user/weongyo/usb/sys/kern/vfs_aio.c user/weongyo/usb/sys/kern/vfs_bio.c user/weongyo/usb/sys/kern/vfs_cache.c user/weongyo/usb/sys/kern/vfs_mount.c user/weongyo/usb/sys/kern/vfs_subr.c user/weongyo/usb/sys/mips/adm5120/obio.c user/weongyo/usb/sys/mips/alchemy/obio.c user/weongyo/usb/sys/mips/atheros/apb.c user/weongyo/usb/sys/mips/atheros/ar71xx_machdep.c user/weongyo/usb/sys/mips/atheros/ar71xxreg.h user/weongyo/usb/sys/mips/atheros/files.ar71xx user/weongyo/usb/sys/mips/atheros/if_arge.c user/weongyo/usb/sys/mips/cavium/ciu.c user/weongyo/usb/sys/mips/cavium/files.octeon1 user/weongyo/usb/sys/mips/cavium/obio.c user/weongyo/usb/sys/mips/cavium/octe/cavium-ethernet.h user/weongyo/usb/sys/mips/cavium/octe/ethernet-common.c user/weongyo/usb/sys/mips/cavium/octe/ethernet-headers.h user/weongyo/usb/sys/mips/cavium/octe/ethernet-mdio.c user/weongyo/usb/sys/mips/cavium/octe/ethernet-rgmii.c user/weongyo/usb/sys/mips/cavium/octe/ethernet-rx.c user/weongyo/usb/sys/mips/cavium/octe/ethernet-sgmii.c user/weongyo/usb/sys/mips/cavium/octe/ethernet-tx.c user/weongyo/usb/sys/mips/cavium/octe/ethernet-xaui.c user/weongyo/usb/sys/mips/cavium/octe/ethernet.c user/weongyo/usb/sys/mips/cavium/octe/octe.c user/weongyo/usb/sys/mips/cavium/octeon_ebt3000_cf.c user/weongyo/usb/sys/mips/cavium/octeon_machdep.c user/weongyo/usb/sys/mips/cavium/octeon_mp.c user/weongyo/usb/sys/mips/cavium/octopci.c user/weongyo/usb/sys/mips/cavium/octopcireg.h user/weongyo/usb/sys/mips/cavium/std.octeon1 user/weongyo/usb/sys/mips/cavium/uart_bus_octeonusart.c user/weongyo/usb/sys/mips/cavium/uart_cpu_octeonusart.c user/weongyo/usb/sys/mips/cavium/uart_dev_oct16550.c user/weongyo/usb/sys/mips/cavium/usb/octusb.c user/weongyo/usb/sys/mips/conf/AR71XX user/weongyo/usb/sys/mips/conf/AR71XX.hints user/weongyo/usb/sys/mips/conf/MALTA64 user/weongyo/usb/sys/mips/conf/OCTEON1 user/weongyo/usb/sys/mips/conf/SWARM user/weongyo/usb/sys/mips/conf/SWARM_SMP user/weongyo/usb/sys/mips/conf/XLR user/weongyo/usb/sys/mips/conf/XLR64 user/weongyo/usb/sys/mips/conf/XLRN32 user/weongyo/usb/sys/mips/idt/if_kr.c user/weongyo/usb/sys/mips/idt/obio.c user/weongyo/usb/sys/mips/include/cpufunc.h user/weongyo/usb/sys/mips/include/cpuregs.h user/weongyo/usb/sys/mips/include/md_var.h user/weongyo/usb/sys/mips/include/pmap.h user/weongyo/usb/sys/mips/include/smp.h user/weongyo/usb/sys/mips/mips/busdma_machdep.c user/weongyo/usb/sys/mips/mips/dump_machdep.c user/weongyo/usb/sys/mips/mips/gdb_machdep.c user/weongyo/usb/sys/mips/mips/locore.S user/weongyo/usb/sys/mips/mips/machdep.c user/weongyo/usb/sys/mips/mips/mainbus.c user/weongyo/usb/sys/mips/mips/mp_machdep.c user/weongyo/usb/sys/mips/mips/nexus.c user/weongyo/usb/sys/mips/mips/pmap.c user/weongyo/usb/sys/mips/mips/trap.c user/weongyo/usb/sys/mips/mips/vm_machdep.c user/weongyo/usb/sys/mips/rmi/board.c user/weongyo/usb/sys/mips/rmi/board.h user/weongyo/usb/sys/mips/rmi/dev/nlge/if_nlge.c user/weongyo/usb/sys/mips/rmi/dev/nlge/if_nlge.h user/weongyo/usb/sys/mips/rmi/dev/sec/desc.h user/weongyo/usb/sys/mips/rmi/dev/sec/rmilib.c user/weongyo/usb/sys/mips/rmi/dev/sec/rmilib.h user/weongyo/usb/sys/mips/rmi/dev/sec/rmisec.c user/weongyo/usb/sys/mips/rmi/dev/xlr/rge.c user/weongyo/usb/sys/mips/rmi/dev/xlr/rge.h user/weongyo/usb/sys/mips/rmi/fmn.c user/weongyo/usb/sys/mips/rmi/iodi.c user/weongyo/usb/sys/mips/rmi/msgring.h user/weongyo/usb/sys/mips/rmi/pic.h user/weongyo/usb/sys/mips/rmi/rmi_mips_exts.h user/weongyo/usb/sys/mips/rmi/xlr_machdep.c user/weongyo/usb/sys/mips/rmi/xlr_pci.c user/weongyo/usb/sys/mips/sibyte/sb_machdep.c user/weongyo/usb/sys/mips/sibyte/sb_zbbus.c user/weongyo/usb/sys/mips/sibyte/sb_zbpci.c user/weongyo/usb/sys/modules/Makefile user/weongyo/usb/sys/modules/acpi/Makefile user/weongyo/usb/sys/modules/acpi/acpi/Makefile user/weongyo/usb/sys/modules/agp/Makefile user/weongyo/usb/sys/modules/crypto/Makefile user/weongyo/usb/sys/modules/cryptodev/Makefile user/weongyo/usb/sys/modules/gem/Makefile user/weongyo/usb/sys/modules/krpc/Makefile user/weongyo/usb/sys/modules/mem/Makefile user/weongyo/usb/sys/modules/mii/Makefile user/weongyo/usb/sys/modules/opensolaris/Makefile user/weongyo/usb/sys/modules/scc/Makefile user/weongyo/usb/sys/modules/sound/sound/Makefile user/weongyo/usb/sys/modules/sysvipc/sysvmsg/Makefile user/weongyo/usb/sys/modules/sysvipc/sysvsem/Makefile user/weongyo/usb/sys/modules/usb/Makefile user/weongyo/usb/sys/modules/wlan/Makefile user/weongyo/usb/sys/modules/zfs/Makefile user/weongyo/usb/sys/net/bpf.c user/weongyo/usb/sys/net/bpf.h user/weongyo/usb/sys/net/if.c user/weongyo/usb/sys/net/if.h user/weongyo/usb/sys/net/if_llatbl.c user/weongyo/usb/sys/net/if_llatbl.h user/weongyo/usb/sys/net/if_tap.c user/weongyo/usb/sys/net/if_tun.c user/weongyo/usb/sys/net/rtsock.c user/weongyo/usb/sys/net/vnet.h user/weongyo/usb/sys/net80211/ieee80211.c user/weongyo/usb/sys/net80211/ieee80211_node.c user/weongyo/usb/sys/net80211/ieee80211_ratectl.c user/weongyo/usb/sys/net80211/ieee80211_ratectl.h user/weongyo/usb/sys/net80211/ieee80211_scan_sta.c user/weongyo/usb/sys/net80211/ieee80211_sta.c user/weongyo/usb/sys/net80211/ieee80211_var.h user/weongyo/usb/sys/netgraph/ng_UI.c user/weongyo/usb/sys/netgraph/ng_async.c user/weongyo/usb/sys/netgraph/ng_frame_relay.c user/weongyo/usb/sys/netgraph/ng_gif_demux.c user/weongyo/usb/sys/netgraph/ng_iface.c user/weongyo/usb/sys/netgraph/ng_rfc1490.c user/weongyo/usb/sys/netgraph/ng_socket.c user/weongyo/usb/sys/netgraph/ng_tty.c user/weongyo/usb/sys/netinet/if_ether.c user/weongyo/usb/sys/netinet/igmp.c user/weongyo/usb/sys/netinet/in.c user/weongyo/usb/sys/netinet/in.h user/weongyo/usb/sys/netinet/in_pcb.c user/weongyo/usb/sys/netinet/in_rmx.c user/weongyo/usb/sys/netinet/ip_carp.c user/weongyo/usb/sys/netinet/ip_ipsec.c user/weongyo/usb/sys/netinet/ip_options.c user/weongyo/usb/sys/netinet/ip_output.c user/weongyo/usb/sys/netinet/ipfw/dn_sched.h user/weongyo/usb/sys/netinet/ipfw/dn_sched_qfq.c user/weongyo/usb/sys/netinet/ipfw/dn_sched_wf2q.c user/weongyo/usb/sys/netinet/ipfw/ip_dn_glue.c user/weongyo/usb/sys/netinet/ipfw/ip_dn_io.c user/weongyo/usb/sys/netinet/ipfw/ip_dn_private.h user/weongyo/usb/sys/netinet/ipfw/ip_dummynet.c user/weongyo/usb/sys/netinet/ipfw/ip_fw_nat.c user/weongyo/usb/sys/netinet/ipfw/ip_fw_pfil.c user/weongyo/usb/sys/netinet/libalias/alias.c user/weongyo/usb/sys/netinet/libalias/libalias.3 user/weongyo/usb/sys/netinet/raw_ip.c user/weongyo/usb/sys/netinet/sctp.h user/weongyo/usb/sys/netinet/sctp_asconf.c user/weongyo/usb/sys/netinet/sctp_asconf.h user/weongyo/usb/sys/netinet/sctp_auth.c user/weongyo/usb/sys/netinet/sctp_bsd_addr.c user/weongyo/usb/sys/netinet/sctp_cc_functions.c user/weongyo/usb/sys/netinet/sctp_constants.h user/weongyo/usb/sys/netinet/sctp_indata.c user/weongyo/usb/sys/netinet/sctp_input.c user/weongyo/usb/sys/netinet/sctp_os_bsd.h user/weongyo/usb/sys/netinet/sctp_output.c user/weongyo/usb/sys/netinet/sctp_output.h user/weongyo/usb/sys/netinet/sctp_pcb.c user/weongyo/usb/sys/netinet/sctp_sysctl.c user/weongyo/usb/sys/netinet/sctp_sysctl.h user/weongyo/usb/sys/netinet/sctp_timer.c user/weongyo/usb/sys/netinet/sctp_timer.h user/weongyo/usb/sys/netinet/sctp_uio.h user/weongyo/usb/sys/netinet/sctp_usrreq.c user/weongyo/usb/sys/netinet/sctputil.c user/weongyo/usb/sys/netinet/sctputil.h user/weongyo/usb/sys/netinet/siftr.c user/weongyo/usb/sys/netinet/tcp.h user/weongyo/usb/sys/netinet/tcp_input.c user/weongyo/usb/sys/netinet/tcp_output.c user/weongyo/usb/sys/netinet/tcp_reass.c user/weongyo/usb/sys/netinet/tcp_subr.c user/weongyo/usb/sys/netinet/tcp_timer.h user/weongyo/usb/sys/netinet/tcp_usrreq.c user/weongyo/usb/sys/netinet/tcp_var.h user/weongyo/usb/sys/netinet6/in6_cksum.c user/weongyo/usb/sys/netinet6/in6_rmx.c user/weongyo/usb/sys/netinet6/ip6_ipsec.c user/weongyo/usb/sys/netinet6/ip6_output.c user/weongyo/usb/sys/netinet6/sctp6_usrreq.c user/weongyo/usb/sys/netipsec/ipsec.c user/weongyo/usb/sys/netipsec/ipsec_input.c user/weongyo/usb/sys/netipsec/ipsec_output.c user/weongyo/usb/sys/netipsec/key.c user/weongyo/usb/sys/netipsec/keydb.h user/weongyo/usb/sys/nfs/nfs_lock.c user/weongyo/usb/sys/nfs/nfs_lock.h user/weongyo/usb/sys/nfsclient/nfs.h user/weongyo/usb/sys/nfsclient/nfs_bio.c user/weongyo/usb/sys/nfsclient/nfs_nfsiod.c user/weongyo/usb/sys/nfsclient/nfs_node.c user/weongyo/usb/sys/nfsclient/nfs_subs.c user/weongyo/usb/sys/nfsclient/nfs_vfsops.c user/weongyo/usb/sys/nfsclient/nfs_vnops.c user/weongyo/usb/sys/nfsclient/nfsmount.h user/weongyo/usb/sys/nfsclient/nfsnode.h user/weongyo/usb/sys/nfsserver/nfs_serv.c user/weongyo/usb/sys/nlm/nlm_advlock.c user/weongyo/usb/sys/nlm/nlm_prot_impl.c user/weongyo/usb/sys/opencrypto/cryptodev.c user/weongyo/usb/sys/opencrypto/cryptodev.h user/weongyo/usb/sys/opencrypto/cryptosoft.c user/weongyo/usb/sys/opencrypto/xform.c user/weongyo/usb/sys/opencrypto/xform.h user/weongyo/usb/sys/pc98/conf/GENERIC user/weongyo/usb/sys/pc98/include/apm_bios.h user/weongyo/usb/sys/pc98/include/bus.h user/weongyo/usb/sys/pc98/pc98/busiosubr.c user/weongyo/usb/sys/pc98/pc98/canbus.c user/weongyo/usb/sys/pc98/pc98/machdep.c user/weongyo/usb/sys/pci/if_rl.c user/weongyo/usb/sys/pci/if_rlreg.h user/weongyo/usb/sys/powerpc/aim/clock.c user/weongyo/usb/sys/powerpc/aim/copyinout.c user/weongyo/usb/sys/powerpc/aim/interrupt.c user/weongyo/usb/sys/powerpc/aim/machdep.c user/weongyo/usb/sys/powerpc/aim/mmu_oea.c user/weongyo/usb/sys/powerpc/aim/mmu_oea64.c user/weongyo/usb/sys/powerpc/aim/nexus.c user/weongyo/usb/sys/powerpc/aim/ofw_machdep.c user/weongyo/usb/sys/powerpc/aim/slb.c user/weongyo/usb/sys/powerpc/aim/swtch32.S user/weongyo/usb/sys/powerpc/aim/swtch64.S user/weongyo/usb/sys/powerpc/aim/trap.c user/weongyo/usb/sys/powerpc/aim/trap_subr32.S user/weongyo/usb/sys/powerpc/aim/trap_subr64.S user/weongyo/usb/sys/powerpc/aim/vm_machdep.c user/weongyo/usb/sys/powerpc/booke/clock.c user/weongyo/usb/sys/powerpc/booke/interrupt.c user/weongyo/usb/sys/powerpc/booke/locore.S user/weongyo/usb/sys/powerpc/booke/machdep.c user/weongyo/usb/sys/powerpc/booke/platform_bare.c user/weongyo/usb/sys/powerpc/booke/pmap.c user/weongyo/usb/sys/powerpc/booke/trap_subr.S user/weongyo/usb/sys/powerpc/conf/GENERIC user/weongyo/usb/sys/powerpc/conf/GENERIC64 user/weongyo/usb/sys/powerpc/conf/NOTES user/weongyo/usb/sys/powerpc/include/altivec.h user/weongyo/usb/sys/powerpc/include/intr_machdep.h user/weongyo/usb/sys/powerpc/include/md_var.h user/weongyo/usb/sys/powerpc/include/memdev.h user/weongyo/usb/sys/powerpc/include/mmuvar.h user/weongyo/usb/sys/powerpc/include/pcb.h user/weongyo/usb/sys/powerpc/include/pcpu.h user/weongyo/usb/sys/powerpc/include/pmap.h user/weongyo/usb/sys/powerpc/include/slb.h user/weongyo/usb/sys/powerpc/include/smp.h user/weongyo/usb/sys/powerpc/include/tlb.h user/weongyo/usb/sys/powerpc/include/trap_aim.h user/weongyo/usb/sys/powerpc/include/vm.h user/weongyo/usb/sys/powerpc/mambo/mambo_console.c user/weongyo/usb/sys/powerpc/ofw/ofw_real.c user/weongyo/usb/sys/powerpc/ofw/ofw_syscons.c user/weongyo/usb/sys/powerpc/powermac/ata_kauai.c user/weongyo/usb/sys/powerpc/powermac/cpcht.c user/weongyo/usb/sys/powerpc/powermac/kiic.c user/weongyo/usb/sys/powerpc/powermac/smu.c user/weongyo/usb/sys/powerpc/powerpc/bus_machdep.c user/weongyo/usb/sys/powerpc/powerpc/busdma_machdep.c user/weongyo/usb/sys/powerpc/powerpc/cpu.c user/weongyo/usb/sys/powerpc/powerpc/exec_machdep.c user/weongyo/usb/sys/powerpc/powerpc/genassym.c user/weongyo/usb/sys/powerpc/powerpc/intr_machdep.c user/weongyo/usb/sys/powerpc/powerpc/mem.c user/weongyo/usb/sys/powerpc/powerpc/mmu_if.m user/weongyo/usb/sys/powerpc/powerpc/mp_machdep.c user/weongyo/usb/sys/powerpc/powerpc/pmap_dispatch.c user/weongyo/usb/sys/rpc/clnt_dg.c user/weongyo/usb/sys/rpc/clnt_vc.c user/weongyo/usb/sys/rpc/rpc_com.h user/weongyo/usb/sys/rpc/rpc_generic.c user/weongyo/usb/sys/security/audit/audit_bsm_klib.c user/weongyo/usb/sys/security/mac/mac_vfs.c user/weongyo/usb/sys/security/mac_portacl/mac_portacl.c user/weongyo/usb/sys/sparc64/conf/GENERIC user/weongyo/usb/sys/sparc64/include/asm.h user/weongyo/usb/sys/sparc64/include/endian.h user/weongyo/usb/sys/sparc64/include/intr_machdep.h user/weongyo/usb/sys/sparc64/include/md_var.h user/weongyo/usb/sys/sparc64/include/smp.h user/weongyo/usb/sys/sparc64/include/tick.h user/weongyo/usb/sys/sparc64/include/vmparam.h user/weongyo/usb/sys/sparc64/pci/schizo.c user/weongyo/usb/sys/sparc64/sparc64/bus_machdep.c user/weongyo/usb/sys/sparc64/sparc64/elf_machdep.c user/weongyo/usb/sys/sparc64/sparc64/intr_machdep.c user/weongyo/usb/sys/sparc64/sparc64/iommu.c user/weongyo/usb/sys/sparc64/sparc64/machdep.c user/weongyo/usb/sys/sparc64/sparc64/mp_machdep.c user/weongyo/usb/sys/sparc64/sparc64/nexus.c user/weongyo/usb/sys/sparc64/sparc64/pmap.c user/weongyo/usb/sys/sparc64/sparc64/support.S user/weongyo/usb/sys/sparc64/sparc64/tick.c user/weongyo/usb/sys/sparc64/sparc64/vm_machdep.c user/weongyo/usb/sys/sun4v/conf/GENERIC user/weongyo/usb/sys/sun4v/include/endian.h user/weongyo/usb/sys/sun4v/include/intr_machdep.h user/weongyo/usb/sys/sun4v/include/pmap.h user/weongyo/usb/sys/sun4v/include/smp.h user/weongyo/usb/sys/sun4v/sun4v/bus_machdep.c user/weongyo/usb/sys/sun4v/sun4v/hviommu.c user/weongyo/usb/sys/sun4v/sun4v/intr_machdep.c user/weongyo/usb/sys/sun4v/sun4v/machdep.c user/weongyo/usb/sys/sun4v/sun4v/mp_machdep.c user/weongyo/usb/sys/sun4v/sun4v/nexus.c user/weongyo/usb/sys/sun4v/sun4v/vnex.c user/weongyo/usb/sys/sys/_task.h user/weongyo/usb/sys/sys/acl.h user/weongyo/usb/sys/sys/bus.h user/weongyo/usb/sys/sys/callout.h user/weongyo/usb/sys/sys/cdefs.h user/weongyo/usb/sys/sys/conf.h user/weongyo/usb/sys/sys/disklabel.h user/weongyo/usb/sys/sys/elf_common.h user/weongyo/usb/sys/sys/exec.h user/weongyo/usb/sys/sys/gpt.h user/weongyo/usb/sys/sys/interrupt.h user/weongyo/usb/sys/sys/kernel.h user/weongyo/usb/sys/sys/kerneldump.h user/weongyo/usb/sys/sys/ktrace.h user/weongyo/usb/sys/sys/linker_set.h user/weongyo/usb/sys/sys/lock.h user/weongyo/usb/sys/sys/module.h user/weongyo/usb/sys/sys/mount.h user/weongyo/usb/sys/sys/mutex.h user/weongyo/usb/sys/sys/param.h user/weongyo/usb/sys/sys/pcpu.h user/weongyo/usb/sys/sys/proc.h user/weongyo/usb/sys/sys/sbuf.h user/weongyo/usb/sys/sys/sched.h user/weongyo/usb/sys/sys/signalvar.h user/weongyo/usb/sys/sys/socketvar.h user/weongyo/usb/sys/sys/sockio.h user/weongyo/usb/sys/sys/sysctl.h user/weongyo/usb/sys/sys/systm.h user/weongyo/usb/sys/sys/taskqueue.h user/weongyo/usb/sys/sys/time.h user/weongyo/usb/sys/sys/timeet.h user/weongyo/usb/sys/sys/timetc.h user/weongyo/usb/sys/sys/unistd.h user/weongyo/usb/sys/sys/user.h user/weongyo/usb/sys/teken/sequences user/weongyo/usb/sys/teken/teken_subr_compat.h user/weongyo/usb/sys/ufs/ffs/ffs_inode.c user/weongyo/usb/sys/ufs/ffs/ffs_softdep.c user/weongyo/usb/sys/ufs/ffs/ffs_vfsops.c user/weongyo/usb/sys/ufs/ffs/fs.h user/weongyo/usb/sys/ufs/ffs/softdep.h user/weongyo/usb/sys/ufs/ufs/ufs_dirhash.c user/weongyo/usb/sys/ufs/ufs/ufs_vnops.c user/weongyo/usb/sys/ufs/ufs/ufsmount.h user/weongyo/usb/sys/vm/swap_pager.c user/weongyo/usb/sys/vm/uma.h user/weongyo/usb/sys/vm/uma_core.c user/weongyo/usb/sys/vm/vm_kern.c user/weongyo/usb/sys/vm/vm_map.c user/weongyo/usb/sys/vm/vm_map.h user/weongyo/usb/sys/vm/vm_mmap.c user/weongyo/usb/sys/vm/vm_page.c user/weongyo/usb/sys/vm/vm_pageout.c user/weongyo/usb/sys/vm/vm_phys.c user/weongyo/usb/sys/vm/vm_reserv.c user/weongyo/usb/sys/x86/cpufreq/est.c user/weongyo/usb/sys/x86/cpufreq/hwpstate.c user/weongyo/usb/sys/x86/isa/atrtc.c user/weongyo/usb/sys/x86/isa/clock.c user/weongyo/usb/sys/x86/pci/qpi.c user/weongyo/usb/sys/x86/x86/io_apic.c user/weongyo/usb/sys/x86/x86/local_apic.c user/weongyo/usb/sys/x86/x86/mca.c user/weongyo/usb/sys/x86/x86/msi.c user/weongyo/usb/sys/xen/evtchn/evtchn.c user/weongyo/usb/sys/xen/gnttab.c user/weongyo/usb/sys/xen/gnttab.h user/weongyo/usb/sys/xen/interface/grant_table.h user/weongyo/usb/sys/xen/interface/hvm/params.h user/weongyo/usb/sys/xen/interface/io/blkif.h user/weongyo/usb/sys/xen/interface/io/protocols.h user/weongyo/usb/sys/xen/interface/io/ring.h user/weongyo/usb/sys/xen/interface/io/xenbus.h user/weongyo/usb/sys/xen/xen_intr.h user/weongyo/usb/sys/xen/xenbus/xenbus_if.m user/weongyo/usb/sys/xen/xenbus/xenbusvar.h Directory Properties: user/weongyo/usb/sys/ (props changed) user/weongyo/usb/sys/amd64/include/xen/ (props changed) user/weongyo/usb/sys/cddl/contrib/opensolaris/ (props changed) user/weongyo/usb/sys/contrib/dev/acpica/ (props changed) user/weongyo/usb/sys/contrib/pf/ (props changed) user/weongyo/usb/sys/contrib/x86emu/ (props changed) user/weongyo/usb/sys/dev/usb/controller/ (props changed) user/weongyo/usb/sys/dev/xen/xenpci/ (props changed) Modified: user/weongyo/usb/sys/amd64/acpica/acpi_machdep.c ============================================================================== --- user/weongyo/usb/sys/amd64/acpica/acpi_machdep.c Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/acpica/acpi_machdep.c Fri Nov 12 02:35:21 2010 (r215156) @@ -44,24 +44,6 @@ __FBSDID("$FreeBSD$"); #include -/* - * APM driver emulation - */ - -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include - SYSCTL_DECL(_debug_acpi); int acpi_resume_beep; @@ -73,445 +55,15 @@ int acpi_reset_video; TUNABLE_INT("hw.acpi.reset_video", &acpi_reset_video); static int intr_model = ACPI_INTR_PIC; -static int apm_active; -static struct clonedevs *apm_clones; - -MALLOC_DEFINE(M_APMDEV, "apmdev", "APM device emulation"); - -static d_open_t apmopen; -static d_close_t apmclose; -static d_write_t apmwrite; -static d_ioctl_t apmioctl; -static d_poll_t apmpoll; -static d_kqfilter_t apmkqfilter; -static void apmreadfiltdetach(struct knote *kn); -static int apmreadfilt(struct knote *kn, long hint); -static struct filterops apm_readfiltops = { - .f_isfd = 1, - .f_detach = apmreadfiltdetach, - .f_event = apmreadfilt, -}; - -static struct cdevsw apm_cdevsw = { - .d_version = D_VERSION, - .d_flags = D_TRACKCLOSE | D_NEEDMINOR, - .d_open = apmopen, - .d_close = apmclose, - .d_write = apmwrite, - .d_ioctl = apmioctl, - .d_poll = apmpoll, - .d_name = "apm", - .d_kqfilter = apmkqfilter -}; - -static int -acpi_capm_convert_battstate(struct acpi_battinfo *battp) -{ - int state; - - state = APM_UNKNOWN; - - if (battp->state & ACPI_BATT_STAT_DISCHARG) { - if (battp->cap >= 50) - state = 0; /* high */ - else - state = 1; /* low */ - } - if (battp->state & ACPI_BATT_STAT_CRITICAL) - state = 2; /* critical */ - if (battp->state & ACPI_BATT_STAT_CHARGING) - state = 3; /* charging */ - - /* If still unknown, determine it based on the battery capacity. */ - if (state == APM_UNKNOWN) { - if (battp->cap >= 50) - state = 0; /* high */ - else - state = 1; /* low */ - } - - return (state); -} - -static int -acpi_capm_convert_battflags(struct acpi_battinfo *battp) -{ - int flags; - - flags = 0; - - if (battp->cap >= 50) - flags |= APM_BATT_HIGH; - else { - if (battp->state & ACPI_BATT_STAT_CRITICAL) - flags |= APM_BATT_CRITICAL; - else - flags |= APM_BATT_LOW; - } - if (battp->state & ACPI_BATT_STAT_CHARGING) - flags |= APM_BATT_CHARGING; - if (battp->state == ACPI_BATT_STAT_NOT_PRESENT) - flags = APM_BATT_NOT_PRESENT; - - return (flags); -} - -static int -acpi_capm_get_info(apm_info_t aip) -{ - int acline; - struct acpi_battinfo batt; - - aip->ai_infoversion = 1; - aip->ai_major = 1; - aip->ai_minor = 2; - aip->ai_status = apm_active; - aip->ai_capabilities= 0xff00; /* unknown */ - - if (acpi_acad_get_acline(&acline)) - aip->ai_acline = APM_UNKNOWN; /* unknown */ - else - aip->ai_acline = acline; /* on/off */ - - if (acpi_battery_get_battinfo(NULL, &batt) != 0) { - aip->ai_batt_stat = APM_UNKNOWN; - aip->ai_batt_life = APM_UNKNOWN; - aip->ai_batt_time = -1; /* unknown */ - aip->ai_batteries = ~0U; /* unknown */ - } else { - aip->ai_batt_stat = acpi_capm_convert_battstate(&batt); - aip->ai_batt_life = batt.cap; - aip->ai_batt_time = (batt.min == -1) ? -1 : batt.min * 60; - aip->ai_batteries = acpi_battery_get_units(); - } - - return (0); -} - -static int -acpi_capm_get_pwstatus(apm_pwstatus_t app) -{ - device_t dev; - int acline, unit, error; - struct acpi_battinfo batt; - - if (app->ap_device != PMDV_ALLDEV && - (app->ap_device < PMDV_BATT0 || app->ap_device > PMDV_BATT_ALL)) - return (1); - - if (app->ap_device == PMDV_ALLDEV) - error = acpi_battery_get_battinfo(NULL, &batt); - else { - unit = app->ap_device - PMDV_BATT0; - dev = devclass_get_device(devclass_find("battery"), unit); - if (dev != NULL) - error = acpi_battery_get_battinfo(dev, &batt); - else - error = ENXIO; - } - if (error) - return (1); - - app->ap_batt_stat = acpi_capm_convert_battstate(&batt); - app->ap_batt_flag = acpi_capm_convert_battflags(&batt); - app->ap_batt_life = batt.cap; - app->ap_batt_time = (batt.min == -1) ? -1 : batt.min * 60; - - if (acpi_acad_get_acline(&acline)) - app->ap_acline = APM_UNKNOWN; - else - app->ap_acline = acline; /* on/off */ - - return (0); -} - -/* Create single-use devices for /dev/apm and /dev/apmctl. */ -static void -apm_clone(void *arg, struct ucred *cred, char *name, int namelen, - struct cdev **dev) -{ - int ctl_dev, unit; - - if (*dev != NULL) - return; - if (strcmp(name, "apmctl") == 0) - ctl_dev = TRUE; - else if (strcmp(name, "apm") == 0) - ctl_dev = FALSE; - else - return; - - /* Always create a new device and unit number. */ - unit = -1; - if (clone_create(&apm_clones, &apm_cdevsw, &unit, dev, 0)) { - if (ctl_dev) { - *dev = make_dev(&apm_cdevsw, unit, - UID_ROOT, GID_OPERATOR, 0660, "apmctl%d", unit); - } else { - *dev = make_dev(&apm_cdevsw, unit, - UID_ROOT, GID_OPERATOR, 0664, "apm%d", unit); - } - if (*dev != NULL) { - dev_ref(*dev); - (*dev)->si_flags |= SI_CHEAPCLONE; - } - } -} - -/* Create a struct for tracking per-device suspend notification. */ -static struct apm_clone_data * -apm_create_clone(struct cdev *dev, struct acpi_softc *acpi_sc) -{ - struct apm_clone_data *clone; - - clone = malloc(sizeof(*clone), M_APMDEV, M_WAITOK); - clone->cdev = dev; - clone->acpi_sc = acpi_sc; - clone->notify_status = APM_EV_NONE; - bzero(&clone->sel_read, sizeof(clone->sel_read)); - knlist_init_mtx(&clone->sel_read.si_note, &acpi_mutex); - - /* - * The acpi device is always managed by devd(8) and is considered - * writable (i.e., ack is required to allow suspend to proceed.) - */ - if (strcmp("acpi", devtoname(dev)) == 0) - clone->flags = ACPI_EVF_DEVD | ACPI_EVF_WRITE; - else - clone->flags = ACPI_EVF_NONE; - - ACPI_LOCK(acpi); - STAILQ_INSERT_TAIL(&acpi_sc->apm_cdevs, clone, entries); - ACPI_UNLOCK(acpi); - return (clone); -} - -static int -apmopen(struct cdev *dev, int flag, int fmt, struct thread *td) -{ - struct acpi_softc *acpi_sc; - struct apm_clone_data *clone; - - acpi_sc = devclass_get_softc(devclass_find("acpi"), 0); - clone = apm_create_clone(dev, acpi_sc); - dev->si_drv1 = clone; - - /* If the device is opened for write, record that. */ - if ((flag & FWRITE) != 0) - clone->flags |= ACPI_EVF_WRITE; - - return (0); -} - -static int -apmclose(struct cdev *dev, int flag, int fmt, struct thread *td) -{ - struct apm_clone_data *clone; - struct acpi_softc *acpi_sc; - - clone = dev->si_drv1; - acpi_sc = clone->acpi_sc; - - /* We are about to lose a reference so check if suspend should occur */ - if (acpi_sc->acpi_next_sstate != 0 && - clone->notify_status != APM_EV_ACKED) - acpi_AckSleepState(clone, 0); - - /* Remove this clone's data from the list and free it. */ - ACPI_LOCK(acpi); - STAILQ_REMOVE(&acpi_sc->apm_cdevs, clone, apm_clone_data, entries); - knlist_destroy(&clone->sel_read.si_note); - ACPI_UNLOCK(acpi); - free(clone, M_APMDEV); - destroy_dev_sched(dev); - return (0); -} - -static int -apmioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flag, struct thread *td) -{ - int error; - struct apm_clone_data *clone; - struct acpi_softc *acpi_sc; - struct apm_info info; - struct apm_event_info *ev_info; - apm_info_old_t aiop; - - error = 0; - clone = dev->si_drv1; - acpi_sc = clone->acpi_sc; - - switch (cmd) { - case APMIO_SUSPEND: - if ((flag & FWRITE) == 0) - return (EPERM); - if (acpi_sc->acpi_next_sstate == 0) { - if (acpi_sc->acpi_suspend_sx != ACPI_STATE_S5) { - error = acpi_ReqSleepState(acpi_sc, - acpi_sc->acpi_suspend_sx); - } else { - printf( - "power off via apm suspend not supported\n"); - error = ENXIO; - } - } else - error = acpi_AckSleepState(clone, 0); - break; - case APMIO_STANDBY: - if ((flag & FWRITE) == 0) - return (EPERM); - if (acpi_sc->acpi_next_sstate == 0) { - if (acpi_sc->acpi_standby_sx != ACPI_STATE_S5) { - error = acpi_ReqSleepState(acpi_sc, - acpi_sc->acpi_standby_sx); - } else { - printf( - "power off via apm standby not supported\n"); - error = ENXIO; - } - } else - error = acpi_AckSleepState(clone, 0); - break; - case APMIO_NEXTEVENT: - printf("apm nextevent start\n"); - ACPI_LOCK(acpi); - if (acpi_sc->acpi_next_sstate != 0 && clone->notify_status == - APM_EV_NONE) { - ev_info = (struct apm_event_info *)addr; - if (acpi_sc->acpi_next_sstate <= ACPI_STATE_S3) - ev_info->type = PMEV_STANDBYREQ; - else - ev_info->type = PMEV_SUSPENDREQ; - ev_info->index = 0; - clone->notify_status = APM_EV_NOTIFIED; - printf("apm event returning %d\n", ev_info->type); - } else - error = EAGAIN; - ACPI_UNLOCK(acpi); - break; - case APMIO_GETINFO_OLD: - if (acpi_capm_get_info(&info)) - error = ENXIO; - aiop = (apm_info_old_t)addr; - aiop->ai_major = info.ai_major; - aiop->ai_minor = info.ai_minor; - aiop->ai_acline = info.ai_acline; - aiop->ai_batt_stat = info.ai_batt_stat; - aiop->ai_batt_life = info.ai_batt_life; - aiop->ai_status = info.ai_status; - break; - case APMIO_GETINFO: - if (acpi_capm_get_info((apm_info_t)addr)) - error = ENXIO; - break; - case APMIO_GETPWSTATUS: - if (acpi_capm_get_pwstatus((apm_pwstatus_t)addr)) - error = ENXIO; - break; - case APMIO_ENABLE: - if ((flag & FWRITE) == 0) - return (EPERM); - apm_active = 1; - break; - case APMIO_DISABLE: - if ((flag & FWRITE) == 0) - return (EPERM); - apm_active = 0; - break; - case APMIO_HALTCPU: - break; - case APMIO_NOTHALTCPU: - break; - case APMIO_DISPLAY: - if ((flag & FWRITE) == 0) - return (EPERM); - break; - case APMIO_BIOS: - if ((flag & FWRITE) == 0) - return (EPERM); - bzero(addr, sizeof(struct apm_bios_arg)); - break; - default: - error = EINVAL; - break; - } - - return (error); -} - -static int -apmwrite(struct cdev *dev, struct uio *uio, int ioflag) -{ - return (uio->uio_resid); -} - -static int -apmpoll(struct cdev *dev, int events, struct thread *td) -{ - struct apm_clone_data *clone; - int revents; - - revents = 0; - ACPI_LOCK(acpi); - clone = dev->si_drv1; - if (clone->acpi_sc->acpi_next_sstate) - revents |= events & (POLLIN | POLLRDNORM); - else - selrecord(td, &clone->sel_read); - ACPI_UNLOCK(acpi); - return (revents); -} - -static int -apmkqfilter(struct cdev *dev, struct knote *kn) -{ - struct apm_clone_data *clone; - - ACPI_LOCK(acpi); - clone = dev->si_drv1; - kn->kn_hook = clone; - kn->kn_fop = &apm_readfiltops; - knlist_add(&clone->sel_read.si_note, kn, 0); - ACPI_UNLOCK(acpi); - return (0); -} - -static void -apmreadfiltdetach(struct knote *kn) -{ - struct apm_clone_data *clone; - - ACPI_LOCK(acpi); - clone = kn->kn_hook; - knlist_remove(&clone->sel_read.si_note, kn, 0); - ACPI_UNLOCK(acpi); -} - -static int -apmreadfilt(struct knote *kn, long hint) -{ - struct apm_clone_data *clone; - int sleeping; - - ACPI_LOCK(acpi); - clone = kn->kn_hook; - sleeping = clone->acpi_sc->acpi_next_sstate ? 1 : 0; - ACPI_UNLOCK(acpi); - return (sleeping); -} int acpi_machdep_init(device_t dev) { - struct acpi_softc *sc; + struct acpi_softc *sc; - sc = devclass_get_softc(devclass_find("acpi"), 0); + sc = device_get_softc(dev); - /* Create a clone for /dev/acpi also. */ - STAILQ_INIT(&sc->apm_cdevs); - sc->acpi_clone = apm_create_clone(sc->acpi_dev_t, sc); - clone_setup(&apm_clones); - EVENTHANDLER_REGISTER(dev_clone, apm_clone, 0, 1000); + acpi_apm_init(sc); if (intr_model != ACPI_INTR_PIC) acpi_SetIntrModel(intr_model); @@ -534,12 +86,14 @@ acpi_SetDefaultIntrModel(int model) int acpi_machdep_quirks(int *quirks) { + return (0); } void acpi_cpu_c1() { + __asm __volatile("sti; hlt"); } Modified: user/weongyo/usb/sys/amd64/acpica/acpi_wakeup.c ============================================================================== --- user/weongyo/usb/sys/amd64/acpica/acpi_wakeup.c Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/acpica/acpi_wakeup.c Fri Nov 12 02:35:21 2010 (r215156) @@ -41,13 +41,13 @@ __FBSDID("$FreeBSD$"); #include #include -#include +#include #include #include #include #ifdef SMP -#include +#include #include #include #endif Modified: user/weongyo/usb/sys/amd64/amd64/amd64_mem.c ============================================================================== --- user/weongyo/usb/sys/amd64/amd64/amd64_mem.c Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/amd64/amd64_mem.c Fri Nov 12 02:35:21 2010 (r215156) @@ -35,6 +35,10 @@ __FBSDID("$FreeBSD$"); #include #include +#include +#include +#include + #include #include #include @@ -527,9 +531,9 @@ static int amd64_mrset(struct mem_range_softc *sc, struct mem_range_desc *mrd, int *arg) { struct mem_range_desc *targ; - int error = 0; + int error, i; - switch(*arg) { + switch (*arg) { case MEMRANGE_SET_UPDATE: /* * Make sure that what's being asked for is even @@ -568,6 +572,21 @@ amd64_mrset(struct mem_range_softc *sc, return (EOPNOTSUPP); } + /* + * Ensure that the direct map region does not contain any mappings + * that span MTRRs of different types. However, the fixed MTRRs can + * be ignored, because a large page mapping the first 1 MB of physical + * memory is a special case that the processor handles. The entire + * TLB will be invalidated by amd64_mrstore(), so pmap_demote_DMAP() + * needn't do it. + */ + i = (sc->mr_cap & MR686_FIXMTRR) ? MTRR_N64K + MTRR_N16K + MTRR_N4K : 0; + mrd = sc->mr_desc + i; + for (; i < sc->mr_ndesc; i++, mrd++) { + if ((mrd->mr_flags & (MDF_ACTIVE | MDF_BOGUS)) == MDF_ACTIVE) + pmap_demote_DMAP(mrd->mr_base, mrd->mr_len, FALSE); + } + /* Update the hardware. */ amd64_mrstore(sc); @@ -657,6 +676,21 @@ amd64_mrinit(struct mem_range_softc *sc) if (mrd->mr_flags & MDF_ACTIVE) mrd->mr_flags |= MDF_FIRMWARE; } + + /* + * Ensure that the direct map region does not contain any mappings + * that span MTRRs of different types. However, the fixed MTRRs can + * be ignored, because a large page mapping the first 1 MB of physical + * memory is a special case that the processor handles. Invalidate + * any old TLB entries that might hold inconsistent memory type + * information. + */ + i = (sc->mr_cap & MR686_FIXMTRR) ? MTRR_N64K + MTRR_N16K + MTRR_N4K : 0; + mrd = sc->mr_desc + i; + for (; i < sc->mr_ndesc; i++, mrd++) { + if ((mrd->mr_flags & (MDF_ACTIVE | MDF_BOGUS)) == MDF_ACTIVE) + pmap_demote_DMAP(mrd->mr_base, mrd->mr_len, TRUE); + } } /* Modified: user/weongyo/usb/sys/amd64/amd64/apic_vector.S ============================================================================== --- user/weongyo/usb/sys/amd64/amd64/apic_vector.S Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/amd64/apic_vector.S Fri Nov 12 02:35:21 2010 (r215156) @@ -39,7 +39,7 @@ #include "opt_smp.h" #include -#include +#include #include "assym.s" Modified: user/weongyo/usb/sys/amd64/amd64/busdma_machdep.c ============================================================================== --- user/weongyo/usb/sys/amd64/amd64/busdma_machdep.c Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/amd64/busdma_machdep.c Fri Nov 12 02:35:21 2010 (r215156) @@ -526,7 +526,7 @@ bus_dmamem_alloc(bus_dma_tag_t dmat, voi CTR4(KTR_BUSDMA, "%s: tag %p tag flags 0x%x error %d", __func__, dmat, dmat->flags, ENOMEM); return (ENOMEM); - } else if ((uintptr_t)*vaddr & (dmat->alignment - 1)) { + } else if (vtophys(*vaddr) & (dmat->alignment - 1)) { printf("bus_dmamem_alloc failed to align memory properly.\n"); } if (flags & BUS_DMA_NOCACHE) Modified: user/weongyo/usb/sys/amd64/amd64/fpu.c ============================================================================== --- user/weongyo/usb/sys/amd64/amd64/fpu.c Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/amd64/fpu.c Fri Nov 12 02:35:21 2010 (r215156) @@ -113,14 +113,14 @@ static struct savefpu fpu_initialstate; void fpuinit(void) { - register_t savecrit; + register_t saveintr; u_int mxcsr; u_short control; /* * It is too early for critical_enter() to work on AP. */ - savecrit = intr_disable(); + saveintr = intr_disable(); stop_emulating(); fninit(); control = __INITIAL_FPUCW__; @@ -137,7 +137,7 @@ fpuinit(void) bzero(fpu_initialstate.sv_xmm, sizeof(fpu_initialstate.sv_xmm)); } start_emulating(); - intr_restore(savecrit); + intr_restore(saveintr); } /* Modified: user/weongyo/usb/sys/amd64/amd64/genassym.c ============================================================================== --- user/weongyo/usb/sys/amd64/amd64/genassym.c Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/amd64/genassym.c Fri Nov 12 02:35:21 2010 (r215156) @@ -66,7 +66,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include +#include #include #include #include Modified: user/weongyo/usb/sys/amd64/amd64/identcpu.c ============================================================================== --- user/weongyo/usb/sys/amd64/amd64/identcpu.c Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/amd64/identcpu.c Fri Nov 12 02:35:21 2010 (r215156) @@ -278,7 +278,7 @@ printcpuinfo(void) "\017xTPR" /* Send Task Priority Messages*/ "\020PDCM" /* Perf/Debug Capability MSR */ "\021" - "\022" + "\022PCID" /* Process-context Identifiers */ "\023DCA" /* Direct Cache Access */ "\024SSE4.1" "\025SSE4.2" Modified: user/weongyo/usb/sys/amd64/amd64/intr_machdep.c ============================================================================== --- user/weongyo/usb/sys/amd64/amd64/intr_machdep.c Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/amd64/intr_machdep.c Fri Nov 12 02:35:21 2010 (r215156) @@ -458,7 +458,7 @@ intr_next_cpu(void) /* Leave all interrupts on the BSP during boot. */ if (!assign_cpu) - return (cpu_apic_ids[0]); + return (PCPU_GET(apic_id)); mtx_lock_spin(&icu_lock); apic_id = cpu_apic_ids[current_cpu]; Modified: user/weongyo/usb/sys/amd64/amd64/legacy.c ============================================================================== --- user/weongyo/usb/sys/amd64/amd64/legacy.c Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/amd64/legacy.c Fri Nov 12 02:35:21 2010 (r215156) @@ -60,7 +60,7 @@ struct legacy_device { static int legacy_probe(device_t); static int legacy_attach(device_t); static int legacy_print_child(device_t, device_t); -static device_t legacy_add_child(device_t bus, int order, const char *name, +static device_t legacy_add_child(device_t bus, u_int order, const char *name, int unit); static int legacy_read_ivar(device_t, device_t, int, uintptr_t *); static int legacy_write_ivar(device_t, device_t, int, uintptr_t); @@ -149,7 +149,7 @@ legacy_print_child(device_t bus, device_ } static device_t -legacy_add_child(device_t bus, int order, const char *name, int unit) +legacy_add_child(device_t bus, u_int order, const char *name, int unit) { device_t child; struct legacy_device *atdev; @@ -213,7 +213,7 @@ legacy_write_ivar(device_t dev, device_t static void cpu_identify(driver_t *driver, device_t parent); static int cpu_read_ivar(device_t dev, device_t child, int index, uintptr_t *result); -static device_t cpu_add_child(device_t bus, int order, const char *name, +static device_t cpu_add_child(device_t bus, u_int order, const char *name, int unit); static struct resource_list *cpu_get_rlist(device_t dev, device_t child); @@ -277,7 +277,7 @@ cpu_identify(driver_t *driver, device_t } static device_t -cpu_add_child(device_t bus, int order, const char *name, int unit) +cpu_add_child(device_t bus, u_int order, const char *name, int unit) { struct cpu_device *cd; device_t child; Modified: user/weongyo/usb/sys/amd64/amd64/machdep.c ============================================================================== --- user/weongyo/usb/sys/amd64/amd64/machdep.c Fri Nov 12 01:45:29 2010 (r215155) +++ user/weongyo/usb/sys/amd64/amd64/machdep.c Fri Nov 12 02:35:21 2010 (r215156) @@ -112,7 +112,7 @@ __FBSDID("$FreeBSD$"); #include #include #include -#include +#include #include #include #include @@ -585,59 +585,89 @@ cpu_halt(void) } void (*cpu_idle_hook)(void) = NULL; /* ACPI idle hook. */ +static int cpu_ident_amdc1e = 0; /* AMD C1E supported. */ +static int idle_mwait = 1; /* Use MONITOR/MWAIT for short idle. */ +TUNABLE_INT("machdep.idle_mwait", &idle_mwait); +SYSCTL_INT(_machdep, OID_AUTO, idle_mwait, CTLFLAG_RW, &idle_mwait, + 0, "Use MONITOR/MWAIT for short idle"); + +#define STATE_RUNNING 0x0 +#define STATE_MWAIT 0x1 +#define STATE_SLEEPING 0x2 static void -cpu_idle_hlt(int busy) +cpu_idle_acpi(int busy) { - /* - * we must absolutely guarentee that hlt is the next instruction - * after sti or we introduce a timing window. - */ + int *state; + + state = (int *)PCPU_PTR(monitorbuf); + *state = STATE_SLEEPING; disable_intr(); - if (sched_runnable()) + if (sched_runnable()) enable_intr(); + else if (cpu_idle_hook) + cpu_idle_hook(); else __asm __volatile("sti; hlt"); + *state = STATE_RUNNING; } static void -cpu_idle_acpi(int busy) +cpu_idle_hlt(int busy) { + int *state; + + state = (int *)PCPU_PTR(monitorbuf); + *state = STATE_SLEEPING; + /* + * We must absolutely guarentee that hlt is the next instruction + * after sti or we introduce a timing window. + */ disable_intr(); - if (sched_runnable()) + if (sched_runnable()) enable_intr(); - else if (cpu_idle_hook) - cpu_idle_hook(); else __asm __volatile("sti; hlt"); + *state = STATE_RUNNING; } -static int cpu_ident_amdc1e = 0; +/* + * MWAIT cpu power states. Lower 4 bits are sub-states. + */ +#define MWAIT_C0 0xf0 +#define MWAIT_C1 0x00 +#define MWAIT_C2 0x10 +#define MWAIT_C3 0x20 +#define MWAIT_C4 0x30 -static int -cpu_probe_amdc1e(void) +static void +cpu_idle_mwait(int busy) { - int i; - - /* - * Forget it, if we're not using local APIC timer. - */ - if (resource_disabled("apic", 0) || - (resource_int_value("apic", 0, "clock", &i) == 0 && i == 0)) - return (0); + int *state; - /* - * Detect the presence of C1E capability mostly on latest - * dual-cores (or future) k8 family. - */ - if (cpu_vendor_id == CPU_VENDOR_AMD && - (cpu_id & 0x00000f00) == 0x00000f00 && - (cpu_id & 0x0fff0000) >= 0x00040000) { - cpu_ident_amdc1e = 1; - return (1); + state = (int *)PCPU_PTR(monitorbuf); + *state = STATE_MWAIT; + if (!sched_runnable()) { + cpu_monitor(state, 0, 0); + if (*state == STATE_MWAIT) + cpu_mwait(0, MWAIT_C1); } + *state = STATE_RUNNING; +} - return (0); +static void +cpu_idle_spin(int busy) +{ + int *state; + int i; + + state = (int *)PCPU_PTR(monitorbuf); + *state = STATE_RUNNING; + for (i = 0; i < 1000; i++) { + if (sched_runnable()) + return; + cpu_spinwait(); + } } /* @@ -655,110 +685,83 @@ cpu_probe_amdc1e(void) #define AMDK8_CMPHALT (AMDK8_SMIONCMPHALT | AMDK8_C1EONCMPHALT) static void -cpu_idle_amdc1e(int busy) +cpu_probe_amdc1e(void) { - disable_intr(); - if (sched_runnable()) - enable_intr(); - else { - uint64_t msr; - - msr = rdmsr(MSR_AMDK8_IPM); - if (msr & AMDK8_CMPHALT) - wrmsr(MSR_AMDK8_IPM, msr & ~AMDK8_CMPHALT); - - if (cpu_idle_hook) - cpu_idle_hook(); - else - __asm __volatile("sti; hlt"); + /* + * Detect the presence of C1E capability mostly on latest + * dual-cores (or future) k8 family. + */ + if (cpu_vendor_id == CPU_VENDOR_AMD && + (cpu_id & 0x00000f00) == 0x00000f00 && + (cpu_id & 0x0fff0000) >= 0x00040000) { + cpu_ident_amdc1e = 1; } } -static void -cpu_idle_spin(int busy) -{ - return; -} - void (*cpu_idle_fn)(int) = cpu_idle_acpi; void cpu_idle(int busy) { + uint64_t msr; + + CTR2(KTR_SPARE2, "cpu_idle(%d) at %d", + busy, curcpu); #ifdef SMP if (mp_grab_cpu_hlt()) return; #endif - cpu_idle_fn(busy); -} - -/* - * mwait cpu power states. Lower 4 bits are sub-states. - */ -#define MWAIT_C0 0xf0 -#define MWAIT_C1 0x00 -#define MWAIT_C2 0x10 -#define MWAIT_C3 0x20 -#define MWAIT_C4 0x30 - -#define MWAIT_DISABLED 0x0 -#define MWAIT_WOKEN 0x1 -#define MWAIT_WAITING 0x2 + /* If we are busy - try to use fast methods. */ + if (busy) { + if ((cpu_feature2 & CPUID2_MON) && idle_mwait) { + cpu_idle_mwait(busy); + goto out; + } + } -static void -cpu_idle_mwait(int busy) -{ - int *mwait; + /* If we have time - switch timers into idle mode. */ + if (!busy) { + critical_enter(); + cpu_idleclock(); + } - mwait = (int *)PCPU_PTR(monitorbuf); - *mwait = MWAIT_WAITING; - if (sched_runnable()) - return; - cpu_monitor(mwait, 0, 0); - if (*mwait == MWAIT_WAITING) - cpu_mwait(0, MWAIT_C1); -} + /* Apply AMD APIC timer C1E workaround. */ + if (cpu_ident_amdc1e && cpu_disable_deep_sleep) { + msr = rdmsr(MSR_AMDK8_IPM); + if (msr & AMDK8_CMPHALT) + wrmsr(MSR_AMDK8_IPM, msr & ~AMDK8_CMPHALT); + } -static void -cpu_idle_mwait_hlt(int busy) -{ - int *mwait; + /* Call main idle method. */ + cpu_idle_fn(busy); - mwait = (int *)PCPU_PTR(monitorbuf); - if (busy == 0) { - *mwait = MWAIT_DISABLED; - cpu_idle_hlt(busy); - return; - } - *mwait = MWAIT_WAITING; - if (sched_runnable()) - return; - cpu_monitor(mwait, 0, 0); - if (*mwait == MWAIT_WAITING) - cpu_mwait(0, MWAIT_C1); + /* Switch timers mack into active mode. */ + if (!busy) { + cpu_activeclock(); + critical_exit(); + } +out: + CTR2(KTR_SPARE2, "cpu_idle(%d) at %d done", + busy, curcpu); } int cpu_idle_wakeup(int cpu) { struct pcpu *pcpu; - int *mwait; + int *state; - if (cpu_idle_fn == cpu_idle_spin) - return (1); - if (cpu_idle_fn != cpu_idle_mwait && cpu_idle_fn != cpu_idle_mwait_hlt) - return (0); pcpu = pcpu_find(cpu); - mwait = (int *)pcpu->pc_monitorbuf; + state = (int *)pcpu->pc_monitorbuf; /* * This doesn't need to be atomic since missing the race will * simply result in unnecessary IPIs. */ - if (cpu_idle_fn == cpu_idle_mwait_hlt && *mwait == MWAIT_DISABLED) + if (*state == STATE_SLEEPING) return (0); - *mwait = MWAIT_WOKEN; - + if (*state == STATE_MWAIT) + *state = STATE_RUNNING; return (1); } @@ -771,8 +774,6 @@ struct { } idle_tbl[] = { { cpu_idle_spin, "spin" }, { cpu_idle_mwait, "mwait" }, - { cpu_idle_mwait_hlt, "mwait_hlt" }, - { cpu_idle_amdc1e, "amdc1e" }, { cpu_idle_hlt, "hlt" }, { cpu_idle_acpi, "acpi" }, { NULL, NULL } @@ -791,16 +792,20 @@ idle_sysctl_available(SYSCTL_HANDLER_ARG if (strstr(idle_tbl[i].id_name, "mwait") && (cpu_feature2 & CPUID2_MON) == 0) *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 04:28:25 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B8EE9106566C; Fri, 12 Nov 2010 04:28:25 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id A6F168FC08; Fri, 12 Nov 2010 04:28:25 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC4SPEu095512; Fri, 12 Nov 2010 04:28:25 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC4SPSF095510; Fri, 12 Nov 2010 04:28:25 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011120428.oAC4SPSF095510@svn.freebsd.org> From: David Xu Date: Fri, 12 Nov 2010 04:28:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215161 - user/davidxu/libthr/gnu/lib/libstdc++ X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 04:28:25 -0000 Author: davidxu Date: Fri Nov 12 04:28:25 2010 New Revision: 215161 URL: http://svn.freebsd.org/changeset/base/215161 Log: Bump lib version, because the mutex has different size now, and the mutex affects the size of stream class. Modified: user/davidxu/libthr/gnu/lib/libstdc++/Makefile Modified: user/davidxu/libthr/gnu/lib/libstdc++/Makefile ============================================================================== --- user/davidxu/libthr/gnu/lib/libstdc++/Makefile Fri Nov 12 04:22:00 2010 (r215160) +++ user/davidxu/libthr/gnu/lib/libstdc++/Makefile Fri Nov 12 04:28:25 2010 (r215161) @@ -11,7 +11,7 @@ SUPDIR= ${SRCDIR}/libsupc++ ${SRCDIR}/include ${SUPDIR} ${GCCDIR} ${GCCLIB}/libiberty LIB= stdc++ -SHLIB_MAJOR= 6 +SHLIB_MAJOR= 7 CFLAGS+= -DIN_GLIBCPP_V3 -DHAVE_CONFIG_H .if ${MACHINE_CPUARCH} == "arm" From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 05:09:47 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B7C2A106564A; Fri, 12 Nov 2010 05:09:47 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 8B2A48FC13; Fri, 12 Nov 2010 05:09:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC59lmb096570; Fri, 12 Nov 2010 05:09:47 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC59lDZ096568; Fri, 12 Nov 2010 05:09:47 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011120509.oAC59lDZ096568@svn.freebsd.org> From: David Xu Date: Fri, 12 Nov 2010 05:09:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215162 - user/davidxu/libthr/sys/kern X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 05:09:47 -0000 Author: davidxu Date: Fri Nov 12 05:09:47 2010 New Revision: 215162 URL: http://svn.freebsd.org/changeset/base/215162 Log: Add a ring buffer to delay the releasing of a thread id, this avoids a thread id being reused too quickly. Modified: user/davidxu/libthr/sys/kern/kern_thread.c Modified: user/davidxu/libthr/sys/kern/kern_thread.c ============================================================================== --- user/davidxu/libthr/sys/kern/kern_thread.c Fri Nov 12 04:28:25 2010 (r215161) +++ user/davidxu/libthr/sys/kern/kern_thread.c Fri Nov 12 05:09:47 2010 (r215162) @@ -81,15 +81,54 @@ MTX_SYSINIT(zombie_lock, &zombie_lock, " static void thread_zombie(struct thread *); +#define TID_BUFFER_SIZE 1024 + struct mtx tid_lock; static struct unrhdr *tid_unrhdr; - +static lwpid_t tid_buffer[TID_BUFFER_SIZE]; +static int tid_head, tid_tail; static MALLOC_DEFINE(M_TIDHASH, "tidhash", "thread hash"); struct tidhashhead *tidhashtbl; u_long tidhash; struct rwlock tidhash_lock; +static lwpid_t +tid_alloc(void) +{ + lwpid_t tid; + + tid = alloc_unr(tid_unrhdr); + if (tid != -1) + return (tid); + mtx_lock(&tid_lock); + if (tid_head == tid_tail) { + mtx_unlock(&tid_lock); + return (-1); + } + tid = tid_buffer[tid_head++]; + tid_head %= TID_BUFFER_SIZE; + mtx_unlock(&tid_lock); + return (tid); +} + +static void +tid_free(lwpid_t tid) +{ + lwpid_t tmp_tid = -1; + + mtx_lock(&tid_lock); + if ((tid_tail + 1) % TID_BUFFER_SIZE == tid_head) { + tmp_tid = tid_buffer[tid_head++]; + tid_head = (tid_head + 1) % TID_BUFFER_SIZE; + } + tid_buffer[tid_tail++] = tid; + tid_tail %= TID_BUFFER_SIZE; + mtx_unlock(&tid_lock); + if (tmp_tid != -1) + free_unr(tid_unrhdr, tmp_tid); +} + /* * Prepare a thread for use. */ @@ -102,7 +141,7 @@ thread_ctor(void *mem, int size, void *a td->td_state = TDS_INACTIVE; td->td_oncpu = NOCPU; - td->td_tid = alloc_unr(tid_unrhdr); + td->td_tid = tid_alloc(); /* * Note that td_critnest begins life as 1 because the thread is not @@ -155,7 +194,7 @@ thread_dtor(void *mem, int size, void *a osd_thread_exit(td); EVENTHANDLER_INVOKE(thread_dtor, td); - free_unr(tid_unrhdr, td->td_tid); + tid_free(td->td_tid); } /* From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 05:13:47 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2C66E106566C; Fri, 12 Nov 2010 05:13:47 +0000 (UTC) (envelope-from nwhitehorn@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 1526A8FC13; Fri, 12 Nov 2010 05:13:47 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC5DlpO096757; Fri, 12 Nov 2010 05:13:47 GMT (envelope-from nwhitehorn@svn.freebsd.org) Received: (from nwhitehorn@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC5Dkra096749; Fri, 12 Nov 2010 05:13:46 GMT (envelope-from nwhitehorn@svn.freebsd.org) Message-Id: <201011120513.oAC5Dkra096749@svn.freebsd.org> From: Nathan Whitehorn Date: Fri, 12 Nov 2010 05:13:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215164 - in user/nwhitehorn/ps3: amd64/acpica amd64/amd64 amd64/include arm/arm arm/conf arm/include arm/xscale/ixp425 boot/arm/ixp425/boot2 boot/common boot/fdt/dts boot/forth boot/i3... X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 05:13:47 -0000 Author: nwhitehorn Date: Fri Nov 12 05:13:46 2010 New Revision: 215164 URL: http://svn.freebsd.org/changeset/base/215164 Log: IFC @ r215163 in order to loop back recent merges from this branch. Added: user/nwhitehorn/ps3/arm/xscale/ixp425/avila_gpio.c - copied unchanged from r215160, head/sys/arm/xscale/ixp425/avila_gpio.c user/nwhitehorn/ps3/arm/xscale/ixp425/cambria_gpio.c - copied unchanged from r215160, head/sys/arm/xscale/ixp425/cambria_gpio.c user/nwhitehorn/ps3/mips/conf/std.SWARM - copied unchanged from r215160, head/sys/mips/conf/std.SWARM user/nwhitehorn/ps3/mips/mips/minidump_machdep.c - copied unchanged from r215160, head/sys/mips/mips/minidump_machdep.c user/nwhitehorn/ps3/powerpc/ofw/ofw_machdep.c - copied unchanged from r215163, head/sys/powerpc/ofw/ofw_machdep.c user/nwhitehorn/ps3/x86/acpica/OsdEnvironment.c - copied unchanged from r215160, head/sys/x86/acpica/OsdEnvironment.c user/nwhitehorn/ps3/x86/acpica/acpi_apm.c - copied unchanged from r215160, head/sys/x86/acpica/acpi_apm.c user/nwhitehorn/ps3/x86/acpica/madt.c - copied unchanged from r215160, head/sys/x86/acpica/madt.c user/nwhitehorn/ps3/x86/include/apm_bios.h - copied unchanged from r215160, head/sys/x86/include/apm_bios.h user/nwhitehorn/ps3/x86/include/mptable.h - copied unchanged from r215160, head/sys/x86/include/mptable.h Deleted: user/nwhitehorn/ps3/amd64/acpica/OsdEnvironment.c user/nwhitehorn/ps3/amd64/acpica/madt.c user/nwhitehorn/ps3/amd64/include/mptable.h user/nwhitehorn/ps3/amd64/include/mutex.h user/nwhitehorn/ps3/arm/include/mutex.h user/nwhitehorn/ps3/i386/acpica/OsdEnvironment.c user/nwhitehorn/ps3/i386/acpica/madt.c user/nwhitehorn/ps3/i386/include/mptable.h user/nwhitehorn/ps3/i386/include/mutex.h user/nwhitehorn/ps3/ia64/include/mutex.h user/nwhitehorn/ps3/mips/conf/SWARM_COMMON user/nwhitehorn/ps3/mips/include/mutex.h user/nwhitehorn/ps3/pc98/include/mptable.h user/nwhitehorn/ps3/pc98/include/mutex.h user/nwhitehorn/ps3/powerpc/aim/ofw_machdep.c user/nwhitehorn/ps3/powerpc/include/mutex.h user/nwhitehorn/ps3/sparc64/include/mutex.h user/nwhitehorn/ps3/sun4v/include/mutex.h Modified: user/nwhitehorn/ps3/amd64/acpica/acpi_machdep.c user/nwhitehorn/ps3/amd64/amd64/amd64_mem.c user/nwhitehorn/ps3/amd64/amd64/machdep.c user/nwhitehorn/ps3/amd64/amd64/minidump_machdep.c user/nwhitehorn/ps3/amd64/amd64/mp_machdep.c user/nwhitehorn/ps3/amd64/include/apm_bios.h user/nwhitehorn/ps3/amd64/include/minidump.h user/nwhitehorn/ps3/arm/arm/machdep.c user/nwhitehorn/ps3/arm/conf/AVILA user/nwhitehorn/ps3/arm/conf/AVILA.hints user/nwhitehorn/ps3/arm/conf/BWCT.hints user/nwhitehorn/ps3/arm/conf/CAMBRIA user/nwhitehorn/ps3/arm/conf/CAMBRIA.hints user/nwhitehorn/ps3/arm/include/cpuconf.h user/nwhitehorn/ps3/arm/xscale/ixp425/files.avila user/nwhitehorn/ps3/arm/xscale/ixp425/ixp425_qmgr.c user/nwhitehorn/ps3/arm/xscale/ixp425/ixp425reg.h user/nwhitehorn/ps3/boot/arm/ixp425/boot2/ixp425_board.c user/nwhitehorn/ps3/boot/common/loader.8 user/nwhitehorn/ps3/boot/fdt/dts/mpc8555cds.dts user/nwhitehorn/ps3/boot/forth/beastie.4th user/nwhitehorn/ps3/boot/i386/libi386/biosacpi.c user/nwhitehorn/ps3/boot/i386/libi386/i386_module.c user/nwhitehorn/ps3/boot/i386/loader/help.i386 user/nwhitehorn/ps3/cam/cam_periph.c user/nwhitehorn/ps3/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c user/nwhitehorn/ps3/compat/linprocfs/linprocfs.c user/nwhitehorn/ps3/compat/ndis/kern_ndis.c user/nwhitehorn/ps3/compat/ndis/subr_ndis.c user/nwhitehorn/ps3/compat/ndis/subr_ntoskrnl.c user/nwhitehorn/ps3/conf/Makefile.mips user/nwhitehorn/ps3/conf/files.amd64 user/nwhitehorn/ps3/conf/files.i386 user/nwhitehorn/ps3/conf/files.mips user/nwhitehorn/ps3/conf/files.powerpc user/nwhitehorn/ps3/contrib/octeon-sdk/cvmx-app-init.h user/nwhitehorn/ps3/contrib/octeon-sdk/cvmx-helper-board.c user/nwhitehorn/ps3/contrib/octeon-sdk/cvmx-helper.c user/nwhitehorn/ps3/dev/acpica/acpi.c user/nwhitehorn/ps3/dev/acpica/acpi_pci_link.c user/nwhitehorn/ps3/dev/acpica/acpivar.h user/nwhitehorn/ps3/dev/ahci/ahci.c user/nwhitehorn/ps3/dev/ata/ata-all.c user/nwhitehorn/ps3/dev/ata/ata-disk.c user/nwhitehorn/ps3/dev/ata/ata-lowlevel.c user/nwhitehorn/ps3/dev/bwi/if_bwi.c user/nwhitehorn/ps3/dev/bwn/if_bwn.c user/nwhitehorn/ps3/dev/drm/r300_reg.h user/nwhitehorn/ps3/dev/gpio/gpiobus.c user/nwhitehorn/ps3/dev/gpio/gpioc.c user/nwhitehorn/ps3/dev/gpio/gpioled.c user/nwhitehorn/ps3/dev/iicbus/iiconf.c user/nwhitehorn/ps3/dev/isp/isp_freebsd.c user/nwhitehorn/ps3/dev/iwn/if_iwn.c user/nwhitehorn/ps3/dev/ixgbe/ixgbe.c user/nwhitehorn/ps3/dev/mii/brgphy.c user/nwhitehorn/ps3/dev/mii/miidevs user/nwhitehorn/ps3/dev/msk/if_msk.c user/nwhitehorn/ps3/dev/nfe/if_nfe.c user/nwhitehorn/ps3/dev/nfe/if_nfereg.h user/nwhitehorn/ps3/dev/nfe/if_nfevar.h user/nwhitehorn/ps3/dev/ofw/ofw_fdt.c user/nwhitehorn/ps3/dev/ofw/openfirm.c user/nwhitehorn/ps3/dev/pccard/pccardvar.h user/nwhitehorn/ps3/dev/ral/rt2560.c user/nwhitehorn/ps3/dev/ral/rt2661.c user/nwhitehorn/ps3/dev/re/if_re.c user/nwhitehorn/ps3/dev/siis/siis.c user/nwhitehorn/ps3/dev/sk/if_sk.c user/nwhitehorn/ps3/dev/sound/sbus/cs4231.c user/nwhitehorn/ps3/dev/syscons/schistory.c user/nwhitehorn/ps3/dev/uart/uart_subr.c user/nwhitehorn/ps3/dev/usb/net/uhso.c user/nwhitehorn/ps3/dev/usb/quirk/usb_quirk.c user/nwhitehorn/ps3/dev/usb/quirk/usb_quirk.h user/nwhitehorn/ps3/dev/usb/serial/u3g.c user/nwhitehorn/ps3/dev/usb/serial/uark.c user/nwhitehorn/ps3/dev/usb/serial/ubsa.c user/nwhitehorn/ps3/dev/usb/serial/ubser.c user/nwhitehorn/ps3/dev/usb/serial/uchcom.c user/nwhitehorn/ps3/dev/usb/serial/ucycom.c user/nwhitehorn/ps3/dev/usb/serial/ufoma.c user/nwhitehorn/ps3/dev/usb/serial/uftdi.c user/nwhitehorn/ps3/dev/usb/serial/ugensa.c user/nwhitehorn/ps3/dev/usb/serial/uipaq.c user/nwhitehorn/ps3/dev/usb/serial/umct.c user/nwhitehorn/ps3/dev/usb/serial/umodem.c user/nwhitehorn/ps3/dev/usb/serial/umoscom.c user/nwhitehorn/ps3/dev/usb/serial/uplcom.c user/nwhitehorn/ps3/dev/usb/serial/usb_serial.c user/nwhitehorn/ps3/dev/usb/serial/usb_serial.h user/nwhitehorn/ps3/dev/usb/serial/uslcom.c user/nwhitehorn/ps3/dev/usb/serial/uvisor.c user/nwhitehorn/ps3/dev/usb/serial/uvscom.c user/nwhitehorn/ps3/dev/usb/usb_device.c user/nwhitehorn/ps3/dev/usb/usb_request.c user/nwhitehorn/ps3/dev/usb/usb_request.h user/nwhitehorn/ps3/dev/usb/usbdevs user/nwhitehorn/ps3/dev/usb/wlan/if_rum.c user/nwhitehorn/ps3/dev/usb/wlan/if_run.c user/nwhitehorn/ps3/dev/usb/wlan/if_ural.c user/nwhitehorn/ps3/dev/usb/wlan/if_zyd.c user/nwhitehorn/ps3/dev/wb/if_wb.c user/nwhitehorn/ps3/dev/wpi/if_wpi.c user/nwhitehorn/ps3/dev/xl/if_xl.c user/nwhitehorn/ps3/fs/nwfs/nwfs_vnops.c user/nwhitehorn/ps3/geom/geom_event.c user/nwhitehorn/ps3/geom/part/g_part.c user/nwhitehorn/ps3/i386/acpica/acpi_machdep.c user/nwhitehorn/ps3/i386/bios/apm.c user/nwhitehorn/ps3/i386/i386/machdep.c user/nwhitehorn/ps3/i386/i386/mp_machdep.c user/nwhitehorn/ps3/i386/i386/pmap.c user/nwhitehorn/ps3/i386/include/apm_bios.h user/nwhitehorn/ps3/i386/xen/mptable.c user/nwhitehorn/ps3/ia64/acpica/OsdEnvironment.c user/nwhitehorn/ps3/ia64/ia64/db_machdep.c user/nwhitehorn/ps3/ia64/ia64/genassym.c user/nwhitehorn/ps3/ia64/ia64/machdep.c user/nwhitehorn/ps3/kern/kern_clocksource.c user/nwhitehorn/ps3/kern/kern_conf.c user/nwhitehorn/ps3/kern/kern_mutex.c user/nwhitehorn/ps3/kern/kern_proc.c user/nwhitehorn/ps3/kern/kern_timeout.c user/nwhitehorn/ps3/kern/link_elf.c user/nwhitehorn/ps3/kern/sched_ule.c user/nwhitehorn/ps3/kern/subr_lock.c user/nwhitehorn/ps3/kern/subr_taskqueue.c user/nwhitehorn/ps3/mips/cavium/octopci.c user/nwhitehorn/ps3/mips/conf/SWARM user/nwhitehorn/ps3/mips/conf/SWARM64 user/nwhitehorn/ps3/mips/conf/SWARM64_SMP user/nwhitehorn/ps3/mips/conf/SWARM_SMP user/nwhitehorn/ps3/mips/conf/XLR user/nwhitehorn/ps3/mips/conf/XLR64 user/nwhitehorn/ps3/mips/conf/XLRN32 user/nwhitehorn/ps3/mips/include/cpuregs.h user/nwhitehorn/ps3/mips/include/md_var.h user/nwhitehorn/ps3/mips/include/pmap.h user/nwhitehorn/ps3/mips/mips/dump_machdep.c user/nwhitehorn/ps3/mips/mips/gdb_machdep.c user/nwhitehorn/ps3/mips/mips/machdep.c user/nwhitehorn/ps3/mips/mips/vm_machdep.c user/nwhitehorn/ps3/modules/acpi/Makefile user/nwhitehorn/ps3/modules/acpi/acpi/Makefile user/nwhitehorn/ps3/net/vnet.h user/nwhitehorn/ps3/net80211/ieee80211.c user/nwhitehorn/ps3/net80211/ieee80211_node.c user/nwhitehorn/ps3/net80211/ieee80211_ratectl.c user/nwhitehorn/ps3/net80211/ieee80211_ratectl.h user/nwhitehorn/ps3/net80211/ieee80211_sta.c user/nwhitehorn/ps3/net80211/ieee80211_var.h user/nwhitehorn/ps3/netinet/in_pcb.c user/nwhitehorn/ps3/netinet/libalias/alias.c user/nwhitehorn/ps3/netinet/libalias/alias_sctp.c user/nwhitehorn/ps3/netinet/libalias/alias_sctp.h user/nwhitehorn/ps3/netinet/sctp.h user/nwhitehorn/ps3/netinet/sctp_indata.c user/nwhitehorn/ps3/netinet/sctp_input.c user/nwhitehorn/ps3/netinet/sctp_os_bsd.h user/nwhitehorn/ps3/netinet/sctp_output.c user/nwhitehorn/ps3/netinet/sctp_pcb.c user/nwhitehorn/ps3/netinet/sctp_timer.c user/nwhitehorn/ps3/netinet/sctp_timer.h user/nwhitehorn/ps3/netinet/sctp_uio.h user/nwhitehorn/ps3/netinet/sctp_usrreq.c user/nwhitehorn/ps3/netinet/sctputil.c user/nwhitehorn/ps3/netinet/sctputil.h user/nwhitehorn/ps3/netinet/siftr.c user/nwhitehorn/ps3/nfsserver/nfs_serv.c user/nwhitehorn/ps3/pc98/include/apm_bios.h user/nwhitehorn/ps3/pc98/pc98/machdep.c user/nwhitehorn/ps3/pci/if_rlreg.h user/nwhitehorn/ps3/powerpc/aim/clock.c user/nwhitehorn/ps3/powerpc/aim/copyinout.c user/nwhitehorn/ps3/powerpc/aim/machdep.c user/nwhitehorn/ps3/powerpc/aim/mmu_oea.c user/nwhitehorn/ps3/powerpc/aim/mmu_oea64.c user/nwhitehorn/ps3/powerpc/aim/nexus.c user/nwhitehorn/ps3/powerpc/aim/trap.c user/nwhitehorn/ps3/powerpc/aim/trap_subr32.S user/nwhitehorn/ps3/powerpc/booke/clock.c user/nwhitehorn/ps3/powerpc/booke/locore.S user/nwhitehorn/ps3/powerpc/booke/machdep.c user/nwhitehorn/ps3/powerpc/booke/pmap.c user/nwhitehorn/ps3/powerpc/booke/trap_subr.S user/nwhitehorn/ps3/powerpc/include/tlb.h user/nwhitehorn/ps3/powerpc/powermac/smu.c user/nwhitehorn/ps3/powerpc/powerpc/cpu.c user/nwhitehorn/ps3/security/mac_portacl/mac_portacl.c user/nwhitehorn/ps3/sparc64/include/vmparam.h user/nwhitehorn/ps3/sparc64/sparc64/machdep.c user/nwhitehorn/ps3/sparc64/sparc64/pmap.c user/nwhitehorn/ps3/sun4v/include/pmap.h user/nwhitehorn/ps3/sun4v/include/smp.h user/nwhitehorn/ps3/sun4v/sun4v/machdep.c user/nwhitehorn/ps3/sun4v/sun4v/mp_machdep.c user/nwhitehorn/ps3/sys/cdefs.h user/nwhitehorn/ps3/sys/interrupt.h user/nwhitehorn/ps3/sys/kernel.h user/nwhitehorn/ps3/sys/kerneldump.h user/nwhitehorn/ps3/sys/linker_set.h user/nwhitehorn/ps3/sys/mutex.h user/nwhitehorn/ps3/sys/param.h user/nwhitehorn/ps3/sys/pcpu.h user/nwhitehorn/ps3/sys/taskqueue.h user/nwhitehorn/ps3/teken/sequences user/nwhitehorn/ps3/teken/teken_subr_compat.h user/nwhitehorn/ps3/ufs/ffs/ffs_inode.c user/nwhitehorn/ps3/ufs/ffs/ffs_softdep.c user/nwhitehorn/ps3/ufs/ffs/fs.h user/nwhitehorn/ps3/ufs/ufs/ufs_vnops.c user/nwhitehorn/ps3/vm/uma_core.c user/nwhitehorn/ps3/vm/vm_map.c user/nwhitehorn/ps3/vm/vm_page.c user/nwhitehorn/ps3/vm/vm_reserv.c user/nwhitehorn/ps3/x86/cpufreq/hwpstate.c user/nwhitehorn/ps3/x86/x86/local_apic.c user/nwhitehorn/ps3/x86/x86/mptable.c user/nwhitehorn/ps3/x86/x86/mptable_pci.c Directory Properties: user/nwhitehorn/ps3/ (props changed) user/nwhitehorn/ps3/amd64/include/xen/ (props changed) user/nwhitehorn/ps3/boot/powerpc/ps3/ (props changed) user/nwhitehorn/ps3/cddl/contrib/opensolaris/ (props changed) user/nwhitehorn/ps3/contrib/dev/acpica/ (props changed) user/nwhitehorn/ps3/contrib/pf/ (props changed) user/nwhitehorn/ps3/contrib/x86emu/ (props changed) user/nwhitehorn/ps3/dev/xen/xenpci/ (props changed) user/nwhitehorn/ps3/powerpc/ps3/ (props changed) Modified: user/nwhitehorn/ps3/amd64/acpica/acpi_machdep.c ============================================================================== --- user/nwhitehorn/ps3/amd64/acpica/acpi_machdep.c Fri Nov 12 05:12:38 2010 (r215163) +++ user/nwhitehorn/ps3/amd64/acpica/acpi_machdep.c Fri Nov 12 05:13:46 2010 (r215164) @@ -44,24 +44,6 @@ __FBSDID("$FreeBSD$"); #include -/* - * APM driver emulation - */ - -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include - SYSCTL_DECL(_debug_acpi); int acpi_resume_beep; @@ -73,445 +55,15 @@ int acpi_reset_video; TUNABLE_INT("hw.acpi.reset_video", &acpi_reset_video); static int intr_model = ACPI_INTR_PIC; -static int apm_active; -static struct clonedevs *apm_clones; - -MALLOC_DEFINE(M_APMDEV, "apmdev", "APM device emulation"); - -static d_open_t apmopen; -static d_close_t apmclose; -static d_write_t apmwrite; -static d_ioctl_t apmioctl; -static d_poll_t apmpoll; -static d_kqfilter_t apmkqfilter; -static void apmreadfiltdetach(struct knote *kn); -static int apmreadfilt(struct knote *kn, long hint); -static struct filterops apm_readfiltops = { - .f_isfd = 1, - .f_detach = apmreadfiltdetach, - .f_event = apmreadfilt, -}; - -static struct cdevsw apm_cdevsw = { - .d_version = D_VERSION, - .d_flags = D_TRACKCLOSE | D_NEEDMINOR, - .d_open = apmopen, - .d_close = apmclose, - .d_write = apmwrite, - .d_ioctl = apmioctl, - .d_poll = apmpoll, - .d_name = "apm", - .d_kqfilter = apmkqfilter -}; - -static int -acpi_capm_convert_battstate(struct acpi_battinfo *battp) -{ - int state; - - state = APM_UNKNOWN; - - if (battp->state & ACPI_BATT_STAT_DISCHARG) { - if (battp->cap >= 50) - state = 0; /* high */ - else - state = 1; /* low */ - } - if (battp->state & ACPI_BATT_STAT_CRITICAL) - state = 2; /* critical */ - if (battp->state & ACPI_BATT_STAT_CHARGING) - state = 3; /* charging */ - - /* If still unknown, determine it based on the battery capacity. */ - if (state == APM_UNKNOWN) { - if (battp->cap >= 50) - state = 0; /* high */ - else - state = 1; /* low */ - } - - return (state); -} - -static int -acpi_capm_convert_battflags(struct acpi_battinfo *battp) -{ - int flags; - - flags = 0; - - if (battp->cap >= 50) - flags |= APM_BATT_HIGH; - else { - if (battp->state & ACPI_BATT_STAT_CRITICAL) - flags |= APM_BATT_CRITICAL; - else - flags |= APM_BATT_LOW; - } - if (battp->state & ACPI_BATT_STAT_CHARGING) - flags |= APM_BATT_CHARGING; - if (battp->state == ACPI_BATT_STAT_NOT_PRESENT) - flags = APM_BATT_NOT_PRESENT; - - return (flags); -} - -static int -acpi_capm_get_info(apm_info_t aip) -{ - int acline; - struct acpi_battinfo batt; - - aip->ai_infoversion = 1; - aip->ai_major = 1; - aip->ai_minor = 2; - aip->ai_status = apm_active; - aip->ai_capabilities= 0xff00; /* unknown */ - - if (acpi_acad_get_acline(&acline)) - aip->ai_acline = APM_UNKNOWN; /* unknown */ - else - aip->ai_acline = acline; /* on/off */ - - if (acpi_battery_get_battinfo(NULL, &batt) != 0) { - aip->ai_batt_stat = APM_UNKNOWN; - aip->ai_batt_life = APM_UNKNOWN; - aip->ai_batt_time = -1; /* unknown */ - aip->ai_batteries = ~0U; /* unknown */ - } else { - aip->ai_batt_stat = acpi_capm_convert_battstate(&batt); - aip->ai_batt_life = batt.cap; - aip->ai_batt_time = (batt.min == -1) ? -1 : batt.min * 60; - aip->ai_batteries = acpi_battery_get_units(); - } - - return (0); -} - -static int -acpi_capm_get_pwstatus(apm_pwstatus_t app) -{ - device_t dev; - int acline, unit, error; - struct acpi_battinfo batt; - - if (app->ap_device != PMDV_ALLDEV && - (app->ap_device < PMDV_BATT0 || app->ap_device > PMDV_BATT_ALL)) - return (1); - - if (app->ap_device == PMDV_ALLDEV) - error = acpi_battery_get_battinfo(NULL, &batt); - else { - unit = app->ap_device - PMDV_BATT0; - dev = devclass_get_device(devclass_find("battery"), unit); - if (dev != NULL) - error = acpi_battery_get_battinfo(dev, &batt); - else - error = ENXIO; - } - if (error) - return (1); - - app->ap_batt_stat = acpi_capm_convert_battstate(&batt); - app->ap_batt_flag = acpi_capm_convert_battflags(&batt); - app->ap_batt_life = batt.cap; - app->ap_batt_time = (batt.min == -1) ? -1 : batt.min * 60; - - if (acpi_acad_get_acline(&acline)) - app->ap_acline = APM_UNKNOWN; - else - app->ap_acline = acline; /* on/off */ - - return (0); -} - -/* Create single-use devices for /dev/apm and /dev/apmctl. */ -static void -apm_clone(void *arg, struct ucred *cred, char *name, int namelen, - struct cdev **dev) -{ - int ctl_dev, unit; - - if (*dev != NULL) - return; - if (strcmp(name, "apmctl") == 0) - ctl_dev = TRUE; - else if (strcmp(name, "apm") == 0) - ctl_dev = FALSE; - else - return; - - /* Always create a new device and unit number. */ - unit = -1; - if (clone_create(&apm_clones, &apm_cdevsw, &unit, dev, 0)) { - if (ctl_dev) { - *dev = make_dev(&apm_cdevsw, unit, - UID_ROOT, GID_OPERATOR, 0660, "apmctl%d", unit); - } else { - *dev = make_dev(&apm_cdevsw, unit, - UID_ROOT, GID_OPERATOR, 0664, "apm%d", unit); - } - if (*dev != NULL) { - dev_ref(*dev); - (*dev)->si_flags |= SI_CHEAPCLONE; - } - } -} - -/* Create a struct for tracking per-device suspend notification. */ -static struct apm_clone_data * -apm_create_clone(struct cdev *dev, struct acpi_softc *acpi_sc) -{ - struct apm_clone_data *clone; - - clone = malloc(sizeof(*clone), M_APMDEV, M_WAITOK); - clone->cdev = dev; - clone->acpi_sc = acpi_sc; - clone->notify_status = APM_EV_NONE; - bzero(&clone->sel_read, sizeof(clone->sel_read)); - knlist_init_mtx(&clone->sel_read.si_note, &acpi_mutex); - - /* - * The acpi device is always managed by devd(8) and is considered - * writable (i.e., ack is required to allow suspend to proceed.) - */ - if (strcmp("acpi", devtoname(dev)) == 0) - clone->flags = ACPI_EVF_DEVD | ACPI_EVF_WRITE; - else - clone->flags = ACPI_EVF_NONE; - - ACPI_LOCK(acpi); - STAILQ_INSERT_TAIL(&acpi_sc->apm_cdevs, clone, entries); - ACPI_UNLOCK(acpi); - return (clone); -} - -static int -apmopen(struct cdev *dev, int flag, int fmt, struct thread *td) -{ - struct acpi_softc *acpi_sc; - struct apm_clone_data *clone; - - acpi_sc = devclass_get_softc(devclass_find("acpi"), 0); - clone = apm_create_clone(dev, acpi_sc); - dev->si_drv1 = clone; - - /* If the device is opened for write, record that. */ - if ((flag & FWRITE) != 0) - clone->flags |= ACPI_EVF_WRITE; - - return (0); -} - -static int -apmclose(struct cdev *dev, int flag, int fmt, struct thread *td) -{ - struct apm_clone_data *clone; - struct acpi_softc *acpi_sc; - - clone = dev->si_drv1; - acpi_sc = clone->acpi_sc; - - /* We are about to lose a reference so check if suspend should occur */ - if (acpi_sc->acpi_next_sstate != 0 && - clone->notify_status != APM_EV_ACKED) - acpi_AckSleepState(clone, 0); - - /* Remove this clone's data from the list and free it. */ - ACPI_LOCK(acpi); - STAILQ_REMOVE(&acpi_sc->apm_cdevs, clone, apm_clone_data, entries); - knlist_destroy(&clone->sel_read.si_note); - ACPI_UNLOCK(acpi); - free(clone, M_APMDEV); - destroy_dev_sched(dev); - return (0); -} - -static int -apmioctl(struct cdev *dev, u_long cmd, caddr_t addr, int flag, struct thread *td) -{ - int error; - struct apm_clone_data *clone; - struct acpi_softc *acpi_sc; - struct apm_info info; - struct apm_event_info *ev_info; - apm_info_old_t aiop; - - error = 0; - clone = dev->si_drv1; - acpi_sc = clone->acpi_sc; - - switch (cmd) { - case APMIO_SUSPEND: - if ((flag & FWRITE) == 0) - return (EPERM); - if (acpi_sc->acpi_next_sstate == 0) { - if (acpi_sc->acpi_suspend_sx != ACPI_STATE_S5) { - error = acpi_ReqSleepState(acpi_sc, - acpi_sc->acpi_suspend_sx); - } else { - printf( - "power off via apm suspend not supported\n"); - error = ENXIO; - } - } else - error = acpi_AckSleepState(clone, 0); - break; - case APMIO_STANDBY: - if ((flag & FWRITE) == 0) - return (EPERM); - if (acpi_sc->acpi_next_sstate == 0) { - if (acpi_sc->acpi_standby_sx != ACPI_STATE_S5) { - error = acpi_ReqSleepState(acpi_sc, - acpi_sc->acpi_standby_sx); - } else { - printf( - "power off via apm standby not supported\n"); - error = ENXIO; - } - } else - error = acpi_AckSleepState(clone, 0); - break; - case APMIO_NEXTEVENT: - printf("apm nextevent start\n"); - ACPI_LOCK(acpi); - if (acpi_sc->acpi_next_sstate != 0 && clone->notify_status == - APM_EV_NONE) { - ev_info = (struct apm_event_info *)addr; - if (acpi_sc->acpi_next_sstate <= ACPI_STATE_S3) - ev_info->type = PMEV_STANDBYREQ; - else - ev_info->type = PMEV_SUSPENDREQ; - ev_info->index = 0; - clone->notify_status = APM_EV_NOTIFIED; - printf("apm event returning %d\n", ev_info->type); - } else - error = EAGAIN; - ACPI_UNLOCK(acpi); - break; - case APMIO_GETINFO_OLD: - if (acpi_capm_get_info(&info)) - error = ENXIO; - aiop = (apm_info_old_t)addr; - aiop->ai_major = info.ai_major; - aiop->ai_minor = info.ai_minor; - aiop->ai_acline = info.ai_acline; - aiop->ai_batt_stat = info.ai_batt_stat; - aiop->ai_batt_life = info.ai_batt_life; - aiop->ai_status = info.ai_status; - break; - case APMIO_GETINFO: - if (acpi_capm_get_info((apm_info_t)addr)) - error = ENXIO; - break; - case APMIO_GETPWSTATUS: - if (acpi_capm_get_pwstatus((apm_pwstatus_t)addr)) - error = ENXIO; - break; - case APMIO_ENABLE: - if ((flag & FWRITE) == 0) - return (EPERM); - apm_active = 1; - break; - case APMIO_DISABLE: - if ((flag & FWRITE) == 0) - return (EPERM); - apm_active = 0; - break; - case APMIO_HALTCPU: - break; - case APMIO_NOTHALTCPU: - break; - case APMIO_DISPLAY: - if ((flag & FWRITE) == 0) - return (EPERM); - break; - case APMIO_BIOS: - if ((flag & FWRITE) == 0) - return (EPERM); - bzero(addr, sizeof(struct apm_bios_arg)); - break; - default: - error = EINVAL; - break; - } - - return (error); -} - -static int -apmwrite(struct cdev *dev, struct uio *uio, int ioflag) -{ - return (uio->uio_resid); -} - -static int -apmpoll(struct cdev *dev, int events, struct thread *td) -{ - struct apm_clone_data *clone; - int revents; - - revents = 0; - ACPI_LOCK(acpi); - clone = dev->si_drv1; - if (clone->acpi_sc->acpi_next_sstate) - revents |= events & (POLLIN | POLLRDNORM); - else - selrecord(td, &clone->sel_read); - ACPI_UNLOCK(acpi); - return (revents); -} - -static int -apmkqfilter(struct cdev *dev, struct knote *kn) -{ - struct apm_clone_data *clone; - - ACPI_LOCK(acpi); - clone = dev->si_drv1; - kn->kn_hook = clone; - kn->kn_fop = &apm_readfiltops; - knlist_add(&clone->sel_read.si_note, kn, 0); - ACPI_UNLOCK(acpi); - return (0); -} - -static void -apmreadfiltdetach(struct knote *kn) -{ - struct apm_clone_data *clone; - - ACPI_LOCK(acpi); - clone = kn->kn_hook; - knlist_remove(&clone->sel_read.si_note, kn, 0); - ACPI_UNLOCK(acpi); -} - -static int -apmreadfilt(struct knote *kn, long hint) -{ - struct apm_clone_data *clone; - int sleeping; - - ACPI_LOCK(acpi); - clone = kn->kn_hook; - sleeping = clone->acpi_sc->acpi_next_sstate ? 1 : 0; - ACPI_UNLOCK(acpi); - return (sleeping); -} int acpi_machdep_init(device_t dev) { - struct acpi_softc *sc; + struct acpi_softc *sc; - sc = devclass_get_softc(devclass_find("acpi"), 0); + sc = device_get_softc(dev); - /* Create a clone for /dev/acpi also. */ - STAILQ_INIT(&sc->apm_cdevs); - sc->acpi_clone = apm_create_clone(sc->acpi_dev_t, sc); - clone_setup(&apm_clones); - EVENTHANDLER_REGISTER(dev_clone, apm_clone, 0, 1000); + acpi_apm_init(sc); if (intr_model != ACPI_INTR_PIC) acpi_SetIntrModel(intr_model); @@ -534,12 +86,14 @@ acpi_SetDefaultIntrModel(int model) int acpi_machdep_quirks(int *quirks) { + return (0); } void acpi_cpu_c1() { + __asm __volatile("sti; hlt"); } Modified: user/nwhitehorn/ps3/amd64/amd64/amd64_mem.c ============================================================================== --- user/nwhitehorn/ps3/amd64/amd64/amd64_mem.c Fri Nov 12 05:12:38 2010 (r215163) +++ user/nwhitehorn/ps3/amd64/amd64/amd64_mem.c Fri Nov 12 05:13:46 2010 (r215164) @@ -583,7 +583,7 @@ amd64_mrset(struct mem_range_softc *sc, i = (sc->mr_cap & MR686_FIXMTRR) ? MTRR_N64K + MTRR_N16K + MTRR_N4K : 0; mrd = sc->mr_desc + i; for (; i < sc->mr_ndesc; i++, mrd++) { - if (mrd->mr_flags & MDF_ACTIVE) + if ((mrd->mr_flags & (MDF_ACTIVE | MDF_BOGUS)) == MDF_ACTIVE) pmap_demote_DMAP(mrd->mr_base, mrd->mr_len, FALSE); } @@ -688,7 +688,7 @@ amd64_mrinit(struct mem_range_softc *sc) i = (sc->mr_cap & MR686_FIXMTRR) ? MTRR_N64K + MTRR_N16K + MTRR_N4K : 0; mrd = sc->mr_desc + i; for (; i < sc->mr_ndesc; i++, mrd++) { - if (mrd->mr_flags & MDF_ACTIVE) + if ((mrd->mr_flags & (MDF_ACTIVE | MDF_BOGUS)) == MDF_ACTIVE) pmap_demote_DMAP(mrd->mr_base, mrd->mr_len, TRUE); } } Modified: user/nwhitehorn/ps3/amd64/amd64/machdep.c ============================================================================== --- user/nwhitehorn/ps3/amd64/amd64/machdep.c Fri Nov 12 05:12:38 2010 (r215163) +++ user/nwhitehorn/ps3/amd64/amd64/machdep.c Fri Nov 12 05:13:46 2010 (r215164) @@ -1762,11 +1762,15 @@ void spinlock_enter(void) { struct thread *td; + register_t flags; td = curthread; - if (td->td_md.md_spinlock_count == 0) - td->td_md.md_saved_flags = intr_disable(); - td->td_md.md_spinlock_count++; + if (td->td_md.md_spinlock_count == 0) { + flags = intr_disable(); + td->td_md.md_spinlock_count = 1; + td->td_md.md_saved_flags = flags; + } else + td->td_md.md_spinlock_count++; critical_enter(); } @@ -1774,12 +1778,14 @@ void spinlock_exit(void) { struct thread *td; + register_t flags; td = curthread; critical_exit(); + flags = td->td_md.md_saved_flags; td->td_md.md_spinlock_count--; if (td->td_md.md_spinlock_count == 0) - intr_restore(td->td_md.md_saved_flags); + intr_restore(flags); } /* Modified: user/nwhitehorn/ps3/amd64/amd64/minidump_machdep.c ============================================================================== --- user/nwhitehorn/ps3/amd64/amd64/minidump_machdep.c Fri Nov 12 05:12:38 2010 (r215163) +++ user/nwhitehorn/ps3/amd64/amd64/minidump_machdep.c Fri Nov 12 05:13:46 2010 (r215164) @@ -167,63 +167,91 @@ blk_write(struct dumperinfo *di, char *p } /* A fake page table page, to avoid having to handle both 4K and 2M pages */ -static pt_entry_t fakept[NPTEPG]; +static pd_entry_t fakepd[NPDEPG]; void minidumpsys(struct dumperinfo *di) { uint64_t dumpsize; - uint32_t ptesize; + uint32_t pmapsize; vm_offset_t va; int error; uint64_t bits; uint64_t *pdp, *pd, *pt, pa; - int i, j, k, bit; + int i, j, k, n, bit; + int retry_count; struct minidumphdr mdhdr; + retry_count = 0; + retry: + retry_count++; counter = 0; /* Walk page table pages, set bits in vm_page_dump */ - ptesize = 0; + pmapsize = 0; pdp = (uint64_t *)PHYS_TO_DMAP(KPDPphys); for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + NKPT * NBPDR, - kernel_vm_end); va += NBPDR) { - i = (va >> PDPSHIFT) & ((1ul << NPDPEPGSHIFT) - 1); + kernel_vm_end); ) { /* * We always write a page, even if it is zero. Each - * page written corresponds to 2MB of space + * page written corresponds to 1GB of space */ - ptesize += PAGE_SIZE; - if ((pdp[i] & PG_V) == 0) + pmapsize += PAGE_SIZE; + i = (va >> PDPSHIFT) & ((1ul << NPDPEPGSHIFT) - 1); + if ((pdp[i] & PG_V) == 0) { + va += NBPDP; continue; - pd = (uint64_t *)PHYS_TO_DMAP(pdp[i] & PG_FRAME); - j = ((va >> PDRSHIFT) & ((1ul << NPDEPGSHIFT) - 1)); - if ((pd[j] & (PG_PS | PG_V)) == (PG_PS | PG_V)) { - /* This is an entire 2M page. */ - pa = pd[j] & PG_PS_FRAME; - for (k = 0; k < NPTEPG; k++) { + } + + /* + * 1GB page is represented as 512 2MB pages in a dump. + */ + if ((pdp[i] & PG_PS) != 0) { + va += NBPDP; + pa = pdp[i] & PG_PS_FRAME; + for (n = 0; n < NPDEPG * NPTEPG; n++) { if (is_dumpable(pa)) dump_add_page(pa); pa += PAGE_SIZE; } continue; } - if ((pd[j] & PG_V) == PG_V) { - /* set bit for each valid page in this 2MB block */ - pt = (uint64_t *)PHYS_TO_DMAP(pd[j] & PG_FRAME); - for (k = 0; k < NPTEPG; k++) { - if ((pt[k] & PG_V) == PG_V) { - pa = pt[k] & PG_FRAME; + + pd = (uint64_t *)PHYS_TO_DMAP(pdp[i] & PG_FRAME); + for (n = 0; n < NPDEPG; n++, va += NBPDR) { + j = (va >> PDRSHIFT) & ((1ul << NPDEPGSHIFT) - 1); + + if ((pd[j] & PG_V) == 0) + continue; + + if ((pd[j] & PG_PS) != 0) { + /* This is an entire 2M page. */ + pa = pd[j] & PG_PS_FRAME; + for (k = 0; k < NPTEPG; k++) { if (is_dumpable(pa)) dump_add_page(pa); + pa += PAGE_SIZE; } + continue; + } + + pa = pd[j] & PG_FRAME; + /* set bit for this PTE page */ + if (is_dumpable(pa)) + dump_add_page(pa); + /* and for each valid page in this 2MB block */ + pt = (uint64_t *)PHYS_TO_DMAP(pd[j] & PG_FRAME); + for (k = 0; k < NPTEPG; k++) { + if ((pt[k] & PG_V) == 0) + continue; + pa = pt[k] & PG_FRAME; + if (is_dumpable(pa)) + dump_add_page(pa); } - } else { - /* nothing, we're going to dump a null page */ } } /* Calculate dump size. */ - dumpsize = ptesize; + dumpsize = pmapsize; dumpsize += round_page(msgbufp->msg_size); dumpsize += round_page(vm_page_dump_size); for (i = 0; i < vm_page_dump_size / sizeof(*vm_page_dump); i++) { @@ -244,7 +272,7 @@ minidumpsys(struct dumperinfo *di) /* Determine dump offset on device. */ if (di->mediasize < SIZEOF_METADATA + dumpsize + sizeof(kdh) * 2) { - error = ENOSPC; + error = E2BIG; goto fail; } dumplo = di->mediaoffset + di->mediasize - dumpsize; @@ -257,7 +285,7 @@ minidumpsys(struct dumperinfo *di) mdhdr.version = MINIDUMP_VERSION; mdhdr.msgbufsize = msgbufp->msg_size; mdhdr.bitmapsize = vm_page_dump_size; - mdhdr.ptesize = ptesize; + mdhdr.pmapsize = pmapsize; mdhdr.kernbase = VM_MIN_KERNEL_ADDRESS; mdhdr.dmapbase = DMAP_MIN_ADDRESS; mdhdr.dmapend = DMAP_MAX_ADDRESS; @@ -274,9 +302,9 @@ minidumpsys(struct dumperinfo *di) dumplo += sizeof(kdh); /* Dump my header */ - bzero(&fakept, sizeof(fakept)); - bcopy(&mdhdr, &fakept, sizeof(mdhdr)); - error = blk_write(di, (char *)&fakept, 0, PAGE_SIZE); + bzero(&fakepd, sizeof(fakepd)); + bcopy(&mdhdr, &fakepd, sizeof(mdhdr)); + error = blk_write(di, (char *)&fakepd, 0, PAGE_SIZE); if (error) goto fail; @@ -290,55 +318,49 @@ minidumpsys(struct dumperinfo *di) if (error) goto fail; - /* Dump kernel page table pages */ + /* Dump kernel page directory pages */ + bzero(fakepd, sizeof(fakepd)); pdp = (uint64_t *)PHYS_TO_DMAP(KPDPphys); for (va = VM_MIN_KERNEL_ADDRESS; va < MAX(KERNBASE + NKPT * NBPDR, - kernel_vm_end); va += NBPDR) { + kernel_vm_end); va += NBPDP) { i = (va >> PDPSHIFT) & ((1ul << NPDPEPGSHIFT) - 1); + /* We always write a page, even if it is zero */ if ((pdp[i] & PG_V) == 0) { - bzero(fakept, sizeof(fakept)); - error = blk_write(di, (char *)&fakept, 0, PAGE_SIZE); + error = blk_write(di, (char *)&fakepd, 0, PAGE_SIZE); if (error) goto fail; - /* flush, in case we reuse fakept in the same block */ + /* flush, in case we reuse fakepd in the same block */ error = blk_flush(di); if (error) goto fail; continue; } - pd = (uint64_t *)PHYS_TO_DMAP(pdp[i] & PG_FRAME); - j = ((va >> PDRSHIFT) & ((1ul << NPDEPGSHIFT) - 1)); - if ((pd[j] & (PG_PS | PG_V)) == (PG_PS | PG_V)) { - /* This is a single 2M block. Generate a fake PTP */ - pa = pd[j] & PG_PS_FRAME; - for (k = 0; k < NPTEPG; k++) { - fakept[k] = (pa + (k * PAGE_SIZE)) | PG_V | PG_RW | PG_A | PG_M; - } - error = blk_write(di, (char *)&fakept, 0, PAGE_SIZE); + + /* 1GB page is represented as 512 2MB pages in a dump */ + if ((pdp[i] & PG_PS) != 0) { + /* PDPE and PDP have identical layout in this case */ + fakepd[0] = pdp[i]; + for (j = 1; j < NPDEPG; j++) + fakepd[j] = fakepd[j - 1] + NBPDR; + error = blk_write(di, (char *)&fakepd, 0, PAGE_SIZE); if (error) goto fail; - /* flush, in case we reuse fakept in the same block */ + /* flush, in case we reuse fakepd in the same block */ error = blk_flush(di); if (error) goto fail; + bzero(fakepd, sizeof(fakepd)); continue; } - if ((pd[j] & PG_V) == PG_V) { - pt = (uint64_t *)PHYS_TO_DMAP(pd[j] & PG_FRAME); - error = blk_write(di, (char *)pt, 0, PAGE_SIZE); - if (error) - goto fail; - } else { - bzero(fakept, sizeof(fakept)); - error = blk_write(di, (char *)&fakept, 0, PAGE_SIZE); - if (error) - goto fail; - /* flush, in case we reuse fakept in the same block */ - error = blk_flush(di); - if (error) - goto fail; - } + + pd = (uint64_t *)PHYS_TO_DMAP(pdp[i] & PG_FRAME); + error = blk_write(di, (char *)pd, 0, PAGE_SIZE); + if (error) + goto fail; + error = blk_flush(di); + if (error) + goto fail; } /* Dump memory chunks */ @@ -374,12 +396,21 @@ minidumpsys(struct dumperinfo *di) if (error < 0) error = -error; - if (error == ECANCELED) - printf("\nDump aborted\n"); - else if (error == ENOSPC) - printf("\nDump failed. Partition too small.\n"); + printf("\n"); + if (error == ENOSPC) { + printf("Dump map grown while dumping. "); + if (retry_count < 5) { + printf("Retrying...\n"); + goto retry; + } + printf("Dump failed.\n"); + } + else if (error == ECANCELED) + printf("Dump aborted\n"); + else if (error == E2BIG) + printf("Dump failed. Partition too small.\n"); else - printf("\n** DUMP FAILED (ERROR %d) **\n", error); + printf("** DUMP FAILED (ERROR %d) **\n", error); } void Modified: user/nwhitehorn/ps3/amd64/amd64/mp_machdep.c ============================================================================== --- user/nwhitehorn/ps3/amd64/amd64/mp_machdep.c Fri Nov 12 05:12:38 2010 (r215163) +++ user/nwhitehorn/ps3/amd64/amd64/mp_machdep.c Fri Nov 12 05:13:46 2010 (r215164) @@ -239,6 +239,9 @@ topo_probe_0x4(void) cpu_logical++; } + KASSERT(cpu_cores >= 1 && cpu_logical >= 1, + ("topo_probe_0x4 couldn't find BSP")); + cpu_cores /= cpu_logical; hyperthreading_cpus = cpu_logical; } @@ -310,7 +313,9 @@ topo_probe(void) return; logical_cpus_mask = 0; - if (cpu_vendor_id == CPU_VENDOR_AMD) + if (mp_ncpus <= 1) + cpu_cores = cpu_logical = 1; + else if (cpu_vendor_id == CPU_VENDOR_AMD) topo_probe_amd(); else if (cpu_vendor_id == CPU_VENDOR_INTEL) { /* @@ -332,10 +337,8 @@ topo_probe(void) * Fallback: assume each logical CPU is in separate * physical package. That is, no multi-core, no SMT. */ - if (cpu_cores == 0) - cpu_cores = 1; - if (cpu_logical == 0) - cpu_logical = 1; + if (cpu_cores == 0 || cpu_logical == 0) + cpu_cores = cpu_logical = 1; cpu_topo_probed = 1; } @@ -419,7 +422,7 @@ cpu_add(u_int apic_id, char boot_cpu) } if (mp_ncpus < MAXCPU) { mp_ncpus++; - mp_maxid = mp_ncpus -1; + mp_maxid = mp_ncpus - 1; } if (bootverbose) printf("SMP: Added CPU %d (%s)\n", apic_id, boot_cpu ? "BSP" : @@ -442,7 +445,7 @@ cpu_mp_setmaxid(void) else KASSERT(mp_maxid >= mp_ncpus - 1, ("%s: counters out of sync: max %d, count %d", __func__, - mp_maxid, mp_ncpus)); + mp_maxid, mp_ncpus)); } int Modified: user/nwhitehorn/ps3/amd64/include/apm_bios.h ============================================================================== --- user/nwhitehorn/ps3/amd64/include/apm_bios.h Fri Nov 12 05:12:38 2010 (r215163) +++ user/nwhitehorn/ps3/amd64/include/apm_bios.h Fri Nov 12 05:13:46 2010 (r215164) @@ -1,264 +1,6 @@ /*- - * APM (Advanced Power Management) BIOS Device Driver - * - * Copyright (c) 1994-1995 by HOSOKAWA, Tatsumi - * - * This software may be used, modified, copied, and distributed, in - * both source and binary form provided that the above copyright and - * these terms are retained. Under no circumstances is the author - * responsible for the proper functioning of this software, nor does - * the author assume any responsibility for damages incurred with its - * use. - * - * Aug, 1994 Implemented on FreeBSD 1.1.5.1R (Toshiba AVS001WD) - * - * $FreeBSD$ + * This file is in the public domain. */ +/* $FreeBSD$ */ -#ifndef _MACHINE_APM_BIOS_H_ -#define _MACHINE_APM_BIOS_H_ - -#ifndef _KERNEL -#include -#endif -#include - -/* BIOS id */ -#define APM_BIOS 0x53 -#define APM_INT 0x15 - -/* APM flags */ -#define APM_16BIT_SUPPORT 0x01 -#define APM_32BIT_SUPPORT 0x02 -#define APM_CPUIDLE_SLOW 0x04 -#define APM_DISABLED 0x08 -#define APM_DISENGAGED 0x10 - -/* APM initializer physical address */ -#define APM_OURADDR 0x00080000 - -/* APM functions */ -#define APM_INSTCHECK 0x00 -#define APM_REALCONNECT 0x01 -#define APM_PROT16CONNECT 0x02 -#define APM_PROT32CONNECT 0x03 -#define APM_DISCONNECT 0x04 -#define APM_CPUIDLE 0x05 -#define APM_CPUBUSY 0x06 -#define APM_SETPWSTATE 0x07 -#define APM_ENABLEDISABLEPM 0x08 -#define APM_RESTOREDEFAULT 0x09 -#define APM_GETPWSTATUS 0x0a -#define APM_GETPMEVENT 0x0b -#define APM_GETPWSTATE 0x0c -#define APM_ENABLEDISABLEDPM 0x0d -#define APM_DRVVERSION 0x0e -#define APM_ENGAGEDISENGAGEPM 0x0f -#define APM_GETCAPABILITIES 0x10 -#define APM_RESUMETIMER 0x11 -#define APM_RESUMEONRING 0x12 -#define APM_TIMERREQUESTS 0x13 -#define APM_OEMFUNC 0x80 - -/* error code */ -#define APME_OK 0x00 -#define APME_PMDISABLED 0x01 -#define APME_REALESTABLISHED 0x02 -#define APME_NOTCONNECTED 0x03 -#define APME_PROT16ESTABLISHED 0x05 -#define APME_PROT16NOTSUPPORTED 0x06 -#define APME_PROT32ESTABLISHED 0x07 -#define APME_PROT32NOTDUPPORTED 0x08 -#define APME_UNKNOWNDEVICEID 0x09 -#define APME_OUTOFRANGE 0x0a -#define APME_NOTENGAGED 0x0b -#define APME_CANTENTERSTATE 0x60 -#define APME_NOPMEVENT 0x80 -#define APME_NOAPMPRESENT 0x86 - - -/* device code */ -#define PMDV_APMBIOS 0x0000 -#define PMDV_ALLDEV 0x0001 -#define PMDV_DISP0 0x0100 -#define PMDV_DISP1 0x0101 -#define PMDV_DISPALL 0x01ff -#define PMDV_2NDSTORAGE0 0x0200 -#define PMDV_2NDSTORAGE1 0x0201 -#define PMDV_2NDSTORAGE2 0x0202 -#define PMDV_2NDSTORAGE3 0x0203 -#define PMDV_PARALLEL0 0x0300 -#define PMDV_PARALLEL1 0x0301 -#define PMDV_SERIAL0 0x0400 -#define PMDV_SERIAL1 0x0401 -#define PMDV_SERIAL2 0x0402 -#define PMDV_SERIAL3 0x0403 -#define PMDV_SERIAL4 0x0404 -#define PMDV_SERIAL5 0x0405 -#define PMDV_SERIAL6 0x0406 -#define PMDV_SERIAL7 0x0407 -#define PMDV_NET0 0x0500 -#define PMDV_NET1 0x0501 -#define PMDV_NET2 0x0502 -#define PMDV_NET3 0x0503 -#define PMDV_PCMCIA0 0x0600 -#define PMDV_PCMCIA1 0x0601 -#define PMDV_PCMCIA2 0x0602 -#define PMDV_PCMCIA3 0x0603 -/* 0x0700 - 0x7fff Reserved */ -#define PMDV_BATT_BASE 0x8000 -#define PMDV_BATT0 0x8001 -#define PMDV_BATT1 0x8002 -#define PMDV_BATT_ALL 0x80ff -/* 0x8100 - 0xdfff Reserved */ -/* 0xe000 - 0xefff OEM-defined power device IDs */ -/* 0xf000 - 0xffff Reserved */ - -/* Power state */ -#define PMST_APMENABLED 0x0000 -#define PMST_STANDBY 0x0001 -#define PMST_SUSPEND 0x0002 -#define PMST_OFF 0x0003 -#define PMST_LASTREQNOTIFY 0x0004 -#define PMST_LASTREQREJECT 0x0005 -/* 0x0006 - 0x001f Reserved system states */ -/* 0x0020 - 0x003f OEM-defined system states */ -/* 0x0040 - 0x007f OEM-defined device states */ -/* 0x0080 - 0xffff Reserved device states */ - -#if !defined(ASSEMBLER) && !defined(INITIALIZER) - -/* C definitions */ -struct apmhook { - struct apmhook *ah_next; - int (*ah_fun)(void *ah_arg); - void *ah_arg; - const char *ah_name; - int ah_order; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 05:22:28 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0EF8F106564A; Fri, 12 Nov 2010 05:22:28 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id EEFD18FC08; Fri, 12 Nov 2010 05:22:27 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC5MRv1096976; Fri, 12 Nov 2010 05:22:27 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC5MRub096966; Fri, 12 Nov 2010 05:22:27 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011120522.oAC5MRub096966@svn.freebsd.org> From: David Xu Date: Fri, 12 Nov 2010 05:22:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215165 - in user/davidxu/libthr: include lib/libthr lib/libthr/thread sys/kern sys/sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 05:22:28 -0000 Author: davidxu Date: Fri Nov 12 05:22:27 2010 New Revision: 215165 URL: http://svn.freebsd.org/changeset/base/215165 Log: - Move pthread types declarations into sys/sys/_pthreadtypes.h. - Rework robust mutex to only use lock-word in mutex. - Move priority ceiling into flag fields. These two changes make sizeof the pthread_mutex 24 bytes, I may still tweak it to reserve some space for future, but I may not let it exceed than 32 bytes which is the cache line size of PIII. Modified: user/davidxu/libthr/include/pthread.h user/davidxu/libthr/lib/libthr/Makefile user/davidxu/libthr/lib/libthr/thread/thr_cond.c user/davidxu/libthr/lib/libthr/thread/thr_mutex.c user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c user/davidxu/libthr/lib/libthr/thread/thr_umtx.c user/davidxu/libthr/lib/libthr/thread/thr_umtx.h user/davidxu/libthr/sys/kern/kern_umtx.c user/davidxu/libthr/sys/sys/_pthreadtypes.h user/davidxu/libthr/sys/sys/_umtx.h user/davidxu/libthr/sys/sys/umtx.h Modified: user/davidxu/libthr/include/pthread.h ============================================================================== --- user/davidxu/libthr/include/pthread.h Fri Nov 12 05:13:46 2010 (r215164) +++ user/davidxu/libthr/include/pthread.h Fri Nov 12 05:22:27 2010 (r215165) @@ -41,7 +41,7 @@ #include #include #include -#include +#include #include #include #include @@ -97,15 +97,23 @@ /* * Static initialization values. */ -#define PTHREAD_MUTEX_INITIALIZER \ - {PTHREAD_MUTEX_DEFAULT, 0, 0, NULL, 0, 0x0010, {0, 0}, 0, 0} +#if BYTE_ORDER == LITTLE_ENDIAN +#define PTHREAD_MUTEX_INITIALIZER \ + {PTHREAD_MUTEX_DEFAULT, 0, 0, {NULL}, 0, 0x0020, \ + {0, 0}} +#else +#define PTHREAD_MUTEX_INITIALIZER \ + {PTHREAD_MUTEX_DEFAULT, 0, 0, {NULL}, 0, {0, 0}, \ + 0x0020} +#endif #define PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP \ - {PTHREAD_MUTEX_DEFAULT, 2000, 0, NULL, 0, 0x0010, {0, 0}, 0, 0} + {PTHREAD_MUTEX_DEFAULT, 2000, 0, {NULL}, 0, 0x0010, {0, 0}} #define PTHREAD_COND_INITIALIZER \ {0, 0, 0, 0, 0, 0, 0, 0, 0, CLOCK_REALTIME} -#define PTHREAD_RWLOCK_INITIALIZER { .__owner.__ownertd = 0, 0, 0, 0, 0} + +#define PTHREAD_RWLOCK_INITIALIZER { {NULL}, 0, 0, 0, 0} /* * Default attribute arguments (draft 4, deprecated). @@ -156,57 +164,6 @@ struct _pthread_cleanup_info { __uintptr_t __pthread_cleanup_pad[8]; }; -struct pthread_mutex { - __int16_t __flags; - __int16_t __spinloops; - __int32_t __recurse; - struct pthread *__ownertd; - /* kernel umtx part */ - volatile __uint32_t __lockword; - __uint32_t __lockflags; - __uint32_t __ceilings[2]; - __uint8_t __robstate; - __uint8_t __pad1; -}; - -struct pthread_cond { - __uint32_t __lock; - int __waiters; - int __signals; - __uint32_t __seq; - __uint64_t __broadcast_seq; - int __refcount; - int __destroying; - /* kernel part */ - __uint32_t __kern_has_waiters; - __uint32_t __flags; - __uint32_t __clock_id; -}; - -struct pthread_rwlock { - union { - __uint32_t __ownertid; - struct pthread *__ownertd; - char __pad[8]; - } __owner; - __uint32_t __state; - __uint32_t __flags; - __uint32_t __blocked_readers; - __uint32_t __blocked_writers; -}; - -struct pthread_barrier { - pthread_mutex_t __lock; - pthread_cond_t __cond; - __uint64_t __cycle; - __uint32_t __count; - __uint32_t __waiters; -}; - -struct pthread_spinlock { - __uint32_t __lock; -}; - /* * Thread function prototype definitions: */ Modified: user/davidxu/libthr/lib/libthr/Makefile ============================================================================== --- user/davidxu/libthr/lib/libthr/Makefile Fri Nov 12 05:13:46 2010 (r215164) +++ user/davidxu/libthr/lib/libthr/Makefile Fri Nov 12 05:22:27 2010 (r215165) @@ -40,7 +40,7 @@ MAN= libthr.3 # enable extra internal consistancy checks CFLAGS+=-D_PTHREADS_INVARIANTS -CFLAGS+=-g -O0 +#CFLAGS+=-g -O0 PRECIOUSLIB= Modified: user/davidxu/libthr/lib/libthr/thread/thr_cond.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_cond.c Fri Nov 12 05:13:46 2010 (r215164) +++ user/davidxu/libthr/lib/libthr/thread/thr_cond.c Fri Nov 12 05:22:27 2010 (r215165) @@ -170,7 +170,7 @@ cond_wait_kernel(struct pthread_cond *cv error2 = _mutex_cv_lock(mp, recurse); if (error2 == 0 && cancel) _thr_testcancel(curthread); - if (error2 == EINTR) + if (error == EINTR) error = 0; } else { /* We know that it didn't unlock the mutex. */ @@ -229,17 +229,14 @@ cond_wait_user(struct pthread_cond *cvp, _thr_umtx_lock_spin(&cvp->__lock); if (cvp->__broadcast_seq != bseq) { - cvp->__refcount--; error = 0; break; } if (cvp->__signals > 0) { - cvp->__refcount--; cvp->__signals--; error = 0; break; } else if (error == ETIMEDOUT) { - cvp->__refcount--; cvp->__waiters--; break; } else if (cancel && SHOULD_CANCEL(curthread) && @@ -255,6 +252,7 @@ cond_wait_user(struct pthread_cond *cvp, _pthread_exit(PTHREAD_CANCELED); } } + cvp->__refcount--; if (cvp->__destroying && cvp->__refcount == 0) { cvp->__destroying = 2; _thr_umtx_wake(&cvp->__destroying, INT_MAX, CV_PSHARED(cvp)); @@ -280,14 +278,14 @@ cond_wait_common(struct pthread_cond *cv /* * If the thread is real-time thread or if it holds priority mutex, - * it should use kernel based cv, because the cv internal lock - * does not protect priority, it can cause priority inversion. - * Note that if it is robust type of mutex, we should not use - * the internal lock too, because it is not robust. + * it should use kernel based cv, because the user cv's internal lock + * does not protect priority inversion, note that if mutex is robust + * type of mutex, we should not use user cv too, because the internal + * lock is not robust. */ if (curthread->attr.sched_policy != SCHED_OTHER || curthread->priority_mutex_count != 0 || - (mp->__lockflags & (UMUTEX_PRIO_PROTECT|UMUTEX_PRIO_INHERIT| + (mp->__lockflags & (UMUTEX_PRIO_PROTECT2|UMUTEX_PRIO_INHERIT| UMUTEX_ROBUST)) != 0) return cond_wait_kernel(cvp, mp, abstime, cancel); else @@ -405,7 +403,7 @@ cond_init_old(pthread_cond_old_t *cond, int error = 0; if ((cvp = (struct pthread_cond *) - calloc(1, sizeof(struct pthread_cond))) == NULL) { + malloc(sizeof(struct pthread_cond))) == NULL) { error = ENOMEM; } else { error = cond_init(cvp, cond_attr); Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutex.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Fri Nov 12 05:13:46 2010 (r215164) +++ user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Fri Nov 12 05:22:27 2010 (r215165) @@ -61,7 +61,7 @@ int _pthread_mutex_setyieldloops_np(pthr int _pthread_mutex_getyieldloops_np(pthread_mutex_t *mutex, int *count); int _pthread_mutex_setyieldloops_np(pthread_mutex_t *mutex, int count); -static int mutex_self_trylock(struct pthread_mutex * ); +static int mutex_self_trylock(struct pthread_mutex *); static int mutex_self_lock(struct pthread_mutex *, const struct timespec *abstime); static int mutex_unlock_common(struct pthread_mutex *); @@ -112,6 +112,10 @@ mutex_init(struct pthread_mutex *mp, { const struct pthread_mutex_attr *attr; + /* Must align at integer boundary */ + if (((uintptr_t)mp) & 0x03) + return (EINVAL); + if (mutex_attr == NULL) { attr = &_pthread_mutexattr_default; } else { @@ -125,7 +129,7 @@ mutex_init(struct pthread_mutex *mp, } memset(mp, 0, sizeof(*mp)); mp->__flags = attr->m_type; - mp->__ownertd = NULL; + mp->__ownerdata.__ownertd = NULL; mp->__recurse = 0; mp->__spinloops = 0; switch(attr->m_protocol) { @@ -139,8 +143,8 @@ mutex_init(struct pthread_mutex *mp, mp->__lockflags = UMUTEX_PRIO_INHERIT; break; case PTHREAD_PRIO_PROTECT: - mp->__lockword = UMUTEX_CONTESTED; - mp->__lockflags = UMUTEX_PRIO_PROTECT; + mp->__lockword = UMUTEX_UNOWNED; + mp->__lockflags = UMUTEX_PRIO_PROTECT2; if (attr->m_pshared == 0) mp->__lockflags |= UMUTEX_SIMPLE; mp->__ceilings[0] = attr->m_ceiling; @@ -178,10 +182,10 @@ _mutex_fork(struct pthread *curthread) } int -_pthread_mutex_destroy(pthread_mutex_t *mutex) +_pthread_mutex_destroy(pthread_mutex_t *mp) { - int error = 0; - return (error); + memset(mp, 0, sizeof(*mp)); + return (0); } static int @@ -191,9 +195,7 @@ mutex_trylock_common(struct pthread_mute uint32_t id; int error; - if (mp->__lockflags & UMUTEX_ROBUST) - abort(); - if ((mp->__lockflags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT | + if ((mp->__lockflags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT2 | UMUTEX_PRIO_INHERIT)) == 0) { if (mp->__lockflags & UMUTEX_SIMPLE) id = UMUTEX_SIMPLE_OWNER; @@ -201,19 +203,19 @@ mutex_trylock_common(struct pthread_mute id = TID(curthread); if (atomic_cmpset_acq_32(&mp->__lockword, UMUTEX_UNOWNED, id)) { - mp->__ownertd = curthread; + mp->__ownerdata.__ownertd = curthread; return (0); } if (mp->__lockword == UMUTEX_CONTESTED) { if (atomic_cmpset_acq_32(&mp->__lockword, UMUTEX_CONTESTED, id|UMUTEX_CONTESTED)) { - mp->__ownertd = curthread; + mp->__ownerdata.__ownertd = curthread; return (0); } } - } else if (mp->__lockflags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT)) { + } else if (mp->__lockflags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT2)) { if (mp->__lockflags & UMUTEX_SIMPLE) { - if (mp->__ownertd == curthread) + if (mp->__ownerdata.__ownertd == curthread) return mutex_self_trylock(mp); } else { if ((mp->__lockword & UMUTEX_OWNER_MASK) == @@ -228,8 +230,7 @@ mutex_trylock_common(struct pthread_mute return (error); } else if (mp->__lockflags & UMUTEX_PRIO_INHERIT) { id = TID(curthread); - if (atomic_cmpset_acq_32(&mp->__lockflags, UMUTEX_UNOWNED, id - )) { + if (atomic_cmpset_acq_32(&mp->__lockword, UMUTEX_UNOWNED, id)){ enqueue_mutex(curthread, mp); return (0); } @@ -237,7 +238,6 @@ mutex_trylock_common(struct pthread_mute return mutex_self_trylock(mp); return (EBUSY); } - return (EINVAL); } @@ -273,7 +273,7 @@ mutex_lock_sleep(struct pthread_mutex *m */ if (__predict_false( (mp->__lockflags & - (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT | + (UMUTEX_PRIO_PROTECT2 | UMUTEX_PRIO_INHERIT | UMUTEX_ROBUST)) != 0)) goto sleep_in_kernel; @@ -318,23 +318,21 @@ _mutex_lock_common(struct pthread_mutex struct pthread *curthread = _get_curthread(); uint32_t id; - if (mp->__lockflags & UMUTEX_ROBUST) - abort(); if ((mp->__lockflags & UMUTEX_SIMPLE) != 0) id = UMUTEX_SIMPLE_OWNER; else id = TID(curthread); - if ((mp->__lockflags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT | + if ((mp->__lockflags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT2 | UMUTEX_PRIO_INHERIT)) == 0) { if (atomic_cmpset_acq_32(&mp->__lockword, UMUTEX_UNOWNED, id)) { - mp->__ownertd = curthread; + mp->__ownerdata.__ownertd = curthread; return (0); } if (mp->__lockword == UMUTEX_CONTESTED) { if (atomic_cmpset_acq_32(&mp->__lockword, UMUTEX_CONTESTED, id|UMUTEX_CONTESTED)) { - mp->__ownertd = curthread; + mp->__ownerdata.__ownertd = curthread; return (0); } } @@ -356,7 +354,7 @@ _mutex_lock_common(struct pthread_mutex return (EINVAL); if (mp->__lockflags & UMUTEX_SIMPLE) { - if (mp->__ownertd == curthread) + if (mp->__ownerdata.__ownertd == curthread) return mutex_self_lock(mp, abstime); } else { if ((mp->__lockword & UMUTEX_OWNER_MASK) == TID(curthread)) @@ -511,7 +509,7 @@ _mutex_owned(struct pthread *curthread, * Check if the running thread is not the owner of the mutex. */ if ((mp->__lockflags & UMUTEX_SIMPLE) != 0) { - if (__predict_false(mp->__ownertd != curthread)) + if (__predict_false(mp->__ownerdata.__ownertd != curthread)) return (EPERM); } else { if ((mp->__lockword & UMUTEX_OWNER_MASK) != TID(curthread)) @@ -543,7 +541,7 @@ _mutex_unlock_common(struct pthread_mute else id = TID(curthread); - if ((mp->__lockflags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT | + if ((mp->__lockflags & (UMUTEX_ROBUST | UMUTEX_PRIO_PROTECT2 | UMUTEX_PRIO_INHERIT)) == 0) { if (atomic_cmpset_acq_32(&mp->__lockword, id, UMUTEX_UNOWNED)) { @@ -638,7 +636,7 @@ _pthread_mutex_getprioceiling(pthread_mu { int error; - if ((mp->__lockflags & UMUTEX_PRIO_PROTECT) == 0) + if ((mp->__lockflags & UMUTEX_PRIO_PROTECT2) == 0) error = EINVAL; else { *prioceiling = mp->__ceilings[0]; @@ -656,14 +654,15 @@ _pthread_mutex_setprioceiling(pthread_mu struct mutex_link *ml, *ml1, *ml2; int error; - if ((mp->__lockflags & UMUTEX_PRIO_PROTECT) == 0) + if ((mp->__lockflags & UMUTEX_PRIO_PROTECT2) == 0) return (EINVAL); error = __thr_umutex_set_ceiling((struct umutex *)&mp->__lockword, ceiling, old_ceiling); if (error != 0) return (error); - if (((mp->__lockflags & UMUTEX_SIMPLE) && (mp->__ownertd == curthread)) || + if (((mp->__lockflags & UMUTEX_SIMPLE) && + (mp->__ownerdata.__ownertd == curthread)) || (mp->__lockword & UMUTEX_OWNER_MASK) == TID(curthread)) { TAILQ_FOREACH(ml, &curthread->pp_mutexq, qe) { if (ml->mutexp == mp) @@ -705,6 +704,19 @@ _pthread_mutex_setspinloops_np(pthread_m } int +_pthread_mutex_getyieldloops_np(pthread_mutex_t *mutex, int *count) +{ + *count = 0; + return (0); +} + +int +_pthread_mutex_setyieldloops_np(pthread_mutex_t *mutex, int count) +{ + return (0); +} + +int _pthread_mutex_isowned_np(pthread_mutex_t *mp) { return (_mutex_owned(_get_curthread(), mp) == 0); @@ -716,7 +728,7 @@ _pthread_mutex_consistent(pthread_mutex_ if (_mutex_owned(_get_curthread(), mp) == 0) { if (mp->__lockflags & UMUTEX_ROBUST) { - mp->__robstate = UMUTEX_ROBST_NORMAL; + atomic_clear_32(&mp->__lockword, UMUTEX_OWNER_DEAD); mp->__recurse = 0; return (0); } @@ -791,13 +803,13 @@ enqueue_mutex(struct pthread *curthread, struct mutex_link *ml; if ((mp->__lockflags & USYNC_PROCESS_SHARED) == 0) - mp->__ownertd = curthread; + mp->__ownerdata.__ownertd = curthread; /* * For PP mutex, we should restore previous priority after a PP * mutex is unlocked, so we should remember every PP mutex. */ - if ((mp->__lockflags & UMUTEX_PRIO_PROTECT) != 0) { + if ((mp->__lockflags & UMUTEX_PRIO_PROTECT2) != 0) { curthread->priority_mutex_count++; ml = _thr_mutex_link_alloc(); ml->mutexp = mp; @@ -825,9 +837,9 @@ dequeue_mutex(struct pthread *curthread, struct mutex_link *ml; if ((mp->__lockflags & USYNC_PROCESS_SHARED) == 0) - mp->__ownertd = NULL; + mp->__ownerdata.__ownertd = NULL; - if ((mp->__lockflags & UMUTEX_PRIO_PROTECT) != 0) { + if ((mp->__lockflags & UMUTEX_PRIO_PROTECT2) != 0) { curthread->priority_mutex_count--; TAILQ_FOREACH(ml, &curthread->pp_mutexq, qe) { if (ml->mutexp == mp) { @@ -868,14 +880,13 @@ _mutex_owned_old(struct pthread *curthre static int mutex_init_old(pthread_mutex_old_t *mutex, - const struct pthread_mutex_attr *mutex_attr, - void *(calloc_cb)(size_t, size_t)) + const struct pthread_mutex_attr *mutex_attr) { struct pthread_mutex *mp; int error; if ((mp = (struct pthread_mutex *) - calloc_cb(1, sizeof(struct pthread_mutex))) == NULL) { + malloc(sizeof(struct pthread_mutex))) == NULL) { return (ENOMEM); } error = mutex_init(mp, mutex_attr); @@ -905,11 +916,10 @@ init_static(struct pthread *thread, pthr THR_LOCK_ACQUIRE(thread, &_mutex_static_lock); if (*mutex == THR_MUTEX_INITIALIZER) { - error = mutex_init_old(mutex, &_pthread_mutexattr_default, - calloc); + error = mutex_init_old(mutex, &_pthread_mutexattr_default); } else if (*mutex == THR_ADAPTIVE_MUTEX_INITIALIZER) { - error = mutex_init_old(mutex, &_pthread_mutexattr_adaptive_default, - calloc); + error = mutex_init_old(mutex, + &_pthread_mutexattr_adaptive_default); } else error = 0; @@ -941,7 +951,7 @@ int _pthread_mutex_init_1_0(pthread_mutex_old_t *mutex, const pthread_mutexattr_t *mutex_attr) { - return mutex_init_old(mutex, mutex_attr ? *mutex_attr : NULL, calloc); + return mutex_init_old(mutex, mutex_attr ? *mutex_attr : NULL); } int @@ -1065,7 +1075,7 @@ _pthread_mutex_getprioceiling_1_0(pthrea mp = *mutex; if ((mp <= THR_MUTEX_DESTROYED) || - (mp->__lockflags & UMUTEX_PRIO_PROTECT) == 0) + (mp->__lockflags & UMUTEX_PRIO_PROTECT2) == 0) error = EINVAL; else { *prioceiling = mp->__ceilings[0]; @@ -1083,7 +1093,7 @@ _pthread_mutex_setprioceiling_1_0(pthrea mp = *mutex; if ((mp <= THR_MUTEX_DESTROYED) || - (mp->__lockflags & UMUTEX_PRIO_PROTECT) == 0) + (mp->__lockflags & UMUTEX_PRIO_PROTECT2) == 0) return (EINVAL); return _pthread_mutex_setprioceiling(mp, ceiling, old_ceiling); } @@ -1110,10 +1120,12 @@ _pthread_mutex_init_calloc_cb(pthread_mu FB10_COMPAT(_pthread_mutex_destroy_1_0, pthread_mutex_destroy); FB10_COMPAT(_pthread_mutex_getprioceiling_1_0, pthread_mutex_getprioceiling); FB10_COMPAT(_pthread_mutex_getspinloops_np_1_0, pthread_mutex_getspinloops_np); +FB10_COMPAT(_pthread_mutex_getyieldloops_np_1_0, pthread_mutex_getyieldloops_np); FB10_COMPAT(_pthread_mutex_init_1_0, pthread_mutex_init); FB10_COMPAT(_pthread_mutex_lock_1_0, pthread_mutex_lock); -FB10_COMPAT(_pthread_mutex_setspinloops_np_1_0, pthread_mutex_setspinloops_np); FB10_COMPAT(_pthread_mutex_setprioceiling_1_0, pthread_mutex_setprioceiling); +FB10_COMPAT(_pthread_mutex_setspinloops_np_1_0, pthread_mutex_setspinloops_np); +FB10_COMPAT(_pthread_mutex_setyieldloops_np_1_0, pthread_mutex_setyieldloops_np); FB10_COMPAT(_pthread_mutex_timedlock_1_0, pthread_mutex_timedlock); FB10_COMPAT(_pthread_mutex_trylock_1_0, pthread_mutex_trylock); FB10_COMPAT(_pthread_mutex_unlock_1_0, pthread_mutex_unlock); Modified: user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c Fri Nov 12 05:13:46 2010 (r215164) +++ user/davidxu/libthr/lib/libthr/thread/thr_rwlock.c Fri Nov 12 05:22:27 2010 (r215165) @@ -218,9 +218,9 @@ static void rwlock_setowner(struct pthread_rwlock *rwlp, struct pthread *td) { if (!RWL_PSHARED(rwlp)) - rwlp->__owner.__ownertd = td; + rwlp->__ownerdata.__ownertd = td; else - rwlp->__owner.__ownertid = TID(td); + rwlp->__ownerdata.__ownertid = TID(td); } int @@ -310,11 +310,11 @@ _pthread_rwlock_unlock(pthread_rwlock_t state = rwlp->__state; if (state & URWLOCK_WRITE_OWNER) { if (RWL_PSHARED(rwlp) && - rwlp->__owner.__ownertid == TID(curthread)) { - rwlp->__owner.__ownertid = 0; + rwlp->__ownerdata.__ownertid == TID(curthread)) { + rwlp->__ownerdata.__ownertid = 0; } else if (!RWL_PSHARED(rwlp) && - rwlp->__owner.__ownertd == curthread) { - rwlp->__owner.__ownertd = NULL; + rwlp->__ownerdata.__ownertd == curthread) { + rwlp->__ownerdata.__ownertd = NULL; } else return (EPERM); } Modified: user/davidxu/libthr/lib/libthr/thread/thr_umtx.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_umtx.c Fri Nov 12 05:13:46 2010 (r215164) +++ user/davidxu/libthr/lib/libthr/thread/thr_umtx.c Fri Nov 12 05:22:27 2010 (r215165) @@ -59,7 +59,7 @@ __thr_umutex_lock(struct umutex *mtx, ui { uint32_t owner; - if ((mtx->m_flags & (UMUTEX_PRIO_PROTECT | + if ((mtx->m_flags & (UMUTEX_PRIO_PROTECT2 | UMUTEX_PRIO_INHERIT | UMUTEX_ROBUST)) == 0) { for (;;) { /* wait in kernel */ @@ -84,7 +84,7 @@ __thr_umutex_timedlock(struct umutex *mt for (;;) { if ((mtx->m_flags & - (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT | UMUTEX_ROBUST)) == 0) { + (UMUTEX_PRIO_PROTECT2 | UMUTEX_PRIO_INHERIT | UMUTEX_ROBUST)) == 0) { /* wait in kernel */ ret = _umtx_op_err(mtx, UMTX_OP_MUTEX_WAIT, @@ -114,7 +114,7 @@ __thr_umutex_unlock(struct umutex *mtx, { #ifndef __ia64__ /* XXX this logic has a race-condition on ia64. */ - if ((mtx->m_flags & (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT | UMUTEX_ROBUST)) == 0) { + if ((mtx->m_flags & (UMUTEX_PRIO_PROTECT2 | UMUTEX_PRIO_INHERIT | UMUTEX_ROBUST)) == 0) { atomic_cmpset_rel_32(&mtx->m_owner, id | UMUTEX_CONTESTED, UMUTEX_CONTESTED); return _umtx_op_err(mtx, UMTX_OP_MUTEX_WAKE, 0, 0, 0); Modified: user/davidxu/libthr/lib/libthr/thread/thr_umtx.h ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_umtx.h Fri Nov 12 05:13:46 2010 (r215164) +++ user/davidxu/libthr/lib/libthr/thread/thr_umtx.h Fri Nov 12 05:22:27 2010 (r215165) @@ -32,7 +32,7 @@ #include #include -#define DEFAULT_UMUTEX {0,0,{0,0},0,{0,0,0},{0,0,0}} +#define DEFAULT_UMUTEX {0,0, {0, 0}, {0, 0, 0, 0}} #define DEFAULT_URWLOCK {0,0,0,0,{0,0,0,0}} typedef uint32_t umtx_t; @@ -81,7 +81,7 @@ _thr_umutex_trylock(struct umutex *mtx, { if (atomic_cmpset_acq_32(&mtx->m_owner, UMUTEX_UNOWNED, id)) return (0); - if ((mtx->m_flags & UMUTEX_PRIO_PROTECT) == 0) + if ((mtx->m_flags & UMUTEX_PRIO_PROTECT2) == 0) return (EBUSY); return (__thr_umutex_trylock(mtx)); } @@ -92,7 +92,7 @@ _thr_umutex_trylock2(struct umutex *mtx, if (atomic_cmpset_acq_32(&mtx->m_owner, UMUTEX_UNOWNED, id) != 0) return (0); if ((uint32_t)mtx->m_owner == UMUTEX_CONTESTED && - __predict_true((mtx->m_flags & (UMUTEX_PRIO_PROTECT | UMUTEX_PRIO_INHERIT)) == 0)) + __predict_true((mtx->m_flags & (UMUTEX_PRIO_PROTECT2 | UMUTEX_PRIO_INHERIT)) == 0)) if (atomic_cmpset_acq_32(&mtx->m_owner, UMUTEX_CONTESTED, id | UMUTEX_CONTESTED)) return (0); return (EBUSY); Modified: user/davidxu/libthr/sys/kern/kern_umtx.c ============================================================================== --- user/davidxu/libthr/sys/kern/kern_umtx.c Fri Nov 12 05:13:46 2010 (r215164) +++ user/davidxu/libthr/sys/kern/kern_umtx.c Fri Nov 12 05:22:27 2010 (r215165) @@ -1247,11 +1247,54 @@ kern_umtx_wake(struct thread *td, void * return (0); } +static uint32_t +calc_lockword(uint32_t oldval, uint16_t flags, int qlen, int td_exit, int *nwake) +{ + uint32_t newval; + + if (flags & UMUTEX_ROBUST) { + if (td_exit) { + /* + * Thread is exiting, but did not unlock the mutex, + * mark it in OWNER_DEAD state. + */ + newval = (oldval & ~UMUTEX_OWNER_MASK) | UMUTEX_OWNER_DEAD; + *nwake = 1; + } else if ((oldval & UMUTEX_OWNER_DEAD) != 0) { + /* + * if user unlocks it, and previous owner was dead, + * mark it in INCONSISTENT state. + */ + newval = (oldval & ~UMUTEX_OWNER_MASK) | UMUTEX_INCONSISTENT; + *nwake = INT_MAX; + return (newval); + } else { + newval = oldval & ~UMUTEX_OWNER_MASK; + *nwake = 1; + } + } else { + *nwake = 1; + newval = oldval & ~UMUTEX_OWNER_MASK; + } + + /* + * 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. + */ + if (qlen <= 1) + newval &= ~UMUTEX_CONTESTED; + else + newval |= UMUTEX_CONTESTED; + + return (newval); +} + /* * Lock PTHREAD_PRIO_NONE protocol POSIX mutex. */ static int -_do_lock_normal(struct thread *td, struct umutex *m, uint32_t flags, int timo, +_do_lock_normal(struct thread *td, struct umutex *m, uint16_t flags, int timo, int mode) { struct umtx_q *uq; @@ -1270,42 +1313,36 @@ _do_lock_normal(struct thread *td, struc */ for (;;) { owner = fuword32(__DEVOLATILE(void *, &m->m_owner)); - if (mode == _UMUTEX_WAIT) { - if (owner == UMUTEX_UNOWNED || owner == UMUTEX_CONTESTED) + if ((flags & UMUTEX_ROBUST) != 0 && + (owner & UMUTEX_OWNER_MASK) == UMUTEX_INCONSISTENT) { + return (ENOTRECOVERABLE); + } + + if ((owner & UMUTEX_OWNER_MASK) == 0) { + if (mode == _UMUTEX_WAIT) return (0); - } else { /* - * Try the uncontested case. This should be done in userland. + * Try lock it. */ - owner = casuword32(&m->m_owner, UMUTEX_UNOWNED, id); - + old = casuword32(&m->m_owner, owner, owner|id); /* The acquire succeeded. */ - if (owner == UMUTEX_UNOWNED) + if (owner == old) { + if ((flags & UMUTEX_ROBUST) != 0 && + (owner & UMUTEX_OWNER_DEAD) != 0) + return (EOWNERDEAD); return (0); + } /* The address was invalid. */ - if (owner == -1) + if (old == -1) return (EFAULT); - /* If no one owns it but it is contested try to acquire it. */ - if (owner == UMUTEX_CONTESTED) { - owner = casuword32(&m->m_owner, - UMUTEX_CONTESTED, id | UMUTEX_CONTESTED); - - if (owner == UMUTEX_CONTESTED) - return (0); - - /* The address was invalid. */ - if (owner == -1) - return (EFAULT); - - /* If this failed the lock has changed, restart. */ - continue; - } + /* If this failed the lock has changed, restart. */ + continue; } if ((flags & UMUTEX_ERROR_CHECK) != 0 && - (owner & ~UMUTEX_CONTESTED) == id) + (owner & UMUTEX_OWNER_MASK) == id) return (EDEADLK); if (mode == _UMUTEX_TRY) @@ -1366,19 +1403,6 @@ _do_lock_normal(struct thread *td, struc return (0); } -static void -update_robst(struct umutex *m, int td_exit) -{ - uint32_t robst = fubyte(&m->m_robstate); - - if (robst == UMUTEX_ROBST_NORMAL) { - if (td_exit) - subyte(&m->m_robstate, UMUTEX_ROBST_OWNERDEAD); - } else if (!td_exit && robst == UMUTEX_ROBST_INCONSISTENT) { - subyte(&m->m_robstate, UMUTEX_ROBST_NOTRECOVERABLE); - } -} - /* * Lock PTHREAD_PRIO_NONE protocol POSIX mutex. */ @@ -1386,13 +1410,12 @@ update_robst(struct umutex *m, int td_ex * Unlock PTHREAD_PRIO_NONE protocol POSIX mutex. */ static int -do_unlock_normal(struct thread *td, struct umutex *m, uint32_t flags, +do_unlock_normal(struct thread *td, struct umutex *m, uint16_t flags, int td_exit) { struct umtx_key key; - uint32_t owner, old, id; - int error; - int count; + uint32_t owner, old, id, newval; + int error, count, nwake; if (flags & UMUTEX_SIMPLE) id = UMUTEX_SIMPLE_OWNER; @@ -1405,22 +1428,18 @@ do_unlock_normal(struct thread *td, stru if (owner == -1) return (EFAULT); - if ((owner & ~UMUTEX_CONTESTED) != id) + if ((owner & UMUTEX_OWNER_MASK) != id) return (EPERM); - if ((flags & UMUTEX_ROBUST) != 0) - update_robst(m, td_exit); - - if ((owner & UMUTEX_CONTESTED) == 0) { + if ((owner & ~UMUTEX_OWNER_MASK) == 0) { + /* No other bits set, just unlock it. */ old = casuword32(&m->m_owner, owner, UMUTEX_UNOWNED); if (old == -1) return (EFAULT); if (old == owner) return (0); - owner = old; } - /* We should only ever be in here for contested locks */ if ((error = umtx_key_get(m, TYPE_NORMAL_UMUTEX, GET_SHARE(flags), &key)) != 0) return (error); @@ -1429,16 +1448,13 @@ do_unlock_normal(struct thread *td, stru umtxq_busy(&key); count = umtxq_count(&key); umtxq_unlock(&key); + + owner = fuword32(__DEVOLATILE(uint32_t *, &m->m_owner)); + newval = calc_lockword(owner, flags, count, td_exit, &nwake); - /* - * 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 = casuword32(&m->m_owner, owner, - count <= 1 ? UMUTEX_UNOWNED : UMUTEX_CONTESTED); + old = casuword32(&m->m_owner, owner, newval); umtxq_lock(&key); - umtxq_signal(&key,1); + umtxq_signal(&key, nwake); umtxq_unbusy(&key); umtxq_unlock(&key); umtx_key_release(&key); @@ -1466,7 +1482,7 @@ do_wake_umutex(struct thread *td, struct if (owner == -1) return (EFAULT); - if ((owner & ~UMUTEX_CONTESTED) != 0) + if ((owner & UMUTEX_OWNER_MASK) != 0) return (0); flags = fuword32(&m->m_flags); @@ -1485,7 +1501,7 @@ do_wake_umutex(struct thread *td, struct owner = casuword32(&m->m_owner, UMUTEX_CONTESTED, UMUTEX_UNOWNED); umtxq_lock(&key); - if (count != 0 && (owner & ~UMUTEX_CONTESTED) == 0) + if (count != 0 && (owner & UMUTEX_OWNER_MASK) == 0) umtxq_signal(&key, 1); umtxq_unbusy(&key); umtxq_unlock(&key); @@ -1887,7 +1903,7 @@ umtx_pi_insert(struct umtx_pi *pi) * Lock a PI mutex. */ static int -_do_lock_pi(struct thread *td, struct umutex *m, uint32_t flags, int timo, +_do_lock_pi(struct thread *td, struct umutex *m, uint16_t flags, int timo, int try) { struct umtx_q *uq; @@ -1929,44 +1945,38 @@ _do_lock_pi(struct thread *td, struct um * can fault on any access. */ for (;;) { - /* - * Try the uncontested case. This should be done in userland. - */ - owner = casuword32(&m->m_owner, UMUTEX_UNOWNED, id); - - /* The acquire succeeded. */ - if (owner == UMUTEX_UNOWNED) { - error = 0; - break; - } - - /* The address was invalid. */ - if (owner == -1) { - error = EFAULT; + owner = fuword32(__DEVOLATILE(void *, &m->m_owner)); + if ((flags & UMUTEX_ROBUST) != 0 && + (owner & UMUTEX_OWNER_MASK) == UMUTEX_INCONSISTENT) { + error = ENOTRECOVERABLE; break; } - /* If no one owns it but it is contested try to acquire it. */ - if (owner == UMUTEX_CONTESTED) { - owner = casuword32(&m->m_owner, - UMUTEX_CONTESTED, id | UMUTEX_CONTESTED); - - if (owner == UMUTEX_CONTESTED) { - umtxq_lock(&uq->uq_key); - umtxq_busy(&uq->uq_key); - error = umtx_pi_claim(pi, td); - umtxq_unbusy(&uq->uq_key); - umtxq_unlock(&uq->uq_key); + if ((owner & UMUTEX_OWNER_MASK) == 0) { + old = casuword32(&m->m_owner, owner, id|owner); + /* The acquire succeeded. */ + if (owner == old) { + if ((owner & UMUTEX_CONTESTED) != 0) { + umtxq_lock(&uq->uq_key); + umtxq_busy(&uq->uq_key); + umtx_pi_claim(pi, td); + umtxq_unbusy(&uq->uq_key); + umtxq_unlock(&uq->uq_key); + } + if ((flags & UMUTEX_ROBUST) != 0 && + (owner & UMUTEX_OWNER_DEAD) != 0) + error = EOWNERDEAD; + else + error = 0; break; } /* The address was invalid. */ - if (owner == -1) { + if (old == -1) { error = EFAULT; break; } - /* If this failed the lock has changed, restart. */ continue; } @@ -2042,9 +2052,8 @@ do_unlock_pi(struct thread *td, struct u struct umtx_key key; struct umtx_q *uq_first, *uq_first2, *uq_me; struct umtx_pi *pi, *pi2; - uint32_t owner, old, id; - int error; - int count; + uint32_t owner, old, id, newval; + int error, count, nwake; int pri; id = td->td_tid; @@ -2055,14 +2064,10 @@ do_unlock_pi(struct thread *td, struct u if (owner == -1) return (EFAULT); - if ((owner & ~UMUTEX_CONTESTED) != id) + if ((owner & UMUTEX_OWNER_MASK) != id) return (EPERM); - if ((flags & UMUTEX_ROBUST) != 0) - update_robst(m, td_exit); - - /* This should be done in userland */ - if ((owner & UMUTEX_CONTESTED) == 0) { + if ((owner & ~UMUTEX_OWNER_MASK) == 0) { old = casuword32(&m->m_owner, owner, UMUTEX_UNOWNED); if (old == -1) return (EFAULT); @@ -2071,7 +2076,6 @@ do_unlock_pi(struct thread *td, struct u owner = old; } - /* We should only ever be in here for contested locks */ if ((error = umtx_key_get(m, TYPE_PI_UMUTEX, GET_SHARE(flags), &key)) != 0) return (error); @@ -2117,13 +2121,15 @@ do_unlock_pi(struct thread *td, struct u } umtxq_unlock(&key); + owner = fuword32(__DEVOLATILE(uint32_t *, &m->m_owner)); + newval = calc_lockword(owner, flags, count, td_exit, &nwake); + /* * 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 = casuword32(&m->m_owner, owner, - count <= 1 ? UMUTEX_UNOWNED : UMUTEX_CONTESTED); + old = casuword32(&m->m_owner, owner, newval); umtxq_lock(&key); umtxq_unbusy(&key); @@ -2136,6 +2142,12 @@ do_unlock_pi(struct thread *td, struct u return (0); } +struct old_pp_mutex { + volatile __lwpid_t m_owner; /* Owner of the mutex */ + __uint32_t m_flags; /* Flags of the mutex */ + __uint32_t m_ceilings[2]; /* Priority protect ceiling */ +}; + /* * Lock a PP mutex. */ @@ -2146,8 +2158,9 @@ _do_lock_pp(struct thread *td, struct um struct umtx_q *uq, *uq2; struct umtx_pi *pi; uint32_t ceiling; - uint32_t owner, id; + uint32_t owner, id, old; int error, pri, old_inherited_pri, su; + struct old_pp_mutex *oldmtx = (struct old_pp_mutex *)m; if (flags & UMUTEX_SIMPLE) id = UMUTEX_SIMPLE_OWNER; @@ -2159,12 +2172,19 @@ _do_lock_pp(struct thread *td, struct um return (error); su = (priv_check(td, PRIV_SCHED_RTPRIO) == 0); for (;;) { - old_inherited_pri = uq->uq_inherited_pri; + /* + * We busy the lock, so no one can change the priority ceiling + * while we are locking it. + */ umtxq_lock(&uq->uq_key); umtxq_busy(&uq->uq_key); umtxq_unlock(&uq->uq_key); - ceiling = RTP_PRIO_MAX - fuword32(&m->m_ceilings[0]); + old_inherited_pri = uq->uq_inherited_pri; + if (flags & UMUTEX_PRIO_PROTECT) + ceiling = RTP_PRIO_MAX - fuword32(&oldmtx->m_ceilings[0]); + else + ceiling = RTP_PRIO_MAX - fubyte(&m->m_ceilings[0]); if (ceiling > RTP_PRIO_MAX) { error = EINVAL; goto out; @@ -2185,18 +2205,35 @@ _do_lock_pp(struct thread *td, struct um } mtx_unlock_spin(&umtx_lock); - owner = casuword32(&m->m_owner, - UMUTEX_CONTESTED, id | UMUTEX_CONTESTED); - - if (owner == UMUTEX_CONTESTED) { - error = 0; +again: + owner = fuword32(__DEVOLATILE(void *, &m->m_owner)); *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 07:34:52 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 6D4AC106564A; Fri, 12 Nov 2010 07:34:52 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 5B0FE8FC17; Fri, 12 Nov 2010 07:34:52 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC7Yq3w099714; Fri, 12 Nov 2010 07:34:52 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC7Yqaf099712; Fri, 12 Nov 2010 07:34:52 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011120734.oAC7Yqaf099712@svn.freebsd.org> From: David Xu Date: Fri, 12 Nov 2010 07:34:52 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215167 - user/davidxu/libthr/lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 07:34:52 -0000 Author: davidxu Date: Fri Nov 12 07:34:52 2010 New Revision: 215167 URL: http://svn.freebsd.org/changeset/base/215167 Log: In pthread_mutex_trylock, if the mutex is priority-protect or robust, always enters kernel to lock the mutex. Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Modified: user/davidxu/libthr/lib/libthr/thread/thr_mutex.c ============================================================================== --- user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Fri Nov 12 06:41:55 2010 (r215166) +++ user/davidxu/libthr/lib/libthr/thread/thr_mutex.c Fri Nov 12 07:34:52 2010 (r215167) @@ -222,8 +222,6 @@ mutex_trylock_common(struct pthread_mute TID(curthread)) return mutex_self_trylock(mp); } - if ((mp->__lockword & UMUTEX_OWNER_MASK) != 0) - return (EBUSY); error = __thr_umutex_trylock((struct umutex *)&mp->__lockword); if (error == 0 || error == EOWNERDEAD) enqueue_mutex(curthread, mp); From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 09:07:11 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 74378106564A; Fri, 12 Nov 2010 09:07:11 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 62C6F8FC0A; Fri, 12 Nov 2010 09:07:11 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC97B81001895; Fri, 12 Nov 2010 09:07:11 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC97Bch001893; Fri, 12 Nov 2010 09:07:11 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011120907.oAC97Bch001893@svn.freebsd.org> From: David Xu Date: Fri, 12 Nov 2010 09:07:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215168 - user/davidxu/libthr/gnu/lib/libgomp X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 09:07:11 -0000 Author: davidxu Date: Fri Nov 12 09:07:11 2010 New Revision: 215168 URL: http://svn.freebsd.org/changeset/base/215168 Log: Update lock's sizes and bump library version. Modified: user/davidxu/libthr/gnu/lib/libgomp/Makefile Modified: user/davidxu/libthr/gnu/lib/libgomp/Makefile ============================================================================== --- user/davidxu/libthr/gnu/lib/libgomp/Makefile Fri Nov 12 07:34:52 2010 (r215167) +++ user/davidxu/libthr/gnu/lib/libgomp/Makefile Fri Nov 12 09:07:11 2010 (r215168) @@ -7,7 +7,7 @@ SRCDIR= ${GCCLIB}/libgomp .PATH: ${SRCDIR} ${SRCDIR}/config/posix LIB= gomp -SHLIB_MAJOR= 1 +SHLIB_MAJOR= 3 SRCS= alloc.c barrier.c critical.c env.c \ error.c iter.c loop.c ordered.c parallel.c sections.c \ @@ -28,18 +28,18 @@ VERSION_MAP= ${SRCDIR}/libgomp.map (${MACHINE_CPUARCH} == mips && \ (!defined(TARGET_ABI) || ${TARGET_ABI} != "n64")) OMP_LOCK_ALIGN = 4 -OMP_LOCK_KIND= 4 -OMP_LOCK_SIZE= 4 +OMP_LOCK_KIND= 8 +OMP_LOCK_SIZE= 24 OMP_NEST_LOCK_ALIGN= 4 OMP_NEST_LOCK_KIND= 8 -OMP_NEST_LOCK_SIZE= 8 +OMP_NEST_LOCK_SIZE= 28 .else OMP_LOCK_ALIGN = 8 OMP_LOCK_KIND= 8 -OMP_LOCK_SIZE= 8 +OMP_LOCK_SIZE= 24 OMP_NEST_LOCK_ALIGN= 8 OMP_NEST_LOCK_KIND= 8 -OMP_NEST_LOCK_SIZE= 16 +OMP_NEST_LOCK_SIZE= 32 .endif gstdint.h: From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 09:12:05 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 04DFE1065670; Fri, 12 Nov 2010 09:12:05 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id E79828FC0A; Fri, 12 Nov 2010 09:12:04 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC9C4cO002043; Fri, 12 Nov 2010 09:12:04 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC9C4sM002041; Fri, 12 Nov 2010 09:12:04 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011120912.oAC9C4sM002041@svn.freebsd.org> From: David Xu Date: Fri, 12 Nov 2010 09:12:04 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215169 - user/davidxu/libthr/gnu/lib/libgomp X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 09:12:05 -0000 Author: davidxu Date: Fri Nov 12 09:12:04 2010 New Revision: 215169 URL: http://svn.freebsd.org/changeset/base/215169 Log: Fix typo. Modified: user/davidxu/libthr/gnu/lib/libgomp/Makefile Modified: user/davidxu/libthr/gnu/lib/libgomp/Makefile ============================================================================== --- user/davidxu/libthr/gnu/lib/libgomp/Makefile Fri Nov 12 09:07:11 2010 (r215168) +++ user/davidxu/libthr/gnu/lib/libgomp/Makefile Fri Nov 12 09:12:04 2010 (r215169) @@ -7,7 +7,7 @@ SRCDIR= ${GCCLIB}/libgomp .PATH: ${SRCDIR} ${SRCDIR}/config/posix LIB= gomp -SHLIB_MAJOR= 3 +SHLIB_MAJOR= 2 SRCS= alloc.c barrier.c critical.c env.c \ error.c iter.c loop.c ordered.c parallel.c sections.c \ From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 09:34:22 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 1961C1065670; Fri, 12 Nov 2010 09:34:22 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 074B08FC27; Fri, 12 Nov 2010 09:34:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC9YLb4002513; Fri, 12 Nov 2010 09:34:21 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC9YLN1002510; Fri, 12 Nov 2010 09:34:21 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011120934.oAC9YLN1002510@svn.freebsd.org> From: David Xu Date: Fri, 12 Nov 2010 09:34:21 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215170 - in user/davidxu/libthr/sys: kern sys X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 09:34:22 -0000 Author: davidxu Date: Fri Nov 12 09:34:21 2010 New Revision: 215170 URL: http://svn.freebsd.org/changeset/base/215170 Log: Limit total number of robust mutexes a process can hold. Modified: user/davidxu/libthr/sys/kern/kern_umtx.c user/davidxu/libthr/sys/sys/proc.h Modified: user/davidxu/libthr/sys/kern/kern_umtx.c ============================================================================== --- user/davidxu/libthr/sys/kern/kern_umtx.c Fri Nov 12 09:12:04 2010 (r215169) +++ user/davidxu/libthr/sys/kern/kern_umtx.c Fri Nov 12 09:34:21 2010 (r215170) @@ -258,6 +258,7 @@ static int umtx_cvsig_migrate = 1; #endif static struct robust_chain robust_chains[ROBUST_CHAINS]; +static int set_max_robust(SYSCTL_HANDLER_ARGS); SYSCTL_NODE(_debug, OID_AUTO, umtx, CTLFLAG_RW, 0, "umtx debug"); SYSCTL_INT(_debug_umtx, OID_AUTO, umtx_pi_allocated, CTLFLAG_RD, @@ -266,6 +267,15 @@ SYSCTL_INT(_debug_umtx, OID_AUTO, umtx_p SYSCTL_INT(_debug_umtx, OID_AUTO, umtx_cvsig_migrate, CTLFLAG_RW, &umtx_cvsig_migrate, 0, "cvsig migrate"); +SYSCTL_PROC(_debug_umtx, OID_AUTO, max_robust_per_proc, + CTLTYPE_INT | CTLFLAG_RW, 0, sizeof(int), set_max_robust, "I", + "Set maximum number of robust mutex"); + +static int max_robust_per_proc = 1500; +static struct mtx max_robust_lock; +static struct timeval max_robust_lasttime; +static struct timeval max_robust_interval; + #define UMTX_STATE #ifdef UMTX_STATE static int umtx_cv_broadcast_migrate; @@ -314,7 +324,7 @@ static void umtx_thread_cleanup(struct t static void umtx_exec_hook(void *arg __unused, struct proc *p __unused, struct image_params *imgp __unused); static void umtx_exit_hook(void *arg __unused, struct proc *p __unused); -static struct robust_info *robust_alloc(void); +static int robust_alloc(struct robust_info **); static void robust_free(struct robust_info *); static int robust_insert(struct thread *, struct robust_info *); static void robust_remove(struct thread *, struct umutex *); @@ -357,10 +367,14 @@ umtxq_sysinit(void *arg __unused) } mtx_init(&umtx_lock, "umtx lock", NULL, MTX_SPIN); + mtx_init(&max_robust_lock, "max robust lock", NULL, MTX_DEF); EVENTHANDLER_REGISTER(process_exec, umtx_exec_hook, NULL, EVENTHANDLER_PRI_ANY); EVENTHANDLER_REGISTER(process_exit, umtx_exit_hook, NULL, EVENTHANDLER_PRI_ANY); + + max_robust_interval.tv_sec = 10; + max_robust_interval.tv_usec = 0; } struct umtx_q * @@ -2374,7 +2388,7 @@ do_unlock_pp(struct thread *td, struct u umtxq_unlock(&key); owner = fuword32(__DEVOLATILE(uint32_t *, &m->m_owner)); - newval = calc_lockword(owner, flags, count, td_exit, &nwake) + newval = calc_lockword(owner, flags, count, td_exit, &nwake); if (flags & UMUTEX_PRIO_PROTECT) { /* @@ -2569,7 +2583,16 @@ do_lock_umutex(struct thread *td, struct return (EFAULT); if ((flags & UMUTEX_ROBUST) != 0 && mode != _UMUTEX_WAIT) { - rob = robust_alloc(); + error = robust_alloc(&rob); + if (error != 0) { + if (timeout == NULL) { + if (error == EINTR && mode != _UMUTEX_WAIT) + error = ERESTART; + } else if (error == ERESTART) { + error = EINTR; + } + return (error); + } rob->ownertd = td; rob->umtxp = m; } @@ -4208,19 +4231,42 @@ freebsd32_umtx_op(struct thread *td, str } #endif -struct robust_info * -robust_alloc(void) +int +robust_alloc(struct robust_info **robpp) { - struct robust_info *rb; + struct proc *p = curproc; + int error; - rb = uma_zalloc(robust_zone, M_ZERO|M_WAITOK); - return (rb); + atomic_fetchadd_int(&p->p_robustcount, 1); + if (p->p_robustcount > max_robust_per_proc) { + mtx_lock(&max_robust_lock); + while (p->p_robustcount >= max_robust_per_proc) { + if (ratecheck(&max_robust_lasttime, + &max_robust_interval)) { + printf("Process %lu (%s) exceeded maximum" + "number of robust mutexes\n", + (u_long)p->p_pid, p->p_comm); + } + error = msleep(&max_robust_per_proc, + &max_robust_lock, 0, "maxrob", 0); + if (error != 0) { + mtx_unlock(&max_robust_lock); + return (error); + } + } + mtx_unlock(&max_robust_lock); + } + *robpp = uma_zalloc(robust_zone, M_ZERO|M_WAITOK); + return (0); } static void -robust_free(struct robust_info *rb) +robust_free(struct robust_info *robp) { - uma_zfree(robust_zone, rb); + struct proc *p = curproc; + + atomic_fetchadd_int(&p->p_robustcount, -1); + uma_zfree(robust_zone, robp); } static unsigned int @@ -4366,3 +4412,23 @@ umtx_thread_cleanup(struct thread *td) thread_unlock(td); mtx_unlock_spin(&umtx_lock); } + +static int +set_max_robust(SYSCTL_HANDLER_ARGS) +{ + int error, v; + + v = max_robust_per_proc; + error = sysctl_handle_int(oidp, &v, 0, req); + if (error) + return (error); + if (req->newptr == NULL) + return (error); + if (v <= 0) + return (EINVAL); + mtx_lock(&max_robust_lock); + max_robust_per_proc = v; + wakeup(&max_robust_per_proc); + mtx_unlock(&max_robust_lock); + return (0); +} Modified: user/davidxu/libthr/sys/sys/proc.h ============================================================================== --- user/davidxu/libthr/sys/sys/proc.h Fri Nov 12 09:12:04 2010 (r215169) +++ user/davidxu/libthr/sys/sys/proc.h Fri Nov 12 09:34:21 2010 (r215170) @@ -524,6 +524,7 @@ struct proc { int p_boundary_count;/* (c) Num threads at user boundary */ int p_pendingcnt; /* how many signals are pending */ struct itimers *p_itimers; /* (c) POSIX interval timers. */ + int p_robustcount; /* (*) Total number of robust mutex. */ /* End area that is zeroed on creation. */ #define p_endzero p_magic From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 09:46:22 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F15021065674; Fri, 12 Nov 2010 09:46:22 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DFB608FC18; Fri, 12 Nov 2010 09:46:22 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC9kMXa002790; Fri, 12 Nov 2010 09:46:22 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC9kMB6002788; Fri, 12 Nov 2010 09:46:22 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011120946.oAC9kMB6002788@svn.freebsd.org> From: David Xu Date: Fri, 12 Nov 2010 09:46:22 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215171 - user/davidxu/libthr/sys/kern X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 09:46:23 -0000 Author: davidxu Date: Fri Nov 12 09:46:22 2010 New Revision: 215171 URL: http://svn.freebsd.org/changeset/base/215171 Log: Don't forget to decrease the robust mutex count if there is error. Modified: user/davidxu/libthr/sys/kern/kern_umtx.c Modified: user/davidxu/libthr/sys/kern/kern_umtx.c ============================================================================== --- user/davidxu/libthr/sys/kern/kern_umtx.c Fri Nov 12 09:34:21 2010 (r215170) +++ user/davidxu/libthr/sys/kern/kern_umtx.c Fri Nov 12 09:46:22 2010 (r215171) @@ -4251,6 +4251,7 @@ robust_alloc(struct robust_info **robpp) &max_robust_lock, 0, "maxrob", 0); if (error != 0) { mtx_unlock(&max_robust_lock); + atomic_fetchadd_int(&p->p_robustcount, -1); return (error); } } From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 09:52:56 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AD92C1065672; Fri, 12 Nov 2010 09:52:56 +0000 (UTC) (envelope-from davidxu@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 9BF478FC13; Fri, 12 Nov 2010 09:52:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oAC9qu8g002958; Fri, 12 Nov 2010 09:52:56 GMT (envelope-from davidxu@svn.freebsd.org) Received: (from davidxu@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oAC9qu6O002956; Fri, 12 Nov 2010 09:52:56 GMT (envelope-from davidxu@svn.freebsd.org) Message-Id: <201011120952.oAC9qu6O002956@svn.freebsd.org> From: David Xu Date: Fri, 12 Nov 2010 09:52:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215172 - user/davidxu/libthr/lib/libc X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 09:52:56 -0000 Author: davidxu Date: Fri Nov 12 09:52:56 2010 New Revision: 215172 URL: http://svn.freebsd.org/changeset/base/215172 Log: Remove debugging flags. Modified: user/davidxu/libthr/lib/libc/Makefile Modified: user/davidxu/libthr/lib/libc/Makefile ============================================================================== --- user/davidxu/libthr/lib/libc/Makefile Fri Nov 12 09:46:22 2010 (r215171) +++ user/davidxu/libthr/lib/libc/Makefile Fri Nov 12 09:52:56 2010 (r215172) @@ -152,4 +152,3 @@ SSP_CFLAGS:= ${SSP_CFLAGS:S/^-fstack-pro SSP_CFLAGS:= ${.IMPSRC:N*/stack_protector.c:C/^.+$/${SSP_CFLAGS}/} # Generate stack unwinding tables for cancellation points CANCELPOINTS_CFLAGS:= ${.IMPSRC:Mcancelpoints_*:C/^.+$/${CANCELPOINTS_CFLAGS}/:C/^$//} -CFLAGS+=-g -O0 From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 13:19:43 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AA845106566C; Fri, 12 Nov 2010 13:19:43 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay02.stack.nl [IPv6:2001:610:1108:5010::104]) by mx1.freebsd.org (Postfix) with ESMTP id 42B868FC13; Fri, 12 Nov 2010 13:19:43 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id 4C91B35A874; Fri, 12 Nov 2010 14:19:42 +0100 (CET) Received: by turtle.stack.nl (Postfix, from userid 1677) id 376261732E; Fri, 12 Nov 2010 14:19:42 +0100 (CET) Date: Fri, 12 Nov 2010 14:19:42 +0100 From: Jilles Tjoelker To: David Xu Message-ID: <20101112131941.GA57806@stack.nl> References: <201011100127.oAA1Rmrh069656@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201011100127.oAA1Rmrh069656@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r215071 - in user/davidxu/libthr: include lib/libc lib/libc/gen lib/libc/stdio lib/libthr lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 13:19:43 -0000 On Wed, Nov 10, 2010 at 01:27:48AM +0000, David Xu wrote: > Author: davidxu > Date: Wed Nov 10 01:27:48 2010 > New Revision: 215071 > URL: http://svn.freebsd.org/changeset/base/215071 > Log: > Convert pthread_mutex_t and pthread_cond_t to structure based instead of > pointer type, this allows us to support process-shared. Very nice. Apart from supporting process-shared, this also helps avoid the "array of synchronization objects" anti-pattern (false sharing). It is not so bad for the old struct pthread_mutex which is 64 bytes on i386, but in other cases one cache line may contain parts of multiple unrelated synchronization objects. In this regard, it would be better for stdio to allocate struct { FILE file; pthread_mutex_t lock; } rather than separate FILEs and locks. Like the sem_t change, this changes the ABI in a way symver can only partially deal with (think plugins with pthread_mutex_t in struct in public header file). However, I think the change should be made regardless. -- Jilles Tjoelker From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 13:29:22 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from alona.my.domain (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id E0C251065672; Fri, 12 Nov 2010 13:29:20 +0000 (UTC) (envelope-from davidxu@freebsd.org) Message-ID: <4CDD411D.4060304@freebsd.org> Date: Fri, 12 Nov 2010 21:29:01 +0800 From: David Xu User-Agent: Thunderbird 2.0.0.21 (X11/20090522) MIME-Version: 1.0 To: Jilles Tjoelker References: <201011100127.oAA1Rmrh069656@svn.freebsd.org> <20101112131941.GA57806@stack.nl> In-Reply-To: <20101112131941.GA57806@stack.nl> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r215071 - in user/davidxu/libthr: include lib/libc lib/libc/gen lib/libc/stdio lib/libthr lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 13:29:22 -0000 Jilles Tjoelker wrote: > On Wed, Nov 10, 2010 at 01:27:48AM +0000, David Xu wrote: > >> Author: davidxu >> Date: Wed Nov 10 01:27:48 2010 >> New Revision: 215071 >> URL: http://svn.freebsd.org/changeset/base/215071 >> > > >> Log: >> Convert pthread_mutex_t and pthread_cond_t to structure based instead of >> pointer type, this allows us to support process-shared. >> > > Very nice. > > Apart from supporting process-shared, this also helps avoid the "array > of synchronization objects" anti-pattern (false sharing). It is not so > bad for the old struct pthread_mutex which is 64 bytes on i386, but in > other cases one cache line may contain parts of multiple unrelated > synchronization objects. > Don't know what did you mean, did you think that sizeof struct pthread_mutex smaller than a cache line is a bad thing ? > In this regard, it would be better for stdio to allocate > struct { FILE file; pthread_mutex_t lock; } > rather than separate FILEs and locks. > This breaks ABI. :-) > Like the sem_t change, this changes the ABI in a way symver can only > partially deal with (think plugins with pthread_mutex_t in struct in > public header file). However, I think the change should be made > regardless. > > Yes, we found that some GNU libraries have to bump version. From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 16:03:23 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2A5CE1065670; Fri, 12 Nov 2010 16:03:23 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id ED2598FC17; Fri, 12 Nov 2010 16:03:22 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 8DF3D46B0C; Fri, 12 Nov 2010 11:03:22 -0500 (EST) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id ABF498A01D; Fri, 12 Nov 2010 11:03:21 -0500 (EST) From: John Baldwin To: Jilles Tjoelker Date: Fri, 12 Nov 2010 10:17:28 -0500 User-Agent: KMail/1.13.5 (FreeBSD/7.3-CBSD-20100819; KDE/4.4.5; amd64; ; ) References: <201011100127.oAA1Rmrh069656@svn.freebsd.org> <20101112131941.GA57806@stack.nl> In-Reply-To: <20101112131941.GA57806@stack.nl> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Message-Id: <201011121017.28819.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.6 (bigwig.baldwin.cx); Fri, 12 Nov 2010 11:03:21 -0500 (EST) X-Virus-Scanned: clamav-milter 0.96.3 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-1.9 required=4.2 tests=BAYES_00 autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on bigwig.baldwin.cx Cc: src-committers@freebsd.org, David Xu , svn-src-user@freebsd.org Subject: Re: svn commit: r215071 - in user/davidxu/libthr: include lib/libc lib/libc/gen lib/libc/stdio lib/libthr lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 16:03:23 -0000 On Friday, November 12, 2010 8:19:42 am Jilles Tjoelker wrote: > On Wed, Nov 10, 2010 at 01:27:48AM +0000, David Xu wrote: > > Author: davidxu > > Date: Wed Nov 10 01:27:48 2010 > > New Revision: 215071 > > URL: http://svn.freebsd.org/changeset/base/215071 > > > Log: > > Convert pthread_mutex_t and pthread_cond_t to structure based instead of > > pointer type, this allows us to support process-shared. > > Very nice. > > Apart from supporting process-shared, this also helps avoid the "array > of synchronization objects" anti-pattern (false sharing). It is not so > bad for the old struct pthread_mutex which is 64 bytes on i386, but in > other cases one cache line may contain parts of multiple unrelated > synchronization objects. > > In this regard, it would be better for stdio to allocate > struct { FILE file; pthread_mutex_t lock; } > rather than separate FILEs and locks. Note that stdio already does this. It currently expands 'pthread_mutex_t' to avoid namespace pollution in , but it does embed the pthread_mutex_t in FILE directly already. This does mean that changing pthread_mutex_t will change the ABI of FILE, but I think it is not an incompatible change as it should not affect the "public" fields accessed via macros. -- John Baldwin From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 20:01:53 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 988AD1065670; Fri, 12 Nov 2010 20:01:53 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 871238FC13; Fri, 12 Nov 2010 20:01:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oACK1rfi021859; Fri, 12 Nov 2010 20:01:53 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oACK1rwu021857; Fri, 12 Nov 2010 20:01:53 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201011122001.oACK1rwu021857@svn.freebsd.org> From: Weongyo Jeong Date: Fri, 12 Nov 2010 20:01:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215196 - user/weongyo/usb/sys/dev/usb X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 20:01:53 -0000 Author: weongyo Date: Fri Nov 12 20:01:53 2010 New Revision: 215196 URL: http://svn.freebsd.org/changeset/base/215196 Log: No reason to avoid using M_WAITOK at usbpf_attach(). Pointed by: hps Modified: user/weongyo/usb/sys/dev/usb/usb_pf.c Modified: user/weongyo/usb/sys/dev/usb/usb_pf.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_pf.c Fri Nov 12 19:43:12 2010 (r215195) +++ user/weongyo/usb/sys/dev/usb/usb_pf.c Fri Nov 12 20:01:53 2010 (r215196) @@ -1317,10 +1317,7 @@ usbpf_attach(struct usb_bus *ubus, struc { struct usbpf_if *uif; - uif = malloc(sizeof(*uif), M_USBPF, M_NOWAIT | M_ZERO); - if (uif == NULL) - panic("usbpf_attach"); - + uif = malloc(sizeof(*uif), M_USBPF, M_WAITOK | M_ZERO); LIST_INIT(&uif->uif_dlist); uif->uif_ubus = ubus; mtx_init(&uif->uif_mtx, "usbpf interface lock", NULL, MTX_DEF); From owner-svn-src-user@FreeBSD.ORG Fri Nov 12 21:47:36 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 77E551065695; Fri, 12 Nov 2010 21:47:36 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6663C8FC14; Fri, 12 Nov 2010 21:47:36 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oACLlakb024532; Fri, 12 Nov 2010 21:47:36 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oACLla6a024530; Fri, 12 Nov 2010 21:47:36 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201011122147.oACLla6a024530@svn.freebsd.org> From: Weongyo Jeong Date: Fri, 12 Nov 2010 21:47:36 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215206 - user/weongyo/usb/sys/dev/usb X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 12 Nov 2010 21:47:36 -0000 Author: weongyo Date: Fri Nov 12 21:47:36 2010 New Revision: 215206 URL: http://svn.freebsd.org/changeset/base/215206 Log: Adds a XXX comment to avoid useless operations that for example, no need to copy whole data into a buffer if there's no consumers. Modified: user/weongyo/usb/sys/dev/usb/usb_pf.c Modified: user/weongyo/usb/sys/dev/usb/usb_pf.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_pf.c Fri Nov 12 21:46:58 2010 (r215205) +++ user/weongyo/usb/sys/dev/usb/usb_pf.c Fri Nov 12 21:47:36 2010 (r215206) @@ -1677,6 +1677,11 @@ usbpf_xfertap(struct usb_xfer *xfer, int char *buf, *ptr, *end; /* + * XXX check first whether there are any descriptors waiting. If no + * we don't need to handle this xfer. + */ + + /* * XXX TODO * Allocating the buffer here causes copy operations twice what's * really inefficient. Copying usbpf_pkthdr and data is for USB packet From owner-svn-src-user@FreeBSD.ORG Sat Nov 13 12:24:49 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CF9121065672; Sat, 13 Nov 2010 12:24:49 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay02.stack.nl [IPv6:2001:610:1108:5010::104]) by mx1.freebsd.org (Postfix) with ESMTP id 08A2D8FC13; Sat, 13 Nov 2010 12:24:49 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id 3326935A864; Sat, 13 Nov 2010 13:24:48 +0100 (CET) Received: by turtle.stack.nl (Postfix, from userid 1677) id 1CE5F17349; Sat, 13 Nov 2010 13:24:48 +0100 (CET) Date: Sat, 13 Nov 2010 13:24:48 +0100 From: Jilles Tjoelker To: David Xu Message-ID: <20101113122447.GA79975@stack.nl> References: <201011100127.oAA1Rmrh069656@svn.freebsd.org> <20101112131941.GA57806@stack.nl> <4CDD411D.4060304@freebsd.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="BOKacYhQ+x31HxR3" Content-Disposition: inline In-Reply-To: <4CDD411D.4060304@freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r215071 - in user/davidxu/libthr: include lib/libc lib/libc/gen lib/libc/stdio lib/libthr lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Nov 2010 12:24:49 -0000 --BOKacYhQ+x31HxR3 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Fri, Nov 12, 2010 at 09:29:01PM +0800, David Xu wrote: > Jilles Tjoelker wrote: > > Apart from supporting process-shared, this also helps avoid the "array > > of synchronization objects" anti-pattern (false sharing). It is not so > > bad for the old struct pthread_mutex which is 64 bytes on i386, but in > > other cases one cache line may contain parts of multiple unrelated > > synchronization objects. > Don't know what did you mean, did you think that sizeof struct > pthread_mutex > smaller than a cache line is a bad thing ? It is a bad thing if the rest of the cache line is not used for a related purpose. Code like: lock1 = malloc(sizeof(struct pthread_mutex)); lock2 = malloc(sizeof(struct pthread_mutex)); is likely to place the two locks in the same cache line, which may defeat much of the advantage of having two locks instead of one. With the new pthread_mutex_t, applications can do struct foo { int protectedfield1; int protectedfield2; pthread_mutex_t lock; }; and the cache line fetch for the lock will bring in the protected fields as well. Applications are responsible for making the struct large enough to avoid false sharing. > > In this regard, it would be better for stdio to allocate > > struct { FILE file; pthread_mutex_t lock; } > > rather than separate FILEs and locks. > This breaks ABI. :-) Yes, but you can keep the pthread_mutex_t *_fl_mutex and keep accessing the mutex using that. My concern is only about the way things are laid out in memory, your approach is otherwise good. I'm including a lightly tested patch with what I'm thinking of. Of course, stdio is not a high-performance I/O facility, but it is used quite a bit and doing it right here may serve as a good example. > > Like the sem_t change, this changes the ABI in a way symver can only > > partially deal with (think plugins with pthread_mutex_t in struct in > > public header file). However, I think the change should be made > > regardless. > Yes, we found that some GNU libraries have to bump version. -- Jilles Tjoelker --BOKacYhQ+x31HxR3 Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="stdio-mutex-layout.patch" Index: user/davidxu/libthr/lib/libc/stdio/fwalk.c =================================================================== --- user/davidxu/libthr/lib/libc/stdio/fwalk.c (revision 215181) +++ user/davidxu/libthr/lib/libc/stdio/fwalk.c (working copy) @@ -46,7 +46,7 @@ _fwalk(function) int (*function)(FILE *); { - FILE *fp; + struct fullfile *ff; int n, ret; struct glue *g; @@ -60,8 +60,9 @@ * introduce a potential deadlock in [at least] refill.c. */ for (g = &__sglue; g != NULL; g = g->next) - for (fp = g->iobs, n = g->niobs; --n >= 0; fp++) - if ((fp->_flags != 0) && ((fp->_flags & __SIGN) == 0)) - ret |= (*function)(fp); + for (ff = g->iobs, n = g->niobs; --n >= 0; ff++) + if ((ff->file._flags != 0) && + ((ff->file._flags & __SIGN) == 0)) + ret |= (*function)(&ff->file); return (ret); } Index: user/davidxu/libthr/lib/libc/stdio/glue.h =================================================================== --- user/davidxu/libthr/lib/libc/stdio/glue.h (revision 215181) +++ user/davidxu/libthr/lib/libc/stdio/glue.h (working copy) @@ -33,6 +33,11 @@ * $FreeBSD$ */ +struct fullfile { + FILE file; + pthread_mutex_t lock; +}; + /* * The first few FILEs are statically allocated; others are dynamically * allocated and linked in via this glue structure. @@ -40,6 +45,6 @@ struct glue { struct glue *next; int niobs; - FILE *iobs; + struct fullfile *iobs; }; extern struct glue __sglue; Index: user/davidxu/libthr/lib/libc/stdio/findfp.c =================================================================== --- user/davidxu/libthr/lib/libc/stdio/findfp.c (revision 215181) +++ user/davidxu/libthr/lib/libc/stdio/findfp.c (working copy) @@ -55,8 +55,7 @@ #define NDYNAMIC 10 /* add ten more whenever necessary */ - -#define std(flags, file, lock) { \ +#define std(flags, file, lock) { { \ ._flags = (flags), \ ._file = (file), \ ._cookie = __sF + (file), \ @@ -65,25 +64,20 @@ ._seek = __sseek, \ ._write = __swrite, \ ._fl_mutex = &lock, \ -} +}, PTHREAD_MUTEX_INITIALIZER } /* the usual - (stdin + stdout + stderr) */ -static FILE usual[FOPEN_MAX - 3]; +static struct fullfile usual[FOPEN_MAX - 3]; static struct glue uglue = { NULL, FOPEN_MAX - 3, usual }; -static pthread_mutex_t sfLOCK[3] = { - PTHREAD_MUTEX_INITIALIZER, - PTHREAD_MUTEX_INITIALIZER, - PTHREAD_MUTEX_INITIALIZER -}; -static FILE __sF[3] = { - std(__SRD, STDIN_FILENO, sfLOCK[0]), - std(__SWR, STDOUT_FILENO, sfLOCK[1]), - std(__SWR|__SNBF, STDERR_FILENO, sfLOCK[2]) +static struct fullfile __sF[3] = { + std(__SRD, STDIN_FILENO, __sF[0].lock), + std(__SWR, STDOUT_FILENO, __sF[1].lock), + std(__SWR|__SNBF, STDERR_FILENO, __sF[2].lock) }; -FILE *__stdinp = &__sF[0]; -FILE *__stdoutp = &__sF[1]; -FILE *__stderrp = &__sF[2]; +FILE *__stdinp = &__sF[0].file; +FILE *__stdoutp = &__sF[1].file; +FILE *__stderrp = &__sF[2].file; struct glue __sglue = { &uglue, 3, __sF }; static struct glue *lastglue = &uglue; @@ -105,18 +99,23 @@ int n; { struct glue *g; - static FILE empty = { ._fl_mutex = NULL }; - FILE *p; + static struct fullfile empty = { .file = { ._fl_mutex = NULL } }; + struct fullfile *p; - g = (struct glue *)malloc(sizeof(*g) + ALIGNBYTES + n * sizeof(FILE)); + g = (struct glue *)malloc(sizeof(*g) + ALIGNBYTES + + n * sizeof(struct fullfile)); if (g == NULL) return (NULL); - p = (FILE *)ALIGN(g + 1); + p = (struct fullfile *)ALIGN(g + 1); g->next = NULL; g->niobs = n; g->iobs = p; - while (--n >= 0) - *p++ = empty; + while (--n >= 0) { + *p = empty; + p->file._fl_mutex = &p->lock; + _pthread_mutex_init(&p->lock, NULL); + p++; + } return (g); } @@ -127,6 +126,7 @@ __sfp() { FILE *fp; + struct fullfile *ff; int n; struct glue *g; @@ -137,9 +137,11 @@ */ THREAD_LOCK(); for (g = &__sglue; g != NULL; g = g->next) { - for (fp = g->iobs, n = g->niobs; --n >= 0; fp++) - if (fp->_flags == 0) + for (ff = g->iobs, n = g->niobs; --n >= 0; ff++) + if (ff->file._flags == 0) { + fp = &ff->file; goto found; + } } THREAD_UNLOCK(); /* don't hold lock while malloc()ing. */ if ((g = moreglue(NDYNAMIC)) == NULL) @@ -147,7 +149,7 @@ THREAD_LOCK(); /* reacquire the lock */ SET_GLUE_PTR(lastglue->next, g); /* atomically append glue to list */ lastglue = g; /* not atomic; only accessed when locked */ - fp = g->iobs; + fp = &g->iobs->file; found: fp->_flags = 1; /* reserve this slot; caller sets real flags */ THREAD_UNLOCK(); @@ -163,10 +165,6 @@ fp->_ub._size = 0; fp->_lb._base = NULL; /* no line buffer */ fp->_lb._size = 0; - if (fp->_fl_mutex == NULL) { /* once set always set (reused) */ - fp->_fl_mutex = malloc(sizeof(struct pthread_mutex)); - _pthread_mutex_init(fp->_fl_mutex, NULL); - } fp->_orientation = 0; memset(&fp->_mbstate, 0, sizeof(mbstate_t)); return (fp); Index: user/davidxu/libthr/lib/libc/gen/opendir.c =================================================================== --- user/davidxu/libthr/lib/libc/gen/opendir.c (revision 215181) +++ user/davidxu/libthr/lib/libc/gen/opendir.c (working copy) @@ -112,6 +112,11 @@ int saved_errno; int unionstack; struct stat statb; + struct { + DIR dir; + pthread_mutex_t lock; + struct _telldir td; + } *mem; dirp = NULL; /* _fstat() the open handler because the file may have changed. */ @@ -122,10 +127,11 @@ goto fail; } if (_fcntl(fd, F_SETFD, FD_CLOEXEC) == -1 || - (dirp = malloc(sizeof(DIR) + sizeof(struct _telldir))) == NULL) + (mem = malloc(sizeof(*mem))) == NULL) goto fail; - dirp->dd_td = (struct _telldir *)((char *)dirp + sizeof(DIR)); + dirp = &mem->dir; + dirp->dd_td = &mem->td; LIST_INIT(&dirp->dd_td->td_locq); dirp->dd_td->td_loccnt = 0; @@ -298,7 +304,7 @@ dirp->dd_loc = 0; dirp->dd_fd = fd; dirp->dd_flags = flags; - dirp->dd_lock = malloc(sizeof(struct pthread_mutex)); + dirp->dd_lock = &mem->lock; _pthread_mutex_init(dirp->dd_lock, NULL); /* Index: user/davidxu/libthr/lib/libc/gen/closedir.c =================================================================== --- user/davidxu/libthr/lib/libc/gen/closedir.c (revision 215181) +++ user/davidxu/libthr/lib/libc/gen/closedir.c (working copy) @@ -64,7 +64,6 @@ if (__isthreaded) { _pthread_mutex_unlock(dirp->dd_lock); _pthread_mutex_destroy(dirp->dd_lock); - free(dirp->dd_lock); } free((void *)dirp); return(_close(fd)); --BOKacYhQ+x31HxR3-- From owner-svn-src-user@FreeBSD.ORG Sat Nov 13 15:10:37 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A6FCA10656CB; Sat, 13 Nov 2010 15:10:37 +0000 (UTC) (envelope-from jilles@stack.nl) Received: from mx1.stack.nl (relay02.stack.nl [IPv6:2001:610:1108:5010::104]) by mx1.freebsd.org (Postfix) with ESMTP id 38D7D8FC15; Sat, 13 Nov 2010 15:10:37 +0000 (UTC) Received: from turtle.stack.nl (turtle.stack.nl [IPv6:2001:610:1108:5010::132]) by mx1.stack.nl (Postfix) with ESMTP id 33CE835A864; Sat, 13 Nov 2010 16:10:36 +0100 (CET) Received: by turtle.stack.nl (Postfix, from userid 1677) id 1E9CE17349; Sat, 13 Nov 2010 16:10:36 +0100 (CET) Date: Sat, 13 Nov 2010 16:10:36 +0100 From: Jilles Tjoelker To: David Xu Message-ID: <20101113151035.GB79975@stack.nl> References: <201011071349.oA7Dn8Po048543@svn.freebsd.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <201011071349.oA7Dn8Po048543@svn.freebsd.org> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: Re: svn commit: r214915 - user/davidxu/libthr/lib/libthr/thread X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Nov 2010 15:10:37 -0000 On Sun, Nov 07, 2010 at 01:49:08PM +0000, David Xu wrote: > Author: davidxu > Date: Sun Nov 7 13:49:08 2010 > New Revision: 214915 > URL: http://svn.freebsd.org/changeset/base/214915 > Log: > Implement robust mutex, the pthread_mutex locking and > unlocking code are reworked to support robust mutex and > other mutex must be locked and unlocked by kernel. The glibc+linux implementation avoids the system call for each robust mutex lock/unlock by maintaining the list in userland and providing a pointer to the kernel. Although this is somewhat less reliable in case a process scribbles over this list, it has better performance. There are various ways this list could be maintained, but the glibc way uses an "in progress" field per thread and a linked list using a field in the pthread_mutex_t, so if we want that we should make sure we have the space in the pthread_mutex_t. Alternatively, a simple array could be used if the number of owned robust mutexes can be limited to a fairly low value. Solaris robust mutexes used to work by entering the kernel for every lock/unlock, but no longer, see http://bugs.opensolaris.org/bugdatabase/view_bug.do?bug_id=6296770 Someone complained about that implementation being too slow. -- Jilles Tjoelker From owner-svn-src-user@FreeBSD.ORG Sat Nov 13 21:17:53 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7BDF4106566C; Sat, 13 Nov 2010 21:17:53 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 6AE4D8FC18; Sat, 13 Nov 2010 21:17:53 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oADLHrKS060111; Sat, 13 Nov 2010 21:17:53 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oADLHr6v060109; Sat, 13 Nov 2010 21:17:53 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201011132117.oADLHr6v060109@svn.freebsd.org> From: Weongyo Jeong Date: Sat, 13 Nov 2010 21:17:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215261 - user/weongyo/usb/sys/dev/usb X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Nov 2010 21:17:53 -0000 Author: weongyo Date: Sat Nov 13 21:17:53 2010 New Revision: 215261 URL: http://svn.freebsd.org/changeset/base/215261 Log: For ISOC xfers it need to handle it specially because unlike other transfer modes it just use only one linear buffers. Reviewed by: hps Modified: user/weongyo/usb/sys/dev/usb/usb_pf.c Modified: user/weongyo/usb/sys/dev/usb/usb_pf.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_pf.c Sat Nov 13 21:09:18 2010 (r215260) +++ user/weongyo/usb/sys/dev/usb/usb_pf.c Sat Nov 13 21:17:53 2010 (r215261) @@ -1673,6 +1673,7 @@ usbpf_xfertap(struct usb_xfer *xfer, int struct usb_xfer_root *info = xfer->xroot; struct usb_bus *bus = info->bus; struct usbpf_pkthdr *up; + usb_frlength_t isoc_offset = 0; int i; char *buf, *ptr, *end; @@ -1730,7 +1731,11 @@ usbpf_xfertap(struct usb_xfer *xfer, int if (ptr + xfer->frlengths[i] >= end) goto done; - usbd_get_page(&xfer->frbuffers[i], 0, &res); + if ((xfer->status & XFER_STATUS_ISOCXFER) != 0) { + usbd_get_page(&xfer->frbuffers[0], isoc_offset, &res); + isoc_offset += xfer->frlengths[i]; + } else + usbd_get_page(&xfer->frbuffers[i], 0, &res); bcopy(res.buffer, ptr, xfer->frlengths[i]); ptr += xfer->frlengths[i]; } From owner-svn-src-user@FreeBSD.ORG Sat Nov 13 21:37:19 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4AE6E106566B; Sat, 13 Nov 2010 21:37:19 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 39CB48FC21; Sat, 13 Nov 2010 21:37:19 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oADLbJqS060569; Sat, 13 Nov 2010 21:37:19 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oADLbJYt060567; Sat, 13 Nov 2010 21:37:19 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201011132137.oADLbJYt060567@svn.freebsd.org> From: Weongyo Jeong Date: Sat, 13 Nov 2010 21:37:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215262 - user/weongyo/usb/sys/dev/usb X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Nov 2010 21:37:19 -0000 Author: weongyo Date: Sat Nov 13 21:37:18 2010 New Revision: 215262 URL: http://svn.freebsd.org/changeset/base/215262 Log: Only try to tap the USB packet if the waiting descriptors exist. Modified: user/weongyo/usb/sys/dev/usb/usb_pf.c Modified: user/weongyo/usb/sys/dev/usb/usb_pf.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_pf.c Sat Nov 13 21:17:53 2010 (r215261) +++ user/weongyo/usb/sys/dev/usb/usb_pf.c Sat Nov 13 21:37:18 2010 (r215262) @@ -1678,9 +1678,11 @@ usbpf_xfertap(struct usb_xfer *xfer, int char *buf, *ptr, *end; /* - * XXX check first whether there are any descriptors waiting. If no - * we don't need to handle this xfer. + * NB: usbpf_uifd_cnt isn't protected by USBPFIF_LOCK() because it's + * not harmful. */ + if (usbpf_uifd_cnt == 0) + return /* * XXX TODO From owner-svn-src-user@FreeBSD.ORG Sat Nov 13 21:59:20 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9F6D01065675; Sat, 13 Nov 2010 21:59:20 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 747108FC15; Sat, 13 Nov 2010 21:59:20 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oADLxKkm061109; Sat, 13 Nov 2010 21:59:20 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oADLxKF3061107; Sat, 13 Nov 2010 21:59:20 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201011132159.oADLxKF3061107@svn.freebsd.org> From: Weongyo Jeong Date: Sat, 13 Nov 2010 21:59:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215264 - user/weongyo/usb/sys/dev/usb X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Nov 2010 21:59:20 -0000 Author: weongyo Date: Sat Nov 13 21:59:20 2010 New Revision: 215264 URL: http://svn.freebsd.org/changeset/base/215264 Log: Handles endians to fill usbpf_pkthdr structure that it's basically a little endian form. Modified: user/weongyo/usb/sys/dev/usb/usb_pf.c Modified: user/weongyo/usb/sys/dev/usb/usb_pf.c ============================================================================== --- user/weongyo/usb/sys/dev/usb/usb_pf.c Sat Nov 13 21:48:32 2010 (r215263) +++ user/weongyo/usb/sys/dev/usb/usb_pf.c Sat Nov 13 21:59:20 2010 (r215264) @@ -1698,37 +1698,36 @@ usbpf_xfertap(struct usb_xfer *xfer, int } end = buf + sizeof(struct usbpf_pkthdr) + (USB_PAGE_SIZE * 5); - /* XXX need to care big/little endians. */ bzero(ptr, sizeof(struct usbpf_pkthdr)); up = (struct usbpf_pkthdr *)ptr; - up->up_busunit = device_get_unit(bus->bdev); + up->up_busunit = htole32(device_get_unit(bus->bdev)); up->up_type = type; up->up_xfertype = ep->edesc->bmAttributes & UE_XFERTYPE; up->up_address = xfer->address; up->up_endpoint = xfer->endpointno; - up->up_flags = xfer->flags; - up->up_status = xfer->status; + up->up_flags = htole32(xfer->flags); + up->up_status = htole32(xfer->status); switch (type) { case USBPF_XFERTAP_SUBMIT: - up->up_length = xfer->sumlen; - up->up_frames = xfer->nframes; + up->up_length = htole32(xfer->sumlen); + up->up_frames = htole32(xfer->nframes); break; case USBPF_XFERTAP_DONE: - up->up_length = xfer->actlen; - up->up_frames = xfer->aframes; + up->up_length = htole32(xfer->actlen); + up->up_frames = htole32(xfer->aframes); break; default: panic("wrong usbpf type (%d)", type); } - up->up_error = xfer->error; - up->up_interval = xfer->interval; + up->up_error = htole32(xfer->error); + up->up_interval = htole32(xfer->interval); ptr += sizeof(struct usbpf_pkthdr); for (i = 0; i < up->up_frames; i++) { if (ptr + sizeof(u_int32_t) >= end) goto done; - *((u_int32_t *)ptr) = xfer->frlengths[i]; + *((u_int32_t *)ptr) = htole32(xfer->frlengths[i]); ptr += sizeof(u_int32_t); if (ptr + xfer->frlengths[i] >= end) From owner-svn-src-user@FreeBSD.ORG Sat Nov 13 22:04:48 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id CADFA1065670; Sat, 13 Nov 2010 22:04:48 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id B9A488FC0A; Sat, 13 Nov 2010 22:04:48 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oADM4mU3061321; Sat, 13 Nov 2010 22:04:48 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oADM4mLO061319; Sat, 13 Nov 2010 22:04:48 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201011132204.oADM4mLO061319@svn.freebsd.org> From: Weongyo Jeong Date: Sat, 13 Nov 2010 22:04:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215265 - user/weongyo/usb/usb.sbin/usbdump X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Nov 2010 22:04:48 -0000 Author: weongyo Date: Sat Nov 13 22:04:48 2010 New Revision: 215265 URL: http://svn.freebsd.org/changeset/base/215265 Log: Fixes a memory leak. Modified: user/weongyo/usb/usb.sbin/usbdump/usbdump.c Modified: user/weongyo/usb/usb.sbin/usbdump/usbdump.c ============================================================================== --- user/weongyo/usb/usb.sbin/usbdump/usbdump.c Sat Nov 13 21:59:20 2010 (r215264) +++ user/weongyo/usb/usb.sbin/usbdump/usbdump.c Sat Nov 13 22:04:48 2010 (r215265) @@ -338,6 +338,7 @@ read_file(struct usbcap *p) ret = read(p->rfd, data, datalen); assert(ret == datalen); print_packets(data, datalen); + free(data); } if (ret == -1) fprintf(stderr, "read: %s\n", strerror(errno)); From owner-svn-src-user@FreeBSD.ORG Sat Nov 13 22:18:12 2010 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 5A9A01065696; Sat, 13 Nov 2010 22:18:12 +0000 (UTC) (envelope-from weongyo@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 4973F8FC16; Sat, 13 Nov 2010 22:18:12 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oADMIC37061723; Sat, 13 Nov 2010 22:18:12 GMT (envelope-from weongyo@svn.freebsd.org) Received: (from weongyo@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oADMIC9n061721; Sat, 13 Nov 2010 22:18:12 GMT (envelope-from weongyo@svn.freebsd.org) Message-Id: <201011132218.oADMIC9n061721@svn.freebsd.org> From: Weongyo Jeong Date: Sat, 13 Nov 2010 22:18:12 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215267 - user/weongyo/usb/usb.sbin/usbdump X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 13 Nov 2010 22:18:12 -0000 Author: weongyo Date: Sat Nov 13 22:18:12 2010 New Revision: 215267 URL: http://svn.freebsd.org/changeset/base/215267 Log: usbdump(8) now handles endians correctly. Modified: user/weongyo/usb/usb.sbin/usbdump/usbdump.c Modified: user/weongyo/usb/usb.sbin/usbdump/usbdump.c ============================================================================== --- user/weongyo/usb/usb.sbin/usbdump/usbdump.c Sat Nov 13 22:10:26 2010 (r215266) +++ user/weongyo/usb/usb.sbin/usbdump/usbdump.c Sat Nov 13 22:18:12 2010 (r215267) @@ -256,6 +256,15 @@ print_apacket(const struct usbpf_xhdr *h const char *ptr = payload; char buf[64]; + /* A packet from the kernel is based on little endian byte order. */ + up->up_busunit = le32toh(up->up_busunit); + up->up_flags = le32toh(up->up_flags); + up->up_status = le32toh(up->up_status); + up->up_length = le32toh(up->up_length); + up->up_frames = le32toh(up->up_frames); + up->up_error = le32toh(up->up_error); + up->up_interval = le32toh(up->up_interval); + tv.tv_sec = hdr->uh_tstamp.ut_sec; tv.tv_usec = hdr->uh_tstamp.ut_frac; tm = localtime(&tv.tv_sec); @@ -275,7 +284,7 @@ print_apacket(const struct usbpf_xhdr *h if (verbose >= 1) { for (x = 0; x < up->up_frames; x++) { - framelen = *((const u_int32_t *)ptr); + framelen = le32toh(*((const u_int32_t *)ptr)); ptr += sizeof(u_int32_t); printf(" frame[%u] len %d\n", x, framelen); assert(framelen < (1024 * 4)); @@ -308,7 +317,7 @@ print_packets(const char *data, const in print_apacket(hdr, up, ptr); pkt_captured++; for (x = 0; x < up->up_frames; x++) { - framelen = *((const u_int32_t *)ptr); + framelen = le32toh(*((const u_int32_t *)ptr)); ptr += sizeof(u_int32_t) + framelen; } }