What is UNIX

The Realtime Extension

A White Paper from the X/Open Base Working Group.

Version 1 Last update March 12 1997.


This white paper gives a brief outline of the Realtime Extension included in the Single UNIX Specification, Version 2.

This paper is part of a series of brief papers describing new and changed features in the Single UNIX Specification, Version 2.

1.1 What is the Realtime Extension

The Realtime extension incorporates the ANSI/IEEE standards POSIX 1003.1b-1993 and POSIX 1003.1i-1995.

The Realtime extension is organized as a Feature Group within the UNIX specification, denoted by the symbol _XOPEN_REALTIME.

1.2 Why the need for Realtime Processing?

Historically the UNIX operating system has been characterised as a general-purpose timesharing system. Today new demands are being placed on the operating system for support of applications with stringent performance and robustness requirements. These applications require predictable execution characteristics, and precise timing. Typical example applications are data aquisition and network controllers.

1.3 The Benefits of the Realtime Extension

The Realtime extension groups the majority of the POSIX 1003.1b feature groups into a single feature group, allowing X/Open realtime systems to reliably contain a cohesive set of features for realtime applications.

1.4 Functional Overview

Mandatory POSIX Realtime functionality in the Single UNIX Specification

Some parts of the POSIX realtime extension are mandatory in the Base, since they were previously in the Single UNIX Specification. These are:

Mandatory POSIX Realtime functions:

mmap() munmap() mprotect() msync() fsync() fchmod() ftruncate()

Mandatory POSIX Realtime Headers:


Optional POSIX Realtime functionality in the Single UNIX Specification

All the optional parts of the POSIX Realtime option are mandatory when _XOPEN_REALTIME is set to a value other than -1, apart from _POSIX_PRIORITIZED_IO which is optional.

The optional functions in the X/Open REALTIME extension are:

aio_cancel() aio_error() aio_fsync() aio_read()
aio_return() aio_suspend() aio_write()

clock_getres() clock_gettime() clock_settime()



mlock() mlockall()
mq_close() mq_getattr() mq_notify() mq_open()
mq_receive() mq_send() mq_setattr() mq_unlink()
munlock() munlockall()


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()

The headers are

<aio.h> <mqueue.h> <sched.h>

Read other technical papers.

Read or download the complete Single UNIX Specification from http://www.UNIX-systems.org/go/unix.

Copyright © 1997-1998 The Open Group

UNIX is a registered trademark of The Open Group.