tech-kern archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: Introduce curlwp_bind and curlwp_unbind for psref(9)
On Fri, Jun 17, 2016 at 12:57 PM, Matt Thomas <matt%3am-software.com@localhost> wrote:
>
>> On Jun 13, 2016, at 5:53 PM, Ryota Ozaki <ozaki-r%netbsd.org@localhost> wrote:
>>
>> On Mon, Jun 13, 2016 at 11:21 PM, Taylor R Campbell
>> <campbell+netbsd-tech-kern%mumble.net@localhost> wrote:
>>> Date: Mon, 13 Jun 2016 14:00:16 +0200
>>> From: Joerg Sonnenberger <joerg%bec.de@localhost>
>>>
>>> On Mon, Jun 13, 2016 at 07:36:31PM +0900, Ryota Ozaki wrote:
>>>> Currently we do it by open-coding in each place,
>>>> but we should provide some API to simplify codes.
>>>> riastradh@ suggested curlwp_bind and curlwp_unbind
>>>> some time ago (*1) and this patch (*2) just follows
>>>> the idea.
>>>
>>> The primary question for me is whether nesting should be allowed or not.
>>> That would mean a reference count behind the flag.
>>>
>>> This `reference count' gets stored on the stack. The caller does:
>>>
>>> int bound = curlwp_bind();
>>>
>>> ... psref_wotsit ...
>>>
>>> curlwp_unbind(bound);
>>>
>>> If it was already bound, bound = 1 and curlwp_unbind does nothing; if
>>> it was not already bound, bound = 0 and curlwp_unbind unbinds it.
>>>
>>> Perhaps the name should be `curlwp_bound_restore' or something else to
>>> emphasize this, but I haven't come up with one that I like better on
>>> aesthetic grounds.
>>
>> - curlwp_bind and curlwp_unbind
>> - curlwp_bound_set and curlwp_bound_restore
>> - curlwp_bound and curlwp_boundx
>>
>> Any other ideas? :)
>
> Since we already use preempt_disable() to force an lwp to stick to a cpu,
> doesn't that solve the problem? If need be, we can enforce nonpreemptable
> lwp's don't migrate.
+1
LP_BOUND (and LP_INTR) looks like a property, rather than a state,
which is set only once when a kthread is created.
(Except the one in panic(9); but usually "let's not do this after a
panic" is done by sprinkling if (panicstr != NULL) ...)
I'm thinking of if there are cases where preempt-disabled threads have
to be migratable, but can't think of any (yet).
Home |
Main Index |
Thread Index |
Old Index