MainLoop was meant to be a general event multiplexer. One of those events can certainly be "a certain amount of time expiring". So, you could write something like: loop.RegisterAlarm(seconds(N), [&] { loop.RequestTermination() }); which would translate to an appropriate timeout argument to ppoll.
>>> (2) MainLoop can exit on sigint for any platform that has ppoll, pselect, >>> or kevent, so we should probably set that up too. Listening for signals is very complicated in multithreaded programs. I am not sure about the situation with kevent, but I am sure the ppoll based version will not work reliably for this. Then there is also the problem of installing a signal handler in a shared library (liblldb), which can conflict with whatever is the host program doing. I would love to have this functionality, as I think it's badly needed in a lot of places, but I think it needs to be done the long way round and have a sort of an Interrupt function on the SBAPI level (maybe the existing SBDebugger.DispatchInputInterrupt would be enough, although I am not convinced of the signal-safety of that function), which would then trigger an exit from the main loop where necessary. lldb and other host programs could then install their own sigint handlers (lldb already does btw), and call this function when appropriate. Let me throw another option out there: if lldb-server fails to start because of a borked command line you should be able to detect this (waitpid). So then again you are in the business of multiplexing two events (accept() and waitpid()) and you don't need timeouts. (It will be tricky to multiplex waitpid properly without installing a SIGCHLD handler though). On 28 April 2017 at 23:17, Chris Bieneman via lldb-dev <lldb-dev@lists.llvm.org> wrote: > I think in the common case of listening for a remote connection infinite (or > very very long) timeout with signal interrupt is the preferred approach. > There are other situations where we use SelectHelper with smaller timeouts, > and I think ultimately we should replace SelectHelper with MainLoop because > they do basically the same thing. +100 _______________________________________________ lldb-dev mailing list lldb-dev@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev