Commit Graph

424 Commits

Author SHA1 Message Date
Konstantin Belousov
d310aa7c61 timecounter: Merge FreeBSD change r303382
Hide the boottime and bootimebin globals, provide the getboottime(9) and getboottimebin(9) KPI. Change consumers of boottime to use the KPI. The variables were renamed to avoid shadowing issues with local variables of the same name.

Issue is that boottime* should be adjusted from tc_windup(), which
requires them to be members of the timehands structure.  As a
preparation, this commit only introduces the interface.

Some uses of boottime were found doubtful, e.g. NLM uses boottime to
identify the system boot instance.  Arguably the identity should not
change on the leap second adjustment, but the commit is about the
timekeeping code and the consumers were kept bug-to-bug compatible.

Tested by:	pho (as part of the bigger patch)
Reviewed by:	jhb (same)
Discussed with:	bde
Sponsored by:	The FreeBSD Foundation
MFC after:	1 month
X-Differential revision:	https://reviews.freebsd.org/D7302

Update #3175.
2017-10-12 07:04:11 +02:00
Sebastian Huber
de59c065c5 posix: Implement self-contained POSIX mutex
POSIX mutexes are now available in all configurations and no longer
depend on --enable-posix.

Update #2514.
Update #3112.
2017-10-05 14:29:02 +02:00
Sebastian Huber
5222488573 posix: Implement self-contained POSIX condvar
POSIX condition variables are now available in all configurations and no
longer depend on --enable-posix.

Update #2514.
Update #3113.
2017-10-05 14:29:02 +02:00
Sebastian Huber
89fc9345de posix: Implement self-contained POSIX rwlocks
POSIX rwlocks are now available in all configurations and no longer
depend on --enable-posix.

Update #2514.
Update #3115.
2017-10-05 14:29:02 +02:00
Sebastian Huber
e67929c4c0 posix: Implement self-contained POSIX barriers
POSIX barriers are now available in all configurations and no longer
depend on --enable-posix.

Update #2514.
Update #3114.
2017-10-05 14:29:01 +02:00
Sebastian Huber
8fa75d35cb libio: Remove rtems_libio_t::driver
This member was apparently unused.

Close #3133.
2017-09-15 12:52:08 +02:00
Sebastian Huber
ac741625b0 libio: Use FIFO for iop free list
Update #3136.
2017-09-15 10:55:38 +02:00
Sebastian Huber
baef823cd5 libio: Add hold/drop iop reference
Check iop reference count in close() and return -1 with errno set to
EBUSY in case the file descriptor is still in use.

Update #3132.
2017-09-15 10:29:34 +02:00
Sebastian Huber
98041b685e libio: Unify readv() and writev()
Update #3132.
2017-09-15 10:27:13 +02:00
Sebastian Huber
9012db84f6 libio: LIBIO_GET_IOP() LIBIO_GET_IOP_WITH_ACCESS()
Replace rtems_libio_check_fd(), rtems_libio_iop(),
rtems_libio_check_open() and rtems_libio_check_permissions()
combinations with new LIBIO_GET_IOP() and LIBIO_GET_IOP_WITH_ACCESS()
macros.

Update #3132.
2017-09-15 10:27:13 +02:00
Sebastian Huber
d4c54416b7 libio: Add rtems_libio_iop_is_append()
Update #3132.
2017-09-15 10:27:12 +02:00
Sebastian Huber
3cffd66d76 libio: Add rtems_libio_iop_is_writeable()
Update #3132.
2017-09-15 10:27:12 +02:00
Sebastian Huber
a937a5a534 libio: Add rtems_libio_iop_is_readable()
Update #3132.
2017-09-15 10:27:12 +02:00
Sebastian Huber
bbcdc302cd libio: Add rtems_libio_iop_is_no_delay()
Update #3132.
2017-09-15 10:27:12 +02:00
Sebastian Huber
e2b1db2311 libio: Add rtems_libio_iop_flags()
Update #3132.
2017-09-15 10:27:12 +02:00
Sebastian Huber
ca90c6c1db libio: Add rtems_libio_iop_flags_initialize()
Update #3132.
2017-09-15 10:27:08 +02:00
Sebastian Huber
856ede4f91 libio: Add iop set/clear flags
Update #3132.
2017-09-15 07:48:03 +02:00
Sebastian Huber
ec10d266ba libio: rtems_libio_check_permissions_with_error()
Rename rtems_libio_check_permissions_with_error() in
rtems_libio_check_permissions().

