2016-07-25 1 views

Répondre

2

Il est courant que les fonctions asynchrones du noyau acceptent une fonction de rappel et un pointeur de contexte. Une fois la manipulation terminée, la fonction de rappel est appelée passant le pointeur de contexte comme l'un de ses paramètres. Cela permet à l'appelant d'identifier l'appel spécifique pour lequel le rappel est appelé.

Dans le cas de ib_sa_path_rec_get, vous pouvez voir par exemple l'un des appels à cette fonction dans IPoIB module. L'appel passe une fonction de rappel path_rec_completion et un contexte de type struct ipoib_path *. Une fois la gestion de la requête SA terminée, la fonction de rappel est appelée et elle utilise le paramètre context pour identifier la structure ipoib_path pour laquelle la fonction est appelée.

+0

pouvons-nous obtenir serveice_level et dlid sans requête ib_sa_path_rec_get? Aussi avons-nous même besoin d'interroger ces machines si deux machines sont directement connectées et que dlid est réparé? –

+0

Si vous connaissez le dlid par d'autres moyens, vous n'avez pas besoin de la requête, mais si vous voulez que votre code soit portable, vous devez interroger le SM. –