[LLVMdev] SlowOperationInformer.cpp:55: error: `SIGALRM' undeclared (first use this functi
Reid Spencer
reid at x10sys.com
Fri Sep 24 13:03:44 PDT 2004
I just discovered that the *only* place this is used is in the debugger when it
is loading files, etc. There should be a way to do this without an alarm. In
fact, a thread could easily set the "ShouldShowStatus" every second until the
the thing is cancelled. Since the caller is required to update the progress,
this could also be done with time deltas without the use of threads or signals.
When I get the lib/System/TimeValue abstraction implemented, I'll probably just
update SlowOperationInformer to use timestamp deltas rather than signals and
avoid this whole problem altogether.
Jeff Cohen wrote:
> There's simply no equivalent to signals on Windows. There is no way to
> asynchronously interrupt a thread's processing to execute some handler.
> The only thing you can asynchronously do to a thread is kill it, and
> that's generally frowned upon (who knows what critical sections it might
> be holding, etc...).
>
> Stuff like alarms is supposed to be done using the "event-driven" style
> of programming, using the Windows message queue, APCs or I/O completion
> ports. You can do what Reid suggests below, but it begs the question of
> how one "rings the alarm" in the main thread. Set a flag that's
> periodically checked? Hmm... guess that's what this particular signal
> handler does anyway :) Actually, one can dispense with the extra thread
> by using waitable timers and periodically checking its state, so long as
> you don't plan on supporting Win95 or NT 3.1/3.5.
>
> It definitely belongs in lib/System.
>
> On Fri, 24 Sep 2004 12:00:10 -0700
> Reid Spencer <reid at x10sys.com> wrote:
>
>
>>Ultimately, this is another function that needs to go into lib/System. An
>>alternate approach is to fork a thread, sleep, and when the thread wakes up,
>>"ring the alarm".
>>
>>Reid.
>>
>>John Criswell wrote:
>>
>>>Henrik Bach wrote:
>>>
>>>
>>>>Hi
>>>>
>>>>I'm compiling:
>>>>/usr/local/src/llvm/lib/Support/SlowOperationInformer.cpp on MinGW.
>>>>However, it stops complaining about that SIGALRM is undeclared:
>>>
>>>
>>>Is there an alarm() syscall on MinGW? And if so, what signal does it
>>>send (according to the MinGW docs)?
>>>
>>>-- John T.
>>>
>>>
>>>>--------------------------
>>>>@ /usr/local/build/llvm/mklib --tag=disable-shared --silent --tag=CXX
>>>>--mode=compile g++ -c -I/usr/local/build/llvm/lib/Support
>>>>-I/usr/local/src/llvm/lib/Support -I/usr/local/build/llvm/include
>>>>-I/usr/local/src/llvm/include -I../../include
>>>>-I/usr/local/src/llvm/include -D__MINGW -D_GNU_SOURCE
>>>>-D__STDC_LIMIT_MACROS -Wall -W -Wwrite-strings -Wno-unused -g -D_DEBUG
>>>>/usr/local/src/llvm/lib/Support/SlowOperationInformer.cpp -o
>>>>/usr/local/build/llvm/lib/Support/Debug/SlowOperationInformer.lo
>>>>C:/MinGW/msys/local/src/llvm/lib/Support/SlowOperationInformer.cpp: In
>>>> constructor `llvm::SlowOperationInformer::SlowOperationInformer(const
>>>> std::string&)':
>>>>C:/MinGW/msys/local/src/llvm/lib/Support/SlowOperationInformer.cpp:55:
>>>>error: `
>>>> SIGALRM' undeclared (first use this function)
>>>>--------------------------
>>>>
>>>>On mingw the signal value SIGALRM isn't declared in <signal.h>.
>>>>
>>>>I can't figure out what to do next. Any suggestions?
>>>>
>>>>Henrik
>>>>
>>>>_________________________________________________________________
>>>>Opret en gratis Hotmail-konto http://www.hotmail.com med udsigt til
>>>>250 MB lagerkapacitet
>>>>
>>>>_______________________________________________
>>>>LLVM Developers mailing list
>>>>LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>>>http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
>>>
>>>
>>>
>>_______________________________________________
>>LLVM Developers mailing list
>>LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
>>http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://mail.cs.uiuc.edu/mailman/listinfo/llvmdev
>
More information about the llvm-dev
mailing list