Home | History | Annotate | Download | only in common
History log of /src/sys/compat/common/sysv_ipc_50.c
RevisionDateAuthorComments
 1.6  27-Jan-2019  pgoyette Merge the [pgoyette-compat] branch
 1.5  03-Sep-2018  riastradh Rename min/max -> uimin/uimax for better honesty.

These functions are defined on unsigned int. The generic name
min/max should not silently truncate to 32 bits on 64-bit systems.
This is purely a name change -- no functional change intended.

HOWEVER! Some subsystems have

#define min(a, b) ((a) < (b) ? (a) : (b))
#define max(a, b) ((a) > (b) ? (a) : (b))

even though our standard name for that is MIN/MAX. Although these
may invite multiple evaluation bugs, these do _not_ cause integer
truncation.

To avoid `fixing' these cases, I first changed the name in libkern,
and then compile-tested every file where min/max occurred in order to
confirm that it failed -- and thus confirm that nothing shadowed
min/max -- before changing it.

I have left a handful of bootloaders that are too annoying to
compile-test, and some dead code:

cobalt ews4800mips hp300 hppa ia64 luna68k vax
acorn32/if_ie.c (not included in any kernels)
macppc/if_gm.c (superseded by gem(4))

It should be easy to fix the fallout once identified -- this way of
doing things fails safe, and the goal here, after all, is to _avoid_
silent integer truncations, not introduce them.

Maybe one day we can reintroduce min/max as type-generic things that
never silently truncate. But we should avoid doing that for a while,
so that existing code has a chance to be detected by the compiler for
conversion to uimin/uimax without changing the semantics until we can
properly audit it all. (Who knows, maybe in some cases integer
truncation is actually intended!)
 1.4  03-Dec-2015  pgoyette branches: 1.4.16; 1.4.18;
Add comment to #ifdef - it's a long way from its original #if
 1.3  10-May-2015  pgoyette Split the SYSV* compat code out into a separate compat_sysv module.

For monolithic kernels, both modules will be compiled as "built-ins",
while modular environments will be able to load the SYSVSEM, SYSVSHM,
and SYSVMSG code independant from the rest of compat.

This is a necessary precursor step to making the "STD" SYSV* code
into a separate module.

Tested in both monolithic and modular environments with no errors
seen.
 1.2  21-Jan-2009  christos branches: 1.2.4; 1.2.6; 1.2.28; 1.2.46;
compile into nothing if not compat 50.
 1.1  19-Jan-2009  christos Provide compatibility for pre-christos-time_t sysv sysctls.
 1.2.46.2  27-Dec-2015  skrll Sync with HEAD (as of 26th Dec)
 1.2.46.1  06-Jun-2015  skrll Sync with HEAD
 1.2.28.1  03-Dec-2017  jdolecek update from HEAD
 1.2.6.2  04-May-2009  yamt sync with head.
 1.2.6.1  21-Jan-2009  yamt file sysv_ipc_50.c was added on branch yamt-nfs-mp on 2009-05-04 08:12:17 +0000
 1.2.4.2  03-Mar-2009  skrll Sync with HEAD.
 1.2.4.1  21-Jan-2009  skrll file sysv_ipc_50.c was added on branch nick-hppapmap on 2009-03-03 18:30:07 +0000
 1.4.18.1  10-Jun-2019  christos Sync with HEAD
 1.4.16.2  06-Sep-2018  pgoyette Sync with HEAD

Resolve a couple of conflicts (result of the uimin/uimax changes)
 1.4.16.1  10-Mar-2018  pgoyette Put declaration of the 5.0 sysctl routine in a header file

RSS XML Feed