svn commit: r216252 - head/sys/cddl/dev/cyclic/i386

Andriy Gapon avg at freebsd.org
Tue Dec 7 12:24:49 UTC 2010


on 07/12/2010 14:04 Andriy Gapon said the following:
> Author: avg
> Date: Tue Dec  7 12:04:06 2010
> New Revision: 216252
> URL: http://svn.freebsd.org/changeset/base/216252
> 
> Log:
>   opensolaris cyclic xcall: no need for special handling of curcpu
>   
>   smp_rendezvous_cpus already properly handles current CPU case
>   and non-SMP case.

This could also lead to problems because a thread could be not pinned to its
current CPU during direct (*func)(param) call.

>   MFC after:	3 weeks
> 
> Modified:
>   head/sys/cddl/dev/cyclic/i386/cyclic_machdep.c
> 
> Modified: head/sys/cddl/dev/cyclic/i386/cyclic_machdep.c
> ==============================================================================
> --- head/sys/cddl/dev/cyclic/i386/cyclic_machdep.c	Tue Dec  7 09:19:47 2010	(r216251)
> +++ head/sys/cddl/dev/cyclic/i386/cyclic_machdep.c	Tue Dec  7 12:04:06 2010	(r216252)
> @@ -121,13 +121,7 @@ static void reprogram(cyb_arg_t arg, hrt
>  
>  static void xcall(cyb_arg_t arg, cpu_t *c, cyc_func_t func, void *param)
>  {
> -	/*
> -	 * If the target CPU is the current one, just call the
> -	 * function. This covers the non-SMP case.
> -	 */
> -	if (c == &solaris_cpu[curcpu])
> -		(*func)(param);
> -	else
> -		smp_rendezvous_cpus((cpumask_t) (1 << c->cpuid), NULL,
> -		    func, smp_no_rendevous_barrier, param);
> +
> +	smp_rendezvous_cpus((cpumask_t) (1 << c->cpuid), NULL,
> +	    func, smp_no_rendevous_barrier, param);
>  }


-- 
Andriy Gapon


More information about the svn-src-head mailing list