2016-07-25 11 views

ответ

2

Общим для асинхронных функций в ядре является принятие функции обратного вызова и указателя контекста. По завершении обработки функция обратного вызова называется передачей указателя контекста в качестве одного из его параметров. Это позволяет вызывающему абоненту идентифицировать конкретный вызов, для которого вызывается обратный вызов.

В случае ib_sa_path_rec_get вы можете увидеть, например, один из вызовов этой функции в IPoIB module. Вызов передает функцию обратного вызова path_rec_completion и контекст типа struct ipoib_path *. Как только обработка запроса SA завершена, вызывается функция обратного вызова, и она использует параметр контекста для идентификации структуры ipoib_path, для которой вызывается функция.

+0

мы можем получить serveice_level и dlid без запроса ib_sa_path_rec_get? Также нам даже нужно запросить их, если две машины подключены напрямую, а dlid исправлена? –

+0

Если вы знаете dlid другими способами, тогда вам не нужен запрос, но если вы хотите, чтобы ваш код был портативным, вам нужно запросить SM. –