Hi! :) Well, my only comment is related to the CHECK_CONDITION() system, on which I briefly answered earlier. I'll try to explain more clearly why I think that a function or a macro is not a choice I like best.
First, it seems to me like a really heavy "notation", which would make some pieces of code difficult to read (and IMO the overall look of the code is an important factor in a project). Moreover, the errno symbol value (as stated on the man page: http://linux.die.net/man/3/errno) "is significant only when the call returned an error": making a single macro or function would imply writing a routine which first checks the return code of a system call, and then checks the value of errno. But, since the system calls can return an arbitrary value - even negative values, such as in the case of the getpriority() call (http://www.kernel.org/doc/man-pages/online/pages/man2/getpriority.2.html) - a single "god-like" function which handles all the possible cases would have to first reset the errno symbol value to EOK (or 0), then evaluate the requested expression, and finally check back the errno symbol value to detect for a possible error condition, and subsequently raise the correct exception. It would be possible with a macro, but it's tricky nonetheless. =) I find a more natural approach to define "aliases" of the syscalls in a separate namespace, so that the readibility is not heavily impacted and the goal of handling system calls failures with exceptions is accompished in a custom way for every function. To reduce code duplication, one may set up a map of factory methods that create exceptions according to the errno-code they are associated with. I'm sorry for the length of the message, and I beg your pardon if something is not explained clearly: I'll be glad to answer and clear your doubts, if this is the case. Cheers, Daniele 2010/3/28 Giuseppe Scrivano <[email protected]> > Hello Lisa, > > As we already discussed privately, it looks like a good proposal and I > agree on everything. > > Does anyone have comments? > > Cheers, > Giuseppe
