У меня есть 2 вопроса относительно использования этих функций.Я не совсем понимаю документацию, написанную здесь :
sysfs выделяет буфер размера (PAGE_SIZE) и передает его методу.Sysfs будет вызывать метод ровно один раз для каждого чтения или записи.Это приводит к следующему поведению в реализациях метода:
В read (2) метод show () должен заполнить весь буфер.Напомним, что атрибут должен экспортировать только одно значение или массив схожих значений, поэтому это не должно быть так дорого.
Это позволяет пользовательскому пространству выполнять частичное чтение и произвольный поиск вперед по всему файлу по желанию.Если пользовательское пространство стремится к нулю или выполняет pread (2) со смещением '0', метод show () будет вызван снова, с изменением структуры для заполнения буфера.
Вкл.write (2), sysfs ожидает, что весь буфер будет передан во время первой записи.Затем Sysfs передает весь буфер методу store ().Завершающий ноль добавляется после данных о магазинах.Это делает функции, подобные sysfs_streq (), безопасными для использования.
При записи файлов sysfs процессы пользовательского пространства должны сначала прочитать весь файл, изменить значения, которые он хочет изменить, а затем записать весь буфер обратно.
Во-первых, когда я читаю / записываю в файл атрибута sysfs с read/write
, я гарантирую, что буфер, который я читаю в / буфер в функции store
будут ли все байты, которые я хотел прочитать в этой функции, и не вызывать ее несколькими кусками?
Кроме того, как добавляется нулевой символ?То есть, предположим, я написал n байтов, будет ли количество записанных байтов в параметре функции n, а нулевой символ будет помещен в n + 1?
спасибо