| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Clock disciplines may be WATCHDOG_RELATIVE, WATCHDOG_ABSOLUTE,
or WATCHDOG_NO_TIMEOUT. A discipline of WATCHDOG_RELATIVE with
a timeout of WATCHDOG_NO_TIMEOUT is equivalent to a discipline
of WATCHDOG_NO_TIMEOUT.
updates #2732
|
|
|
|
|
|
|
|
|
|
|
| |
Move the safety check performed by
_CORE_mutex_Check_dispatch_for_seize() out of the performance critical
path and generalize it. Blocking on a thread queue with an unexpected
thread dispatch disabled level is illegal in all system states.
Add the expected thread dispatch disable level (which may be 1 or 2
depending on the operation) to Thread_queue_Context and use it in
_Thread_queue_Enqueue_critical().
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Get rid of the mp_id parameter used for some thread queue methods. Use
THREAD_QUEUE_QUEUE_TO_OBJECT() instead.
|
|
|
|
| |
Close #2718.
|
|
|
|
|
|
|
|
| |
Move message notification to end of critical section and delegate the
message queue release to the notification handler. It may do more
complex notification actions out of the critical section.
Update #2555.
|
|
|
|
| |
Move common code into _CORE_message_queue_Insert_message().
|
|
|
|
|
| |
Remove _CORE_message_queue_Set_message_priority() and set the priority
in _CORE_message_queue_Insert_message().
|
|
|
|
|
| |
Move lock acquire to caller of _CORE_message_queue_Submit() to allow
state checks during send operations under lock protection.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The thread queue implementation was heavily reworked to support SMP.
This broke the multiprocessing support of the thread queues. This is
fixed by this patch.
A thread proxy is unblocked due to three reasons
1) timeout,
2) request satisfaction, and
3) extraction.
In case 1) no MPCI message must be sent. This is ensured via the
_Thread_queue_MP_callout_do_nothing() callout set during
_Thread_MP_Allocate_proxy().
In case 2) and 3) an MPCI message must be sent. In case we interrupt
the blocking operation during _Thread_queue_Enqueue_critical(), then
this message must be sent by the blocking thread. For this the new
fields Thread_Proxy_control::thread_queue_callout and
Thread_Proxy_control::thread_queue_id are used.
Delete the individual API MP callout types and use
Thread_queue_MP_callout throughout. This type is only defined in
multiprocessing configurations. Prefix the multiprocessing parameters
with mp_ to ease code review. Multiprocessing specific parameters are
optional due to use of a similar macro pattern. There is no overhead
for non-multiprocessing configurations.
|
|
|
|
|
|
|
|
|
|
|
| |
This field was only by the monitor in non-multiprocessing
configurations. Add new field Thread_Wait_information::remote_id in
multiprocessing configurations and use it for the remote procedure call
thread queue.
Add _Thread_Wait_get_id() to obtain the object identifier for debug and
system information tools. Ensure the object layout via static asserts.
Add test cases to sptests/spthreadq01.
|
|
|
|
|
|
|
|
|
| |
Remove the Thread_queue_Queue::operations field to reduce the size of
this structure. Add a thread queue operations parameter to the
_Thread_queue_First(), _Thread_queue_First_locked(),
_Thread_queue_Enqueue(), _Thread_queue_Dequeue() and
_Thread_queue_Flush() functions. This is a preparation patch to reduce
the size of several synchronization objects.
|
| |
|
|
|
|
|
|
| |
Separate the thread queue heads and lock from the operations. This
enables the support for light weight objects which only support one
queuing discipline.
|
|
|
|
|
|
|
|
|
|
|
| |
Aggregate several critical sections into a bigger one. Sending and
receiving messages is now protected by an ISR lock. Thread dispatching
is only disabled in case a blocking operation is necessary. The message
copy procedure is done inside the critical section (interrupts
disabled). Thus this change may have a negative impact on the interrupt
latency in case very large messages are transferred.
Update #2273.
|
|
|
|
|
| |
Use a parameter for _Thread_queue_Enqueue() instead to reduce memory
usage.
|
|
|
|
|
|
|
|
|
|
|
| |
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 a parameter for _Thread_queue_Enqueue() instead to reduce memory
usage.
|
| |
|
|
|
|
|
| |
Add thread parameter to _Thread_queue_Enqueue_with_handler() to avoid
access to global _Thread_Executing.
|
|
|
|
|
|
| |
Move implementation specific parts of object.h and object.inl into new
header file objectimpl.h. The object.h contains now only the
application visible API.
|
|
|
|
|
|
| |
Move implementation specific parts of states.h and states.inl into new
header file statesimpl.h. The states.h contains now only the
application visible API.
|
|
|
|
|
|
| |
Pass the executing thread as a function parameter. Obtain the executing
thread inside a thread dispatch critical section to avoid problems on
SMP.
|
|
|
|
|
|
| |
Move implementation specific parts of coremsg.h and coremsg.inl into new
header file coremsgimpl.h. The coremsg.h contains now only the
application visible API.
|
|
|
|
|
|
|
| |
This patch is a task from GCI 2012 which improves the Doxygen
comments in the RTEMS source.
http://www.google-melange.com/gci/task/view/google/gci2012/7976215
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
PR 1961/cpukit
* score/src/coremsgsubmit.c: Close window caused by using message
pending count rather than directly obtaining unused buffer.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* ftpd/ftpd.c, libcsupport/src/geteuid.c, libcsupport/src/getgroups.c,
libcsupport/src/getpgrp.c, libcsupport/src/getpid.c,
libcsupport/src/getppid.c, libcsupport/src/setpgid.c,
libcsupport/src/setsid.c, libcsupport/src/utsname.c,
libmisc/stackchk/check.c, posix/include/rtems/posix/mqueue.h,
posix/inline/rtems/posix/cond.inl,
posix/inline/rtems/posix/mqueue.inl,
posix/inline/rtems/posix/mutex.inl,
posix/inline/rtems/posix/pthread.inl,
posix/inline/rtems/posix/semaphore.inl,
posix/inline/rtems/posix/timer.inl, posix/src/alarm.c,
posix/src/barrierattrdestroy.c, posix/src/barrierattrgetpshared.c,
posix/src/barrierattrinit.c, posix/src/barrierattrsetpshared.c,
posix/src/cleanuppop.c, posix/src/cleanuppush.c,
posix/src/clockgetcpuclockid.c, posix/src/clockgetenableattr.c,
posix/src/clockgetres.c, posix/src/clockgettime.c,
posix/src/clocksetenableattr.c, posix/src/clocksettime.c,
posix/src/cond.c, posix/src/condattrdestroy.c,
posix/src/condattrgetpshared.c, posix/src/condattrinit.c,
posix/src/condattrsetpshared.c, posix/src/condbroadcast.c,
posix/src/conddefaultattributes.c, posix/src/conddestroy.c,
posix/src/condinit.c, posix/src/condsignal.c,
posix/src/condsignalsupp.c, posix/src/condtimedwait.c,
posix/src/condwait.c, posix/src/condwaitsupp.c,
posix/src/keygetspecific.c, posix/src/keyrundestructors.c,
posix/src/keysetspecific.c, posix/src/mprotect.c, posix/src/mqueue.c,
posix/src/mqueuecreatesupp.c, posix/src/mqueuedeletesupp.c,
posix/src/mqueuegetattr.c, posix/src/mqueuenotify.c,
posix/src/mqueuereceive.c, posix/src/mqueuesend.c,
posix/src/mqueuesendsupp.c, posix/src/mqueuesetattr.c,
posix/src/mqueuetimedreceive.c, posix/src/mqueuetimedsend.c,
posix/src/mqueuetranslatereturncode.c, posix/src/mqueueunlink.c,
posix/src/mutex.c, posix/src/mutexattrdestroy.c,
posix/src/mutexattrgetprioceiling.c,
posix/src/mutexattrgetprotocol.c, posix/src/mutexattrgetpshared.c,
posix/src/mutexattrinit.c, posix/src/mutexattrsetprioceiling.c,
posix/src/mutexattrsetprotocol.c, posix/src/mutexattrsetpshared.c,
posix/src/mutexdestroy.c, posix/src/mutexgetprioceiling.c,
posix/src/mutexinit.c, posix/src/mutexlock.c,
posix/src/mutexlocksupp.c, posix/src/mutexsetprioceiling.c,
posix/src/mutextimedlock.c, posix/src/mutextrylock.c,
posix/src/mutexunlock.c, posix/src/nanosleep.c, posix/src/psignal.c,
posix/src/psignalchecksignal.c,
posix/src/psignalclearprocesssignals.c,
posix/src/psignalclearsignals.c,
posix/src/psignalsetprocesssignals.c,
posix/src/psignalunblockthread.c, posix/src/pthreadinitthreads.c,
posix/src/rwlockattrdestroy.c, posix/src/rwlockattrgetpshared.c,
posix/src/rwlockattrinit.c, posix/src/rwlockattrsetpshared.c,
posix/src/semaphore.c, posix/src/semaphoredeletesupp.c,
posix/src/semaphorenametoid.c, posix/src/semaphorewaitsupp.c,
posix/src/semclose.c, posix/src/semdestroy.c,
posix/src/semgetvalue.c, posix/src/seminit.c, posix/src/semopen.c,
posix/src/sempost.c, posix/src/semtimedwait.c,
posix/src/semtrywait.c, posix/src/semunlink.c, posix/src/semwait.c,
posix/src/sysconf.c, posix/src/testcancel.c, posix/src/ualarm.c,
rtems/src/clockgetuptime.c, rtems/src/clockset.c,
rtems/src/clocksetnsecshandler.c, rtems/src/clocktick.c,
rtems/src/clocktodtoseconds.c, rtems/src/clocktodvalidate.c,
rtems/src/dpmem.c, rtems/src/dpmemcreate.c, rtems/src/dpmemdelete.c,
rtems/src/dpmemexternal2internal.c, rtems/src/dpmemident.c,
rtems/src/dpmeminternal2external.c, rtems/src/event.c,
rtems/src/eventmp.c, rtems/src/eventreceive.c,
rtems/src/eventseize.c, rtems/src/eventsend.c,
rtems/src/eventsurrender.c, rtems/src/eventtimeout.c, rtems/src/mp.c,
rtems/src/msg.c, rtems/src/msgmp.c, rtems/src/msgqallocate.c,
rtems/src/msgqbroadcast.c, rtems/src/msgqcreate.c,
rtems/src/msgqdelete.c, rtems/src/msgqflush.c,
rtems/src/msgqgetnumberpending.c, rtems/src/msgqident.c,
rtems/src/msgqreceive.c, rtems/src/msgqtranslatereturncode.c,
rtems/src/msgqurgent.c, rtems/src/part.c, rtems/src/partcreate.c,
rtems/src/partdelete.c, rtems/src/partgetbuffer.c,
rtems/src/partident.c, rtems/src/partmp.c,
rtems/src/partreturnbuffer.c, rtems/src/ratemon.c,
rtems/src/ratemoncancel.c, rtems/src/ratemoncreate.c,
rtems/src/ratemondelete.c, rtems/src/ratemongetstatistics.c,
rtems/src/ratemongetstatus.c, rtems/src/ratemonident.c,
rtems/src/ratemonperiod.c, rtems/src/ratemonresetstatistics.c,
rtems/src/ratemontimeout.c, rtems/src/region.c,
rtems/src/regioncreate.c, rtems/src/regiondelete.c,
rtems/src/regionextend.c, rtems/src/regiongetfreeinfo.c,
rtems/src/regiongetinfo.c, rtems/src/regiongetsegment.c,
rtems/src/regiongetsegmentsize.c, rtems/src/regionident.c,
rtems/src/regionmp.c, rtems/src/regionprocessqueue.c,
rtems/src/regionresizesegment.c, rtems/src/regionreturnsegment.c,
rtems/src/rtemsobjectgetclassicname.c, rtems/src/rtemstimer.c,
rtems/src/sem.c, rtems/src/semcreate.c, rtems/src/semdelete.c,
rtems/src/semflush.c, rtems/src/semident.c, rtems/src/semmp.c,
rtems/src/semobtain.c, rtems/src/semrelease.c,
rtems/src/semtranslatereturncode.c, rtems/src/signal.c,
rtems/src/signalcatch.c, rtems/src/signalmp.c,
rtems/src/signalsend.c, rtems/src/taskcreate.c,
rtems/src/taskdelete.c, rtems/src/taskgetnote.c,
rtems/src/taskident.c, rtems/src/taskinitusers.c,
rtems/src/taskissuspended.c, rtems/src/taskmp.c,
rtems/src/taskrestart.c, rtems/src/taskresume.c, rtems/src/tasks.c,
rtems/src/tasksetnote.c, rtems/src/tasksetpriority.c,
rtems/src/taskstart.c, rtems/src/tasksuspend.c,
rtems/src/taskwakeafter.c, rtems/src/taskwakewhen.c,
rtems/src/timercancel.c, rtems/src/timercreate.c,
rtems/src/timerdelete.c, rtems/src/timerfireafter.c,
rtems/src/timerfirewhen.c, rtems/src/timergetinfo.c,
rtems/src/timerident.c, rtems/src/timerreset.c,
rtems/src/timerserverfireafter.c, rtems/src/timerserverfirewhen.c,
sapi/src/debug.c, sapi/src/extension.c, sapi/src/posixapi.c,
sapi/src/rtemsapi.c, score/src/apiext.c, score/src/chain.c,
score/src/corebarrier.c, score/src/corebarrierrelease.c,
score/src/corebarrierwait.c, score/src/coremsgbroadcast.c,
score/src/coremsgclose.c, score/src/coremsgflush.c,
score/src/coremsgflushsupp.c, score/src/coremsgflushwait.c,
score/src/coremsginsert.c, score/src/coremsgseize.c,
score/src/coremsgsubmit.c, score/src/coremutex.c,
score/src/coremutexflush.c, score/src/coremutexseize.c,
score/src/corerwlock.c, score/src/corerwlockobtainread.c,
score/src/corerwlockobtainwrite.c, score/src/corerwlockrelease.c,
score/src/coresem.c, score/src/coresemflush.c,
score/src/coresemsurrender.c, score/src/corespinlock.c,
score/src/corespinlockrelease.c, score/src/corespinlockwait.c,
score/src/coretod.c, score/src/coretodset.c,
score/src/coretodtickle.c, score/src/heap.c, score/src/interr.c,
score/src/mpci.c, score/src/objectallocate.c,
score/src/objectextendinformation.c, score/src/objectfree.c,
score/src/objectget.c, score/src/objectgetisr.c,
score/src/objectgetnext.c, score/src/objectgetnoprotection.c,
score/src/objectinitializeinformation.c, score/src/objectmp.c,
score/src/objectnametoid.c, score/src/objectnametoidstring.c,
score/src/objectshrinkinformation.c, score/src/rbtree.c,
score/src/threaddelayended.c, score/src/threadhandler.c,
score/src/threadinitialize.c, score/src/threadloadenv.c,
score/src/threadmp.c, score/src/threadq.c,
score/src/threadqdequeue.c, score/src/threadqdequeuefifo.c,
score/src/threadqdequeuepriority.c, score/src/threadqenqueue.c,
score/src/threadqenqueuefifo.c, score/src/threadqenqueuepriority.c,
score/src/threadqextract.c, score/src/threadqextractfifo.c,
score/src/threadqextractpriority.c,
score/src/threadqextractwithproxy.c, score/src/threadqfirst.c,
score/src/threadqfirstfifo.c, score/src/threadqfirstpriority.c,
score/src/threadqflush.c, score/src/threadqrequeue.c,
score/src/threadstackallocate.c, score/src/threadstartmultitasking.c,
score/src/watchdog.c, score/src/watchdogadjust.c,
score/src/watchdoginsert.c, score/src/watchdogremove.c,
score/src/watchdogtickle.c: Remove /*PAGE markers which were
interpreted by a long dead print script.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Makefile.am, preinstall.am: Added statvfs.h.
* libcsupport/Makefile.am: Add statvfs.c.
* libcsupport/include/sys/statvfs.h, libcsupport/src/statvfs.c:
New.
* libcsupport/include/rtems/libio.h: Add a file system handler for
the statvfs call.
* libfs/src/devfs/devfs_init.c, libfs/src/dosfs/msdos_init.c,
libfs/src/imfs/imfs_init.c, libfs/src/nfsclient/src/nfs.c: Set the
statvfs handler to NULL.
* include/rtems/fs.h: Add a second node access field for the RFS
file system to hold a directory offset while the existing field
holds the inode number. This save a rescan of the directory when
working with directories.
* libblock/include/rtems/bdbuf.h: Added references and user fields
to the buffer descriptor.
* libblock/src/bdbuf.c: Added dynamic buffer support for different
block sizes. Fixed a number of bugs.
* libblock/src/blkdev.c: Release the disk device on an error.
* libblock/src/diskdevs.c: Set the block size to the media block
size during initialisation of the disk device.
* libblock/src/flashdisk.c, libblock/src/nvdisk.c,
libblock/src/ramdisk.c: Updated the drivers to handle variable
block sizes.
* libfs/src/dosfs/fat.c, libfs/src/dosfs/fat.h: Release any
buffers when an error occurs. The FAT buffer layer hangs onto a
single buffer while mounted. This should be fixed.
* sapi/inline/rtems/chain.inl: Added rtems_chain_set_off_chain,
rtems_chain_is_node_off_chain, and rtems_chain_previous.
* score/inline/rtems/score/chain.inl: Added _Chain_Set_off_chain,
and _Chain_Is_node_off_chain.
* libmisc/shell/main_ln.c, libmisc/shell/main_mknod.c,
libmisc/shell/mknod-pack_dev.c, libmisc/shell/mknod-pack_dev.h:
New shell commands.
* libmisc/Makefile.am, libmisc/shell/shellconfig.h: Added ln and
mknod commands.
* libmisc/shell/hexdump-display.c: Fixed the reopen bug which
showed up as a free with a bad pointer.
* libmisc/shell/main_mount.c: List the user adding file system
when listing the available file systems to mount.
* libmisc/shell/utils-cp.c: Remove the fixed static copy buffer
and use a large dynamic buffer.
* score/inline/rtems/score/address.inl, score/src/coremsgsubmit.c,
score/src/objectallocate.c, score/src/objectfree.c: Remove
warnings.
|
|
|
|
| |
* score/src/coremsgsubmit.c: Remove extra #else.
|
|
|
|
|
|
|
|
|
| |
* score/inline/rtems/score/coremsg.inl, score/src/coremsg.c,
score/src/coremsgbroadcast.c, score/src/coremsginsert.c,
score/src/coremsgseize.c, score/src/coremsgsubmit.c: Add wrappers for
accessing message priority. Since these are empty when priority-based
message queues are disabled, this eliminates some of the
conditionals.
|
|
|
|
|
|
|
|
|
| |
* score/include/rtems/score/coremsg.h,
score/inline/rtems/score/coremsg.inl, score/src/coremsg.c,
score/src/coremsginsert.c, score/src/coremsgseize.c,
score/src/coremsgsubmit.c, score/src/objectnametoidstring.c: Disable
the Core Message Queue features of notification, priority messages,
and blocking sends when no API requires them.
|
|
|
|
|
| |
* score/src/coremsgsubmit.c: Move impossible case inside an RTEMS_DEBUG
conditional.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* score/src/corebarrier.c, score/src/corebarrierrelease.c,
score/src/corebarrierwait.c, score/src/coremsg.c,
score/src/coremsgbroadcast.c, score/src/coremsgclose.c,
score/src/coremsgflush.c, score/src/coremsgflushsupp.c,
score/src/coremsgflushwait.c, score/src/coremsginsert.c,
score/src/coremsgseize.c, score/src/coremsgsubmit.c,
score/src/corerwlock.c, score/src/coresem.c,
score/src/coresemflush.c, score/src/coresemseize.c,
score/src/coresemsurrender.c, score/src/corespinlock.c,
score/src/threadblockingoperationcancel.c,
score/src/threadqenqueue.c: Remove unnecessary include of mpci.h.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* rtems/include/rtems/rtems/sem.h, rtems/src/semobtain.c:
Changed option set type to rtems_option.
* score/src/objectgetinfo.c: Check return value of
_Objects_API_maximum_class().
* libmisc/monitor/mon-mpci.c, libmisc/monitor/monitor.h,
rtems/include/rtems/rtems/message.h, rtems/src/msgmp.c,
rtems/src/msgqallocate.c, rtems/src/msgqbroadcast.c,
rtems/src/msgqcreate.c, rtems/src/msgqreceive.c, rtems/src/msgqsend.c,
rtems/src/msgqurgent.c, score/include/rtems/score/coremsg.h,
score/include/rtems/score/mpci.h, score/include/rtems/score/thread.h,
score/inline/rtems/score/coremsg.inl, score/src/coremsg.c,
score/src/coremsgbroadcast.c, score/src/coremsgseize.c,
score/src/coremsgsubmit.c:
Removed parameters of _Message_queue_Allocate(). Changed option set
type to rtems_option. Changed type of maximum message and packet size
to size_t. Changed the input buffer type for message send functions to
"const void *". Changed the pointer to the second return argument in
the thread wait information to a union. This union can contain a
pointer to an immutable or a mutable object. This is somewhat fragile.
An alternative would be to add a third pointer for immutable objects,
but this would increase the structure size.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
PR 1222/cpukit
* score/Makefile.am, score/include/rtems/score/coremutex.h,
score/include/rtems/score/threadq.h,
score/inline/rtems/score/coremutex.inl, score/src/coremsgsubmit.c,
score/src/coremutexsurrender.c, score/src/threadchangepriority.c,
score/src/threadclearstate.c, score/src/threadhandler.c,
score/src/threadinitialize.c, score/src/threadqdequeuefifo.c,
score/src/threadqdequeuepriority.c, score/src/threadqenqueue.c,
score/src/threadqenqueuefifo.c, score/src/threadqenqueuepriority.c,
score/src/threadqextractfifo.c, score/src/threadqextractpriority.c,
score/src/threadsetstate.c: Enhance so that when the prioirity of a
thread that is blocked on a priority based thread queue is changed,
that its placement in the queue is reevaluated based upon the new
priority. This enhancement includes modifications to the SuperCore as
well as new test cases.
* score/src/threadqrequeue.c: New file.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* score/src/Unlimited.txt, score/src/chain.c, score/src/coremsg.c,
score/src/coremsgbroadcast.c, score/src/coremsgclose.c,
score/src/coremsgflush.c, score/src/coremsgflushsupp.c,
score/src/coremsgseize.c, score/src/coremsgsubmit.c,
score/src/coremutex.c, score/src/coremutexflush.c,
score/src/coresem.c, score/src/coresemflush.c, score/src/coretod.c,
score/src/coretodtickle.c, score/src/coretodtoseconds.c,
score/src/coretodvalidate.c, score/src/heap.c,
score/src/heapallocate.c, score/src/heapextend.c,
score/src/heapfree.c, score/src/heapsizeofuserarea.c,
score/src/interr.c, score/src/iterateoverthreads.c,
score/src/mpci.c, score/src/object.c, score/src/objectallocate.c,
score/src/objectallocatebyindex.c, score/src/objectclearname.c,
score/src/objectcomparenameraw.c,
score/src/objectcomparenamestring.c, score/src/objectcopynameraw.c,
score/src/objectcopynamestring.c,
score/src/objectextendinformation.c, score/src/objectfree.c,
score/src/objectget.c, score/src/objectgetbyindex.c,
score/src/objectgetisr.c, score/src/objectgetnoprotection.c,
score/src/objectidtoname.c, score/src/objectinitializeinformation.c,
score/src/objectmp.c, score/src/objectnametoid.c,
score/src/objectshrinkinformation.c, score/src/thread.c,
score/src/threadcreateidle.c, score/src/threadget.c,
score/src/threadidlebody.c, score/src/threadinitialize.c,
score/src/threadmp.c, score/src/threadq.c,
score/src/threadqdequeuepriority.c,
score/src/threadqenqueuepriority.c,
score/src/threadqfirstpriority.c, score/src/threadqflush.c,
score/src/threadreset.c, score/src/threadrestart.c,
score/src/threadsettransient.c, score/src/threadstackallocate.c,
score/src/threadstart.c, score/src/userext.c,
score/src/watchdoginsert.c, score/src/wkspace.c: Convert to using
c99 fixed size types.
|
|
|
|
|
|
| |
* src/coremsgseize.c, src/coremsgsubmit.c:
Remove unnecessary typecasts in assignments to
thread->Wait.return_argument.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* include/rtems/debug.h, include/rtems/seterr.h,
include/rtems/system.h, include/rtems/score/address.h,
include/rtems/score/apiext.h, include/rtems/score/apimutex.h,
include/rtems/score/bitfield.h, include/rtems/score/chain.h,
include/rtems/score/context.h, include/rtems/score/copyrt.h,
include/rtems/score/coremsg.h, include/rtems/score/coremutex.h,
include/rtems/score/coresem.h, include/rtems/score/heap.h,
include/rtems/score/interr.h, include/rtems/score/isr.h,
include/rtems/score/mpci.h, include/rtems/score/mppkt.h,
include/rtems/score/object.h, include/rtems/score/objectmp.h,
include/rtems/score/priority.h, include/rtems/score/stack.h,
include/rtems/score/states.h, include/rtems/score/sysstate.h,
include/rtems/score/thread.h, include/rtems/score/threadmp.h,
include/rtems/score/threadq.h, include/rtems/score/tod.h,
include/rtems/score/tqdata.h, include/rtems/score/userext.h,
include/rtems/score/watchdog.h, include/rtems/score/wkspace.h,
inline/rtems/score/address.inl, inline/rtems/score/chain.inl,
inline/rtems/score/coremsg.inl, inline/rtems/score/coremutex.inl,
inline/rtems/score/coresem.inl, inline/rtems/score/heap.inl,
inline/rtems/score/isr.inl, inline/rtems/score/mppkt.inl,
inline/rtems/score/object.inl, inline/rtems/score/objectmp.inl,
inline/rtems/score/priority.inl, inline/rtems/score/stack.inl,
inline/rtems/score/states.inl, inline/rtems/score/sysstate.inl,
inline/rtems/score/thread.inl, inline/rtems/score/threadmp.inl,
inline/rtems/score/tod.inl, inline/rtems/score/tqdata.inl,
inline/rtems/score/userext.inl, inline/rtems/score/watchdog.inl,
inline/rtems/score/wkspace.inl, macros/rtems/score/address.inl,
macros/rtems/score/chain.inl, macros/rtems/score/coremsg.inl,
macros/rtems/score/coremutex.inl, macros/rtems/score/coresem.inl,
macros/rtems/score/heap.inl, macros/rtems/score/isr.inl,
macros/rtems/score/mppkt.inl, macros/rtems/score/object.inl,
macros/rtems/score/objectmp.inl, macros/rtems/score/priority.inl,
macros/rtems/score/stack.inl, macros/rtems/score/states.inl,
macros/rtems/score/sysstate.inl, macros/rtems/score/thread.inl,
macros/rtems/score/threadmp.inl, macros/rtems/score/tod.inl,
macros/rtems/score/tqdata.inl, macros/rtems/score/userext.inl,
macros/rtems/score/watchdog.inl, macros/rtems/score/wkspace.inl,
src/apiext.c, src/chain.c, src/coremsg.c, src/coremsgbroadcast.c,
src/coremsgclose.c, src/coremsgflush.c, src/coremsgflushsupp.c,
src/coremsgflushwait.c, src/coremsginsert.c, src/coremsgseize.c,
src/coremsgsubmit.c, src/coremutex.c, src/coremutexflush.c,
src/coremutexseize.c, src/coremutexsurrender.c, src/coresem.c,
src/coresemflush.c, src/coresemseize.c, src/coresemsurrender.c,
src/coretod.c, src/coretodset.c, src/coretodtickle.c,
src/coretodtoseconds.c, src/coretodvalidate.c, src/heap.c,
src/heapallocate.c, src/heapextend.c, src/heapfree.c,
src/heapgetinfo.c, src/heapsizeofuserarea.c, src/heapwalk.c,
src/interr.c, src/isr.c, src/iterateoverthreads.c, src/mpci.c,
src/object.c, src/objectallocate.c, src/objectallocatebyindex.c,
src/objectclearname.c, src/objectcomparenameraw.c,
src/objectcomparenamestring.c, src/objectcopynameraw.c,
src/objectcopynamestring.c, src/objectextendinformation.c,
src/objectfree.c, src/objectget.c, src/objectgetbyindex.c,
src/objectgetisr.c, src/objectgetnext.c, src/objectgetnoprotection.c,
src/objectidtoname.c, src/objectinitializeinformation.c,
src/objectmp.c, src/objectnametoid.c, src/objectshrinkinformation.c,
src/thread.c, src/threadchangepriority.c, src/threadclearstate.c,
src/threadclose.c, src/threadcreateidle.c, src/threaddelayended.c,
src/threaddispatch.c, src/threadevaluatemode.c, src/threadget.c,
src/threadhandler.c, src/threadidlebody.c, src/threadinitialize.c,
src/threadloadenv.c, src/threadmp.c, src/threadq.c,
src/threadqdequeue.c, src/threadqdequeuefifo.c,
src/threadqdequeuepriority.c, src/threadqenqueue.c,
src/threadqenqueuefifo.c, src/threadqenqueuepriority.c,
src/threadqextract.c, src/threadqextractfifo.c,
src/threadqextractpriority.c, src/threadqextractwithproxy.c,
src/threadqfirst.c, src/threadqfirstfifo.c,
src/threadqfirstpriority.c, src/threadqflush.c, src/threadqtimeout.c,
src/threadready.c, src/threadreset.c, src/threadresettimeslice.c,
src/threadrestart.c, src/threadresume.c, src/threadrotatequeue.c,
src/threadsetpriority.c, src/threadsetstate.c,
src/threadsettransient.c, src/threadstackallocate.c,
src/threadstackfree.c, src/threadstart.c,
src/threadstartmultitasking.c, src/threadsuspend.c,
src/threadtickletimeslice.c, src/threadyieldprocessor.c,
src/userext.c, src/watchdog.c, src/watchdogadjust.c,
src/watchdoginsert.c, src/watchdogremove.c, src/watchdogtickle.c,
src/wkspace.c: URL for license changed.
|
|
|
|
|
|
|
|
| |
* 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>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|