Cambios necesarios para la conversión de SLIH

Los siguientes cambios necesarios se deben aplicar a todos los SLIH que se están portando al kernel de 64 bits.

  1. Realización de operaciones de lectura en un dispositivo

    Todas las instancias de pdiag_dd_read se tendrán que duplicar con pdiag_dd_read_64 para 64 bits. Cada lugar donde se utiliza pdiag_dd_read para un SLIH de 32 bits, se utilizará un pdiag_dd_read_64 para un SLIH de 64 bits. Esto se llevará a cabo utilizando sentencias de compilador de preprocesador condicional (#ifdef).

    A continuación se muestra un ejemplo de cómo puede ser una llamada de lectura de origen común de 32 bits y 64 bits:
    
    #ifdef __64BIT_KERNEL
         rc = pdiag_dd_read_64(pdiagex_handle, IOSHORT16, io_addr, &datas,
    &flags);
    #else
         rc = pdiag_dd_read(pdiagex_handle, IOSHORT16, io_addr, &datas,
    &flags);
    #endif
    
    Nota:
    1. La directiva de compilador __64BIT_KERNEL está definida para compiladores de kernel de 64 bits, por lo que el usuario no tendrá que definirla.
    2. Caso especial para las lecturas de IOLONG32 , los datos se tienen que desplazar 32 bits justo después de la llamada de función, como por ejemplo,(data = data >> 32;).
    3. La función pdiag_dd_read_64 sólo se utiliza en el entorno de kernel, por lo tanto, el distintivo intrlev siempre debe establecerse enINTRKMEM.
  2. Realización de operaciones de grabación en un dispositivo

    Todas las instancias de pdiag_dd_write deben duplicarse con pdiag_dd_write_64 para 64 bits. Cada lugar donde se utiliza pdiag_dd_write para un SLIH de 32 bits, se utilizará un pdiag_dd_write_64 para un SLIH de 64 bits. Esto se llevará a cabo utilizando sentencias de compilador de preprocesador condicional (#ifdef).

    A continuación se muestra un ejemplo de cómo podría ser una llamada de escritura de origen común de 32 bits y 64 bits:
    
    #ifdef __64BIT_KERNEL
            rc = pdiag_dd_write_64(pdiagex_handle, IOLONG32, io_addr,
    &datal, &flags);
    #else
            rc = pdiag_dd_write(pdiagex_handle, IOLONG32, io_addr, &datal,
    &flags);
    #endif
    
    Nota:
    1. La directiva de compilador __64BIT_KERNEL está definida para compiladores de kernel de 64 bits, por lo que el usuario no tendrá que definirla.
    2. La función pdiag_dd_read_64 sólo se utiliza en el entorno de kernel, por lo tanto, el distintivo intrlev siempre debe establecerse enINTRKMEM.
  3. Prototipo de función SLIH

    El prototipo de función SLIH requiere un cambio en la declaración de tipo para * sleep_word y sleep_flag como se indica a continuación:

    
    int your_interrupt(pdiag_info_handle_t pdiagex_handle, char
    *data_area, int *interrupt_flag,
    #ifdef __64BIT_KERNEL
            long sleep_flag, long *sleep_word)
    #else
            int sleep_flag, int *sleep_word)
    #endif