svn commit: r241889 - in user/andre/tcp_workqueue/sys: arm/arm cddl/compat/opensolaris/kern cddl/contrib/opensolaris/uts/common/dtrace cddl/contrib/opensolaris/uts/common/fs/zfs ddb dev/acpica dev/...

Attilio Rao attilio at freebsd.org
Tue Oct 30 22:59:12 UTC 2012


On Tue, Oct 30, 2012 at 9:23 AM, Andre Oppermann <andre at freebsd.org> wrote:
> On 30.10.2012 03:25, Attilio Rao wrote:
>>
>> On Tue, Oct 30, 2012 at 1:38 AM, Attilio Rao <attilio at freebsd.org> wrote:
>>>
>>> On Sun, Oct 28, 2012 at 5:42 PM, Attilio Rao <attilio at freebsd.org> wrote:
>>
>>
>> [ trimm ]
>>
>>>>
>>>> BTW, the mtx_sysuninit() introduction can be avoided by using this other
>>>> trick:
>>>> #define MTX_SYSINIT(name, mtx, desc, opts)
>>>> \
>>>>          static struct mtx_args name##_args = {
>>>> \
>>>>                  (mtx),
>>>> \
>>>>                  (desc),
>>>> \
>>>>                  (opts)
>>>> \
>>>>          };
>>>> \
>>>>          SYSINIT(name##_mtx_sysinit, SI_SUB_LOCK, SI_ORDER_MIDDLE,
>>>> \
>>>>              mtx_sysinit, &name##_args);
>>>> \
>>>>          SYSUNINIT(name##_mtx_sysuninit, SI_SUB_LOCK, SI_ORDER_MIDDLE,
>>>> \
>>>>              _mtx_destroy, __DEVOLATILE(void *, &(mtx)->mtx_lock))
>>>>
>>>> I'm just not sure that I would like the use of __DEVOLATILE() even if
>>>> it would help in this case when introducing MTX_SYSINIT_UNSHARE()
>>>> because we will just need to reuse the same code.
>>>>
>>>> Also, the more I think about this the more I feel convinced that
>>>> mtxlock2mtx() should be static in kern_mutex.c. I can simply add a
>>>> note to _mutex.h as a reminder for it.
>>>
>>>
>>> Here is the patch that does both things and the one I would like to
>>> commit:
>>> http://www.freebsd.org/~attilio/mtx_decoupled3.patch
>>
>>
>> BTW, I've updated the patch in order to make use of __containerof()
>> rather than the manual frobbing. I had no idea that this method was
>> existing, many thanks to andre@ and mdf@ for signaling it.
>> Please refresh the patch.
>
>
> Thank you for the updated patch.  I have no objections to the patch,
> though I'm not really qualified to have a final say on changes to the
> mutex code.

Jeff has replied privately to me saying that he would have preferred
to see altogether also the implementation of padded mutexes along with
the mtx decoupling interface.
The following patch, does what expected:
http://www.freebsd.org/~attilio/mtx_decoupled_padalign.patch

I converted a bunch of locks and they work fine even with
MTX_SYSINIT() with the small change contained in this patchset, so
that doesn't require a separate KPI in the end.

The patch is being tested right now and I will commit as soon as I
will receive positive feedbacks.

Thanks,
Attilio


-- 
Peace can only be achieved by understanding - A. Einstein


More information about the svn-src-user mailing list