[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