• Publicidad

Sun::Solaris::Kstat y "use lib"

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Sun::Solaris::Kstat y "use lib"

Notapor mobarrio » 2013-02-07 04:54 @246

Antes que nada, soy nuevo y con muy poca experiencia en Perl con lo cual sepan disculpar si la pregunta es muy tonta...

Necesito incluir una librería (Kstat.pm) en mi script. En Solaris 10 x86 funciona bien, ya que compilé e instalé el módulo y todo funciona. Pero cuando quiero pasar el script Sparc el módulo no compila y harto de probar, encontré la posible solución de incluir módulos de versiones anteriores de Perl.

Solaris incluye varias distribuciones de Perl bajo la ruta /usr/perl5/ (5.6.1, 5.8.3, 5.8.4, 5.14.2). Algunas las instalé yo.

La versión /usr/perl5/5.6.1 trae el módulo y si en mi script utilizo #!/usr/perl5/5.6.1 todo funciona bien, pero la realidad es que necesito utilizar otra versión de Perl más nueva y cuando intento incluir el módulo de 5.6.1 utilizando "use lib", éste da error:

Esta idea la tome del script de Brendan Gregg que dice lo siguiente:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# NOTES:
# - If you have upgraded /usr/bin/perl, this program may be unable to
#   find the Sun::Solaris::Kstat library (which is under /usr/perl5).
#   Before the "use strict;" line, you may need to add,
#   use lib "/usr/perl5/5.6.1/lib";
#   to point to your location of Sun/Solaris/Kstat.pm.
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
http://www.brendangregg.com/Solaris/checkcable

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. use lib qw(/usr/perl5/5.6.1/lib);
  4.  
  5. use strict;
  6. use Sun::Solaris::Kstat;
  7.  
  8. my $Kstat = Sun::Solaris::Kstat->new();
  9.  
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Can't locate loadable object for module Sun::Solaris::Kstat in @INC (@INC contains: /usr/perl5/5.6.1/lib /usr/local/lib/perl5/site_perl/5.14.2/sun4-solaris-thread-multi /usr/local/lib/perl5/site_perl/5.14.2 /usr/local/lib/perl5/5.14.2/sun4-solaris-thread-multi /usr/local/lib/perl5/5.14.2 .) at ./a line 6
Compilation failed in require at ./a line 6.
BEGIN failed--compilation aborted at ./a line 6.
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. # ls -la /usr/perl5/5.6.1/lib/Sun/Solaris/
  2. total 112
  3. drwxr-xr-x   5 root     bin          512 Jan 17  2008 .
  4. drwxr-xr-x   3 root     bin          512 Jan 17  2008 ..
  5. drwxr-xr-x   2 root     bin          512 Jan 17  2008 BSM
  6. drwxr-xr-x   2 root     bin          512 Jan 17  2008 Exacct
  7. -r--r--r--   1 root     bin         3172 Jan 22  2005 Exacct.pm
  8. -r--r--r--   1 root     bin          358 Jan 22  2005 Kstat.pm
  9. drwxr-xr-x   2 root     bin          512 Jan 17  2008 PerlGcc
  10. -r--r--r--   1 root     bin         1424 Jan 22  2005 Privilege.pm
  11. -r--r--r--   1 root     bin        41300 Jan 22  2005 Project.pm
  12. -r--r--r--   1 root     bin          637 Jan 22  2005 Task.pm
  13. -r--r--r--   1 root     bin          880 Jan 22  2005 Ucred.pm
  14. -r--r--r--   1 root     bin          470 Jan 22  2005 Utils.pm
  15.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


¿Alguna sugerencia de qué estoy haciendo mal?

Muchas gracias de antemano.
mobarrio
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2013-02-07 04:31 @230

Publicidad

Re: Sun::Solaris::Kstat y "use lib"

Notapor explorer » 2013-02-07 06:56 @330

Bienvenido a los foros de Perl en Español, mobarrio.

El 'use lib' está bien. Perl sí es capaz de encontrar el módulo Sun::Solaris::Kstat, pero resulta que cuando lo lee, éste solo tiene 8 líneas, en las que vemos que están dedicadas exclusivamente a cargar una biblioteca compilada, y esa es la que dice el error que no encuentra.

