Kung-Foo
  

Como se generan los números de versión del Kernel (de Linux)

Un día de inspiración colgue en Barrapunto un comentario donde explicaba como se calcula el número de versión del Kernel. Tuvo mucha aceptación, así que reproduzco el texto explicativo y el algoritmo que muestra como se asigna el número de versión de kernel:

De momento irán incrementando el tercer numerito. Cuando vean que la cosa está más o menos estable (se les inflen las pelotas), harán un fork de *desarrollo* a la versión 2.7.x e irán incrementando de nuevo el tercer numerito. Si no peta mucho (se les infle mucho las pelotas), incrementarán de nuevo el segundo numerito y sale una nueva versión *estable* y comienza el ciclo de nuevo. El primer numerito sólo cambia cuando hay un cambio climático brusco que extinga dinosaurios o ante milagros de proporciones bíblicas. Es decir, si no me equivoco el algoritmo será algo así como:

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

#include"gestion_de_pelotas.h"
#include"comprobacion_de_milagros.h"

main()
{
    int major, middle, minor, diametro_pelotas;

    major = 2; middle = 6; minor = 9;
    diametro_pelotas = 0; /* en pulgadas */

    while(1)
    {
        if(testear_pelotas() == SE_HAN_INFLADO)
            diametro_pelotas++;

        switch(diametro_pelotas)
        {
            case INFLADAS:
                switch(fork())
                {
                    case -1: perror("mal rollo"); abort();
                    case 0: break;
                    default: middle++; diametro_pelotas = 0;
                }
                break;
            case MUY_INFLADAS:
                exit(0);
            default:
                ++minor;
        }

        printf("Linux %d.%d.%d (%s)\n",
                      major, middle, minor,
                      middle & 0x01 ? "desarrollo" : "producción");

        if(milagro_de_proporciones_biblicas() == TRUE)
            switch(fork())
            {
                case -1: perror("argh!"); abort();
                case 0: break;
                default: major++; middle = minor = 0;
            }
    }
}
  
Valid XHTML 1.1! Valid CSS!
Esta obra está bajo una Licencia de Creative Commons | rss Noticias | rss Lol