Diffusion GnuPG e7e570809146

agent: Avoid tight timer tick when possible.

Authored by dkg on Nov 1 2016, 5:14 AM.

Description

agent: Avoid tight timer tick when possible.

* agent/gpg-agent.c (need_tick): Evaluate whether the short-phase
handle_tick() is needed.
(handle_connections): On each cycle of the select loop, adjust whether
we should call handle_tick() or not.
(start_connection_thread_ssh, do_start_connection_thread): Signal the
main loop when the child terminates.
* agent/call-scd.c (start_scd): Call interrupt_main_thread_loop() once
the scdaemon thread context has started up.

With this change, an idle gpg-agent that has no scdaemon running only
wakes up once a minute (to check_own_socket).

Thanks to Ian Jackson and NIIBE Yutaka who helped me improve some of
the blocking and corner cases.

Gbp-Pq: Topic gpg-agent-idling
Gbp-Pq: Name agent-Avoid-tight-timer-tick-when-possible.patch

  • Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>

Details

Committed
dkgJul 20 2019, 8:16 PM
Parents
rGd369f30f319f: agent: Allow threads to interrupt main select loop with SIGCONT.
Branches
Unknown
Tags
Unknown