Userspace access to IIO Example, ST Microelectronics LIS3L02DQ accelerometer. Typical sysfs entries (pruned for clarity) /sys/class/iio device0 - iio_dev related elements name - driver specific identifier (here lis3l02dq) accel_x - polled (or from ring) raw readout of acceleration accel_x_gain - hardware gain (calibration) accel_x_offset - hardware offset (calibration) available_sampling_frequency available_sampling_frequency - what options are there sampling_frequency - control of internal sampling frequency scan_elements - controls which channels will be stored in the ring buffer scan_en_accel_x scan_en_accel_y scan_en_timestamp device - link to underlying hardware device uevent - udev related element thresh - unified threshold used for detection on all axis event_line0_sources - which events are enabled accel_x_high - enable x axis high threshold event accel_x_low - enable x axis low threshold event event_line0 - event interface dev - major:minor for the chrdev (note major allocation dynamic) trigger - consumer attachement current_trigger - name based association with a trigger ring_buffer0 - ring buffer interface bps - byptes per sample (read only), dependant on scan element selection length - (rw) specificy length fo software ring buffer (typically ro in hw case) ring_enable - turn the ring on. If its the first to be enabled attached to this trigger will also enable the trigger. ring_access0 dev - major:minor for ring buffer access chrdev ring_event_line0 dev - major:minor for ring buffer event chrdev trigger0 - data ready trigger elements name - unqiue name of trigger Udev will create the following entries under /dev by default: ring_access0 - ring access chrdev ring_event0 - ring event chrdev event_line0 - general event chrdev. For the example code we assume the following rules have been used to ensure unique and consistent naming of these for the lis3l02dq in question: KERNEL="ring_event_line*", ID="spi1.0", DRIVER="lis3l02dq", NAME="iio/lis3l02dq_ring_event" KERNEL="event_line*", ID="spi1.0", DRIVER="lis3l02dq", NAME="iio/lis3l02dq_event" KERNEL="ring_access*", ID="spi1.0", DRIVER="lis3l02dq", NAME="iio/lis3l02dq_ring_access" The files, lis3l02dqbuffersimple.c and iio_utils.h in this directory provide an example of how to use the ring buffer and event interfaces.