Aparte del archivo Kstat.pm, debe existir algún archivo acabado en .so o en .o, y eso es lo que el módulo Dynaloader dentro de Kstat.pm no ha conseguido encontrar en ninguna de las rutas indicadas.

Fíjate en las rutas que sale en las variables @INC: algunas de ellas indican la ruta sun4-solaris-thread-multi/ y es ahí donde suelen residir esos archivos.

Prueba a buscar esa ruta dentro de /usr/perl5/5.6.1/lib, y agrégala a 'use lib'. Algo así:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use lib qw(/usr/perl5/5.6.1/lib /usr/perl5/5.6.1/lib/sun4-solaris-thread-multi);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Si eso no funciona, deberás modificar el valor de la variable de entorno LD_LIBRARY_PATH para que incluya esa ruta.

Lo ideal sería hacer una instalación desde cero, pero dices que no compila, y creo que la clave está ahí: la biblioteca debe estar para la arquitectura en la que se ejecuta. No vale solo con copiar el código Perl, que sabemos que sí funcionará sin problemas, sino que la biblioteca debe estar compilada para ese sistema. Puedes probar a copiar en 5.6.1/lib la biblioteca de la máquina anterior, pero solo funcionará si la CPU y el resto del hardware es compatible con la máquina anterior.

Aquí dicen que Kstat.xs no compila muy bien en arquitecturas de 64 bits...

¿Qué error de compilación sale? Bájate los cuatro archivos y haz un

perl Makefile.PL

para que realice la compilación.

¿No existirá este módulo ya compilado para tu versión de Perl, en el repositorio de paquetes de software de Solaris?

Edito: He leído un poco más la página sobre K9Toolkit de Gregg, y dice que la biblioteca Kstat para Perl viene incluida con el propio sistema operativo, así que en principio, solo tendrías que modificar LD_LIBRARY_PATH para que la encuentre.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Sun::Solaris::Kstat y "use lib"

Notapor mobarrio » 2013-02-07 08:49 @409

Ante todo, muchas gracias por la respuesta... voy contestando sobre las pruebas que comentaste anteriormente:

Compilación de la versión de illumos
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Nota: ¡El <span style="font-style: italic">bug 2636 Perl bits do not compile cleanly under 64bit perl</span> está corregido!


Environment:
LD_LIBRARY_PATH=/usr/openwin/lib:/usr/local/lib:/usr/local/ssl/lib:
PATH=/usr/sbin:/usr/bin:/usr/ccs/bin:/usr/openwin/bin:/usr/dt/bin:/var/adm/sun/bin:/var/adm/sun/sbin:/opt/csw/bin:/opt/csw/sbin:/usr/platform/SUNW,Sun-Fire-V240/sbin:/opt/sun/bin:/usr/bin/nsr:/usr/sbin/nsr:/opt/SUNWexplo/bin:/opt/SUNWsneep/bin:/opt/CTEact/bin:/usr/local/bin:/usr/local/sbin:/usr/local/lib:/usr/local/include:/usr/local/postfix-19991231-pl02/bin:/opt/SI/bin

Versión del GCC
# pkginfo -l SMCgcc
   PKGINST:  SMCgcc
      NAME:  gcc
  CATEGORY:  application
      ARCH:  sparc
   VERSION:  3.4.6
   BASEDIR:  /usr/local
    VENDOR:  FSF
    PSTAMP:  Steve Christensen
  INSTDATE:  Jan 17 2008 18:06
     EMAIL:  [email protected]
    STATUS:  completely installed
     FILES:      441 installed pathnames
                  29 shared pathnames
                  63 directories
                  28 executables
              175666 blocks used (approx)

