Implementing a driver that listen to a GPIO

Clemens Gruber clemens.gruber at pqgruber.com
Thu Oct 2 13:01:01 EDT 2014


Hi,

I am just trying to solve a similar problem as Luca described. I have a
TQMa28 board running Linux 3.17-rc7 though.
The capacitors keep the system up for about 1500 more milliseconds after
the power fails. A GPIO line is set to high as soon as the main power is
lost.

So I have not much time to quit an important user space process and to
clean up the ext4 root filesystem before the power fails.

At the moment I pass rootflags=data=journal,commit=1 in the kernel
commandline to lower the risk of data loss.
In the user space application I open important files using the O_SYNC flag.

Is there something else I should do to avoid data loss?

How would you implement the "emergency cleanup on power-failure" logic?
Dedicated driver (similar to the mentioned gpio-event driver?),
implement it with UIO, let a userspace application running as root
select /dev/uioX and cleaning up?

Or should I create a separate partition on my eMMC just for this user
space application data and use a readonly rootfs for the rest?

Thanks for your help!

Best regards,
Clemens



More information about the Kernelnewbies mailing list