tech-misc archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: __attribute__((warn_unused_result)) for NetBSD?
>>> Recall that a signal handler, being an interrupt, is roughly
>>> speaking not allowed to do anything other than assign a value of
>>> type sig_atomic_t.
>> Not quite. Rather, if it does do any other thing, it is off in
>> implementation-dependent weeds.
> Yes and no - despite the dire wording in the standards, the real
> issue is that signals are essentially interrupts, so you might end up
> reentering nonreentrant code.
Right. But what code is non-reentrant is implementation-dependent. I
think I could, to pick a slightly contrived example, build a stdio
which could be safely used within signal handlers, under relatively
liberal assumptions about how signals are implemented (stricter than
POSIX's, of course, but more liberal than any real Unix I know of -
and, of course, stdio, being part of the implementation, can know
details of signal delivery that are not promisd by POSIX).
> Because of the way signals are (and have to be) implemented, making
> system calls is ~always going to be safe. Calling libc functions
> like fopen, though, really is a bad idea.
Except there is no reason except implementation tradition and
convenience for fopen to be a library function rather than a syscall
(or, more precisely, for it to be a non-reentrant library function,
syscalls being just one class of reentrant library functions).
/~\ The ASCII Mouse
\ / Ribbon Campaign
X Against HTML mouse%rodents-montreal.org@localhost
/ \ Email! 7D C8 61 52 5D E7 2D 39 4E F1 31 3E E8 B3 27 4B
Home |
Main Index |
Thread Index |
Old Index