Con Kolivas wrote:
> On Sunday 18 June 2006 18:26, Peter Williams wrote:
>> 3. Thanks to suggestions from Con Kolivas with respect to alternative
>> methods to reduce the possibility of a task being starved of CPU while
>> holding an important system resource, enforcement of caps is now
>> quite strict. However, there will still be occasions where caps may be
>> exceeded due to this mechanism vetoing enforcement.
>
> I hate to do this to you again but the mutexes held count advice I gave was
> slightly off :|
>> int fastcall __sched mutex_lock_interruptible(struct mutex *lock)
>> {
>> + int ret;
>> +
>> might_sleep();
>> - return __mutex_fastpath_lock_retval
>> + ret = __mutex_fastpath_lock_retval
>> (&lock->count, __mutex_lock_interruptible_slowpath);
>> +
>> + if (!ret)
>> + inc_mutex_count();
>> +
>> + return ret;
>> }
>>
>> EXPORT_SYMBOL(mutex_lock_interruptible);
>> @@ -357,8 +381,13 @@ static inline int __mutex_trylock_slowpa
>> */
>> int fastcall __sched mutex_trylock(struct mutex *lock)
>> {
>> - return __mutex_fastpath_trylock(&lock->count,
>> + int ret = __mutex_fastpath_trylock(&lock->count,
>> __mutex_trylock_slowpath);
>> +
>> + if (!ret)
>> + inc_mutex_count();
>> +
>> + return ret;
>
> See my track-mutexes-1.patch I recently posted.
>
> int fastcall __sched mutex_lock_interruptible(struct mutex *lock)
> {
> + int ret;
> +
> might_sleep();
> - return __mutex_fastpath_lock_retval
> + ret = __mutex_fastpath_lock_retval
> (&lock->count, __mutex_lock_interruptible_slowpath);
> + if (likely(!ret))
> + inc_mutex_count();
> + return ret;
> }
>
> EXPORT_SYMBOL(mutex_lock_interruptible);
> @@ -308,8 +325,12 @@ static inline int __mutex_trylock_slowpa
> */
> int fastcall mutex_trylock(struct mutex *lock)
> {
> - return __mutex_fastpath_trylock(&lock->count,
> + int ret = __mutex_fastpath_trylock(&lock->count,
> __mutex_trylock_slowpath);
> +
> + if (likely(ret))
> + inc_mutex_count();
> + return ret;
> }
>
> Note the if !ret in mutex_lock_interruptible vs the if ret in mutex_trylock(
>
> I really should have given you the original debugging code that went with it,
> sorry.
>
That's OK. I should have read the comments above mutex_trylock() more
carefully myself.
Thanks
Peter
PS Have you thought about merging these caps into staircase in lieu of
SCHED_IDLEPRIO? Hard caps should be easy and soft caps not much harder.
If that was available I could merge the caps patch with plugsched.
--
Peter Williams [EMAIL PROTECTED]
"Learning, n. The kind of ignorance distinguishing the studious."
-- Ambrose Bierce
_______________________________________________
ckrm-tech mailing list
https://lists.sourceforge.net/lists/listinfo/ckrm-tech