RFR (M): JDK-8200298 Unify all unix versions of libjsig/jsig.c

Erik Joelsson erik.joelsson at oracle.com
Tue Mar 27 15:48:57 UTC 2018


Build change looks good. I will let someone more informed look at the 
code changes.

/Erik


On 2018-03-27 02:42, Magnus Ihse Bursie wrote:
> When I was about to update jsig.c, I noticed that the four copies for 
> aix, linux, macosx and solaris were basically the same, with only 
> small differences. Some of the differences were not even well 
> motivated, but were likely the result of this code duplication causing 
> the code to diverge.
>
> A better solution is to unify them all into a single unix version, 
> with the few platform-specific changes handled on a per-platform basis.
>
> I've made the following notable changes:
>
> * I have removed the version check for Solaris. All other platforms 
> seem to do fine without it, and in general, we don't mistrust other 
> JDK libraries. An alternative is to add this version check to all 
> other platforms instead. If you think this is the correct course of 
> action, let me know and I'll fix it.
>
> * Solaris used to have a dynamically allocated sact, instead of a 
> statically allocated array as all other platforms have. It's not 
> likely to be large, and the size is known at compile time, so there 
> seems to be no good reason for this.
>
> * Linux and macosx used a uint32_t/uint64_t instead of sigset_t for 
> jvmsigs, as aix and solaris do. This is a less robust solution, and 
> the added checks show that it has failed in the past. Now all 
> platforms use sigset_t/sigismember().
>
> Also worth noting:
>
> * Solaris is not using pthreads, but it's own thread library, which 
> accounts for most of the #ifdef SOLARIS.
>
> * In general, if an implementation was needed on one platform, but has 
> no effect or is harmless on others, I've kept it on all platforms 
> instead of sprinkling the code with #ifdefs.
>
> To facilitate code review, here is a specially crafted webrev that 
> shows the differences compared to each of the individual, original 
> per-OS versions of jsig.c:
> http://cr.openjdk.java.net/~ihse/JDK-8200298-unify-libjsig/webrev.01
>
> Bug: https://bugs.openjdk.java.net/browse/JDK-8200298
> WebRev: 
> http://cr.openjdk.java.net/~ihse/JDK-8200298-unify-libjsig/webrev.03
>
> /Magnus




More information about the build-dev mailing list