| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
* include/rtems/score/object.h, include/rtems/score/tod.h:
Added casts to eliminate warnings on 16 bit targets like the h8300.
|
|
|
|
|
|
|
| |
* score/include/Makefile.am: Remove cpuopt.h generation.
* configure.ac: Correct package name.
Don't build ada if POSIX is disabled.
Generate cpuopt.h on the fly, filter out autoconf-2.53 PACKAGE crap.
|
|
|
|
|
|
| |
* include/rtems/score/apimutex.h (_API_Mutex_Lock): Per PR253
add the missing _ISR_Disable. This fix was already applied to
the old location (c/src/exec/score/...).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Mega patch merge to change the format of the object IDs to
loosen the dependency between the SCORE and the various APIs.
There was considerable work to simplify the object name management
and it appears that the name_table field is no longer needed.
This patch also includes the addition of the internal mutex
which is currently only used to protect some types of allocation
and deallocation. This significantly can reduce context
switch latency under certain circumstances. In particular,
some heap/region operations were O(n) and had dispatching
disabled. This should help enormously. With this merge,
the patch is not as clean as it should be. In particular,
the documentation has not been modified to reflect the new object
ID layout, the IDs in the test screens are not updated, and
_Objects_Get_information needs to be a real routine not inlined.
As part of this patch a lot of MP code for thread/proxy blocking
was made conditional and cleaned up.
* include/Makefile.am, include/rtems/score/coremsg.h,
include/rtems/score/coremutex.h, include/rtems/score/coresem.h,
include/rtems/score/object.h, include/rtems/score/threadq.h,
inline/rtems/score/object.inl, inline/rtems/score/thread.inl,
macros/rtems/score/object.inl, src/Makefile.am, src/coremsg.c,
src/coremutex.c, src/coresem.c, src/mpci.c,
src/objectcomparenameraw.c, src/objectextendinformation.c,
src/objectinitializeinformation.c, src/objectnametoid.c,
src/thread.c, src/threadclose.c, src/threadget.c, src/threadq.c,
src/threadqextractwithproxy.c: Modified as part of above.
* include/rtems/score/apimutex.h, src/objectgetnoprotection.c: New
files.
|
|
|
|
| |
* Include $(top_srcdir)/automake/*.am.
|
|
|
|
|
|
|
|
|
| |
* include/rtems/score/thread.h, inline/rtems/score/thread.inl,
src/threaddispatch.c, src/threadinitialize.c:
Move the C library re-enterrant support directly into
the thread dispatch code. RTEMS needs libc and so requiring
libc to use a user extension with its overhead is not the best
solution. This patch lowers the overhead to 2 pointer moves.
|
|
|
|
|
| |
* include/Makefile.am: Work-around to autoconf-2.53 adding PACKAGE_*
to autoheaders - sed out *PACKAGE* from cpuopts-tmp.h.
|
|
|
|
|
|
|
|
|
|
| |
* include/rtems/score/object.h, inline/rtems/score/object.inl,
src/objectcomparenamestring.c: Address PR81 that
reworked POSIX message queues to add a descriptor separate from
the underlying message queue. This allows non-blocking to follow
the "open" not the underlying queue. As part of debugging this
it became clear that _Objects_Compare_name_string was broken
and a simple version using strncmp() was substituted.
|
|
|
|
| |
* include/rtems/system.h: Remove targopts.h.
|
|
|
|
|
| |
* include/rtems/system.h: Add the sparc to the target supporting
multlibs.
|
|
|
|
| |
* include/rtems/system.h: Add i386 to multilib-able targets.
|
|
|
|
|
|
|
|
| |
* Per PR142, make task switch extension its own list.
* include/rtems/score/userext.h: Reflect above by adding
User_extensions_Switch_control and adding it to User_extenions_Control.
* inline/rtems/score/userext.inl: Allocate all memory in one chunk
to minimize overhead. Address processing dedicated switch chain.
|
|
|
|
|
|
|
|
|
| |
* cpu/Makefile.am: Remove AUTOMAKE_OPTIONS.
* src/Makefile.am: Remove AUTOMAKE_OPTIONS.
* Makefile.am: Remove AUTOMAKE_OPTIONS.
* include/Makefile.am: Remove AUTOMAKE_OPTIONS.
* inline/Makefile.am: Remove AUTOMAKE_OPTIONS.
* macros/Makefile.am: Remove AUTOMAKE_OPTIONS.
|
|
|
|
| |
* include/rtems/score/watchdog.h: Added WATCHDOG_MAXIMUM_INTERVAL.
|
|
|
|
|
| |
* include/rtems/system.h: Fix typo in yesterday's change:
RTEMS_MULTILIBS.
|
|
|
|
|
|
|
| |
* include/rtems/system.h: Only include cpuopts.h when building a
multilib configuration. Some ports still need targopts.h but this
small modification lets those ports work non-multilib while
fixing being fixed for multilib.
|
|
|
|
|
|
| |
* include/rtems/seterr.h: Add do {..} while (0) in defines.
Rename set_errno_and_return_minus_one into
rtems_set_errno_and_return_minus_one.
|
|
|
|
|
|
|
|
|
| |
This was tracked as PR91.
* include/rtems/score/isr.h, inline/rtems/score/isr.inl,
macros/rtems/score/isr.inl: Modified to allow any port to provide
its own implementation of the macro _ISR_Is_in_progress. If the
port overrides this macro, it must provide a non-inlined function
implementation.
|
|
|
|
|
|
|
|
|
| |
Reported by Todor.Todorov@barco.com and tracked as PR36.
* include/rtems/score/object.h: Added prototype for
_Objects_Get_by_index().
* src/objectget.c, src/objectgetisr.c: Corrected procedure for
getting index from Id so it is correct and optimal for both single
and multiprocessor configurations.
|
|
|
|
| |
* include/Makefile.am: Fixed path to cpuopts-tmp.h.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* include/rtems/Makefile.am: Remove.
* include/rtems/Makefile.am: Remove.
* include/Makefile.am: Handle subdirs, require automake-1.5.
* macros/rtems/Makefile.am: Remove.
* macros/rtems/score/Makefile.am: Remove.
* macros/Makefile.am: Handle subdirs, require automake-1.5.
* inline/rtems/Makefile.am: Remove.
* inline/rtems/score/Makefile.am: Remove.
* inline/Makefile.am: Handle subdirs, require automake-1.5.
* Makefile.am: require automake-1.5
|
|
|
|
|
|
|
|
| |
* include/rtems/score/coremsg.h, src/coremsgsubmit.c: Add a new
return status to account for blocking sends. Otherwise, the
caller will think that the returned message status will have
the ultimate results of the operation. If the send times out,
the final status will be in the return_code of the thread.
|
|
|
|
|
|
|
|
| |
* include/rtems/score/coremsg.h, inline/rtems/score/coremsg.inl,
src/coremsgsubmit.c: Unblocking message queue operations should
NOT use _Thread_Executing for return status since it is permissible
to invoke message send operations from an ISR. This was reported
by Suvrat Gupta <suvrat@utstar.com>.
|
|
|
|
|
| |
* include/rtems/score/.cvsignore: Add stamp-h, cpuopts.h,
cpuopts.h.in, cpuopts-tmp.h.
|
|
|
|
|
|
| |
* include/rtems/score/isr.h, src/isr.c: Allocate it from the
workspace rather than explicitly declaring it. This allows
the size to be a non-constant from the perspective of score/cpu.
|
|
|
|
|
|
| |
* include/rtems/system.h: Use proper conditional (RTEMS_POSIX_API)
so prototypes for POSIX_MP_NOT_IMPLEMENTED(), POSIX_NOT_IMPLEMENTED(),
POSIX_BOTTOM_REACHED() are actually included.
|
|
|
|
|
|
| |
* aclocal/canonicalize-tools.m4, aclocal/check-tool.m4,
aclocal/prog-cc.m4, aclocal/prog-cxx.m4: Replace AC_CHECK_TOOL
with an RTEMS specific but more restrictive autoconf macro.
|
|
|
|
|
|
| |
* src/heapgetinfo.c, include/rtems/score/heap.h, src/Makefile.am:
Added _Heap_Get_information() and information control block.
* src/heapgetinfo.c: New file.
|
|
|
|
|
| |
* rtems/system.h: Switched a29k and hppa1.1 to using cpuopts.h not
targopts.h to reduce dependency on BSP.
|
|
|
|
|
|
| |
* Many files: Moved posix/include/rtems/posix/seterr.h to
score/include/rtems/seterr.h so it would be available within
all APIs.
|
|
|
|
| |
* include/rtems/system.h: Include cpuopts.h for __i386__.
|
| |
|
|
|
|
| |
is available.
|
|
|
|
|
|
|
|
|
|
|
| |
a BSP (c4xsim) supporting the simulator included with gdb. This port
was done by Joel Sherrill and Jennifer Averett of OAR Corporation.
Also included with this port is a space/time optimization to eliminate
FP context switch management on CPUs without hardware or software FP.
An issue with this port was that sizeof(unsigned32) = sizeof(unsigned8)
on this CPU. This required addressing alignment checks and assumptions
as well as fixing code that assumed sizeof(unsigned32) == 4.
|
|
|
|
|
|
| |
routines and structures that require CPU model specific information
are now in libcpu. This primarily required moving erc32 specific
information from score/cpu files to libcpu/sparc and the erc32 BSP.
|
|
|
|
| |
using cpuopts.h and not targopts.h.
|
|
|
|
|
|
|
|
|
| |
that decouples exec/ for the sh, m68k and i960 from targopts.h.
NOTE: The change to system.h is a hack to enable cpuopts.h
for some targets, but keep using targopts.h for others - I know it
does *not* work for sparc, mips, i386 and ppc. This will have
to be addressed as work continues on multilibing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
that addresses aspects of the targopts.h multilib related
issues.
Changes:
* Move targopts.h to libbsp/include, because the current targopts.h
actually is a per-BSP-header and therefore can not stay below exec/.
* Introduce an autoheader generated header file
(exec/score/include/rtems/score/cpuopts.h), which shall take per-cpu
configuration options only.
* Move all autoconf-detectable/configure specified per-cpu
option-defines from targopts.h to cpuopts.h.
* Add Makefiles to the libbsp/shared directory hierarchy.
Notes:
* The new per-bsp targopts.h in libbsp includes the per-cpu
cpuopts.h. This way, the new targopts.h is kept backward compatible
to the old targopts.h and existing BSPs which (carelessly) include
targopts.h (i386, ppc) should be kept working when using the
multilib-disabled configuration scheme.
* cpuopts.h is not yet complete, because the per-BSP make-targopts
rules from custom/<BSP>.cfg files can not be applied to files below
exec/ when building multilibs.
* All files below exec/ should not include targopts.h anymore, but
should include cpuopts.h instead. However, eliminating inclusion of
targopts.h currently triggers further structural / header file inclusion
related issues, because several ports apply BSP or CPU_MODEL specific
defines from targopts.h below exec/
|
|
|
|
|
| |
static inline routine _CORE_mutex_Seize_interrupt_trylock since
static routines are not included when in an application.
|
| |
|
|
|
|
| |
if the mutex is successfully obtained.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
<charles.gauthier@iit.nrc.ca>, and Darlene A. Stewart
<Darlene.Stewart@nrc.ca> to add support for a number of very
significant things:
+ BSPs for many variations on the Motorola MBX8xx board series
+ Cache Manager including initial support for m68040
and PowerPC
+ Rework of mpc8xx libcpu code so all mpc8xx CPUs now use
same code base.
+ Rework of eth_comm BSP to utiltize above.
John reports this works on the 821 and 860
|
| |
|
|
|
|
| |
adds .cvsignore.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
I'd like to propose a change to RTEMS task variables that I think would
make them more useful. I think that it is early enough in their
existence to still make changes to their API.
1) Change type from `int' to `void *'.
2) Add extra argument to task_variable_add -- if non-NULL, a pointer to
a `destructor' function to be called when the task exits. This function
would be called with that task's value of the task variable as its
argument. In many cases, the `dtor' function could be `free'.
rtems_status_code rtems_task_variable_add (
rtems_id tid, void **ptr, void (*dtor)(void *));
rtems_status_code rtems_task_variable_delete (rtems_id tid, void **ptr);
This would be all we'd need to cleanly and efficiently support C++
per-thread exception information without dragging in all that POSIX API
stuff.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
blocking sends when the queue is full. The SuperCore was enhanced
to support blocking on send. The existing POSIX API was debugged
and numerous test cases were added to psxmsgq01 by Jennifer Averett.
SuperCore enhancements and resulting modifications to other APIs
were done by Joel.
There is one significant point of interpretation for the POSIX API.
What happens to threads already blocked on a message queue when the
mode of that same message queue is changed from blocking to non-blocking?
We decided to unblock all waiting tasks with an EAGAIN error just
as if a non-blocking version of the same operation had returned
unsatisfied. This case is not discussed in the POSIX standard and
other implementations may have chosen differently.
|
|
|
|
|
|
|
|
|
|
|
|
| |
power binary/mutex style semaphores already supported by RTEMS. This
was done at the request of Eric Norum <eric@cls.usask.ca> in support
of his effort to port EPICS to RTEMS. This change consisted of
changing the nesting_allowed boolean into a lock_nesting_behavior
enumerated value as well as allowing the core mutex object to optionally
support ensuring that the holder of a binary semaphore released it.
Finally, a more subtle enhancement was to allow the non-holder to release
a priority inheritance/ceiling mutex and still allow the holding task
to return to its original priority.
|