[RTEMS Project] #2966: POSIX Compliance

RTEMS trac trac at rtems.org
Mon Apr 3 23:54:36 UTC 2017


#2966: POSIX Compliance
---------------------+-------------------------
 Reporter:  aditya   |       Owner:  joel
     Type:  project  |      Status:  assigned
 Priority:  normal   |   Milestone:  Indefinite
Component:  General  |     Version:  4.12
 Severity:  normal   |  Resolution:
 Keywords:  SoC,API  |
---------------------+-------------------------
Description changed by Joel Sherrill:

Old description:

> = POSIX Compliance =
>
> [[PageOutline(1-5, Contents, inline)]]
>
> == Mentors ==
>
> Joel Sherrill
>
> == Students ==
>
> Past, Present, and Potential Students
>
> == Status ==
>
> See Project Tasks.
>
> == Introduction ==
>
> Increase the POSIX functions supported by RTEMS and Newlib.
>
> == Goal ==
>
> Improve POSIX compliance of RTEMS and Newlib.
>
> == Project Tasks ==
>
> === Pending Tasks ===
>
>  * See [#TasksWithoutTickets Tasks Without Tickets].
>
> === Active Tasks ===
>
> The following are the open tickets that are sub-tasks of this project. If
> you work on a part of this project please make a ticket and add the tag
> `POSIX-Compliance`.
>
> [[TicketQuery(status=accepted&status=assigned&status=new&status=reopened&keywords
> =~POSIX-Compliance)]]
>
> === Closed Tasks ===
>
> [[TicketQuery(status=closed&keywords=~POSIX-Compliance)]]
>
> == Requirements ==
>
> RTEMS POSIX Compliance is achieved via a combination of methods and .h
> files in RTEMS and the newlib C Library. Newlib also provides the math
> library.
>
> Disclaimer: The order in which methods/issues are presented here should
> not be taken as the priority with which they should be addressed. It is
> also quite likely this list is incomplete. A more complete view of the
> situation is in the following spreadsheet:
>
> * https://goo.gl/AXrnxO
>
> which was created against Issue 3 of the Single Unix Specification and an
> old version of RTEMS. It needs to be updated to Issue 4/POSIX 2013 and a
> new version of RTEMS.
>
> Before planning to implement anything on this list, please review rtems,
> newlib, rtems-libbsd, and the .h files newlib installs. These four are
> the sources for RTEMS POSIX support. Each is a moving target. Request
> updates to the spreadsheet when you find places that need updating.
>
> == Tasks Without Tickets ==
>
> RTEMS itself is missing a few methods and may have issues with others.
> These methods may have outstanding POSIX compliance issues:
>
> * Improved support at the API level for `CLOCK_MONOTONIC` (may have
> ticket)
>   * This `impacts timer_create()` and at least
> `pthread_condvar_timedwait`
> * List IO
>
> RTEMS is missing a few POSIX methods which could be supported:
>
> * `pthread_getcpuclockid()`
> * Are all methods in 1signal.h1 possible provided?
> * `mmap()` - Chris Johns has identified a subset of this family of
> methods which can work without an MMU. (ticket?)
>
> Newlib also has some known issues:
>
> * `fenv.h` is not present
>   * http://pubs.opengroup.org/onlinepubs/9699919799/
>   * `feclearexcept`, `fegetenv`, `fegetexceptflag`, `fegetround`,
> `feholdexcept`, `feraiseexcept`, `fesetenv`, `fesetexceptflag`,
> `fesetround`, `fetestexcept`, `feupdateenv`
>   * Cygwin has x86 implementation. FreeBSD should be source for ARM and
> some other architectures
> * `math.h` missing some methods
>   * long double complex methods
> * `search.h` is missing some methods
>   * Double check newlib. It has search source directory. May now be OK.
> * `sys/statvfs.h` is missing
>   * Implementation would likely be in RTEMS
>
> * some random number calls are missing
>
> * `fstatvfs` is missing at least a prototype in the right place
> * `getdate()`
> (http://pubs.opengroup.org/onlinepubs/009695399/functions/getdate.html)
> needs to be turned on in newlib
> * `dbm.h` is missing. May be an addon library via RSB
>
> The missing `inttypes.h` methods and a number of others could be simple
> cases of getting code from
> [http://fxr.watson.org/fxr/source/stdlib/l64a.c?v=FREEBSD-LIBC FreeBSD].
> complex.h could come from FreeBSD: https://wiki.freebsd.org/Numerics
>
> Others will be impossible to implement without multiple processes, and so
> we'll have to determine which methods make sense to support and in what
> manner.
>
> == Testing ==
>
> * Functional unit testing as needed
> * Additions to psxhdrs test to ensure methods can be invoked per Open
> Group specification
> * FACE Consortium Conformance Test Suite. The
> [http://www.opengroup.org/face FACE Consortium] has defined four POSIX
> profiles. RTEMS can support most of the methods in the largest profile
> (General Purpose).
>
> == References ==
>  * [http://pubs.opengroup.org/onlinepubs/9699919799/ Single UNIX
> Specification]
>  * http://www.opengroup.org/testing/downloads.html
>  * [http://www.opengroup.org/face FACE Consortium]

New description:

 = POSIX Compliance =

 [[PageOutline(1-5, Contents, inline)]]

 == Mentors ==

 Joel Sherrill

 == Students ==

 Past, Present, and Potential Students

 == Status ==

 See Project Tasks.

 == Introduction ==

 Increase the POSIX functions supported by RTEMS and Newlib.

 == Goal ==

 Improve POSIX compliance of RTEMS and Newlib.

 == Project Tasks ==

 === Pending Tasks ===

  * See [#TasksWithoutTickets Tasks Without Tickets].

 === Active Tasks ===

 The following are the open tickets that are sub-tasks of this project. If
 you work on a part of this project please make a ticket and add the tag
 `POSIX-Compliance`.

 [[TicketQuery(status=accepted&status=assigned&status=new&status=reopened&keywords
 =~POSIX-Compliance)]]

 === Closed Tasks ===

 [[TicketQuery(status=closed&keywords=~POSIX-Compliance)]]

 == Requirements ==

 RTEMS POSIX Compliance is achieved via a combination of methods and .h
 files in RTEMS and the newlib C Library. Newlib also provides the math
 library.

 Disclaimer: The order in which methods/issues are presented here should
 not be taken as the priority with which they should be addressed. It is
 also quite likely this list is incomplete. A more complete view of the
 situation is in the following spreadsheet:

 * https://goo.gl/AXrnxO

 which was created against Issue 3 of the Single Unix Specification and an
 old version of RTEMS. It needs to be updated to Issue 4/POSIX 2013 and a
 new version of RTEMS.

 Before planning to implement anything on this list, please review rtems,
 newlib, rtems-libbsd, and the .h files newlib installs. These four are the
 sources for RTEMS POSIX support. Each is a moving target. Request updates
 to the spreadsheet when you find places that need updating.

 == Tasks Without Tickets ==

 RTEMS itself is missing a few methods and may have issues with others.
 These methods may have outstanding POSIX compliance issues:

 * Improved support at the API level for `CLOCK_MONOTONIC` (may have
 ticket)
   * This `impacts timer_create()` and at least `pthread_condvar_timedwait`
 * List IO

 RTEMS is missing a few POSIX methods which could be supported:

 * `pthread_getcpuclockid()`
 * Are all methods in 1signal.h1 possible provided?
 * `mmap()` - Chris Johns has identified a subset of this family of methods
 which can work without an MMU. (ticket?)

 Newlib also has some known issues:

 * `math.h` missing some methods
   * long double complex methods
 * `search.h` is missing some methods
   * Double check newlib. It has search source directory. May now be OK.
 * `sys/statvfs.h` is missing
   * Implementation would likely be in RTEMS

 * some random number calls are missing

 * `fstatvfs` is missing at least a prototype in the right place
 * `getdate()`
 (http://pubs.opengroup.org/onlinepubs/009695399/functions/getdate.html)
 needs to be turned on in newlib
 * `dbm.h` is missing. May be an addon library via RSB

 The missing `inttypes.h` methods and a number of others could be simple
 cases of getting code from
 [http://fxr.watson.org/fxr/source/stdlib/l64a.c?v=FREEBSD-LIBC FreeBSD].
 complex.h could come from FreeBSD: https://wiki.freebsd.org/Numerics

 Others will be impossible to implement without multiple processes, and so
 we'll have to determine which methods make sense to support and in what
 manner.

 == Testing ==

 * Functional unit testing as needed
 * Additions to psxhdrs test to ensure methods can be invoked per Open
 Group specification
 * FACE Consortium Conformance Test Suite. The
 [http://www.opengroup.org/face FACE Consortium] has defined four POSIX
 profiles. RTEMS can support most of the methods in the largest profile
 (General Purpose).

 == References ==
  * [http://pubs.opengroup.org/onlinepubs/9699919799/ Single UNIX
 Specification]
  * http://www.opengroup.org/testing/downloads.html
  * [http://www.opengroup.org/face FACE Consortium]

--

--
Ticket URL: <http://devel.rtems.org/ticket/2966#comment:17>
RTEMS Project <http://www.rtems.org/>
RTEMS Project


More information about the bugs mailing list