# perl -V
Summary of my perl5 (revision 5 version 14 subversion 2) configuration:
   
  Platform:
    osname=solaris, osvers=2.10, archname=sun4-solaris-thread-multi
    uname='sunos newmike 5.10 generic_127111-09 sun4u sparc sunw,sun-fire-v240 '
    config_args='-Dcc=gcc'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=undef, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='gcc', ccflags ='-D_REENTRANT -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV',
    optimize='-O',
    cppflags='-D_REENTRANT -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='3.4.6', gccosandvers='solaris2.10'
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='gcc', ldflags =' -L/usr/local/lib '
    libpth=/usr/local/lib /usr/lib /usr/ccs/lib
    libs=-lsocket -lnsl -ldl -lm -lpthread -lc
    perllibs=-lsocket -lnsl -ldl -lm -lpthread -lc
    libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
    cccdlflags='-fPIC', lddlflags='-G -L/usr/local/lib'


Characteristics of this binary (from libperl):
  Compile-time options: MULTIPLICITY PERL_DONT_CREATE_GVSV
                        PERL_IMPLICIT_CONTEXT PERL_MALLOC_WRAP
                        PERL_PRESERVE_IVUV PERL_USE_SAFE_PUTENV USE_ITHREADS
                        USE_LARGE_FILES USE_PERLIO USE_PERL_ATOF
                        USE_REENTRANT_API
  Built under solaris
  Compiled at Jan 31 2013 15:41:26
  @INC:
    /usr/local/lib/perl5/site_perl/5.14.2/sun4-solaris-thread-multi
    /usr/local/lib/perl5/site_perl/5.14.2
    /usr/local/lib/perl5/5.14.2/sun4-solaris-thread-multi
    /usr/local/lib/perl5/5.14.2


# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Sun::Solaris::Kstat
Writing MYMETA.yml and MYMETA.json


