Header files with enums instead of defines?
Paul Richards
paul at originative.co.uk
Thu Dec 23 05:26:19 PST 2004
On Wed, Dec 22, 2004 at 06:45:16PM +0100, Poul-Henning Kamp wrote:
> In message <20041222010143.GS53357 at wantadilla.lemis.com>, "Greg 'groggy' Lehey"
> writes:
>
> >Has anybody thought about replacing #defines with enums in header
> >files? It would make debugging a whole lot easier. Foe example, I'm
> >currently looking at a debug printout which contains:
>
> I agree with others who have shot this down: compatibility would
> not allow us to do something like that.
>
> But that is not to say that the error reporting mechanism could not
> be improved in other ways.
>
> One of my pet peeves is that comples system calls have no way to
> convey additional information about why the return a given
> return value like EPERM.
>
> I would almost advocate adding a char[X] to each thread and a
> system call which could retrieve it. Complex system calls like
> mount/nmount, ioctl and similar could then stick an explanation
> into that string which strerror(3) or err(3) and similar functions
> could pull out and give the user.
>
> There is a heck of a difference between getting:
>
> fdisk: permission denied
>
> And
>
> fdisk: permission denied (partitions overlap)
For all projects I've worked on in recent years the first thing
I've done is implement an error reporting stack, which basically
works in a similar way to exceptions in C++/Java i.e., the error
percolates up from where it occurs to a point where something decides
to handle it. The error object itself varies from project to project
but always includes a message. At whatever point in the stack where
something handles the error you can then get a full report as to
what each layer in the stack did.
More information about the freebsd-arch
mailing list