Peter Memishian wrote:
> > Then those interfaces should not have been promoted, IMO. Instead,
> > leave a contract in place, and provide suitable replacements for truly
> > public consumption that either lack the side effect, or make it clear
> > that a side effect exists (mcopyandfreemsg().). As I pointed out
> > earlier, there are cases where that side effect is toxic, and mcopymsg()
> > cannot be used.
>
> I agree it's unfortunate that mcopymsg() has a side effect, but the fact
> is that it was already in widespread use and thus renaming it or otherwise
> playing paperwork games wouldn't have materially changed things -- we'd
> still need to define a new function with a different name that doesn't
> have the side effect.
>
Ah, but it *does* matter. Those "paperwork" games mean that when I'm
implementing a new driver I look to the DDI. A function that is
documented as part of the DDI is much more likely to be exposed, and
used. Its a "blessed" form of API. In my particular case, the only
reason I gutted some of my private implementation and started using
mcopymsg() was when I found it in the DDI (man pages). Unfortunately, I
had to go back to my own implementation because of the side effect.
Using a Contract or some other kind of Private level would have kept me
from attempting to use it in the first place. So I'd rather have had a
2nd function, without the side-effect, as a part of the public DDI.
> In any case, my point was that your original attack was off the mark,
> because the interfaces had already leaked out of the consolidation and
> thus were already sedimented -- as covered in the case materials:
>
> Please note that although these interfaces are consolidation-private,
> that has not always stopped other consolidations from making use of them.
> Indeed, a quick search shows that both the NWS and NSPG consolidations
> have drivers which reference some of the interfaces this case proposes to
> make public. As such, only minor backwards-compatible changes (noted
> below) have been made to the existing interfaces.
>
Marking these interfaces public, committed interfaces, means that they
get used by a lot more than just NSPG/NWS. There used to be another
form of classification, called "Sun Private". I guess that doesn't
exist anymore, but that would have been appropriate here.
Just because a few bad citizens blatantly violate the DDI does not mean
that everyone will. (I guess I'm a bit of a DDI bigot. At one time my
own afe driver was the only NIC driver known to pass the ddict test
suite, other than a few toy drivers that lacked all of the normally
pertinent NIC features.)
-- Garrett
_______________________________________________
networking-discuss mailing list
[email protected]