16 February, 2001
Copyright Notice
Copyright (C) Julian Rose, Sussex, U.K. The software
and corresponding documents are distributed under license.
Overview | General |
Kernel | Build Time | Run Time
| License
0. Overview
This document is part of the "digital signal processor kernel" family (dsp_K)
software distribution and a licensed DSP_K
DESCRIPTION document. It describes the intended EL/IX
(and POSIX) compatibility that the dsp_K software shall target. EL/IX is
a draft API specification proposed by Cygnus that aims to support development
of embedded applications using Linux. The API is strongly based on a subset
of both the POSIX.1 and ISO C libraries, but enriched with a few non-standard
Linux and GNU extensions.
The specification is arranged into levels and options in order to form
profiles, so that an implementation might make a profile statement about
EL/IX compatibility. The target dsp_K EL/IX profile is given herein (which
shall be regularly reviewed as implementation progresses) and a detailed
description of dsp_K can be found in the FAQ.
It should be noted that the term POSIX should be read as POSIX-like
throughout its use in dsp_K, since in many cases the proper semantics cannot
be guaranteed in a flat memory model. However, the software is a genuine
attempt to reproduce the closest behaviour possible and is a pragmatic
solution rather than an attempt at theoretic precision.
0.1 Version
This document addresses the EL/IX base API specification draft 1.2 and
dsp_K software version 0.6.
1. Levels and Options
1.1 Levels
Levels 1 through 3 are of interest but level 4 is not.
1.2 Options
The following option categories are currently considered of interest for
dsp_K (but not all functions are wanted):
o some options are taken at any particular level
m some reduction in semantics are allowed
s signal handling
r real-time support
c compatibility functions
' ' some non-option functions are desirable
Some small part of the following categories are currently considered
interesting (but most functions are considered too expensive):
f all file system support and its sub-options (a RAM disk would
significantly increase the weight of this option)
l library-only functions (most should be provided outside the kernel,
e.g. VDSP libraries)
Currently the following options are not considered of interest:
n network support
t terminal support
M memory management and all its sub-options (malloc & free are
covered in option l)
2. POSIX (1003.13) profile
Generally dsp_K shall target a minimal profile to include EL/IX
level 1 with some of the signal and compatibility functions. In all cases
dsp_K is fully configurable through the application configuration file
(dsp_Kcfg.h) such that only those functions required by an application
are brought in.
Some functions "are" already provided. Current thinking shows additional
functions "shall likely" be provided, "might" be provided, or "none" shall
be provided.
2.1 Process primitives
2.1.1 Creation and Execution
The following are provided:
fork
exec
2.1.2 Process termination
The following are provided:
wait
waitpid
_exit
2.1.3 Signals
Some of the following are provided and others shall likely be provided:
signal masks
notification mechanisms
real-time signals
kill
sigemptyset
sigfillset
sigaddset
sigdelset
sigismember
sigaction
pthread_sigmask
sigprocmask
sigpending
sigsuspend
sigwait
sigwaitinfo
sigtimedwait
sigqueue
pthread_kill
2.1.4 Timer operations
The following are provided:
alarm
pause
sleep
2.2 Process Envrionment
2.2.1 Process identification
The following are provided:
getpid
getppid
getpgid
setpgid
2.2.2 User identification
none
2.2.3 Process groups
none
2.2.4 System identification
The following are provided:
uname
2.2.5 Time
The following are provided:
time
times (in limited form)
2.2.6 Environment variables
The following are provided:
getenv
2.2.7 Terminal identification
none
2.2.8 Configurable system variables
The following are provided:
sysconf
2.3 Files and Directories
none
2.4 Input and Output Primitives
2.4.1 Pipes
The following are provided:
pipe (to support aio)
2.4.2 File descriptor manipulation
none
2.4.3 Input and Output
The following shall likely be provided:
read (as device driver operations)
write
2.4.4 Control operations on files
none
2.4.5 File synchronisation
none
2.4.6 Asynchronous input and output
The following are provided:
aioread
aiowrite
aiocancel
aiowait
2.5 Device and Class-specific functions
none
2.6 C Language Services
The following are provided:
tzset
asctime_r
ctime_r
gmtime_r
localtime_r
2.7 System databases
none
2.8 Data Interchange Format
none
2.9 Synchronisation
2.9.1 Semaphore functions
The following shall likely be provided:
sem_init
sem_destroy (in modified form)
sem_wait
sem_trywait
sem_post
sem_getvalue
The following might be provided:
sem_open
sem_close
sem_unlink
2.9.2 Mutexes
The following might be provided:
pthread_mutexattr_init
pthread_mutexattr_destroy
pthread_mutexattr_getpshared
pthread_mutexattr_setpshared
pthread_mutex_init
pthread_mutex_destroy
pthread_mutex_lock
pthread_mutex_trylock
pthread_mutex_unlock
2.9.3 Condition variables
The following might be provided:
pthread_condattr_init
pthread_condattr_destroy
pthread_condattr_getpshared
pthread_condattr_setpshared
pthread_cond_init
pthread_cond_destroy
pthread_cond_signal
pthread_cond_broadcast
pthread_cond_wait
pthread_cond_timedwait
2.10 Memory management
none (malloc & free are provided elsewhere)
2.11 Execution scheduling
2.11.1 Process scheduling functions
The following shall likely be provided:
sched_setparam
sched_getparam
sched_setscheduler
sched_getscheduler
sched_yield
sched_get_priority_max
sched_get_priority_min
sched_rr_get_intervale
2.11.2 Thread scheduling
The following might be provided:
pthread_attr_setscope
pthread_attr_getscope
pthread_attr_setinheritsched
pthread_attr_getinheritsched
pthread_attr_setschedpolicy
pthread_attr_getschedpolicy
pthread_attr_setschedparam
pthread_attr_getschedparam
pthread_setschedparam
pthread_getschedparam
2.11.3 Synchronisation scheduling
none
2.12 Clocks and Timers
The following are provided:
clock_settime
clock_gettime
clock_getres
timer_create
timer_delete
timer_settime
timer_gettime
nanosleep
2.13 Message Passing
The following shall likely be provided:
mq_send
mq_receive
mq_notify
mq_setattr
mq_getattr
The following might be provided:
mq_open
mq_close
mq_unlink
2.14 Thread Management
The following might be provided:
pthread_attr_init
pthread_attr_destroy
pthread_attr_setstacksize
pthread_attr_getstacksize
pthread_attr_setstackaddr
pthread_attr_getstackaddr
pthread_attr_setdetachstate
pthread_attr_getdetachstate
pthread_create
pthread_join
pthread_detach
pthread_exit
pthread_self
pthread_equal
pthread_once
2.15 Thread Specific Data
none
2.16 Thread Cancellation
The following might be provided:
pthread_cancel
pthread_setcancelstate
pthread_setcanceltype
pthread_testcancel
pthread_cleanup_push
pthread_cleanup_pop
3. C Library Compatibility
3.1 Error Reporting
none
3.2 Memory Allocation
The following (ISO C) are provided:
malloc
free
The following (ISO C) shall likely be provided:
realloc
calloc
3.3 Character Handling
none (all these should be provided by a compiler suite)
3.4 String and Array Utilities
none (all these should be provided by a compiler suite)
3.5 Character Set Handling
none (all these should be provided by a compiler suite)
3.6 Locales
none (all these should be provided by a compiler suite)
3.7 Message Translation
none (all these might be provided by a compiler suite)
3.8 Searching and Sorting
none (all these should be provided by a compiler suite)
3.9 Pattern Matching
none (all these should be provided by a compiler suite)
3.10 Stream I/O
none (all these should be provided by a compiler suite)
3.11 Low Level I/O
3.11.1 General I/O
The following shall likely be provided:
pread
pwrite
The following are provided:
select (as device driver functions)
ioctl
3.11.2 Asynchronous I/O
none (refer to the POSIX versions)
3.12 File System Interface
none
3.13 Pipes and FIFOs
The following might be provided:
popen
pclose
The following are provided:
pipe
3.14 Sockets
none
3.15 Low Level Terminal Interface
none
3.16 Mathematics
none (all these should be provided by a compiler suite or third party DSP
libraries)
3.17 Arithmetic
none (all these should be provided by a compiler suite or third party DSP
libraries)
3.18 Date and Time
The following are provided (in POSIX form):
clock
difftime
gettimeofday
settimeofday
adjtime
localtime
gmtime
mktime
asctime
ctime
strftime
strptime
3.19 Resource Usage and Limits
none
3.20 Non-Local Exits
none
3.21 Signal Handling
The following are provided:
signal (as a wrapper for the POSIX sigaction, sigprocmask)
raise (as a wrapper for the POSIX kill)
The following might be provided:
sigblock
sigsetmask
3.22 Program Startup and Termination
3.22.1 Program arguments
none
3.22.2 Environment variables
The following are provided:
putenv
getenv
3.22.3 Program Termination
none
3.23 Processes
The following might be provided:
getpriority
setpriority
nice
3.24 Users and Groups
none
3.25 System Information
The following are provided
uname
3.26 System Configuration
none
3.27 Cryptographic Functions
none
3.28 POSIX threads (Linux extensions)
none
Copyright (C) 2000-2001 Julian Rose, Sussex, U.K. This page is maintained
by jhrose@dial.pipex.com.