Multi-Purpose Realtime Operating System
Copyright © 1998 The Open Group

Frontmatter


Product Standard
Operating System and Languages: Multi-Purpose Realtime Operating System
Document Number: X98RT


©July 1998, The Open Group All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical, photocopying, recording or otherwise, without the prior permission of the copyright owners.


Motif®, OSF/1®, UNIX®, and the "X Device"® are registered trademarks and IT DialToneTM; and The Open GroupTM; are trademarks of The Open Group in the U.S. and other countries.


Any comments relating to the material contained in this document may be submitted to The Open Group at:

The Open Group
Apex Plaza
Forbury Road
Reading
Berkshire, RG1 1AX
United Kingdom
or by electronic mail to:
OGSpecs@opengroup.org

Product Standard

NAME

Multi-Purpose Realtime Operating System

LABEL FOR LOGO

No label.

DESCRIPTION

This Product Standard defines interfaces and functionality to support the source portability of applications with realtime requirements. This Product Standard is aligned with ANSI/IEEE Std. 1003.1b-1993, ANSI/IEEE Std. 1003.1c-1995, and ANSI/IEEE Std. 1003.1i-1995.1

The definition of realtime is as follows:

The specific mandatory functional areas covered by this Product Standard are:

One optional area is defined:

Threads includes functionality to support multiple flows of control within a process. The specific functional areas covered by threads and their scope include:

The Threads interfaces are fully aligned with ANSI/IEEE Std. 1003.1c-1995. Within the Threads option is a single sub-option:

CONFORMANCE REQUIREMENTS
Human-Computer Interface

System Interface Definitions, Issue 5,3 Section 4.1, Portable Character Set, Table 4-1, glyphs.

Portability Interface

The following system interfaces and headers listed in System Interfaces and Headers, Issue 5 (excluding any EX extensions marked) are mandatory:



aio_cancel()
aio_error()
aio_fsync()
aio_read()
aio_return()
aio_suspend()
aio_write()
clock_getres()
clock_gettime()
clock_settime()
fchmod()
fdatasync()
fsync()
ftruncate()
lio_listio()
mlockall()
mmap()
mprotect()
mq_close()
 

mq_getattr()
mq_notify()
mq_open()
mq_receive()
mq_send()
mq_setattr()
mq_unlink()
msync()
munlockall()
munmap()
nanosleep()
sched_get_priority_max()
sched_get_priority_min()
sched_getparam()
sched_getscheduler()
sched_rr_get_interval()
sched_setparam()
sched_setscheduler()
sched_yield()
 

sem_close()
sem_destroy()
sem_getvalue()
sem_init()
sem_open()
sem_post()
sem_trywait()
sem_unlink()
sem_wait()
shm_open()
shm_unlink()
sigqueue()
sigtimedwait()
sigwaitinfo()
timer_create()
timer_delete()
timer_getoverrun()
timer_gettime()
timer_settime()
 

<aio.h>
<mqueue.h>
 

<sched.h>
<semaphore.h>
 

<sys/mman.h>
 


In addition, semantics of the following system interfaces and headers marked by the RT extension are mandatory:



close()
exec()
exit()
fchmod()
fcntl()
 

fdopen()
fork()
fstat()
lseek()
open()
 

read()
sigaction()
sigwait()
sysconf()
write()
 

<errno.h>
<fcntl.h>
<limits.h>
 

<signal.h>
<sys/mman.h>
<sys/types.h>
 

<time.h>
<unistd.h>
 


If the Threads option within this Product Standard is supported, then the following symbols are always defined:

_POSIX_THREADS
_POSIX_THREAD_ATTR_STACKADDR
_POSIX_THREAD_ATTR_STACKSIZE
_POSIX_THREAD_PROCESS_SHARED

and the following system interfaces listed in System Interfaces and Headers, Issue 5, Section 2.8, Threads shall all be supported:


pthread_atfork()
pthread_attr_destroy()
pthread_attr_getdetachstate()
pthread_attr_getschedparam()
pthread_attr_getstackaddr()
pthread_attr_getstacksize()
pthread_attr_init()
pthread_attr_setdetachstate()
pthread_attr_setschedparam()
pthread_attr_setstackaddr()
pthread_attr_setstacksize()
pthread_cancel()
pthread_cleanup_pop()
pthread_cleanup_push()
pthread_cond_broadcast()
pthread_cond_destroy()
pthread_cond_init()
pthread_cond_signal()
pthread_cond_timedwait()
pthread_cond_wait()
pthread_condattr_destroy()
pthread_condattr_getpshared()
pthread_condattr_init()
pthread_condattr_setpshared()
pthread_create()
 