# make
cp Kstat.pm blib/lib/Sun/Solaris/Kstat.pm
/usr/bin/perl /usr/local/lib/perl5/site_perl/5.14.2/ExtUtils/xsubpp  -typemap /usr/local/lib/perl5/5.14.2/ExtUtils/typemap  Kstat.xs > Kstat.xsc && mv Kstat.xsc Kstat.c
gcc -c  -I/usr/platform/sun4u/include -I/usr/platform/sun4v/include  -D_REENTRANT -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -O    -DVERSION=\"1.3\"  -DXS_VERSION=\"1.3\" -fPIC "-I/usr/local/lib/perl5/5.14.2/sun4-solaris-thread-multi/CORE"   Kstat.c
Kstat.xs: In function `save_vminfo':
Kstat.xs:386: error: structure has no member named `updates'
Kstat.xs:386: error: structure has no member named `updates'
Kstat.xs:386: error: structure has no member named `updates'
Kstat.xs: In function `save_sfmmu_global_stat':
Kstat.xs:468: error: structure has no member named `sf_scd_1sttsb_alloc'
Kstat.xs:468: error: structure has no member named `sf_scd_1sttsb_alloc'
Kstat.xs:468: error: structure has no member named `sf_scd_1sttsb_alloc'
Kstat.xs:468: error: structure has no member named `sf_scd_1sttsb_alloc'
Kstat.xs:469: error: structure has no member named `sf_scd_2ndtsb_alloc'
Kstat.xs:469: error: structure has no member named `sf_scd_2ndtsb_alloc'
Kstat.xs:469: error: structure has no member named `sf_scd_2ndtsb_alloc'
Kstat.xs:469: error: structure has no member named `sf_scd_2ndtsb_alloc'
Kstat.xs:470: error: structure has no member named `sf_scd_1sttsb_allocfail'
Kstat.xs:470: error: structure has no member named `sf_scd_1sttsb_allocfail'
Kstat.xs:470: error: structure has no member named `sf_scd_1sttsb_allocfail'
Kstat.xs:470: error: structure has no member named `sf_scd_1sttsb_allocfail'
Kstat.xs:471: error: structure has no member named `sf_scd_2ndtsb_allocfail'
Kstat.xs:471: error: structure has no member named `sf_scd_2ndtsb_allocfail'
Kstat.xs:471: error: structure has no member named `sf_scd_2ndtsb_allocfail'
Kstat.xs:471: error: structure has no member named `sf_scd_2ndtsb_allocfail'
Kstat.xs:513: error: structure has no member named `sf_region_remap_demap'
Kstat.xs:513: error: structure has no member named `sf_region_remap_demap'
Kstat.xs:513: error: structure has no member named `sf_region_remap_demap'
Kstat.xs:513: error: structure has no member named `sf_region_remap_demap'
Kstat.xs:514: error: structure has no member named `sf_create_scd'
Kstat.xs:514: error: structure has no member named `sf_create_scd'
Kstat.xs:514: error: structure has no member named `sf_create_scd'
Kstat.xs:514: error: structure has no member named `sf_create_scd'
Kstat.xs:515: error: structure has no member named `sf_join_scd'
Kstat.xs:515: error: structure has no member named `sf_join_scd'
Kstat.xs:515: error: structure has no member named `sf_join_scd'
Kstat.xs:515: error: structure has no member named `sf_join_scd'
Kstat.xs:516: error: structure has no member named `sf_leave_scd'
Kstat.xs:516: error: structure has no member named `sf_leave_scd'
Kstat.xs:516: error: structure has no member named `sf_leave_scd'
Kstat.xs:516: error: structure has no member named `sf_leave_scd'
Kstat.xs:517: error: structure has no member named `sf_destroy_scd'
Kstat.xs:517: error: structure has no member named `sf_destroy_scd'
Kstat.xs:517: error: structure has no member named `sf_destroy_scd'
Kstat.xs:517: error: structure has no member named `sf_destroy_scd'
Kstat.xs: In function `save_temperature':
Kstat.xs:611: warning: comparison is always true due to limited range of data type
Kstat.xs:611: warning: comparison is always true due to limited range of data type
Kstat.xs:612: warning: comparison is always true due to limited range of data type
Kstat.xs:612: warning: comparison is always true due to limited range of data type
Kstat.xs:618: warning: comparison is always true due to limited range of data type
Kstat.xs:618: warning: comparison is always true due to limited range of data type
*** Error code 1
make: Fatal error: Command failed for target `Kstat.o' 

 
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
De esto no paso :( ¡¡¡que frustración!!!

Luego, inclusión del path /usr/perl5/5.6.1/lib/sun4-solaris-64int en el use lib:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. use lib qw(/usr/perl5/5.6.1/lib/sun4-solaris-64int /usr/perl5/5.6.1/lib);
  4. use strict;
  5. use Sun::Solaris::Kstat;
  6.  
  7. my $Kstat = Sun::Solaris::Kstat->new();
  8. exit;
  9.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El cual termina con el siguiente mensaje de error:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
DynaLoader object version 1.13 does not match $DynaLoader::VERSION 1.04 at /usr/perl5/5.6.1/lib/sun4-solaris-64int/DynaLoader.pm line 100.
Compilation failed in require at /usr/perl5/5.6.1/lib/Sun/Solaris/Kstat.pm line 12.
BEGIN failed--compilation aborted at /usr/perl5/5.6.1/lib/Sun/Solaris/Kstat.pm line 12.
Compilation failed in require at ./a.pl line 5.
BEGIN failed--compilation aborted at ./a.pl line 5.
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Inclusión del PATH /usr/perl5/5.6.1/lib/sun4-solaris-64int en el LD_LIBRARY_PATH:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/perl5/5.6.1/lib/sun4-solaris-64int
# export LD_LIBRARY_PATH

# env
LD_LIBRARY_PATH=/usr/openwin/lib:/usr/local/lib:/usr/local/ssl/lib::/usr/perl5/5.6.1/lib/sun4-solaris-64int

# ./kstat_test.pl
Can't locate loadable object for module Sun::Solaris::Kstat in @INC (@INC contains: /usr/perl5/5.6.1/lib /usr/local/lib/perl5/site_perl/5.14.2/sun4-solaris-thread-multi /usr/local/lib/perl5/site_perl/5.14.2 /usr/local/lib/perl5/5.14.2/sun4-solaris-thread-multi /usr/local/lib/perl5/5.14.2 .) at ./kstat_test.pl line 5
Compilation failed in require at ./kstat_test.pl line 5.
BEGIN failed--compilation aborted at ./kstat_test.pl line 5.
 
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


Te adjunto algo más sobre las diferentes versiones de perl instaladas por mi y preinstaladas con solaris.
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
# find / -name Kstat.*
- Solaris x86 Kstat CPAN
/var/www/tiadm/tmp/perl2exe/perl2exe.x86/perl5/lib/site_perl/5.14.2/i86pc-solaris-thread-multi/Solaris/Kstat.pm
/var/www/tiadm/tmp/perl2exe/perl2exe.x86/perl5/lib/site_perl/5.14.2/i86pc-solaris-thread-multi/auto/Solaris/Kstat/Kstat.so
/var/www/tiadm/tmp/perl2exe/perl2exe.x86/perl5/lib/site_perl/5.14.2/i86pc-solaris-thread-multi/auto/Solaris/Kstat/Kstat.bs

- Solaris x86 Kstat illumos
/var/www/tiadm/tmp/perl2exe/perl2exe.x86/perl5/lib/site_perl/5.14.2/i86pc-solaris-thread-multi/Sun/Solaris/Kstat.pm
/var/www/tiadm/tmp/perl2exe/perl2exe.x86/perl5/lib/site_perl/5.14.2/i86pc-solaris-thread-multi/auto/Sun/Solaris/Kstat/Kstat.so
/var/www/tiadm/tmp/perl2exe/perl2exe.x86/perl5/lib/site_perl/5.14.2/i86pc-solaris-thread-multi/auto/Sun/Solaris/Kstat/Kstat.bs
/usr/share/man/man3perl/Kstat.3perl

- Perl pre-intalado en Solaris sparc
/usr/perl5/5.8.4/lib/Sun/Solaris/Kstat.pm
/usr/perl5/5.8.4/lib/sun4-solaris-64int/auto/Sun/Solaris/Kstat/Kstat.bs
/usr/perl5/5.8.4/lib/sun4-solaris-64int/auto/Sun/Solaris/Kstat/Kstat.so

/usr/perl5/5.6.1/lib/Sun/Solaris/Kstat.pm
/usr/perl5/5.6.1/lib/sun4-solaris-64int/auto/Sun/Solaris/Kstat/Kstat.bs
/usr/perl5/5.6.1/lib/sun4-solaris-64int/auto/Sun/Solaris/Kstat/Kstat.so
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
mobarrio
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2013-02-07 04:31 @230

Re: Sun::Solaris::Kstat y "use lib"

Notapor explorer » 2013-02-07 11:08 @505

En sistemas operativos tan antipáticos como estos, compilar debería ser el último recurso, y usar solo lo que trae la distribución del sistema operativo, ya sea lo que está instalado o lo que el fabricante ofrece para instalar a través de la red.

El problema de la compilación es que Kstat.xs hace referencia a elementos de estructura que no están definidos en los archivos de cabecera. Por ejemplo, el mensaje

Kstat.xs:386: error: structure has no member named `updates'

