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