Merge ^/head r274961 through r275366.
This commit is contained in:
commit
840b8445a5
@ -439,8 +439,26 @@ template <class _Tp> struct _LIBCPP_TYPE_VIS_ONLY is_function
|
||||
|
||||
// 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 (_Class::*)(_Param...), true, false>
|
||||
{
|
||||
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 (_Class::*)(_Param...) const, true, false
|
||||
{
|
||||
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 (_Class::*)(_Param...) volatile, true, fa
|
||||
{
|
||||
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 (_Class::*)(_Param...) const volatile, tr
|
||||
{
|
||||
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 (_Class::*)(_Param...) &, true, false>
|
||||
{
|
||||
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 (_Class::*)(_Param...) const&, true, fals
|
||||
{
|
||||
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 (_Class::*)(_Param...) volatile&, true, f
|
||||
{
|
||||
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 (_Class::*)(_Param...) const volatile&, t
|
||||
{
|
||||
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 (_Class::*)(_Param...) &&, true, false>
|
||||
{
|
||||
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 (_Class::*)(_Param...) const&&, true, fal
|
||||
{
|
||||
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 (_Class::*)(_Param...) volatile&&, true,
|
||||
{
|
||||
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 (_Class::*)(_Param...) const volatile&&,
|
||||
{
|
||||
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 (_Class::*)(), true, false>
|
||||
{
|
||||
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 (_Class::*)(_P0), true, false>
|
||||
{
|
||||
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 (_Class::*)(_P0, _P1), true, false>
|
||||
{
|
||||
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 (_Class::*)(_P0, _P1, _P2), true, false>
|
||||
{
|
||||
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 (_Class::*)() const, true, false>
|
||||
{
|
||||
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 (_Class::*)(_P0) const, true, false>
|
||||
{
|
||||
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 (_Class::*)(_P0, _P1) const, true, false>
|
||||
{
|
||||
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 (_Class::*)(_P0, _P1, _P2) const, true, f
|
||||
{
|
||||
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 (_Class::*)() volatile, true, false>
|
||||
{
|
||||
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 (_Class::*)(_P0) volatile, true, false>
|
||||
{
|
||||
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 (_Class::*)(_P0, _P1) volatile, true, fal
|
||||
{
|
||||
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 (_Class::*)(_P0, _P1, _P2) volatile, true
|
||||
{
|
||||
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 (_Class::*)() const volatile, true, false
|
||||
{
|
||||
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 (_Class::*)(_P0) const volatile, true, fa
|
||||
{
|
||||
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 (_Class::*)(_P0, _P1) const volatile, tru
|
||||
{
|
||||
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 (_Class::*)(_P0, _P1, _P2) const volatile
|
||||
{
|
||||
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_VIS_ONLY is_trivially_destructible
|
||||
|
||||
// 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_constructible<_Tp, _Tp&,
|
||||
};
|
||||
|
||||
#endif // _LIBCPP_HAS_NO_VARIADICS
|
||||
#endif // __has_feature(is_nothrow_constructible)
|
||||
|
||||
// is_nothrow_default_constructible
|
||||
|
||||
|
@ -622,6 +622,9 @@ ctlferegister(struct cam_periph *periph, void *arg)
|
||||
"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_id targ_id, int lun_id)
|
||||
"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);
|
||||
|
Loading…
Reference in New Issue
Block a user