[LLVMdev] SlowOperationInformer.cpp:55: error: `SIGALRM' undeclared (first use this functi

Jeff Cohen jeffc at jolt-lang.org
Fri Sep 24 12:45:52 PDT 2004


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




More information about the llvm-dev mailing list