| Commit message (Collapse) | Author | Files | Lines |
|
Directly use "static inline" which is available in C99 and later. This brings
the RTEMS implementation closer to standard C.
Close #3935.
|
|
Updates #3053.
|
|
Statically allocate the objects information together with the initial
set of objects either via <rtems/confdefs.h>. Provide default object
informations with zero objects via librtemscpu.a. This greatly
simplifies the workspace size estimate. RTEMS applications which do not
use the unlimited objects option are easier to debug since all objects
reside now in statically allocated objects of the right types.
Close #3621.
|
|
Enable support for string objects names unconditionally. Add const
qualifier throughout. Split _Objects_Namespace_remove() into
_Objects_Namespace_remove_u32() and _Objects_Namespace_remove_string()
to avoid an unnecessary dependency on _Workspace_Free().
Update #2514.
|
|
A speciality of the RTEMS build system was the make preinstall step. It
copied header files from arbitrary locations into the build tree. The
header files were included via the -Bsome/build/tree/path GCC command
line option.
This has at least seven problems:
* The make preinstall step itself needs time and disk space.
* Errors in header files show up in the build tree copy. This makes it
hard for editors to open the right file to fix the error.
* There is no clear relationship between source and build tree header
files. This makes an audit of the build process difficult.
* The visibility of all header files in the build tree makes it
difficult to enforce API barriers. For example it is discouraged to
use BSP-specifics in the cpukit.
* An introduction of a new build system is difficult.
* Include paths specified by the -B option are system headers. This
may suppress warnings.
* The parallel build had sporadic failures on some hosts.
This patch removes the make preinstall step. All installed header
files are moved to dedicated include directories in the source tree.
Let @RTEMS_CPU@ be the target architecture, e.g. arm, powerpc, sparc,
etc. Let @RTEMS_BSP_FAMILIY@ be a BSP family base directory, e.g.
erc32, imx, qoriq, etc.
The new cpukit include directories are:
* cpukit/include
* cpukit/score/cpu/@RTEMS_CPU@/include
* cpukit/libnetworking
The new BSP include directories are:
* bsps/include
* bsps/@RTEMS_CPU@/include
* bsps/@RTEMS_CPU@/@RTEMS_BSP_FAMILIY@/include
There are build tree include directories for generated files.
The include directory order favours the most general header file, e.g.
it is not possible to override general header files via the include path
order.
The "bootstrap -p" option was removed. The new "bootstrap -H" option
should be used to regenerate the "headers.am" files.
Update #3254.
|
|
For semaphore object pointer and object validation see
POSIX_SEMAPHORE_VALIDATE_OBJECT().
Destruction or close of a busy semaphore returns an error status. The
object is not flushed.
POSIX semaphores are now available in all configurations and no longer
depend on --enable-posix.
Update #2514.
Update #3116.
|
|
Since we have only one process, sharing between processes is trivial.
Close #3124.
|
|
Introduce Thread_queue_Lock_context to contain the context necessary for
thread queue lock and thread wait lock acquire/release operations to
reduce the Thread_Control size.
|
|
|
|
Add _Thread_queue_Context_set_MP_callout() to simplify
_Thread_queue_Context_initialize(). This makes it possible to more
easily add additional fields to Thread_queue_Context.
|
|
Unify the status codes of the Classic and POSIX API to use the new enum
Status_Control. This eliminates the Thread_Control::Wait::timeout_code
field and the timeout parameter of _Thread_queue_Enqueue_critical() and
_MPCI_Send_request_packet(). It gets rid of the status code translation
tables and instead uses simple bit operations to get the status for a
particular API. This enables translation of status code constants at
compile time. Add _Thread_Wait_get_status() to avoid direct access of
thread internal data structures.
|
|
Drop the multiprocessing (MP) dependent callout parameter from the
thread queue extract, dequeue, flush and unblock methods. Merge this
parameter with the lock context into new structure Thread_queue_Context.
This helps to gets rid of the conditionally compiled method call
helpers.
|
|
Rename _Objects_Get_local() into _Objects_Get(). Confusions with the
previous _Objects_Get() function are avoided since the Objects_Locations
parameter is gone.
|
|
Make the interrupt lock context the second parameter to avoid register
moves.
|
|
This simplifies the code since the object location is no longer used.
Remove superfluous header includes.
|
|
Avoid Giant lock for CORE mutex and semaphore flush and delete
operations.
Update #2555.
|
|
Use proper CORE_semaphore_Status for _CORE_semaphore_Flush() and
_CORE_semaphore_Destroy() operations.
Close #2696.
|
|
Replace _Objects_Name_to_id_string() with _Objects_Get_by_name() since
all users of this function are interested in the object itself and not
the identifier.
Use the object allocator lock to protect the search.
Update #2555.
|
|
Update #2408.
|
|
Update #2273.
|
|
Move the complete thread queue enqueue procedure into
_Thread_queue_Enqueue_critical(). It is possible to use the thread
queue lock to protect state of the object embedding the thread queue.
This enables per object fine grained locking in the future.
Delete _Thread_queue_Enter_critical_section().
Update #2273.
|
|
Use allocator mutex for objects allocate/free. This prevents that the
thread dispatch latency depends on the workspace/heap fragmentation.
|
|
|
|
|
|
Move implementation specific parts of coresem.h and coresem.inl into new
header file coresemimpl.h. The coresem.h contains now only the
application visible API.
|
|
|
|
Move implementation specific parts of semaphore.h and semaphore.inl into
new header file semaphoreimpl.h. The semaphore.h contains now only the
application visible API.
|
|
|
|
The output of the modules.html is much improved. Most
filesystem and POSIX API related groups are properly nested.
Some formatting issues were addressed as were multiple
inconsistencies.
|
|
|
|
|
|
|
|
http://www.google-melange.com/gci/task/view/google/gci2012/8003213
|
|
http://www.google-melange.com/gci/task/view/google/gci2012/7959229
|
|
Script does what is expected and tries to do it as
smartly as possible.
+ remove occurrences of two blank comment lines
next to each other after Id string line removed.
+ remove entire comment blocks which only exited to
contain CVS Ids
+ If the processing left a blank line at the top of
a file, it was removed.
|
|
* posix/src/mqueuenametoid.c,
posix/src/semaphorenametoid.c: Removed files.
* posix/src/psxnametoid.c: New file.
* posix/Makefile.am: Reflect changes above.
* posix/include/rtems/posix/config.h: Fixed integer types.
* posix/include/rtems/posix/posixapi.h: Declare _POSIX_Name_to_id().
* posix/include/rtems/posix/mqueue.h,
posix/inline/rtems/posix/mqueue.inl: Changed parameter of
_POSIX_Message_queue_Create_support().
_POSIX_Message_queue_Name_to_id() is now inline.
* posix/include/rtems/posix/semaphore.h,
posix/inline/rtems/posix/semaphore.inl: Changed parameter of
_POSIX_Semaphore_Create_support(). _POSIX_Semaphore_Name_to_id() is
now inline.
* posix/src/mqueuecreatesupp.c, posix/src/semaphorecreatesupp.c: Use
_Workspace_String_duplicate().
* posix/src/mqueuesendsupp.c, posix/src/mqueueopen.c,
posix/src/mqueueunlink.c, posix/src/seminit.c, posix/src/semopen.c,
posix/src/semunlink.c: Update due to API changes.
|
|
* include/rtems/bspIo.h, include/rtems/concat.h,
include/rtems/endian.h, include/rtems/fs.h, include/rtems/irq.h,
include/rtems/pci.h, include/rtems/userenv.h,
libblock/include/rtems/flashdisk.h,
libblock/include/rtems/nvdisk-sram.h,
libblock/include/rtems/nvdisk.h, libcsupport/include/clockdrv.h,
libcsupport/include/console.h, libcsupport/include/iosupp.h,
libcsupport/include/spurious.h,
libcsupport/include/motorola/mc68230.h,
libcsupport/include/rtems/assoc.h, libcsupport/include/rtems/error.h,
libcsupport/include/rtems/framebuffer.h,
libcsupport/include/rtems/gxx_wrappers.h,
libcsupport/include/rtems/libcsupport.h,
libcsupport/include/rtems/libio_.h,
libcsupport/include/rtems/malloc.h,
libcsupport/include/rtems/termiostypes.h,
libcsupport/include/sys/statvfs.h, libcsupport/include/sys/termios.h,
libcsupport/include/sys/utsname.h, libcsupport/include/zilog/z8036.h,
libcsupport/include/zilog/z8530.h, libcsupport/include/zilog/z8536.h,
libfs/src/imfs/imfs.h, libfs/src/pipe/pipe.h,
libmisc/capture/capture-cli.h, libmisc/capture/capture.h,
libmisc/cpuuse/cpuuse.h, libmisc/devnull/devnull.h,
libmisc/devnull/devzero.h, libmisc/dumpbuf/dumpbuf.h,
libmisc/fb/fb.h, libmisc/fb/mw_uid.h, libmisc/mouse/mouse_parser.h,
libmisc/shell/shellconfig.h, libmisc/stringto/stringto.h,
libmisc/untar/untar.h, libnetworking/memory.h, posix/include/aio.h,
posix/include/mqueue.h, posix/include/semaphore.h,
posix/include/rtems/posix/aio_misc.h,
posix/include/rtems/posix/barrier.h,
posix/include/rtems/posix/cond.h, posix/include/rtems/posix/config.h,
posix/include/rtems/posix/key.h, posix/include/rtems/posix/mqueue.h,
posix/include/rtems/posix/mutex.h,
posix/include/rtems/posix/posixapi.h,
posix/include/rtems/posix/priority.h,
posix/include/rtems/posix/psignal.h,
posix/include/rtems/posix/pthread.h,
posix/include/rtems/posix/ptimer.h,
posix/include/rtems/posix/rwlock.h,
posix/include/rtems/posix/semaphore.h,
posix/include/rtems/posix/sigset.h,
posix/include/rtems/posix/spinlock.h,
posix/include/rtems/posix/threadsup.h,
posix/include/rtems/posix/time.h, posix/include/rtems/posix/timer.h,
posix/inline/rtems/posix/barrier.inl,
posix/inline/rtems/posix/cond.inl,
posix/inline/rtems/posix/mqueue.inl,
posix/inline/rtems/posix/mutex.inl,
posix/inline/rtems/posix/priority.inl,
posix/inline/rtems/posix/pthread.inl,
posix/inline/rtems/posix/rwlock.inl,
posix/inline/rtems/posix/semaphore.inl,
posix/inline/rtems/posix/spinlock.inl,
posix/inline/rtems/posix/timer.inl, rtems/mainpage.h,
rtems/include/rtems/rtems/barrier.h,
rtems/include/rtems/rtems/object.h,
rtems/include/rtems/rtems/timer.h,
rtems/inline/rtems/rtems/barrier.inl,
rtems/inline/rtems/rtems/timer.inl,
rtems/src/semtranslatereturncode.c, sapi/include/rtems/config.h,
sapi/include/rtems/fatal.h, sapi/include/rtems/mptables.h,
score/include/rtems/score/object.h,
score/include/rtems/score/priority.h,
score/inline/rtems/score/object.inl,
score/inline/rtems/score/priority.inl: Add @file Doxygen directives
and descriptions to files which originated with RTEMS. This improves
the file list page generated by Doxygen.
|
|
* posix/include/semaphore.h, posix/include/rtems/posix/semaphore.h:
Move SEM_FAILED from private file to public file since it is defined
by POSIX.
|
|
* libcsupport/src/gxx_wrappers.c, posix/include/mqueue.h,
posix/include/rtems/posix/semaphore.h,
posix/inline/rtems/posix/barrier.inl,
posix/inline/rtems/posix/key.inl,
posix/inline/rtems/posix/mqueue.inl,
posix/inline/rtems/posix/rwlock.inl,
posix/inline/rtems/posix/semaphore.inl,
posix/inline/rtems/posix/spinlock.inl,
posix/inline/rtems/posix/timer.inl, posix/src/condget.c,
posix/src/mqueuenametoid.c, posix/src/mutexget.c,
posix/src/semaphorenametoid.c, posix/src/semopen.c,
sapi/src/itronapi.c, sapi/src/posixapi.c: Make changes necessary for
all tests to run on SPARC with 16-bit Ids. This required ensuring
that all POSIX and compilering binding code makes a distinction
between the public Id type (e.g. pthread_t, etc.) and the RTEMS
Object_Id type. All POSIX Object Get routines should not take the
POSIX Id type as the argument. Sixteen bit RTEMS Ids should be placed
into the 32-bits reserved by the POSIX API type in a uniform manner
now. This removed all assumptions that the external Id types in POSIX
and ITRON are the same as the internal Object Id type.
|
|
* posix/include/rtems/posix/barrier.h,
posix/include/rtems/posix/cond.h, posix/include/rtems/posix/key.h,
posix/include/rtems/posix/mqueue.h,
posix/include/rtems/posix/mutex.h,
posix/include/rtems/posix/psignal.h,
posix/include/rtems/posix/pthread.h,
posix/include/rtems/posix/ptimer.h,
posix/include/rtems/posix/rwlock.h,
posix/include/rtems/posix/semaphore.h,
posix/include/rtems/posix/spinlock.h,
posix/include/rtems/posix/timer.h, posix/src/cond.c, posix/src/key.c,
posix/src/mqueue.c, posix/src/mutex.c, posix/src/pbarrier.c,
posix/src/prwlock.c, posix/src/psignal.c, posix/src/pspin.c,
posix/src/pthread.c, posix/src/pthreadinitthreads.c,
posix/src/ptimer.c, posix/src/semaphore.c, sapi/src/posixapi.c:
Convert POSIX manager initialization routines to directly pull
parameters from configuration table.
|
|
|
|
PR 1291/cpukit
* itron/inline/rtems/itron/semaphore.inl, itron/src/twai_sem.c,
posix/include/mqueue.h, posix/include/rtems/posix/mqueue.h,
posix/include/rtems/posix/semaphore.h,
posix/include/rtems/posix/time.h, posix/src/condtimedwait.c,
posix/src/mqueuereceive.c, posix/src/mqueuerecvsupp.c,
posix/src/mqueuesend.c, posix/src/mqueuesendsupp.c,
posix/src/mqueuetimedreceive.c, posix/src/mqueuetimedsend.c,
posix/src/mutextimedlock.c, posix/src/mutextranslatereturncode.c,
posix/src/posixtimespecabsolutetimeout.c,
posix/src/prwlocktimedrdlock.c, posix/src/prwlocktimedwrlock.c,
posix/src/semaphoretranslatereturncode.c,
posix/src/semaphorewaitsupp.c, posix/src/semtimedwait.c,
posix/src/semtrywait.c, posix/src/semwait.c,
posix/src/sigtimedwait.c, posix/src/timersettime.c,
posix/src/ualarm.c, rtems/src/semobtain.c,
rtems/src/semtranslatereturncode.c,
score/include/rtems/score/coremutex.h,
score/include/rtems/score/coresem.h, score/src/coresemseize.c: This
patch addresses issues on implementation of the timeout on the
following POSIX services. Some of these services incorrectly took a
timeout as a relative time. Others would compute a 0 delta to timeout
if the absolute time and the current time were equal and thus
incorrectly block the caller forever. The root of the confusion is
that POSIX specifies that if the timeout is incorrect (e.g. in the
past, is now, or is numerically invalid), that it does not matter if
the call would succeed without blocking. This is in contrast to RTEMS
programming style where all errors are checked before any critical
sections are entered. This fix implemented a more uniform way of
handling POSIX absolute time timeouts.
+ pthread_cond_timedwait - could block forever
+ mq_timedreceive - used relative not absolute time
+ mq_timedsend - used relative not absolute time
+ pthread_mutex_timedlock - used relative not absolute time
+ pthread_rwlock_timedrdlock- used relative not absolute time
+ pthread_rwlock_timedwrlock- used relative not absolute time
+ sem_timedwait - could block forever
|
|
* libcsupport/src/malloc.c, libmisc/monitor/mon-command.c,
posix/preinstall.am, posix/include/rtems/posix/cond.h,
posix/include/rtems/posix/mqueue.h,
posix/include/rtems/posix/mutex.h,
posix/include/rtems/posix/pthread.h,
posix/include/rtems/posix/semaphore.h, posix/src/conddestroy.c,
posix/src/mutexdestroy.c, posix/src/mutexinit.c,
posix/src/mutexsetprioceiling.c, posix/src/mutexunlock.c,
sapi/include/confdefs.h, sapi/include/rtems/config.h,
sapi/include/rtems/init.h, sapi/include/rtems/sptables.h,
sapi/src/exinit.c, score/include/rtems/system.h,
score/include/rtems/score/mpci.h, score/src/mpci.c,
score/src/thread.c, score/src/threadcreateidle.c,
score/src/threadstackallocate.c, score/src/threadstackfree.c,
score/src/wkspace.c: Moved most of the remaining CPU Table fields to
the Configuration Table. This included pretasking_hook,
predriver_hook, postdriver_hook, idle_task, do_zero_of_workspace,
extra_mpci_receive_server_stack, stack_allocate_hook, and
stack_free_hook. As a side-effect of this effort some multiprocessing
code was made conditional and some style clean up occurred.
|
|
* posix/include/rtems/posix/mutex.h,
posix/include/rtems/posix/semaphore.h, posix/src/cancel.c,
posix/src/conddestroy.c, posix/src/condsignalsupp.c,
posix/src/condwaitsupp.c, posix/src/keydelete.c,
posix/src/keygetspecific.c, posix/src/keysetspecific.c,
posix/src/mqueueclose.c, posix/src/mqueuegetattr.c,
posix/src/mqueuenotify.c, posix/src/mqueuerecvsupp.c,
posix/src/mqueuesendsupp.c, posix/src/mqueuesetattr.c,
posix/src/mqueuetranslatereturncode.c, posix/src/mutexdestroy.c,
posix/src/mutexgetprioceiling.c, posix/src/mutexinit.c,
posix/src/mutexlocksupp.c, posix/src/mutexsetprioceiling.c,
posix/src/mutexunlock.c, posix/src/pbarrierdestroy.c,
posix/src/pbarriertranslatereturncode.c, posix/src/pbarrierwait.c,
posix/src/prwlockdestroy.c, posix/src/prwlockrdlock.c,
posix/src/prwlocktimedrdlock.c, posix/src/prwlocktimedwrlock.c,
posix/src/prwlocktranslatereturncode.c, posix/src/prwlocktryrdlock.c,
posix/src/prwlocktrywrlock.c, posix/src/prwlockunlock.c,
posix/src/prwlockwrlock.c, posix/src/pspindestroy.c,
posix/src/pspinlock.c, posix/src/pspinlocktranslatereturncode.c,
posix/src/pspintrylock.c, posix/src/pspinunlock.c,
posix/src/pthreaddetach.c, posix/src/pthreadequal.c,
posix/src/pthreadgetschedparam.c, posix/src/pthreadjoin.c,
posix/src/pthreadkill.c, posix/src/pthreadsetschedparam.c,
posix/src/ptimer1.c, posix/src/semaphorewaitsupp.c,
posix/src/semclose.c, posix/src/semdestroy.c,
posix/src/semgetvalue.c, posix/src/sempost.c, posix/src/types.c,
rtems/src/msgqtranslatereturncode.c, rtems/src/semobtain.c,
rtems/src/timerfireafter.c, score/include/rtems/system.h,
score/include/rtems/score/corebarrier.h,
score/include/rtems/score/coremsg.h,
score/include/rtems/score/coremutex.h,
score/include/rtems/score/coresem.h: Restructed to move the
OBJECTS_LOCAL case to the top of the switch statement and
eliminate the fall-through return of POSIX_BOTTOM_REACHED. These
changes produced simplier assembly code and allowed for complete
test coverage. Also applied some consistency to the functions
that translate the core status codes to POSIX status codes.
* posix/src/mutextranslatereturncode.c,
posix/src/semaphoretranslatereturncode.c: New files.
* posix/src/mutexfromcorestatus.c: Removed.
|
|
PR 841/rtems
* itron/inline/rtems/itron/semaphore.inl, itron/src/twai_sem.c,
posix/include/rtems/posix/semaphore.h,
posix/inline/rtems/posix/semaphore.inl,
posix/src/semaphorewaitsupp.c, posix/src/semtimedwait.c,
posix/src/semwait.c, rtems/src/semobtain.c,
rtems/src/semtranslatereturncode.c,
score/include/rtems/score/coresem.h, score/src/coresemseize.c: Make
sem_timedwait more conformant to Open Group specification.
|
|
|
|
|
|
|
|
|
|
* posix/include/rtems/posix/cond.h,
posix/include/rtems/posix/intr.h, posix/include/rtems/posix/key.h,
posix/include/rtems/posix/mqueue.h,
posix/include/rtems/posix/mutex.h,
posix/include/rtems/posix/pthread.h,
posix/include/rtems/posix/semaphore.h,
posix/include/rtems/posix/threadsup.h,
posix/include/rtems/posix/timer.h, posix/src/cond.c,
posix/src/intr.c, posix/src/key.c, posix/src/keycreate.c,
posix/src/keydelete.c, posix/src/keygetspecific.c,
posix/src/keyrundestructors.c, posix/src/keysetspecific.c,
posix/src/killinfo.c, posix/src/mqueue.c,
posix/src/mqueuerecvsupp.c, posix/src/mqueuesendsupp.c,
posix/src/mqueuetranslatereturncode.c, posix/src/mutex.c,
posix/src/posixintervaltotimespec.c,
posix/src/posixtimespecsubtract.c, posix/src/psignal.c,
posix/src/pthread.c, posix/src/ptimer1.c, posix/src/semaphore.c,
posix/src/sysconf.c: Convert to using c99 fixed size types.
|