Файлы sysfs событий Linux Kernel IIO доступны только для чтения

У меня проблема в том, что я зарегистрировал события IIO для повышения и понижения порогов. Я вижу файлы sysfs в подпапке событий и могу их читать, но когда я пытаюсь написать новый порог, он говорит «отказано в доступе».

следующая установка:

static const struct iio_event_spec as6200_events[] = {
  {
    .type = IIO_EV_TYPE_THRESH,
    .dir = IIO_EV_DIR_RISING,
    .mask_separate = BIT(IIO_EV_INFO_VALUE),
  }, {
    .type = IIO_EV_TYPE_THRESH,
    .dir = IIO_EV_DIR_FALLING,
    .mask_separate = BIT(IIO_EV_INFO_VALUE),
  }
};

static const struct iio_chan_spec as6200_channels[] = {
  {
    .type = IIO_TEMP,
    .info_mask_separate = BIT(IIO_CHAN_INFO_RAW) |
      BIT(IIO_CHAN_INFO_PROCESSED) |
      BIT(IIO_CHAN_INFO_SCALE),
    .info_mask_shared_by_type = BIT(IIO_CHAN_INFO_SAMP_FREQ),
    .event_spec = as6200_events,
    .num_event_specs = ARRAY_SIZE(as6200_events),
  }
};

person lobi    schedule 03.08.2016    source источник
comment
вывод: это работает, когда я изменяю разрешения файла in_temp_thresh_rising_value на 666 через sudo. Но почему он не создается с этими разрешениями через подсистему IIO?   -  person lobi    schedule 03.08.2016


Ответы (2)


вывод: это работает, когда я меняю права доступа к файлу in_temp_thresh_rising_value на 666 через sudo. Но почему он не создается с этими разрешениями через подсистему IIO?

Это обычная практика для файлов sysfs, поскольку запись в эти файлы может изменить поведение системы и даже скомпрометировать или сломать систему. Поэтому, если вы хотите писать в эти файлы, вы должны делать это от root, или добавить своего пользователя в соответствующую группу, или изменить режим этого файла (по правилу udev или вручную).

Вот как это делается в коде IIO:

person Sam Protsenko    schedule 03.08.2016

Другим решением этой проблемы является использование комбинации сетевого и локального контекстов libiio. В этом случае демон libiio будет запущен с соответствующими привилегиями для записи в файлы sysfs, а затем пользовательское приложение подключится к этому демону, используя сетевой контекст libiio.

person mallwright    schedule 12.07.2018