hace referencia a esta línea dentro de Kstat.xs:

SAVE_UINT64(self, vminfop, updates);

dentro de la función 'save_vminfo', y el programa de compilación espera que 'updates' esté definido en /usr/include/sys/sysinfo.h, pero parece que no es así.

El uso de los 'use lib' ayuda a que DynaLoader encuentre la biblioteca, pero... rechaza la carga de ella, porque no coincide el número de versión del objeto Kstat.so con el del propio DynaLoader (digamos que estás intentando forzar a Perl a cargar una biblioteca que fue compilada para un Perl más viejo).

Me temo que no vas a poder usar la biblioteca para un Perl tan moderno (bueno, Perl v5.14 es del 26 de septiembre del 2011). Sí que he visto que existe Kstat para Perl v5.10 y Kstat para Perl v5.12

Otra cosa... ¿que características especiales de Perl v5.14 necesitas en tu máquina?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Sun::Solaris::Kstat y "use lib"

Notapor mobarrio » 2013-02-07 12:03 @544

Bueno desde ya ¡¡¡¡muchas gracias nuevamente!!!!

Luego de tu gran explicación, entendí lo que estaba pasando, y junto con la versión de Solaris X86 en la cual sí funciona procedí a realizar un autentico GALERAZO (es decir, ¡¡¡aplicar intuición sin saber lo que estaba haciendo!!!) y ahora, ¡funciona!

Te comento lo que modifiqué...

