+++ /dev/null
-<!-- Copyright (C) 2003 Red Hat, Inc. -->
-<!-- This material may be distributed only subject to the terms -->
-<!-- and conditions set forth in the Open Publication License, v1.0 -->
-<!-- or later (the latest version is presently available at -->
-<!-- http://www.opencontent.org/openpub/). -->
-<!-- Distribution of the work or derivative of the work in any -->
-<!-- standard (paper) book form is prohibited unless prior -->
-<!-- permission is obtained from the copyright holder. -->
-<HTML
-><HEAD
-><TITLE
->POSIX Standard Support</TITLE
-><meta name="MSSmartTagsPreventParsing" content="TRUE">
-<META
-NAME="GENERATOR"
-CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
-"><LINK
-REL="HOME"
-TITLE="eCos Reference Manual"
-HREF="ecos-ref.html"><LINK
-REL="UP"
-TITLE="eCos POSIX compatibility layer"
-HREF="posix-compatibility.html"><LINK
-REL="PREVIOUS"
-TITLE="eCos POSIX compatibility layer"
-HREF="posix-compatibility.html"><LINK
-REL="NEXT"
-TITLE="Process Environment [POSIX Section 4]"
-HREF="posix-process-environment.html"></HEAD
-><BODY
-CLASS="CHAPTER"
-BGCOLOR="#FFFFFF"
-TEXT="#000000"
-LINK="#0000FF"
-VLINK="#840084"
-ALINK="#0000FF"
-><DIV
-CLASS="NAVHEADER"
-><TABLE
-SUMMARY="Header navigation table"
-WIDTH="100%"
-BORDER="0"
-CELLPADDING="0"
-CELLSPACING="0"
-><TR
-><TH
-COLSPAN="3"
-ALIGN="center"
->eCos Reference Manual</TH
-></TR
-><TR
-><TD
-WIDTH="10%"
-ALIGN="left"
-VALIGN="bottom"
-><A
-HREF="posix-compatibility.html"
-ACCESSKEY="P"
->Prev</A
-></TD
-><TD
-WIDTH="80%"
-ALIGN="center"
-VALIGN="bottom"
-></TD
-><TD
-WIDTH="10%"
-ALIGN="right"
-VALIGN="bottom"
-><A
-HREF="posix-process-environment.html"
-ACCESSKEY="N"
->Next</A
-></TD
-></TR
-></TABLE
-><HR
-ALIGN="LEFT"
-WIDTH="100%"></DIV
-><DIV
-CLASS="CHAPTER"
-><H1
-><A
-NAME="POSIX-STANDARD-SUPPORT">Chapter 31. POSIX Standard Support</H1
-><DIV
-CLASS="TOC"
-><DL
-><DT
-><B
->Table of Contents</B
-></DT
-><DT
-><A
-HREF="posix-standard-support.html#POSIX-PROCESS-PRIMITIVES"
->Process Primitives [POSIX Section 3]</A
-></DT
-><DT
-><A
-HREF="posix-process-environment.html"
->Process Environment [POSIX Section 4]</A
-></DT
-><DT
-><A
-HREF="posix-files-and-directories.html"
->Files and Directories [POSIX Section 5]</A
-></DT
-><DT
-><A
-HREF="posix-input-and-output.html"
->Input and Output [POSIX Section 6]</A
-></DT
-><DT
-><A
-HREF="posix-device-and-class-specific-functions.html"
->Device and Class Specific Functions [POSIX Section 7]</A
-></DT
-><DT
-><A
-HREF="posix-c-language-services.html"
->C Language Services [POSIX Section 8]</A
-></DT
-><DT
-><A
-HREF="posix-system-databases.html"
->System Databases [POSIX Section 9]</A
-></DT
-><DT
-><A
-HREF="posix-data-interchange-format.html"
->Data Interchange Format [POSIX Section 10]</A
-></DT
-><DT
-><A
-HREF="posix-synchronization.html"
->Synchronization [POSIX Section 11]</A
-></DT
-><DT
-><A
-HREF="posix-memory-management.html"
->Memory Management [POSIX Section 12]</A
-></DT
-><DT
-><A
-HREF="posix-execution-scheduling.html"
->Execution Scheduling [POSIX Section 13]</A
-></DT
-><DT
-><A
-HREF="posix-clocks-and-timers.html"
->Clocks and Timers [POSIX Section 14]</A
-></DT
-><DT
-><A
-HREF="posix-message-passing.html"
->Message Passing [POSIX Section 15]</A
-></DT
-><DT
-><A
-HREF="posix-thread-management.html"
->Thread Management [POSIX Section 16]</A
-></DT
-><DT
-><A
-HREF="posix-thread-specific-data.html"
->Thread-Specific Data [POSIX Section 17]</A
-></DT
-><DT
-><A
-HREF="posix-thread-cancellation.html"
->Thread Cancellation [POSIX Section 18]</A
-></DT
-><DT
-><A
-HREF="posix-non-posix-functions.html"
->Non-POSIX Functions</A
-></DT
-></DL
-></DIV
-><P
-> eCos contains support for the POSIX Specification (ISO/IEC
- 9945-1)[POSIX].
- </P
-><P
-> POSIX support is divided between the POSIX and the FILEIO
- packages. The POSIX package provides support for threads,
- signals, synchronization, timers and message queues. The FILEIO
- package provides support for file and device I/O. The two
- packages may be used together or separately, depending on
- configuration.
- </P
-><P
-> This document takes a functional approach to the POSIX
- library. Support for a function implies that the data types and
- definitions necessary to support that function, and the objects
- it manipulates, are also defined. Any exceptions to this are
- noted, and unless otherwise noted, implemented functions behave
- as specified in the POSIX standard.
- </P
-><P
-> This document only covers the differences between the eCos
- implementation and the standard; it does not provide complete
- documentation. For full information, see the POSIX standard
- [POSIX]. Online, the Open Group Single Unix
- Specification [SUS2] provides complete documentation
- of a superset of POSIX. If you have access to a Unix system with
- POSIX compatibility, then the manual pages for this will be of
- use. There are also a number of books available.
- [Lewine] covers the process, signal, file and I/O
- functions, while [Lewis1], [Lewis2],
- [Nichols] and [Norton] cover Pthreads and
- related topics (see Bibliography, xref). However, many of these
- books are oriented toward using POSIX in non-embedded systems,
- so care should be taken in applying them to programming under
- eCos.
- </P
-><P
-> The remainder of this chapter broadly follows the structure
- of the POSIX Specification. References to the appropriate
- section of the Standard are included.
- </P
-><P
-> Omitted functions marked with “// TBA”
- are potential candidates for later implementation.
- </P
-><DIV
-CLASS="SECT1"
-><H1
-CLASS="SECT1"
-><A
-NAME="POSIX-PROCESS-PRIMITIVES">Process Primitives [POSIX Section 3]</H1
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN12979">Functions Implemented</H2
-><TABLE
-BORDER="5"
-BGCOLOR="#E0E0F0"
-WIDTH="70%"
-><TR
-><TD
-><PRE
-CLASS="SCREEN"
->int kill(pid_t pid, int sig);
-int pthread_kill(pthread_t thread, int sig);
-int sigaction(int sig, const struct sigaction *act,
- struct sigaction *oact);
-int sigqueue(pid_t pid, int sig, const union sigval value);
-int sigprocmask(int how, const sigset_t *set,
- sigset_t *oset);
-int pthread_sigmask(int how, const sigset_t *set,
- sigset_t *oset);
-int sigpending(sigset_t *set);
-int sigsuspend(const sigset_t *set);
-int sigwait(const sigset_t *set, int *sig);
-int sigwaitinfo(const sigset_t *set, siginfo_t *info);
-int sigtimedwait(const sigset_t *set, siginfo_t *info,
- const struct timespec *timeout);
-int sigemptyset(sigset_t *set);
-int sigfillset(sigset_t *set);
-int sigaddset(sigset_t *set, int signo);
-int sigdelset(sigset_t *set, int signo);
-int sigismember(const sigset_t *set, int signo);
-unsigned int alarm( unsigned int seconds );
-int pause( void );
-unsigned int sleep( unsigned int seconds );</PRE
-></TD
-></TR
-></TABLE
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN12982">Functions Omitted</H2
-><TABLE
-BORDER="5"
-BGCOLOR="#E0E0F0"
-WIDTH="70%"
-><TR
-><TD
-><PRE
-CLASS="SCREEN"
->pid_t fork(void);
-int execl( const char *path, const char *arg, ... );
-int execv( const char *path, char *const argv[] );
-int execle( const char *path, const char *arg, ... );
-int execve( const char *path, char *const argv[],
- char *const envp[] );
-int execlp( const char *path, const char *arg, ... );
-int execvp( const char *path, char *const argv[] );
-int pthread_atfork( void(*prepare)(void),
- void (*parent)(void),
- void (*child)() );
-pid_t wait( int *stat_loc );
-pid_t waitpid( pid_t pid, int *stat_loc,
- int options );
-void _exit( int status );</PRE
-></TD
-></TR
-></TABLE
-></DIV
-><DIV
-CLASS="SECT2"
-><H2
-CLASS="SECT2"
-><A
-NAME="AEN12985">Notes</H2
-><P
-></P
-><UL
-><LI
-><P
-> Signal handling may be enabled or disabled with the
- CYGPKG_POSIX_SIGNALS option. Since signals are used
- by other POSIX components, such as timers, disabling signals will
- disable those components too.
- </P
-></LI
-><LI
-><P
-> <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->kill()</I
-></SPAN
-> and
- <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->sigqueue()</I
-></SPAN
-> may only take a
- <SPAN
-CLASS="strong"
-><B
-CLASS="EMPHASIS"
->pid</B
-></SPAN
-> argument of zero,
- which maps to the current process.
- </P
-></LI
-><LI
-><P
-> The <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->SIGEV_THREAD</I
-></SPAN
-> notification type is
- not currently implemented.
- </P
-></LI
-><LI
-><P
-> Job Control and Memory Protection signals are
- not supported.
- </P
-></LI
-><LI
-><P
-> An extra implementation defined
- <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->si_code</I
-></SPAN
-> value,
- <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->SI_EXCEPT</I
-></SPAN
->, is defined to
- distinguish hardware generated exceptions from
- others.
- </P
-></LI
-><LI
-><P
-> Extra signals are defined:
- _SIGTRAP_,_SIGIOT_,
- _SIGEMT_, and _SIGSYS_. These are
- largely to maintain compatibility with the signal numbers used by
- GDB.
- </P
-></LI
-><LI
-><P
-> Signal delivery may currently occur at unexpected places in some
- API functions. Using <SPAN
-CLASS="emphasis"
-><I
-CLASS="EMPHASIS"
->longjmp()</I
-></SPAN
-> to transfer
- control out of a signal handler may result in the interrupted
- function not being able to complete properly. This may result in
- later function calls failing or deadlocking.
- </P
-></LI
-></UL
-></DIV
-></DIV
-></DIV
-><DIV
-CLASS="NAVFOOTER"
-><HR
-ALIGN="LEFT"
-WIDTH="100%"><TABLE
-SUMMARY="Footer navigation table"
-WIDTH="100%"
-BORDER="0"
-CELLPADDING="0"
-CELLSPACING="0"
-><TR
-><TD
-WIDTH="33%"
-ALIGN="left"
-VALIGN="top"
-><A
-HREF="posix-compatibility.html"
-ACCESSKEY="P"
->Prev</A
-></TD
-><TD
-WIDTH="34%"
-ALIGN="center"
-VALIGN="top"
-><A
-HREF="ecos-ref.html"
-ACCESSKEY="H"
->Home</A
-></TD
-><TD
-WIDTH="33%"
-ALIGN="right"
-VALIGN="top"
-><A
-HREF="posix-process-environment.html"
-ACCESSKEY="N"
->Next</A
-></TD
-></TR
-><TR
-><TD
-WIDTH="33%"
-ALIGN="left"
-VALIGN="top"
->eCos POSIX compatibility layer</TD
-><TD
-WIDTH="34%"
-ALIGN="center"
-VALIGN="top"
-><A
-HREF="posix-compatibility.html"
-ACCESSKEY="U"
->Up</A
-></TD
-><TD
-WIDTH="33%"
-ALIGN="right"
-VALIGN="top"
->Process Environment [POSIX Section 4]</TD
-></TR
-></TABLE
-></DIV
-></BODY
-></HTML
->
\ No newline at end of file