This is the mail archive of the
elix@sources.redhat.com
mailing list for the Elix project.
Re: subset of EL/IX for DSPs
- To: elix at sourceware dot cygnus dot com
- Subject: Re: subset of EL/IX for DSPs
- From: Julian Rose <jhrose at dial dot pipex dot com>
- Date: Mon, 21 Aug 2000 09:50:40 +0200
Hello,
Further to the recent posting on EL/IX for DSPs, I have prepared
a profile statement as attached. If people have problems reading it,
please visit "http://www.jhrose.dial.pipex.com/dsp_Kelx.htm".
The aim is to ask people what they think more than to speak with
authority :-)
cheers
julian
Title: dsp_K EL/IX profile
16 August, 2000
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.
0.1 Version
This document addresses the EL/IX base API specification draft 1.1 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 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.
Current thinking shows functions "shall likely" be provided, "might"
be provided, or "none" shall be provided.
2.1 Process primitives
2.1.1 Creation and Execution
none
2.1.2 Process termination
none
2.1.3 Signals
The following 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 shall likely be provided:
alarm
pause
sleep
2.2 Process Envrionment
2.2.1 Process identification
The following shall likely be provided:
getpid
The following might be provided:
getppid (but as a wrapper since exec shall not be provided)
2.2.2 User identification
none
2.2.3 Process groups
none
2.2.4 System identification
The following shall likely be provided:
uname
2.2.5 Time
The following shall likely be provided:
time
times (in limited form)
2.2.6 Environment variables
The following shall likely be provided:
getenv
2.2.7 Terminal identification
none
2.2.8 Configurable system variables
none
2.3 Files and Directories
none
2.4 Input and Output Primitives
2.4.1 Pipes
The following shall likely be provided:
pipe
2.4.2 File descriptor manipulation
none
2.4.3 Input and Output
The following shall likely be provided:
read
write
2.4.4 Control operations on files
none
2.4.5 File synchronisation
none
2.4.6 Asynchronous input and output
The following might be provided:
aio_read
aio_write
aio_listen
aio_error
aio_return
aio_cancel
aio_suspend
aio_fsync
2.5 Device and Class-specific functions
none
2.6 C Language Services
none
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 shall likely be provided:
clock_settime
clock_gettime
clock_getres
timer_create
timer_delete
timer_settime
timer_gettime
timer_getoverrun
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
none
2.16 Thread Cancellation
none
3. C Library Compatibility
3.1 Error Reporting
none
3.2 Memory Allocation
The following (ISO C) shall likely be provided:
malloc
free
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 should 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:
select
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
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 might be provided:
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 might be provided:
signal (as a wrapper for the POSIX sigaction)
raise
3.22 Program Startup and Termination
3.22.1 Program arguments
none
3.22.2 Environment variables
The following shall likely be 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 shall likely be provided
uname
3.26 System Configuration
none
3.27 Cryptographic Functions
none
3.28 POSIX threads (Linux extensions)
none
Copyright (C) 2000 Julian Rose, Sussex, U.K. This page is maintained
by jhrose@dial.pipex.com.