/usr/include/sys/sysinfo.h -> Struct vminfo
Sintáxis: [ Descargar ] [ Ocultar ]
Using c Syntax Highlighting
  1.         uint64_t updates;       /* Incluida para Kstat.xs 07-02-2013    */
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


/usr/platform/sun4u/include/vm/hat_sfmmu.h -> Struct sfmmu_global_stat
Sintáxis: [ Descargar ] [ Ocultar ]
Using c Syntax Highlighting
  1.         int             sf_scd_1sttsb_alloc;     /* Incluida para Kstat.xs 07-02-2013 */
  2.         int             sf_scd_2ndtsb_alloc;     /* Incluida para Kstat.xs 07-02-2013 */
  3.         int             sf_scd_1sttsb_allocfail; /* Incluida para Kstat.xs 07-02-2013 */
  4.         int             sf_scd_2ndtsb_allocfail; /* Incluida para Kstat.xs 07-02-2013 */
  5.         int             sf_region_remap_demap;   /* Incluida para Kstat.xs 07-02-2013 */
  6.         int             sf_create_scd;           /* Incluida para Kstat.xs 07-02-2013 */
  7.         int             sf_join_scd;             /* Incluida para Kstat.xs 07-02-2013 */
  8.         int             sf_leave_scd;            /* Incluida para Kstat.xs 07-02-2013 */
  9.         int             sf_destroy_scd;          /* Incluida para Kstat.xs 07-02-2013 */
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


/usr/platform/sun4u/include/sys/fhc.h -> Function save_temperature
Sintáxis: [ Descargar ] [ Ocultar ]
Using c Syntax Highlighting
  1. struct temp_stats {
  2.         uint_t index;           /* index of current temperature */
  3.         short l1[L1_SZ];        /* OVERTEMP_TIMEOUT_SEC samples */
  4.         short l2[L2_SZ];        /* level 2 samples */
  5.         short l3[L3_SZ];        /* level 3 samples */
  6.         short l4[L4_SZ];        /* level 4 samples */
  7.         short l5[L5_SZ];        /* level 5 samples */
  8.         int max;                /* maximum temperature recorded */ /* Cambiamos short por int 07-02-2013 */
  9.         int min;                /* minimum temperature recorded */ /* Cambiamos short por int 07-02-2013 */
  10.         enum temp_state state;  /* state of board temperature */
  11.         int temp_cnt;           /* counter for state changes */
  12.         int shutdown_cnt;       /* counter for overtemp shutdown */
  13.         int version;            /* version of this structure */
  14.         enum temp_trend trend;  /* temperature trend for board */
  15.         int override;           /* override temperature for testing */ /* Cambiamos short por int 07-02-2013 */
  16. };
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Luego compile nuevamente el Kstat de Illumos
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
  1. # perl Makefile.PL
  2. Checking if your kit is complete...
  3. Looks good
  4. Writing Makefile for Sun::Solaris::Kstat
  5. Writing MYMETA.yml and MYMETA.json
  6.  
  7. # make
  8. cp Kstat.pm blib/lib/Sun/Solaris/Kstat.pm
  9. /usr/bin/perl /usr/local/lib/perl5/site_perl/5.14.2/ExtUtils/xsubpp  -typemap /usr/local/lib/perl5/5.14.2/ExtUtils/typemap  Kstat.xs > Kstat.xsc && mv Kstat.xsc Kstat.c
  10. gcc -c  -I/usr/platform/sun4u/include -I/usr/platform/sun4v/include  -D_REENTRANT -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DPERL_USE_SAFE_PUTENV -O    -DVERSION=\"1.3\"  -DXS_VERSION=\"1.3\" -fPIC "-I/usr/local/lib/perl5/5.14.2/sun4-solaris-thread-multi/CORE"   Kstat.c
  11. Running Mkbootstrap for Sun::Solaris::Kstat ()
  12. chmod 644 Kstat.bs
  13. rm -f blib/arch/auto/Sun/Solaris/Kstat/Kstat.so
  14. LD_RUN_PATH="/usr/lib" gcc  -G -L/usr/local/lib Kstat.o  -o blib/arch/auto/Sun/Solaris/Kstat/Kstat.so   \
  15.    -lkstat      \
  16.  
  17. chmod 755 blib/arch/auto/Sun/Solaris/Kstat/Kstat.so
  18. cp Kstat.bs blib/arch/auto/Sun/Solaris/Kstat/Kstat.bs
  19. chmod 644 blib/arch/auto/Sun/Solaris/Kstat/Kstat.bs
  20.  
  21. # make install
  22. Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
  23. Installing /usr/local/lib/perl5/site_perl/5.14.2/sun4-solaris-thread-multi/auto/Sun/Solaris/Kstat/Kstat.so
  24. Appending installation info to /usr/local/lib/perl5/5.14.2/sun4-solaris-thread-multi/perllocal.pod
  25.  
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4



Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  1. # ./bin/meminfo.pl
  2. -----------------------------------
  3. Memoria RAM
  4. -----------------------------------
  5. Total    :  4096.0 Mb
  6. Unusable :   101.1 Mb (  2.49 %)
  7. Kernel   :   370.9 Mb (  9.14 %)
  8. Locked   :     0.0 Mb (  0.00 %)
  9. Used     :  1390.6 Mb ( 34.27 %)
  10. Avail    :  2233.5 Mb ( 55.04 %)
  11. Status   :         OK
  12. -----------------------------------
  13. Memoria Swap
  14. -----------------------------------
  15. Total   :  7213.3 Mb
  16. Alloc   :  1109.5 Mb ( 15.38 %)
  17. Unalloc :    16.6 Mb (  0.23 %)
  18. Avail   :  6087.1 Mb ( 84.39 %)
  19. MinFree :   507.3 Mb (  7.03 %)
  20. Status  :         OK
  21. -----------------------------------
  22. Memoria Disco
  23. -----------------------------------
  24. Total    :  4096.5 Mb
  25. Alloc    :     0.0 Mb (  0.00 %)
  26. Free     :  4096.5 Mb (100.00 %)
  27. Status   :         OK
  28. -----------------------------------
  29.  
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¡Todo funcionando!

