2016-08-03 13 views
1

私は、上昇しきい値と下降しきい値のためにIIOイベントを登録したという問題があります。 sysfsファイルはイベントのサブフォルダにあり、読み込めますが、新しいしきい値を書き込もうとすると "permission denied"と表示されます。Linuxカーネル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), 
    } 
}; 
+0

発見(S_IWUSRがあるだけで、ファイルの所有者、rootの書き込みができますので):私はin_temp_thresh_rising_valueファイルのパーミッションを変更したときにそれが動作しますsudo経由で666へ。しかし、なぜそれがIIOサブシステム経由でこの権限で作成されないのですか? – lobi

答えて

3

見つける:私はsudo経由666in_temp_thresh_rising_valueファイルのパーミッションを変更するとき、それは動作します。しかし、なぜそれがIIOサブシステム経由でこの権限で作成されないのですか?

これは、それらのファイルへの書き込みなどのsysfsファイルは、システムの動作を変更しても、システムを侵害または壊すことができるための一般的な方法です。したがって、これらのファイルに書きたい場合は、rootからそれを行うか、ユーザーを対応するグループに追加するか、そのファイルモードを(udevルールまたは手で)変更してください。ここで

は、それがIIOコードで行うの方法です:iio_ev_type_textiio_ev_dir_textiio_ev_info_text

  • ノード作成パスは、次です:

    • IIOは、ノード名がdrivers/iio/industrialio-event.cに次の表から導出されたsysfs iio_device_add_event() - >__iio_add_chan_devattr() - > SYSFSノードの__iio_device_attr_init()
    • ファイルモードは__iio_device_attr_init()に設定されている:

        読み出し用
      • dev_attr->attr.mode |= S_IRUGO;

        • そうすべてのユーザーがノードを読み取ることができる(S_IRUGOU SERためeading Rを可能にするので、G競売及びOその他)
      • 書込み用:dev_attr->attr.mode |= S_IWUSR;

        • ので、それはrootだけが書き込むことができ
  • 関連する問題