Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Dec 2014 15:11:29 +0000 (UTC)
From:      Dimitry Andric <dim@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r275367 - in projects/clang350-import: contrib/libc++/include sys/cam/ctl
Message-ID:  <201412011511.sB1FBT8B090136@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dim
Date: Mon Dec  1 15:11:29 2014
New Revision: 275367
URL: https://svnweb.freebsd.org/changeset/base/275367

Log:
  Merge ^/head r274961 through r275366.

Modified:
  projects/clang350-import/contrib/libc++/include/type_traits
  projects/clang350-import/sys/cam/ctl/scsi_ctl.c
Directory Properties:
  projects/clang350-import/   (props changed)
  projects/clang350-import/contrib/libc++/   (props changed)
  projects/clang350-import/sys/   (props changed)

Modified: projects/clang350-import/contrib/libc++/include/type_traits
==============================================================================
--- projects/clang350-import/contrib/libc++/include/type_traits	Mon Dec  1 15:02:49 2014	(r275366)
+++ projects/clang350-import/contrib/libc++/include/type_traits	Mon Dec  1 15:11:29 2014	(r275367)
@@ -439,8 +439,26 @@ template <class _Tp> struct _LIBCPP_TYPE
 
 // is_member_function_pointer
 
-template <class _Tp> struct            __libcpp_is_member_function_pointer             : public false_type {};
-template <class _Tp, class _Up> struct __libcpp_is_member_function_pointer<_Tp _Up::*> : public is_function<_Tp> {};
+// template <class _Tp> struct            __libcpp_is_member_function_pointer             : public false_type {};
+// template <class _Tp, class _Up> struct __libcpp_is_member_function_pointer<_Tp _Up::*> : public is_function<_Tp> {};
+// 
+
+template <class _MP, bool _IsMemberFuctionPtr, bool _IsMemberObjectPtr>
+struct __member_pointer_traits_imp
+{  // forward declaration; specializations later
+};
+
+
+namespace __libcpp_is_member_function_pointer_imp {
+	template <typename _Tp>
+	char __test(typename std::__member_pointer_traits_imp<_Tp, true, false>::_FnType *);
+
+	template <typename>
+	std::__two __test(...);
+};
+	
+template <class _Tp> struct __libcpp_is_member_function_pointer
+    : public integral_constant<bool, sizeof(__libcpp_is_member_function_pointer_imp::__test<_Tp>(nullptr)) == 1> {};
 
 template <class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_member_function_pointer
     : public __libcpp_is_member_function_pointer<typename remove_cv<_Tp>::type> {};
@@ -1593,11 +1611,6 @@ __decay_copy(const _Tp& __t)
 
 #endif
 
-template <class _MP, bool _IsMemberFuctionPtr, bool _IsMemberObjectPtr>
-struct __member_pointer_traits_imp
-{
-};
-
 #ifndef _LIBCPP_HAS_NO_VARIADICS
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1605,6 +1618,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1612,6 +1626,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1619,6 +1634,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class volatile _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1626,6 +1642,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const volatile _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 #if __has_feature(cxx_reference_qualified_functions)
@@ -1635,6 +1652,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class& _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1642,6 +1660,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const& _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1649,6 +1668,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class volatile& _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1656,6 +1676,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const volatile& _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1663,6 +1684,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class&& _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1670,6 +1692,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const&& _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1677,6 +1700,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class volatile&& _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 template <class _Rp, class _Class, class ..._Param>
@@ -1684,6 +1708,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const volatile&& _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_Param...);
 };
 
 #endif  // __has_feature(cxx_reference_qualified_functions)
@@ -1695,6 +1720,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) ();
 };
 
 template <class _Rp, class _Class, class _P0>
@@ -1702,6 +1728,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0);
 };
 
 template <class _Rp, class _Class, class _P0, class _P1>
@@ -1709,6 +1736,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0, _P1);
 };
 
 template <class _Rp, class _Class, class _P0, class _P1, class _P2>
@@ -1716,6 +1744,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0, _P1, _P2);
 };
 
 template <class _Rp, class _Class>
@@ -1723,6 +1752,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) ();
 };
 
 template <class _Rp, class _Class, class _P0>
@@ -1730,6 +1760,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0);
 };
 
 template <class _Rp, class _Class, class _P0, class _P1>
@@ -1737,6 +1768,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0, _P1);
 };
 
 template <class _Rp, class _Class, class _P0, class _P1, class _P2>
@@ -1744,6 +1776,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0, _P1, _P2);
 };
 
 template <class _Rp, class _Class>
@@ -1751,6 +1784,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class volatile _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) ();
 };
 
 template <class _Rp, class _Class, class _P0>
@@ -1758,6 +1792,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class volatile _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0);
 };
 
 template <class _Rp, class _Class, class _P0, class _P1>
@@ -1765,6 +1800,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class volatile _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0, _P1);
 };
 
 template <class _Rp, class _Class, class _P0, class _P1, class _P2>
@@ -1772,6 +1808,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class volatile _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0, _P1, _P2);
 };
 
 template <class _Rp, class _Class>
@@ -1779,6 +1816,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const volatile _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) ();
 };
 
 template <class _Rp, class _Class, class _P0>
@@ -1786,6 +1824,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const volatile _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0);
 };
 
 template <class _Rp, class _Class, class _P0, class _P1>
@@ -1793,6 +1832,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const volatile _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0, _P1);
 };
 
 template <class _Rp, class _Class, class _P0, class _P1, class _P2>
