Technical Information¶
Limitations¶
- Currently the POSIX API (libc) is not fully supported by DCE. However there are already about 400 methods supported. As the goal of DCE is to allow to execute network applications, many methods related to the network are supported for example
socket
,connect
,bind
,listen
,read
,write
,poll
,select
. The next chapter list the applications well tested using DCE. - Some methods are not usable with all options of DCE. For more details refer to chapter Coverage API that lists all the supported methods.
- The scheduler is not as advanced as that of a kernel, for example if an infinite loop in a hosted application, DCE can not get out, but this should not happen in applications written correctly.
API Coverage¶
Below there is the list of the systems calls supported by DCE, the column named Type represents how the system call is implemented ie:
- DCE the method is fully rewritten,
- NATIVE the real corresponding system call is used.
System Call Name | Domain | Include file | Type | Remarks |
---|---|---|---|---|
gettimeofday | Date & Time | sys/time.h | DCE | |
time | Date & Time | time.h | DCE | |
asctime, ctime, gmtime, localtime | Date & Time | time.h | DCE | |
asctime_r, ctime_r, gmtime_r, localtime_r, mktime, strftime | Date & Time | time.h | NATIVE | |
clock_gettime | Date & Time | time.h | NATIVE | Should not be NATIVE, do not use for now. |
read | IO | unistd.h | DCE | |
write | IO | unistd.h | DCE | |
writev | IO | sys/uio.h | DCE | |
clearerr | IO | stdio.h | DCE | |
setbuf, setbuffer, setlinebuf, setvbuf | IO | stdio.h | DCE | |
fseek, ftell, rewind, fgetpos, fsetpos | IO | stdio.h | DCE | |
printf | IO | stdio.h | DCE | |
fprintf | IO | stdio.h | NATIVE | |
sprintf, snprintf | IO | stdio.h | NATIVE | |
asprintf, vasprintf | IO | stdio.h | NATIVE | |
dprintf, vdprintf | IO | stdio.h | NATIVE | |
fgetc, fgetc_unlocked | IO | stdio.h | DCE | |
getc, getc_unlocked | IO | stdio.h | NATIVE | |
getchar, getchar_unlocked | IO | stdio.h | DCE | |
_IO_getc | IO | stdio.h | DCE | |
fputc, fputc_unlocked | IO | stdio.h | DCE | |
putc, putc_unlocked | IO | stdio.h | NATIVE | |
putchar, putchar_unlocked | IO | stdio.h | DCE | |
_IO_putc | IO | stdio.h | DCE | |
fgets, fgets_unlocked | IO | stdio.h | DCE | |
fputs, fputs_unlocked | IO | stdio.h | DCE | |
puts | IO | stdio.h | DCE | |
ungetc | IO | stdio.h | DCE | |
fclose | IO | stdio.h | DCE | |
fcloseall | IO | stdio.h | DCE | |
fopen, fdopen64, fdopen, freopen | IO | stdio.h | DCE | |
fflush, fflush_unlocked | IO | stdio.h | DCE | |
fread, fread_unlocked | IO | stdio.h | DCE | |
fwrite, fwrite_unlocked | IO | stdio.h | DCE | |
ferror, ferror_unlocked | IO | stdio.h | DCE | |
feof, feof_unlocked | IO | stdio.h | DCE | |
fileno, fileno_unlocked | IO | stdio.h | DCE | |
perror | IO | stdlib.h | DCE | |
vprintf | IO | stdarg.h | DCE | |
vfprintf, vsprintf, vsnprintf | IO | stdarg.h | NATIVE | |
fcntl | IO | fcntl.h | DCE | |
dup, dup2 | IO | unistd.h | DCE | |
open, open64 | IO | fcntl.h | DCE | |
close | IO | unistd.h | DCE | |
unlink | IO | unistd.h | DCE | |
remove | IO | stdio.h | DCE | |
mkdir | IO | sys/stat.h | DCE | |
rmdir | IO | unistd.h | DCE | |
select | IO | unistd.h | DCE | |
isatty | IO | unistd.h | DCE | |
ioctl | IO | sys/ioctl.h | DCE | |
poll | IO | poll.h | DCE | |
getcwd, getwd, get_current_dir_name | IO | unistd.h | DCE | |
chdir, fchdir | IO | unistd.h | DCE | |
alphasort, alphasort64, versionsort | IO | dirent.h | NATIVE | |
umask | IO | sys/stat.h | DCE | |
truncate, ftruncate | IO | unistd.h | DCE | |
ttyname | IO | unistd.h | DCE | |
lseek | IO | unistd.h | DCE | |
euidaccess, eaccess | IO | unistd.h | DCE | |
pathconf | IO | unistd.h | NATIVE | |
getpwnam, getpwuid, endpwent | IO | pwd.h | DCE | |
opendir, fdopendir | IO | dirent.h | DCE | |
readdir, readdir_r | IO | dirent.h | DCE | |
closedir | IO | dirent.h | DCE | |
dirfd | IO | dirent.h | DCE | |
rewinddir | IO | dirent.h | DCE | |
scandir | IO | dirent.h | DCE | |
unlinkat | IO | fcntl.h | DCE | |
pread, pwrite | IO | unistd.h | DCE | |
uname | Kernel | sys/utsname.h | DCE | |
sysconf | Kernel | unistd.h | NATIVE | |
calloc, malloc, free, realloc | Memory Allocation | stdlib.h | DCE | |
mmap, mmap64, munmap | Memory Mappings | sys/map.h | DCE | |
htonl | Networking | arpa/inet.h | NATIVE | |
htons | Networking | arpa/inet.h | NATIVE | |
ntohl | Networking | arpa/inet.h | NATIVE | |
htonl | Networking | arpa/inet.h | NATIVE | |
ntohs | Networking | arpa/inet.h | NATIVE | |
socket | Networking | sys/socket.h | DCE | Not all flavour are supported pleaselook at the doxygen doc. |
getsockname | Networking | sys/socket.h | DCE | |
getpeername | Networking | sys/socket.h | DCE | |
bind | Networking | sys/socket.h | DCE | |
connect | Networking | sys/socket.h | DCE | |
inet_aton, inet_addr, inet_network, inet_ntoa, inet_makeaddr, inet_lnaof, inet_netof | Networking | arpa/inet.h | NATIVE | |
inet_ntop | Networking | arpa/inet.h | DCE | |
inet_pton | Networking | arpa/inet.h | NATIVE | |
getsockopt, setsockopt | Networking | sys/socket.h | DCE | |
listen | Networking | sys/socket.h | DCE | |
accept | Networking | sys/socket.h | DCE | |
shutdown | Networking | sys/socket.h | DCE | |
send, sendto, sendmsg | Networking | sys/socket.h | DCE | |
recv, recvfrom, recvmsg | Networking | sys/socket.h | DCE | |
gethostbyname, gethostbyname2 | Networking | netdb.h | DCE | |
getaddrinfo, freeaddrinfo, gai_strerror | Networking | netdb.h | DCE | |
gethostent, sethostent, endhostset, hstrerror | Networking | netdb.h | NATIVE | |
herror | Networking | netdb.h | DCE | |
getprotoent, getprotobyname, getprotonumber, setprotoent, endprotoent | Networking | netdb.h | NATIVE | |
getservent, getservbyname, getservbyport, setservent, endservent | Networking | netdb.h | NATIVE | |
if_nametoindex | Networking | net/if.h | DCE | |
getnameinfo | Networking | sys/socket.h | DCE | |
ether_aton_r | Networking | netinet/ether.h | NATIVE | |
atexit | Process | stdlib.h | DCE | |
getpid, getppid | Process | unistd.h | DCE | |
getuid, geteuid | Process | unistd.h | DCE | |
setuid | Process | unistd.h | DCE | |
setgid | Process | unistd.h | DCE | |
seteuid, setegid | Process | unistd.h | DCE | |
setreuid, setregid | Process | unistd.h | DCE | |
setresuid, setresgid | Process | unistd.h | DCE | |
sched_yield | Process | sched.h | DCE | |
exit | Process | unistd.h | DCE | |
getenv | Process | stdlib.h | DCE | |
putenv | Process | stdlib.h | DCE | |
setenv, unsetenv | Process | stdlib.h | DCE | |
clearenv | Process | stdlib.h | DCE | |
fork | Process | unistd.h | DCE | Supported only with the Cooja Loader. |
abort | Process | stdlib.h | DCE | |
execl, execlp, execle, execv, execvp, execve | Process | unistd.h | DCE | Supported only with the pthread fiber manager. |
wait, waitpid | Process | sys/wait.h | DCE | |
sbrk | Process | unistd.h | DCE | |
getpagesize | Process | unistd.h | DCE | |
getgid, getegid | Process | unistd.h | DCE | |
gethostname | Process | unistd.h | DCE | |
getpgrp | Process | unistd.h | DCE | |
pipe | Process | unistd.h | DCE | |
__sigsetjmp, siglongjmp | Process | setjmp.h | NATIVE | Experimental, please do not use them. |
getdtablesize | Process | unistd.h | NATIVE | |
random, srandom | Random | stdlib.h | DCE | |
rand, srand | Random | stdlib.h | DCE | |
drand48, erand48, lrand48, nrand48, mrand48, jrand48, srand48, seed48, lcong48 | Random | stdlib.h | DCE | |
drand48_r, erand48_r, lrand48_r, nrand48_r, mrand48_r, jrand48_r, srand48_r, seed48_r, lcong48_r | Random | stdlib.h | DCE | |
signal | Signal | signal.h | DCE | |
sigaction | Signal | signal.h | DCE | |
sigemptyset, sigfillset, sigaddset, sigdelset, sigismember | Signal | signal.h | NATIVE | |
sigprocmask | Signal | signal.h | DCE | |
qsort | Sort | stdlib.h | NATIVE | |
strerror, strerror_h | String | string.h | NATIVE | |
setlocale | String | locale.h | DCE | Do nothing at all |
strcoll | String | string.h | NATIVE | |
uselocale | String | locale.h | NATIVE | |
newlocale | String | locale.h | NATIVE | |
wctob | String | wchar.h | NATIVE | |
btowc | String | wchar.h | NATIVE | |
memset | String | string.h | NATIVE | |
memcpy | String | string.h | NATIVE | |
bcopy | String | string.h | NATIVE | |
memcmp | String | string.h | NATIVE | |
memmove | String | string.h | NATIVE | |
memchr | String | string.h | NATIVE | |
strcpy, strncpy | String | string.h | NATIVE | |
strcat, strncat | String | string.h | NATIVE | |
strcmp, strncmp | String | string.h | NATIVE | |
strlen, strnlen | String | string.h | NATIVE | |
strspn, strcspn | String | string.h | NATIVE | |
strchr, strrchr | String | string.h | NATIVE | |
strcasecmp, strncasecmp | String | string.h | NATIVE | |
strdup, strndup | String | string.h | DCE | |
getopt, getopt_long | String | unistd.h | DCE | |
atoi, atol, atoll, atof | String | stdlib.h | NATIVE | |
strtol, strtoll | String | stdlib.h | DCE | |
strtoul, strtoull | String | stdlib.h | DCE | |
strtod | String | stdlib.h | DCE | |
toupper, tolower | String | ctype.h | NATIVE | |
index, rindex | String | strings.h | NATIVE | |
strtok, strtok_r | String | string.h | NATIVE | |
sscanf | String | stdio.h | NATIVE | |
basename, dirname | String | libgen.h | NATIVE | |
bindtextdomain, textdomain, gettext | String | libintl.h | NATIVE | |
mbrlen | String | wchar.h | NATIVE | |
strtoimax, strtoumax | String | inttypes.h | NATIVE | |
openlog, syslog, closelog, vsyslog, setlogmask | Syslog | syslog.h | DCE | |
pthread_create | Thread | pthread.h | DCE | |
pthread_exit | Thread | pthread.h | DCE | |
pthread_self | Thread | pthread.h | DCE | |
pthread_once | Thread | pthread.h | DCE | |
pthread_getspecific, pthread_setspecific | Thread | pthread.h | DCE | |
pthread_key_create | Thread | pthread.h | DCE | |
pthread_key_delete | Thread | pthread.h | DCE | |
pthread_mutex_destroy, pthread_mutex_init | Thread | pthread.h | DCE | |
pthread_mutex_lock, pthread_mutex_trylock, pthread_mutex_unlock | Thread | pthread.h | DCE | |
pthread_mutexattr_destroy, pthread_mutexattr_init | Thread | pthread.h | DCE | |
pthread_mutexattr_settype | Thread | pthread.h | DCE | |
pthread_cancel | Thread | pthread.h | DCE | |
pthread_kill | Thread | pthread.h | DCE | |
pthread_join | Thread | pthread.h | DCE | |
pthread_detach | Thread | pthread.h | DCE | |
pthread_cond_destroy, pthread_cond_init | Thread | pthread.h | DCE | |
pthread_cond_broadcast, pthread_cond_signal | Thread | pthread.h | DCE | |
pthread_cond_timedwait, pthread_cond_wait | Thread | pthread.h | DCE | |
pthread_condattr_destroy, pthread_condattr_init | Thread | pthread.h | DCE | |
sem_init | Thread Synchronization | semaphore.h | DCE | |
sem_destroy | Thread Synchronization | semaphore.h | DCE | |
sem_post | Thread Synchronization | semaphore.h | DCE | |
sem_wait, sem_trywait, sem_timedwait | Thread Synchronization | semaphore.h | DCE | |
sem_getvalue | Thread Synchronization | semaphore.h | DCE | |
sleep, usleep | Timer | unistd.h | DCE | |
nanosleep | Timer | time.h | DCE | |
getitimer, setitimer | Timer | sys/time.h | DCE | |
timerfd_create, timerfd_settime, timerfd_gettime | Timer | sys/timerfd.h | DCE | |
getgrnam | Users & Groups | grp.h | NATIVE | |
getrusage | Users & Groups | sys/resource.h | NATIVE |