Nuevamente, ¡muchas gracias!
mobarrio
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2013-02-07 04:31 @230

Re: Sun::Solaris::Kstat y "use lib"

Notapor explorer » 2013-02-07 12:37 @567

¡Qué bueno! Me alegro. :lol:

Como último recurso, hubiera quedado la posibilidad de usar el comando kstat de la línea de comandos.

Por otra parte, para sacar estadísticas de la memoria, con un Perl v5.8.4 hubiera sido suficiente... salvo que necesitaras algo muy específico de Perl v5.14.2 (o evitar un bug de la versión vieja).
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Sun::Solaris::Kstat y "use lib"

Notapor mobarrio » 2013-02-07 13:02 @585

En realidad tengo varios scripts multi-plataforma, algunos de ellos como el meminfo, nicstat, que utilizan el Kstat. Lo del Perl 5.12 es porque luego con perl2exe los compilo y la versión que tengo es la 5.12. Sé que no tienen por qué ser iguales a las del SO pero para evitarme dolores de cabeza, utilizo tanto en p2x como en SO la misma.

¡Realmente todo un logro que funcionara en Sparc!

Salu2,

Mariano
mobarrio
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2013-02-07 04:31 @230

Re: Sun::Solaris::Kstat y "use lib"

Notapor explorer » 2013-02-08 08:16 @386

Hummm... ¿y por qué tienes que compilarlos con perl2exe?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Sun::Solaris::Kstat y "use lib"

Notapor mobarrio » 2013-02-08 08:22 @390

Solo para proteger el código fuente, que no quiero que lo puedan cambiar, esta fue la solución mas fácil que encontré.

Salu2,

Mariano
mobarrio
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2013-02-07 04:31 @230

Re: Sun::Solaris::Kstat y "use lib"

Notapor explorer » 2013-02-08 12:00 @541

Siempre es preferible que el código lo pueda ver y cambiar el usuario... les da sensación de libertad (independencia del proveedor) y, además, si tocan algo y lo estropean, mejor para nosotros :twisted:

Yo, para esconder el código, alguna vez he usado Acme::Bleach :lol:
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 22 invitados