[so2] Planificarea de tasklet-uri mutiple

Vlad Dogaru ddvlad at herebedragons.ro
Fri Jul 25 16:22:30 EEST 2014


On Fri, Jul 25, 2014 at 03:56:35PM +0300, Catalin Vasile wrote:
> Lab6:
> "
> Dacă un tasklet a fost planificat de mai multe ori și nu a rulat între
> planificări, el va rula o singură data:
> 
> tasklet_schedule(&tasklet);
>  /* presupunem ca tasklet-ul nu a rulat inca */
> 
> tasklet_schedule(&tasklet);
>  /* in aceste condiții tasklet-ul va rula o singura data */
> "
> 
> La ce se refera printr-un tasklet planificat de mai multe ori? Ce intelegem
> prin "acelasi tasklet", daca folosim aceeasi variabila pentru schedule sau
> acelasi handler?

Se referă la aceeași variabilă de tip struct tasklet_struct.

Te poți convinge urmărind funcția tasklet_schedule din interrupt.h:

	static inline void tasklet_schedule(struct tasklet_struct *t)
	{
		if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
			__tasklet_schedule(t);
	}

Nu se uită la handler, ci doar la parametrul de tip tasklet_struct *.

Este posibil ca, la un moment dat, să fie programați spre rulare mai
mulți taskleți (adică mai multe tasklet_struct-uri) cu același handler.

Vlad


More information about the so2 mailing list