Update #3132.
2017-09-15 07:47:46 +02:00
Sebastian Huber
48dbb6cf16 libio: Remove rtems_libio_check_permissions()
Remove rtems_libio_check_permissions() and convert single user to
rtems_libio_check_permissions_with_error().

Update #3132.
2017-09-15 07:34:03 +02:00
Sebastian Huber
0169e90e84 libio: Do simple parameter checks early
This simplifies error handling later.

Update #3132.
2017-09-15 07:33:43 +02:00
Sebastian Huber
7b4520258d libio: Simplify rtems_libio_iop()
Remove the file descriptor validation.  This is the job of
rtems_libio_check_fd().  Use an inline function instread of a macro.

Update #3132.
2017-09-14 07:02:29 +02:00
Sebastian Huber
5eb67f3ad0 libio: Remove LIBIO_FLAGS_CREATE
Close #3134.
2017-09-14 07:02:29 +02:00
Sebastian Huber
694e946dbd libio: Remove special-case reference count
The top-level IO library structures should contain no special-case data.

Update #2859.
2017-09-14 07:02:28 +02:00
Kevin Kirspel
c6bb1c33bc posix/mmap: Add support for file handler and MAP_ANON
Added a mmap file handler to struct _rtems_filesystem_file_handlers_r.
Updated each file handler object to support the default mmap handler.
Updated mmap() to call the mmap handler for MAP_SHARED.
Added a mmap file handler for shm

Added support for MAP_ANON in mmap().

Updates #2859
2017-07-14 16:04:05 -04:00
Joel Sherrill
d8b548160f sys/utsname.h: Increase buffer to avoid overflow 2017-06-21 12:50:31 -05:00
Sebastian Huber
d4ab0aef96 network: Move RTEMS specifics
Move RTEMS specifics to <rtems/rtems_bsdnet.h>.

Introduce rtems_tap_ifreq.  The interface tap support is RTEMS-specific
and only available in the legacy network stack.

Update #2833.
2017-06-07 13:02:20 +02:00
Sebastian Huber
787f51f5b3 Do not include <sys/ioctl.h> in kernel-space
Update #2833.
2017-06-07 13:02:08 +02:00
Sebastian Huber
93531e9b08 Move RTEMS-specific Termios API content
Remove obsolete support for OFILL, OFDEL, NLDLY, CRDLY, BSDLY, VTDLY,
and FFDLY which is not present on FreeBSD and not implemented in Linux.

Update #2833.
2017-06-07 12:57:39 +02:00
Sebastian Huber
d60bc7c889 Provide kernel space headers used by Newlib
Update #2833.
2017-06-07 12:57:27 +02:00
Gedare Bloom
87de70a298 posix/mman: add mmap support for shm objects
Update #2859.
2017-05-05 10:34:08 -04:00
Sebastian Huber
b3bfc242ed sys/event.h: Update to FreeBSD head 2017-02-13 2017-04-04 10:40:42 +02:00
Sebastian Huber
1301468b5a bsps: Fix baud settings
Update #2897.
2017-04-03 14:07:58 +02:00
Kevin Kirspel
1c6926c11f termios: Synchronize with latest FreeBSD headers
Adding modified FreeBSD headers to synchronize RTEMS termios with
FreeBSD.  Modify termios to support dedicated input and output baud for
termios structure.  Updated BSPs to use dedicated input and output baud
in termios structure.  Updated tools to use dedicated input and output
baud in termios structure.  Updated termios testsuites to use dedicated
input and output baud in termios structure.

Close #2897.
2017-03-22 11:55:04 +01:00
Sebastian Huber
66fac03fae libio: Fix deadlock in location management
Perform a context-dependent deferred location release to avoid a
deadlock on the file system instance locks, for example during a
chdir().

