Messages in this thread | | | From | Denis Vlasenko <> | Subject | Re: Use enum to declare errno values | Date | Thu, 24 Nov 2005 09:19:52 +0200 |
| |
On Wednesday 23 November 2005 17:00, linux-os (Dick Johnson) wrote: > On Wed, 23 Nov 2005, Denis Vlasenko wrote: > > On Wednesday 23 November 2005 16:19, linux-os (Dick Johnson) wrote: > >>> I'm just wondering why not declaring errno values using enumaration ? > >>> It is just more convenient when debuging the kernel. > >> > >> There is an attempt to keep kernel errno values similar to > >> user-mode errno values. This simplifies the user-kernel > >> interface where the kernel will return -ERRNO and the user-mode > >> code negates it and puts it into the user errno then sets the > >> return value to -1 (a Unix convention). > >> > >> The user-mode errno's therefore must correspond. You can't > >> expect the 'C' runtime libraries to be rebuilt and/or all the > >> programs recompiled just because the kernel got changed so > >> the errno's are hard-coded. 0 will always mean "no error" and > >> 1 will always be EPERM, etc. There are error-codes that are > >> the same number also, EWOULDBLOCK and EAGAIN are examples. > >> > >> So, you can't just auto-enumerate. If auto-enumeration isn't > >> possible, then you might just as well use #define, which is > >> what is done. > > > > ?!! > > > > enum { > > one, > > two, > > ten = 10 > > }; > > Did you BOTHER to read or you just picking a fight??
I was trying to say that since enum supports non-contiguous numbering, any sequence of integer #defines can be trivially converted to enum declaration:
... #define ERESTARTSYS 512 #define ERESTARTNOINTR 513 #define ERESTARTNOHAND 514 /* restart if no handler.. */ #define ENOIOCTLCMD 515 /* No ioctl command */ #define ERESTART_RESTARTBLOCK 516 /* restart by calling sys_restart_syscall */ ...
enum { ... ERESTARTSYS = 512, ERESTARTNOINTR = 513, ERESTARTNOHAND = 514, /* restart if no handler.. */ ENOIOCTLCMD = 515, /* No ioctl command */ ERESTART_RESTARTBLOCK = 516, /* restart by calling sys_restart_syscall */ ... }; -- vda - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |