From: Cameron Nemo <camerontnorman@gmail.com>
To: Steve Litt <slitt@troubleshooters.com>
Cc: supervision@list.skarnet.org
Subject: Re: runit SIGPWR support
Date: Mon, 17 Feb 2020 11:46:15 -0800 [thread overview]
Message-ID: <CALZWFR+u-i=4g35O07Ytz7UQSWN08OJAnUB3DDS5OBiKwRFnRQ@mail.gmail.com> (raw)
In-Reply-To: <20200214182241.15614126@mydesk.domain.cxm>
On Fri, Feb 14, 2020 at 3:22 PM Steve Litt <slitt@troubleshooters.com> wrote:
>
> On Fri, 14 Feb 2020 05:18:33 -0800
> Cameron Nemo <camerontnorman@gmail.com> wrote:
>
> > On Fri, Feb 14, 2020 at 4:45 AM Steve Litt
> > <slitt@troubleshooters.com> wrote:
> > >
> > > In my computer usage, I usually need about 5 minutes to gracefully
> > > exit all my programs before powering down the computer, and I have
> > > a 40 minute UPS. If this is done at all, I'd suggest a configurable
> > > amount of time, with a visible countdown, telling the user to get
> > > his or her affairs in order, and also a way to cancel the shutdown.
> > >
> > > The only reason I see to have the computer automatically power down
> > > when signaled by the UPS is that I might not be home, but in that
> > > case waiting 5 minutes wouldn't matter.
> >
> > Most init systems allow the SIGPWR behavior to be configured.
> > This includes Upstart, systemd, and my own "little init":
> >
> > https://gitlab.com/chinstrap/linit#configuration
> >
> > I provide a guide for using linit with runit here, but the process is
> > experimental:
> >
> > https://gitlab.com/chinstrap/linit/-/blob/master/README.runit.md
> >
> > Linit is packaged in Void Linux, and void images are available for
> > LXD. Lastly I want to mention that lxc.signal.halt is not available
> > with LXD.
> >
> > Regards,
> > --
> > Cameron Nemo
>
> Hi Cameron,
>
> I'm very impressed with linit. In my 20 minute perusal it looks quite a
> bit like Suckess Init, which I like. On line 54 you have
> int linit_spawn(char * restrict path) {
>
> Is path the path to the rc file that linit forks off? I've never seen
> char * restrict before: What does "restrict" mean?
I use the term hook, which could refer to /boot, /sigpwr, or /sigint.
Roughly equivalent to an rc file.
restrict keyword is described here:
https://en.wikipedia.org/wiki/Restrict
https://stackoverflow.com/questions/745870/realistic-usage-of-the-c99-restrict-keyword
It is probably not useful in this case, but the posix_spawn API
specifies it so I used it.
>
> I notice linit responds only to a couple signals, whereas Suckless
> Init responds to:
> { SIGUSR1, sigpoweroff },
> { SIGCHLD, sigreap },
> { SIGALRM, sigreap },
> { SIGINT, sigreboot },
> { SIGILL, sigillhandle},
>
SIGUSR1: I am unaware of any linux tools which use that signal. I used
SIGPWR specifically for compat with UPS tools and lxc/lxd.
SIGCHLD: linit actually ignores this signal, which reaps the child.
SIGALRM: because childs are implicitly reaped, there is no reason to
include a tick from what I can tell. (i.e. this case never happens:
https://git.suckless.org/sinit/commit/170d599d58efee6c9be675a85c6e435d68e8a2de.html)
SIGINT: same behavior as sinit here.
SIGILL: you must have added that. I would be curious to know why.
> Actually, I think I might have put one of those in, but I don't think
> you respond to most of them: Is there a reason?
>
> Anyway, I kind of like your linit PID1.
Thanks.
The only real novel details are that:
- it calls pause() in the main loop
- uses posix_spawn() to exec from signal handlers in a thread safe manner
> Steve
Regards,
Cameron
next prev parent reply other threads:[~2020-02-17 19:46 UTC|newest]
Thread overview: 64+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1beb6e35-d4be-60b8-fc52-af666c4fffe3@gmx.com>
2020-02-12 14:25 ` innerspacepilot
2020-02-12 21:54 ` Colin Booth
2020-02-12 22:16 ` Dewayne Geraghty
2020-02-14 9:38 ` Jeff
2020-02-14 12:38 ` Steve Litt
2020-02-15 10:47 ` fungal-net
2020-02-14 10:08 ` Jeff
2020-02-14 10:46 ` Jeff
2020-02-14 12:29 ` innerspacepilot
2020-02-14 12:45 ` Steve Litt
[not found] ` <CALZWFRLvtofWfP4kzxJ8_8_K3nzebPjCR-NsJ2MU22cSuaOLng@mail.gmail.com>
[not found] ` <20200214182241.15614126@mydesk.domain.cxm>
2020-02-17 19:46 ` Cameron Nemo [this message]
2020-02-23 16:11 ` Jeff
2020-02-17 14:39 ` Jeff
2020-02-14 14:02 ` Casper Ti. Vector
2020-02-17 14:45 ` Jeff
2020-02-17 14:50 ` Jeff
2020-02-14 13:15 ` Casper Ti. Vector
2020-02-14 13:39 ` innerspacepilot
2020-02-14 13:57 ` Casper Ti. Vector
2020-02-14 14:06 ` innerspacepilot
2020-02-14 14:25 ` Casper Ti. Vector
2020-02-14 18:30 ` Laurent Bercot
2020-02-17 10:00 ` innerspacepilot
2020-02-17 15:13 ` Jeff
2020-02-18 9:39 ` Laurent Bercot
2020-02-20 20:39 ` Serge E. Hallyn
2020-02-23 16:51 ` Jeff
2020-02-23 23:53 ` Laurent Bercot
2020-02-24 6:31 ` innerspacepilot
2020-02-24 10:23 ` Laurent Bercot
2020-02-24 13:00 ` Jeff
2020-02-24 19:53 ` Laurent Bercot
2020-02-24 13:12 ` innerspacepilot
2020-02-24 15:26 ` Serge E. Hallyn
2020-02-26 8:07 ` innerspacepilot
2020-02-28 6:39 ` Jan Braun
2020-02-28 9:45 ` Alex Suykov
2020-02-28 23:50 ` fungal-net
2020-02-29 13:44 ` Jonathan de Boyne Pollard
2020-02-29 18:20 ` Guillermo
2020-03-06 20:07 ` innerspacepilot
2020-03-06 20:09 ` innerspacepilot
2020-02-25 8:39 ` Jonathan de Boyne Pollard
2020-02-24 21:13 ` Guillermo
2020-02-24 22:25 ` Laurent Bercot
2020-02-24 22:49 ` Laurent Bercot
2020-02-24 23:08 ` Guillermo
2020-02-25 1:48 ` Laurent Bercot
2020-02-25 9:08 ` Jonathan de Boyne Pollard
2020-02-25 18:38 ` Guillermo
2020-03-16 12:49 ` Jeff
2020-03-16 17:13 ` Jeff
2020-02-24 23:03 ` Guillermo
2020-03-16 12:31 ` Jeff
2020-03-16 18:03 ` Laurent Bercot
2020-02-23 17:31 ` Jeff
2020-02-24 0:33 ` Laurent Bercot
2020-02-14 19:08 ` John W Higgins
2020-02-14 23:18 ` Laurent Bercot
2020-02-14 23:38 ` John W Higgins
2020-02-15 2:15 ` Laurent Bercot
2020-04-14 16:57 Maxim Vetsalo
-- strict thread matches above, loose matches on Subject: below --
2020-01-23 20:44 innerspacepilot
2020-01-31 4:39 ` Colin Booth
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='CALZWFR+u-i=4g35O07Ytz7UQSWN08OJAnUB3DDS5OBiKwRFnRQ@mail.gmail.com' \
--to=camerontnorman@gmail.com \
--cc=slitt@troubleshooters.com \
--cc=supervision@list.skarnet.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).