Update #2936.
2017-03-16 15:33:56 +01:00
Sebastian Huber
49d8f653fb termios: Change tty_rcvwakeup to bool
Optimize callout invocation check.
2017-02-28 08:51:31 +01:00
Sebastian Huber
5bfeddc0c2 termios: Add kqueue() and poll() support
Real implementation is provided by libbsd.
2017-02-23 07:27:43 +01:00
Sebastian Huber
85ed95ec48 termios: Fix static device initalization
This enables early printk() support.

Update #2838.
2017-02-03 10:49:13 +01:00
Sebastian Huber
3b784ba028 Fix documentation comment 2017-01-12 14:18:58 +01:00
Sebastian Huber
a3730b38cc Add and use rtems_assoc_thread_states_to_string() 2017-01-12 07:44:37 +01:00
Sebastian Huber
0c431303cc Add rtems_assoc_32_to_string() 2017-01-12 07:44:36 +01:00
Sebastian Huber
45ae4a89e7 sys/event.h: Update to FreeBSD head 2017-01-02 2017-01-09 14:53:26 +01:00
Alexander Krutwig
e34fe384cb termios: Add TERMIOS_IRQ_SERVER_DRIVEN
Add a new interrupt server driven Termios mode (TERMIOS_IRQ_DRIVEN).
This mode is identical to the interrupt driven mode except that a mutex
is used for device level locking. The intended use case for this mode
are device drivers that use the interrupt server, e.g. SPI or I2C
connected devices.

Update #2839.
2016-12-16 09:04:58 +01:00
Sebastian Huber
c3764ce805 termios: Use mutex for task driven mode
Termios has a task driven mode (TERMIOS_TASK_DRIVEN). This mode aims to
avoid long sections with disabled interrupts. This is only partly
implemented since the device level state is still protected by disabled
interrupts. Use a mutex to protect the device level state in task driven
mode to fix this issue.

Update #2838.
2016-12-16 09:04:58 +01:00
Sebastian Huber
c42be504c9 posix: Add self-contained pthread spinlock
Turn pthread_spinlock_t into a self-contained object.  On uni-processor
configurations, interrupts are disabled in the lock/trylock operations
and the previous interrupt status is restored in the corresponding
unlock operations.  On SMP configurations, a ticket lock is a acquired
and released in addition.

The self-contained pthread_spinlock_t object is defined by Newlib in
<sys/_pthreadtypes.h>.

typedef struct {
  struct _Ticket_lock_Control _lock;
  __uint32_t                  _interrupt_state;
} pthread_spinlock_t;

This implementation is simple and efficient.  However, this test case of
the Linux Test Project would fail due to call of printf() and sleep()
during spin lock ownership:

https://github.com/linux-test-project/ltp/blob/master/testcases/open_posix_testsuite/conformance/interfaces/pthread_spin_lock/1-2.c

There is only limited support for profiling on SMP configurations.

Delete CORE spinlock implementation.

Update #2674.
2016-11-23 12:52:06 +01:00
Sebastian Huber
6de41c5fe9 Provide kernel space header files
These kernel space header files must be provided for Newlib
172e2050d95b41861db858dd9bc43a3fb4a28987.
2016-11-08 10:15:28 +01:00
Sebastian Huber
1aae680bec sys/sockio.h: Update to FreeBSD head 2016-05-03 2016-10-26 14:05:53 +02:00
Sebastian Huber
8b8d05f4ca sys/event.h: Update to FreeBSD head 2016-06-27 2016-10-26 14:05:44 +02:00
Sebastian Huber
e814a233ed termios: Add IO control handler
Update #2785.
2016-09-19 07:52:34 +02:00
Sebastian Huber
55e0be3606 termios: Use IMFS nodes for new Termios devices
This makes the new Termios devices independent of device major/minor
numbers.  It enables BSP independent Termios device drivers which may
reside in the cpukit domain.  These drivers require an IMFS and do not
work with the device file system.  However, the device file system
should go away in the future.
2016-09-19 07:52:33 +02:00
Sebastian Huber
c8982e5f6a posix: Simplify message queues
The mq_open() function returns a descriptor to a POSIX message queue
object identified by a name.  This is similar to sem_open().  In
contrast to the POSIX semaphore the POSIX message queues use a separate
object for the descriptor.  This extra object is superfluous, since the
object identifier can be used directly for this purpose, just like for
the semaphores.

Update #2702.
Update #2555.
2016-05-02 07:46:15 +02:00