Conoscere la risoluzione dei clock hardware con le risorse esterne dichiarate nel file header "time.h"

Da Gambas-it.org - Wikipedia.

Con alcune risorse esterne, scritte in C e dichiarate nei file header "/usr/include/time.h " e "/usr/include/linux/time.h ", è possibile conoscere la risoluzione di alcuni tipi di clock hardware.

E' necessario avere installata nel proprio sistema e richiamata in Gambas la libreria condivisa: "libc.so.6 ".

Mostriamo un semplice esempio:

Library "libc:6"

Private Enum CLOCK_REALTIME = 0, CLOCK_MONOTONIC, CLOCK_PROCESS_CPUTIME_ID, CLOCK_THREAD_CPUTIME_ID, CLOCK_MONOTONIC_RAW,
             CLOCK_REALTIME_COARSE, CLOCK_MONOTONIC_COARSE, CLOCK_BOOTTIME, CLOCK_REALTIME_ALARM, CLOCK_BOOTTIME_ALARM

Public Struct timespec
  tv_sec As Long          ' Secondi
  tv_nsec As Long         ' Nanosecondi
End Struct
 
' int clock_getres (clockid_t __clock_id, struct timespec *__res)
' Get resolution of clock CLOCK_ID.
Private Extern clock_getres(__clock_id As Integer, __res As Timespec) As Integer


Public Sub Main()
 
 Dim spec As New Timespec

 clock_getres(CLOCK_REALTIME, spec)
 Print "CLOCK_REALTIME:            sec. "; spec.tv_sec; "   ns "; spec.tv_nsec
 
 clock_getres(CLOCK_MONOTONIC, spec)
 Print "CLOCK_MONOTONIC:           sec. "; spec.tv_sec; "   ns "; spec.tv_nsec
  
 clock_getres(CLOCK_MONOTONIC_RAW, spec)
 Print "CLOCK_MONOTONIC_RAW:       sec. "; spec.tv_sec; "   ns "; spec.tv_nsec
  
 clock_getres(CLOCK_PROCESS_CPUTIME_ID, spec)
 Print "CLOCK_PROCESS_CPUTIME_ID:  sec. "; spec.tv_sec; "   ns "; spec.tv_nsec
  
 clock_getres(CLOCK_THREAD_CPUTIME_ID, spec)
 Print "CLOCK_THREAD_CPUTIME_ID:   sec. "; spec.tv_sec; "   ns "; spec.tv_nsec
 
End


Riferimenti