У меня возник какой-то основной вопрос об использовании указателя структуры в драйверах устройств Linux.
На примере драйвера RTC ISL12022 linux / drivers / rtc / rtc-isl12022.c
struct isl12022 *isl12022 = i2c_get_clientdata(client); //From Function static int
isl12022_set_datetime(struct i2c_client *client, struct rtc_time *tm)
В приведенном выше примере указатель структуры используется для получения данных клиента I2C вместо создания локального копирования в функцию.В основном я видел такую практику у всех водителей.Тем самым я хочу узнать о плюсах использования структурного указателя вместо создания локальной копии?
-----------------------------------РЕДАКТИРОВАТЬ-----------------------------------------------
Красиво объяснил.Благодарю.При передаче структуры в функцию необходимо использовать указатель, согласитесь на это.Но, учитывая приведенный выше пример rtc-isl12022.c с функцией
isl12022_set_datetime(struct i2c_client *client, struct rtc_time *tm)
, структура i2c_client уже передана функции в качестве указателя.(Вот так)
Теперь внутри функции isl12022_set_datetime * указатель клиента использовался напрямую, вместо того, чтобы создавать его локальную копию, а затем использовать эту копию, чтобы по ошибке убедиться, что исходная структура, указанная * client, безопасна и не изменена.
struct isl12022 isl2022; and then copy the structure pointed as i2c_get_clientdata(client);
Приведенный выше оператор создаст указатель структуры isl12022, который указывает на структуру isl12022, возвращаемую i2c_get_clientdata fn.Разве это не искажает исходную структуру данных, на которую указывает клиент?