Je suis en train d'écrire un pilote linux phy qui gère l'horodatage des paquets. La moitié inférieure effectue le calcul des horodatages et envoie ces informations à la pile réseau du noyau, puis à l'espace utilisateur. La moitié inférieure a besoin de quelques informations du skb (paquet) que l'appelant de la tasklet a. J'ai de la difficulté à passer ce skb au takslet. La fonction de gestionnaire de tâches ne prend aucune autre entrée que unsigned long. Je suis coincé ici. Ci-dessous est un extrait de code pour vous comprendre -partager des données avec la moitié inférieure de la tâche dans le pilote linux
static void tx_ts_task(unsigned long val)
{
struct phyts *phyts = container_of(&val, struct phyts, int_flags);
//skb_copy(skb); ///want to access skb in this tasklet but I am unable to do this.
.
.
}
int tx_timestamp(struct phyts *phyts, struct sk_buff *skb, int len)
{
.
.
tasklet_schedule(&tx_ts_tasklet);
}
Appréciez vos entrées. Merci
Non signé long est équivalent à void * sous Linux. – 0andriy