Overview

Download

History

Blog

Platforms

User FAQ

Dev FAQ

Contact





This page lists the informations for kernel developers, who wish to use XCOM as their GUI system.

XCOM GUI system is not yet finished, and the cooperation to bring XCOM to home made kernels will likely begin in 2026.
This page will contain the info for compiler developers and kernel developers about what features XCOM needs
to properly work on top of a kernel, and what type of compiler it needs to be compiled for a platform.

Features must be present:
-C compiler with C99 syntax
-These features must work to make xcom to be able to start up:
-Function calls, arrays, pointers must be supported in the compiler.
-Memory addressing must be 64 bit or 32 bit.
-long long: The long long format must be a 64 bit format.
-long: long must be 32 on 32 bit systems, 64 on 64 bit systems.
-short: must be a 16 bit format
-char: must be 8 bit format
-float: doesn't have to be IEEE float, can be fixed point internally. Must have, however, at least 24 bit of computational precisity.
-double: doesn't have to be IEEE double, can be fixed point internally. Must have, however, at least 40 bit of computational precisity.
-Bitshifts, bitwise or/and must work.

Required C library features:
-fopen/fclose/popen/open/close (to access files and OS objects)
-malloc/free (or an equivalent memory allocator)
-strlen, strcat, strcpy, snprintf (usually included in a C library)
-cos, sin, tan (used to dynamically compute some of the gui icons at boot)
-memcpy, memmove (usually included in a C library)
-atoi, atof (usually included in a C library)

Features which neccessary to use xcom as a meaningful system:
Lack of these are not a deal breaker, however, without these, user experience can fall drastically:
-fcntl - to set up terminal, network, screen and keyboard inputs/outputs
-system command and execv (to run commands on the system)
-setenv: setting system environment values
-dup2 - to set up terminal input/output streams
-fork: to create a process with separate address space
-_exit(0) and kill: to exit from forks
-pthread_create/pthread_join or any equivalent: to create and close threads
-pthread_attr_getstacksize/setstacksize: to set the size of a thread stack
-gettimeofday: to be able to get the date/hours/seconds/miliseconds for timing
-usleep: to be able to sleep the process
-Sound system of some sort (alsa, oss, or something simple).
-accept, connect, bind, send, recv, setsockopt: for X11 support and thumbnailer process separation
-