14.2. Virtual Base Libraries

GEISA Virtual Execution Environment

GEISA does not specify which virtual runtime to use for the managed-code memory-safe languages.

For Java ®, a GEISA conformant VEE MUST include support for the following class libraries:

  • java.io

  • java.lang

  • java.lang.annotation

  • java.lang.ref

  • java.lang.reflect

  • java.util

  • org.eclipse.paho.client.mqttv5

  • com.google.protobuf

Additional libraries may be provided by platforms if desired.

For C and C++, a GEISA conformant VEE MUST provide support for standard libc C library with the exception of OS-specific or non-sandbox-friendly functions such as fork()/exec(), process control, and signals.

The following APIs MUST be supported:

  • FileSystem: open, fopen, fdopendir, close, fclose, read, write, fread, fwrite, lseek, stat, fstat, readdir, fstatat, fileno, fflush, access

  • Sockets: send, recv, shutdown, close, socket, bind, listen, connect

  • Clocks: clock_getres, clock_gettime, gettimeofday

  • Process: exit

  • StdIO: printf

  • Pthreads: pthread_create, pthread_join, pthread_attr_init, pthread_attr_setstacksize, pthread_attr_destroy

  • Semaphores: sem_wait, sem_post, sem_destroy

  • C++ Standard Library

Note

While GEISA ADM GEISA Application & Device Management makes use of LWM2M for communication, GEISA Applications are unaware of this and do not require any LWM2M client libraries or knowledge.

GEISA Pyramid