pthread_detach()
pthread_equal()
pthread_exit()
pthread_getspecific()
pthread_join()
pthread_key_create()
pthread_key_delete()
pthread_kill()
pthread_mutex_destroy()
pthread_mutex_init()
pthread_mutex_lock()
pthread_mutex_trylock()
pthread_mutex_unlock()
pthread_mutexattr_destroy()
pthread_mutexattr_getpshared()
pthread_mutexattr_init()
pthread_mutexattr_setpshared()
pthread_once()
pthread_self()
pthread_setcancelstate()
pthread_setcanceltype()
pthread_setspecific()
pthread_sigmask()
pthread_testcancel()
sigwait()
 

In addition, if the Threads option within this Product Standard is supported, the following symbol is always defined:

_POSIX_THREAD_SAFE_FUNCTIONS

and the following system interfaces listed in System Interfaces and Headers, Issue 5, Section 2.8, Threads shall all be supported:


asctime_r()
ctime_r()
flockfile()
ftrylockfile()
funlockfile()
getc_unlocked()
getchar_unlocked()
getgrgid_r()
getgrnam_r()
 

getpwnam_r()
getpwuid_r()
gmtime_r()
localtime_r()
putc_unlocked()
putchar_unlocked()
rand_r()
readdir_r()
strtok_r()
 

If the Threads option within this Product Standard is supported, the following system interfaces listed in System Interfaces and Headers, Issue 5, Section 2.8, Threads, as marked by the RTT shaded extension, are optional and may be supported if the Realtime Threads Feature Group is supported:


pthread_attr_getinheritsched()
pthread_attr_getschedpolicy()
pthread_attr_getscope()
pthread_attr_setinheritsched()
pthread_attr_setschedpolicy()
pthread_attr_setscope()
pthread_getschedparam()
 

pthread_mutex_getprioceiling()
pthread_mutex_setprioceiling()
pthread_mutexattr_getprioceiling()
pthread_mutexattr_getprotocol()
pthread_mutexattr_setprioceiling()
pthread_mutexattr_setprotocol()
pthread_setschedparam()
 

Programming Language Environment

C Language. Dialect ISO C. ISO C source programs invoking the services of this Product Standard must be supported by the registered product.

Interoperability
OPERATIONAL ENVIRONMENT

ISO/IEC 9945-1:1996 (POSIX-1).

PORTABILITY ENVIRONMENT

ISO/IEC 9945-1:1996 (POSIX-1).

OVERRIDING STANDARDS

ANSI/IEEE Std. 1003.1b-1993, ANSI/IEEE Std. 1003.1c-1995, ANSI/IEEE Std. 1003.1i-1995, incorporated in ISO/IEC 9945-1:1996 (POSIX-1).

ISO/IEC 9899:1990 (C Language).4

INDICATORS OF COMPLIANCE

A Test Report from the currently authorized release of the VSRT Test Suite.

A Test Report from the currently authorized release of the VSX4 Test Suite run in POSIX.1-1996 mode.

If the Threads option within this Product Standard is supported, a Test Report from the currently authorized release of the VSTH Test Suite.

For ISO C, any of the following:

MIGRATION

This Product Standard is primarily a subset of the Internationalized System Calls and Libraries Extended V2 Product Standard. As such it is new functionality, and there are very few incompatibility issues in migrating existing applications.

Detailed migration information can be found in Go Solo 2.5


Footnotes

1.
These are incorporated in ISO/IEC 9945-1:1996 (POSIX-1): ISO/IEC 9945-1:1996, Information Technology - Portable Operating System Interface (POSIX) - Part 1: System Application Program Interface (API) [C Language] (identical to ANSI/IEEE Std. 1003.1-1996). Incorporating ANSI/IEEE Std. 1003.1-1990, 1003.1b-1993 (Realtime), 1003.1c-1995 (Threads), and 1003.1i-1995 (also Realtime).

2.
CAE Specification, January 1997, System Interfaces and Headers, Issue 5 (ISBN: 1-85912-181-0, C606), published by The Open Group.

3.
CAE Specification, January 1997, System Interface Definitions, Issue 5 (ISBN: 1-85912-186-1, C605), published by The Open Group.

4.
ISO/IEC 9899:1990, Programming Languages - C (technically identical to ANSI standard X3.159-1989).

5.
Go Solo 2, May 1997 (ISBN: 0-13-575689-8, X909P).