Нет, это не обязательно то же самое для данных экземпляров точно такой же версии ядра. В большинстве ядер это настраиваемый параметр. Часто для его изменения потребуется перекомпиляция или перекомпоновка ядра, но это может измениться, не имея совершенно нового ядра.
В некоторых (я думаю, что в настоящее время) системах этот макрос не преобразуется в целочисленный литерал, он преобразуется в системный вызов, который возвращает целое число. Поэтому, если ядро позволяет перенастроить систему во время выполнения, оно вернет текущее значение параметра.
Я бы просто предположил, что он не может измениться за время жизни вашей программы. Если вы предполагаете, что это может измениться в любое время, вы столкнетесь с условиями гонки, в которых значение изменяется между временем, когда вы его читаете, и временем, когда вы его используете. Если вы просто явно заявляете, что ваша программа предполагает, что она никогда не изменится в течение срока ее действия, то системные администраторы, которые ее запускают, должны будут принять практику, которую они должны применять в любом случае, и изменять только параметры ядра при запуске.
Здесь вас могут заинтересовать три вызова POSIX:
Я бы порекомендовал поискать и другие источники, чтобы понять, какие переменные широко поддерживаются, а какие нет.