On 10/05/13 17:54, Matthew Ahrens wrote:
On Sat, Oct 5, 2013 at 5:29 PM, Richard Yao <[email protected]
<mailto:[email protected]>> wrote:

    Brian was concerned that there could be subtle compatibility issues
    between the C89 kernel and a C99 kernel module (or a C89 module and a
    C99 userland), so he decided to make the entire project C89 to be safe.


The ABI (application binary interface) should be the same for C89 and
C99.  I.e. code written in one can call the other.  So I would not
expect there to be any compatibility issues.  Do you (Brian) know of any
specific problems?

It's my understanding that the C ISO standard doesn't make any claims about ABI compatibility between C89 and C99. That's something which has been left to the compiler. In my experience gcc does generate compatible code, but it wouldn't at all surprise me if there are subtle incompatibilies lurking.

To be absolutely safe I removed the C99'isms from the ZFS code when porting it to Linux. I didn't want to risk it causing any subtle issues while porting the rest of the code base. Doing so was pretty easy becuase it turns out ZFS makes relatively light use of the C99 linguistic extensions. And for a freestanding C environment like a kernel there really should be minimal assumptions made about library support.

While I personally like C99 better I'd argue that using C89 is more portable and the required style changes are minimal. That said, I think we should explore building ZFS as C99 on the Linux side before deciding anything. Hopefully my worries are unfounded!

And since we're on the topic of portabity I think there's a bigger issue we need to address. One of the major frustions I've seen when porting changes is when a patch brings in a dependency on some additional kernel subsystem. When that happens we're forced to either add that subsystems functionality to our compatibility layer, which can be a lot of work, or rewrite the original patch to use a different approach. Agreeing on a common kABI would make sharing patches much easier.

Thanks,
Brian
_______________________________________________
developer mailing list
[email protected]
http://lists.open-zfs.org/mailman/listinfo/developer

Reply via email to