Classic versus POSIX APIs
Joel Sherrill <joel@OARcorp.com>
joel.sherrill at OARcorp.com
Fri Jan 6 21:24:09 UTC 2006
Fabrício de Novaes Kucinskis wrote:
> Hello,
>
>
> I finished my studies of the RTEMS Classic API and now I'm starting to study
> the POSIX API. My goal is to define one of these two APIs to use in our
> applications - ITRON is out of the question.
>
> Compatibility is not the issue for us at this moment; we are just looking
> for what resources each API provides. So, I have three main questions
> concerning the use of the POSIX API:
Different purpose and goal is the primary difference between the two.
The Classic API was based on a standard designed for use in hard
real-time systems. POSIX was based on UNIX and extended toward embedded
systems. POSIX threads were not in the original standard.
The POSIX API is very good when you want to port code to/from UNIX.
It is the foundation on which most libraries are ported to RTEMS.
The GNU Ada run-time is ported to POSIX threads and RTEMS just leveraged
this.
> 1) Is it very used? Who here uses the POSIX API? It appears to me that most
> of the messages at the list involves the Classic API;
There are books on the POSIX API and it is more generally known in the
computing world. So people tend to understand it better and ask fewer
questions.
FWIW when you --enable-posix, you are primarily enabling POSIX threads
and concurrency operations. POSIX includes file IO and the standard C
library which are always available.
> 2) What is the advantages of POSIX API over the Classic? Just the managers
> shown in the "New Chapters" document (Event Logging, Process Dump Control,
> etc)? There are advantages of Classic API over the POSIX?
Ignore those. They really need to be deleted. They are for APIs
proposed but never finalized AFAIK.
Both APIs have features not found in the other. For example, the
Classic API has timer functions and rate monotonic periods. It has very
fine grained control over thread execution modes. In contrast, the
POSIX API has at least condition variables, keys (in contrast to per
task variables), and message queues with priority based messages which
are not found in the Classic API.
> 3) Can I use both APIs in one application? I mean, if I use the Classic API,
> is it possible to use the Administration Interface Manager (just an
> example)? I'm almost sure the answer is a capital NO. But if is a YES, what
> are the issues on this?
Yes you can mix APIs in the same application. No big deal. More people
do it than realize it. If you write a POSIX thread which makes a socket
call, it will use a Classic API semaphore and Classic API events.
Similarly, POSIX termios functionality is implemented using Classic API
semaphores.
The only issues I know of are that the APIs are different. POSIX thread
priorities run opposite numerically from the Classic API (1 is low in
POSIX, 1 is high in Classic). If a POSIX thread exits, it silently goes
away. If a Classic API task exits, it is a fatal error.
Is the Administration Interface Manager, a "new chapter"? If so, it
doesn't exist. So the answer is NO you can't call it.
The big deal to the POSIX API is that it is POSIX. It is standard. If
you port code from UNIX, it will make POSIX calls.
> Thanks in advance and a Happy New Year for everybody!
>
>
>
> Fabrício de Novaes Kucinskis - DEA / INPE
> -----------------------------------------
> Divisão de Eletrônica Aeroespacial
> Instituto Nacional de Pesquisas Espaciais
>
--
Joel Sherrill, Ph.D. Director of Research & Development
joel at OARcorp.com On-Line Applications Research
Ask me about RTEMS: a free RTOS Huntsville AL 35805
Support Available (256) 722-9985
More information about the users
mailing list