This may or may not be OT, but I've always wondered what the official view of re-using the various DDI return statuses (i.e. DDI_SUCCESS and friends) within driver internal functions was.
It seems that there are two main approaches used at the moment; this, and the use of boolean_t. Perhaps it may be useful to have an appendix dedicated to style? Garrett D'Amore wrote: > Vicki Abe wrote: >> Hiya, Garrett! >> >> Great idea - thanks for proactively putting a stake in the ground >> to document the process. >> > > No prob'. Recall this is a Best Practices document that is intended for > projects coming to ARC, not a replacement for information that belongs > in WDD or in a test plan. That may help frame some of my comments below. > >> One item that could be very helpful is to define clearly what is >> and is-not supported by the driver. For example, we may have a >> very basic driver for a sophisticated device -- the device may have >> several enhanced features that are not supported by the "plain vanilla" >> driver. >> > > This should be part of the ARC case for the driver or the man page of > the driver, I'd think. Unfortunately, there is no master of features > where such a description makes sense. Supporting Jumbo Frames is > important for ethernet drivers, but completely pointless for storage > drivers, or even other kinds of NIC driver, for example. > >> If we could distinguish in the man page between features that may exist >> in the chip, but may not be supported in the driver (a design decision), >> it would help to set user expectations correctly -- and avoid needless >> confusion (and customer calls). >> > > Yes, but this isn't architectural. This sounds like a potential docs > req't, and should be coordinated with the docs folks, IMO. > >> Also, if the driver carried versioning information (version of the DDI, >> version of the USB spec, version of the driver itself, version of the >> gld framework), this would help with maintenance and ongoing support >> for our drivers. >> > > There is no versioning of the DDI, although some specific interfaces are > versioned. This sounds more like a release engineering problem, > though. I'll note that bundled drivers carry the ON build they were > built as part of in the ELF comments (accessible via "what"). Other > kinds of versioning information would be hard to express universally, I > think. At least with our current DDI. If you want to enhance the DDI > for that, we'd need a specific proposal. In any case, its out of scope > for this Best Practices proposal (at least unless the DDI were enhanced > to express that information.) > >> We also noticed in a recent device driver class that we sponsored for >> IHVs, that driver developers coming from a Linux environment had some >> key differences in approach -- for example, their use of the watchdog >> interrupt is a common technique in Linux, but was actually a violation >> of the spirit of the Solaris DDI. >> > > Hmmm... I'm not sure how to express this difference in a best practices > document. > > Are you saying that these folks were hanging off a platform wide > watchdog for some other non-platform-specific driver? Weird. And yes, > not really in the spirit (or the letter, for that matter) of the DDI. > (timeout(9f) can be used to create soft watchdogs, though.) I'm not > sure I want to get into the philosophy of different design approaches, > but I think DDI compliance already covers the main concern here. > > (Conversely, if the device has its own internal watchdog timer that the > driver wishes to use to ensure proper function, I see no problem with that.) >> Can we add these items to your list? >> > I think most of the items you've mentioned probably have some other > context than what I'm intending the Best Practices document for. But > I'm happy to hear arguments to the contrary -- perhaps our Best > Practices guru (Plocher) would care to comment? > > -- Garrett > _______________________________________________ > driver-discuss mailing list > driver-discuss at opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/driver-discuss