@@ -1800,6 +1840,7 @@ struct __member_pointer_traits_imp<_Rp (
 {
     typedef _Class const volatile _ClassType;
     typedef _Rp _ReturnType;
+    typedef _Rp (_FnType) (_P0, _P1, _P2);
 };
 
 #endif  // _LIBCPP_HAS_NO_VARIADICS
@@ -1819,6 +1860,7 @@ struct __member_pointer_traits
 {
 //     typedef ... _ClassType;
 //     typedef ... _ReturnType;
+//     typedef ... _FnType;
 };
 
 // result_of
@@ -2526,6 +2568,15 @@ template <class _Tp> struct _LIBCPP_TYPE
 
 // is_nothrow_constructible
 
+#if 0
+template <class _Tp, class... _Args>
+struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_constructible
+    : public integral_constant<bool, __is_nothrow_constructible(_Tp(_Args...))>
+{
+};
+
+#else
+
 #ifndef _LIBCPP_HAS_NO_VARIADICS
 
 #if __has_feature(cxx_noexcept)
@@ -2664,6 +2715,7 @@ struct _LIBCPP_TYPE_VIS_ONLY is_nothrow_
 };
 
 #endif  // _LIBCPP_HAS_NO_VARIADICS
+#endif  // __has_feature(is_nothrow_constructible)
 
 // is_nothrow_default_constructible
 

Modified: projects/clang350-import/sys/cam/ctl/scsi_ctl.c
==============================================================================
--- projects/clang350-import/sys/cam/ctl/scsi_ctl.c	Mon Dec  1 15:02:49 2014	(r275366)
+++ projects/clang350-import/sys/cam/ctl/scsi_ctl.c	Mon Dec  1 15:11:29 2014	(r275367)
@@ -622,6 +622,9 @@ ctlferegister(struct cam_periph *periph,
 			  "notify CCBs, status 0x%x\n", __func__, status);
 		return (CAM_REQ_CMP_ERR);
 	}
+	mtx_lock(&bus_softc->lun_softc_mtx);
+	STAILQ_INSERT_TAIL(&bus_softc->lun_softc_list, softc, links);
+	mtx_unlock(&bus_softc->lun_softc_mtx);
 	return (CAM_REQ_CMP);
 }
 
@@ -1573,12 +1576,7 @@ ctlfe_onoffline(void *arg, int online)
 		printf("%s: unable to create path!\n", __func__);
 		return;
 	}
-	ccb = (union ccb *)malloc(sizeof(*ccb), M_TEMP, M_NOWAIT | M_ZERO);
-	if (ccb == NULL) {
-		printf("%s: unable to malloc CCB!\n", __func__);
-		xpt_free_path(path);
-		return;
-	}
+	ccb = xpt_alloc_ccb();
 	xpt_setup_ccb(&ccb->ccb_h, path, CAM_PRIORITY_NONE);
 
 	/*
@@ -1711,10 +1709,7 @@ ctlfe_onoffline(void *arg, int online)
 	}
 
 	xpt_free_path(path);
-
-	free(ccb, M_TEMP);
-
-	return;
+	xpt_free_ccb(ccb);
 }
 
 static void
@@ -1740,14 +1735,7 @@ ctlfe_online(void *arg)
 		return;
 	}
 
-	lun_softc = malloc(sizeof(*lun_softc), M_CTLFE,
-			M_NOWAIT | M_ZERO);
-	if (lun_softc == NULL) {
-		xpt_print(path, "%s: unable to allocate softc for "
-				"wildcard periph\n", __func__);
-		xpt_free_path(path);
-		return;
-	}
+	lun_softc = malloc(sizeof(*lun_softc), M_CTLFE, M_WAITOK | M_ZERO);
 
 	xpt_path_lock(path);
 	periph = cam_periph_find(path, "ctl");
@@ -1780,14 +1768,10 @@ ctlfe_online(void *arg)
 		       "cam_periph_alloc()\n", __func__, (entry != NULL) ?
 		       entry->status_text : "Unknown", status);
 		free(lun_softc, M_CTLFE);
-	} else {
-		mtx_lock(&bus_softc->lun_softc_mtx);
-		STAILQ_INSERT_TAIL(&bus_softc->lun_softc_list, lun_softc, links);
-		mtx_unlock(&bus_softc->lun_softc_mtx);
-		ctlfe_onoffline(arg, /*online*/ 1);
 	}
 
 	xpt_path_unlock(path);
+	ctlfe_onoffline(arg, /*online*/ 1);
 	xpt_free_path(path);
 }
 
@@ -1801,6 +1785,8 @@ ctlfe_offline(void *arg)
 
 	bus_softc = (struct ctlfe_softc *)arg;
 
+	ctlfe_onoffline(arg, /*online*/ 0);
+
 	/*
 	 * Disable the wildcard LUN for this port now that we have taken
 	 * the port offline.
@@ -1813,14 +1799,9 @@ ctlfe_offline(void *arg)
 		       __func__);
 		return;
 	}
-
 	xpt_path_lock(path);
-
-	ctlfe_onoffline(arg, /*online*/ 0);
-
 	if ((periph = cam_periph_find(path, "ctl")) != NULL)
 		cam_periph_invalidate(periph);
-
 	xpt_path_unlock(path);
 	xpt_free_path(path);
 }
@@ -1881,10 +1862,6 @@ ctlfe_lun_enable(void *arg, struct ctl_i
 		       "cam_periph_alloc()\n", __func__, (entry != NULL) ?
 		       entry->status_text : "Unknown", status);
 		free(softc, M_CTLFE);
-	} else {
-		mtx_lock(&bus_softc->lun_softc_mtx);
-		STAILQ_INSERT_TAIL(&bus_softc->lun_softc_list, softc, links);
-		mtx_unlock(&bus_softc->lun_softc_mtx);
 	}
 
 	xpt_path_unlock(path);



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