All of lore.kernel.org
 help / color / mirror / Atom feed
From: Leszek Dubiel <leszek@dubiel.pl>
To: Kent Gibson <warthog618@gmail.com>
Cc: linux-gpio@vger.kernel.org
Subject: Re: Elegant way to kill previous gpioset?
Date: Wed, 16 Nov 2022 09:54:21 +0100	[thread overview]
Message-ID: <1608e9ad-d9c4-8856-569f-cd894ffc2836@dubiel.pl> (raw)
In-Reply-To: <Y3R6hbBF5vKuwvFe@sol>



 > The best way is not to have to kill it.
 > If you kill the gpioset then the state of the line becomes indeterminate
 > so you are open to glitches as well as some other process grabbing the
 > line.

Yes, that's true.



 > To address this the gpioset for v2[1] has an interactive mode that allows
 > you to pipe commands to it.  The tests for v2[2] (gpio-tools-tests.bats)
 > demonstrate that by launching the gpioset from bash using coproc and then
 > driving the gpioset via the pipe to the co-process.
 > For a more long lived solution you can setup a named pipe and then write
 > commands to that to update the line:
 >
 > mkfifo setpipe
 > gpioset --interactive -c gpiochip2 7=0 < setpipe &
 > echo "set 7=1" > setpipe
 > or
 > echo "toggle" > setpipe
 >
 > You can even kill it with:
 >
 > echo "exit" > setpipe

I have tried pipe even in current gpioset tools, because if I
hit Enter then it gpioset exits. Similar as last line above.

Thanks to your explanation I know what's the
intention behind "--interactive" option.





 > Would that work for you?

I was wondering if there is some "one-liner" that
recofigures pin, something like:

                 gpioset -b -msignal --autokill /dev/gpiochip2 7=0

or
                 gpioset -b -msignal --force /dev/gpiochip2 7=0

that does these two commands at once:

               pkill -ef "^gpioset .* /dev/gpiochip2 7=[01]$"
               gpioset -b -msignal /dev/gpiochip2 7=0



New tools with "setpipe" and "--interactive" would
do the job too. :) :)






 > Personally, for situations like this I don't use the tools, I use one of
 > the bindings to write a daemon that controls the line and receives its
 > commands from some other source.
 >
 > There are plans for a generic daemon that would allow you to access lines
 > via dbus, but that hasn't got past the planning stages AFAIAA.
 >
 > Wrt identifying and killing processes holding particular lines,
 > the ability to identify the GPIO lines held by processes via the /proc
 > filesystem has recently been added to the 6.1 kernel[3].  There are
 > plans for a tool that will use that to return the PID holding a line,
 > but again that is still in the planning stages.


Thank you for detailed explanation.




  reply	other threads:[~2022-11-16  8:54 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <fc3da423-1107-83a1-1c94-afb2ac5fa7c9@dubielvitrum.pl>
2022-11-15 20:01 ` User space tools Leszek Dubiel
2022-11-15 20:36 ` Elegant way to kill previous gpioset? Leszek Dubiel
2022-11-16  5:52   ` Kent Gibson
2022-11-16  8:54     ` Leszek Dubiel [this message]
2022-11-16 11:52       ` Kent Gibson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1608e9ad-d9c4-8856-569f-cd894ffc2836@dubiel.pl \
    --to=leszek@dubiel.pl \
    --cc=linux-gpio@vger.kernel.org \
    --cc=warthog618@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.