Messages in this thread | | | Date | Fri, 15 Oct 2004 15:59:55 +0200 | From | Pavel Machek <> | Subject | Re: Totally broken PCI PM calls |
| |
Hi!
> > Does sparse now have typechecking on enums? > > You can mark an enum "bitwise" (by making all of it's values be > "bitwise"), and it will be considered a type of its own, yes. But then you > also cannot do arithmetic on it (which _usually_ is what you want, but not > necessarily always). > > (You'd also need to pass in the "-Wbitwise" flag to sparse, to get the > checks). > > By the time you mark something "bitwise", you don't even need to use an > enum, btw. You can just do a regular integer typedef and mark the typedef > to be "bitwise" - that generates a unique type right there. That's what > the endianness checking does.
I'm trying to learn how to work with bitwise on obsolete stuff, but checking there is good, too, right?
Is this right way to do it?
+typedef enum pm_request __bitwise { + __bitwise PM_SUSPEND, /* enter D1-D3 */ + __bitwise PM_RESUME, /* enter D0 */ +} pm_request_t; + +/* + * Device types... these are passed to pm_register + */ +typedef enum pm_dev_type __bitwise { + __bitwise PM_UNKNOWN_DEV = 0, /* generic */ + __bitwise PM_SYS_DEV, /* system device (fan, KB controller, ...) */ + __bitwise PM_PCI_DEV, /* PCI device */ + __bitwise PM_USB_DEV, /* USB device */ + __bitwise PM_SCSI_DEV, /* SCSI device */ + __bitwise PM_ISA_DEV, /* ISA device */ + __bitwise PM_MTD_DEV, /* Memory Technology Device */ +} pm_dev_t;
Having __bitwise at every line in enum looks quite ugly to my eyes. [Where to get sparse? I tried to google for it but "sparse" is very common word (as in sparse matrix). And theres no kernel/people/linus on kernel.org...] Pavel -- People were complaining that M$ turns users into beta-testers... ...jr ghea gurz vagb qrirybcref, naq gurl frrz gb yvxr vg gung jnl! - 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/
| |