From 2b3e9d9b244e279ef5693a7cf5dacc7903164af5 Mon Sep 17 00:00:00 2001 From: Ralf Corsepius Date: Mon, 22 Jul 2002 09:46:48 +0000 Subject: Remove, moved to cpukit. --- c/src/exec/rtems/src/.cvsignore | 2 - c/src/exec/rtems/src/Makefile.am | 79 ---- c/src/exec/rtems/src/attr.c | 29 -- c/src/exec/rtems/src/clockget.c | 89 ----- c/src/exec/rtems/src/clockset.c | 50 --- c/src/exec/rtems/src/clocktick.c | 51 --- c/src/exec/rtems/src/dpmem.c | 55 --- c/src/exec/rtems/src/dpmemcreate.c | 81 ---- c/src/exec/rtems/src/dpmemdelete.c | 61 --- c/src/exec/rtems/src/dpmemexternal2internal.c | 72 ---- c/src/exec/rtems/src/dpmemident.c | 55 --- c/src/exec/rtems/src/dpmeminternal2external.c | 72 ---- c/src/exec/rtems/src/event.c | 44 --- c/src/exec/rtems/src/eventmp.c | 189 ---------- c/src/exec/rtems/src/eventreceive.c | 62 --- c/src/exec/rtems/src/eventseize.c | 138 ------- c/src/exec/rtems/src/eventsend.c | 71 ---- c/src/exec/rtems/src/eventsurrender.c | 106 ------ c/src/exec/rtems/src/eventtimeout.c | 75 ---- c/src/exec/rtems/src/intr.c | 31 -- c/src/exec/rtems/src/intrbody.c | 70 ---- c/src/exec/rtems/src/intrcatch.c | 54 --- c/src/exec/rtems/src/mp.c | 41 -- c/src/exec/rtems/src/msg.c | 77 ---- c/src/exec/rtems/src/msgmp.c | 504 ------------------------- c/src/exec/rtems/src/msgqallocate.c | 56 --- c/src/exec/rtems/src/msgqbroadcast.c | 103 ----- c/src/exec/rtems/src/msgqcreate.c | 158 -------- c/src/exec/rtems/src/msgqdelete.c | 104 ----- c/src/exec/rtems/src/msgqflush.c | 86 ----- c/src/exec/rtems/src/msgqgetnumberpending.c | 83 ---- c/src/exec/rtems/src/msgqident.c | 67 ---- c/src/exec/rtems/src/msgqreceive.c | 104 ----- c/src/exec/rtems/src/msgqsend.c | 57 --- c/src/exec/rtems/src/msgqsubmit.c | 144 ------- c/src/exec/rtems/src/msgqtranslatereturncode.c | 68 ---- c/src/exec/rtems/src/msgqurgent.c | 57 --- c/src/exec/rtems/src/part.c | 67 ---- c/src/exec/rtems/src/partcreate.c | 115 ------ c/src/exec/rtems/src/partdelete.c | 87 ----- c/src/exec/rtems/src/partgetbuffer.c | 79 ---- c/src/exec/rtems/src/partident.c | 53 --- c/src/exec/rtems/src/partmp.c | 301 --------------- c/src/exec/rtems/src/partreturnbuffer.c | 75 ---- c/src/exec/rtems/src/ratemon.c | 57 --- c/src/exec/rtems/src/ratemoncancel.c | 64 ---- c/src/exec/rtems/src/ratemoncreate.c | 67 ---- c/src/exec/rtems/src/ratemondelete.c | 62 --- c/src/exec/rtems/src/ratemongetstatus.c | 79 ---- c/src/exec/rtems/src/ratemonident.c | 55 --- c/src/exec/rtems/src/ratemonperiod.c | 163 -------- c/src/exec/rtems/src/ratemontimeout.c | 81 ---- c/src/exec/rtems/src/region.c | 72 ---- c/src/exec/rtems/src/regioncreate.c | 100 ----- c/src/exec/rtems/src/regiondelete.c | 72 ---- c/src/exec/rtems/src/regionextend.c | 93 ----- c/src/exec/rtems/src/regiongetinfo.c | 74 ---- c/src/exec/rtems/src/regiongetsegment.c | 112 ------ c/src/exec/rtems/src/regiongetsegmentsize.c | 75 ---- c/src/exec/rtems/src/regionident.c | 57 --- c/src/exec/rtems/src/regionmp.c | 309 --------------- c/src/exec/rtems/src/regionreturnsegment.c | 122 ------ c/src/exec/rtems/src/rtclock.c | 22 -- c/src/exec/rtems/src/rtemstimer.c | 61 --- c/src/exec/rtems/src/sem.c | 90 ----- c/src/exec/rtems/src/semcreate.c | 219 ----------- c/src/exec/rtems/src/semdelete.c | 132 ------- c/src/exec/rtems/src/semflush.c | 98 ----- c/src/exec/rtems/src/semident.c | 77 ---- c/src/exec/rtems/src/semmp.c | 361 ------------------ c/src/exec/rtems/src/semobtain.c | 121 ------ c/src/exec/rtems/src/semrelease.c | 115 ------ c/src/exec/rtems/src/semtranslatereturncode.c | 120 ------ c/src/exec/rtems/src/signal.c | 47 --- c/src/exec/rtems/src/signalcatch.c | 65 ---- c/src/exec/rtems/src/signalmp.c | 188 --------- c/src/exec/rtems/src/signalsend.c | 87 ----- c/src/exec/rtems/src/taskcreate.c | 228 ----------- c/src/exec/rtems/src/taskdelete.c | 100 ----- c/src/exec/rtems/src/taskgetnote.c | 105 ------ c/src/exec/rtems/src/taskident.c | 65 ---- c/src/exec/rtems/src/taskinitusers.c | 83 ---- c/src/exec/rtems/src/taskissuspended.c | 77 ---- c/src/exec/rtems/src/taskmode.c | 122 ------ c/src/exec/rtems/src/taskmp.c | 339 ----------------- c/src/exec/rtems/src/taskrestart.c | 79 ---- c/src/exec/rtems/src/taskresume.c | 81 ---- c/src/exec/rtems/src/tasks.c | 286 -------------- c/src/exec/rtems/src/tasksetnote.c | 102 ----- c/src/exec/rtems/src/tasksetpriority.c | 98 ----- c/src/exec/rtems/src/taskstart.c | 84 ----- c/src/exec/rtems/src/tasksuspend.c | 82 ---- c/src/exec/rtems/src/taskvariableadd.c | 85 ----- c/src/exec/rtems/src/taskvariabledelete.c | 70 ---- c/src/exec/rtems/src/taskvariableget.c | 72 ---- c/src/exec/rtems/src/taskwakeafter.c | 64 ---- c/src/exec/rtems/src/taskwakewhen.c | 79 ---- c/src/exec/rtems/src/timercancel.c | 61 --- c/src/exec/rtems/src/timercreate.c | 66 ---- c/src/exec/rtems/src/timerdelete.c | 62 --- c/src/exec/rtems/src/timerfireafter.c | 72 ---- c/src/exec/rtems/src/timerfirewhen.c | 83 ---- c/src/exec/rtems/src/timergetinfo.c | 70 ---- c/src/exec/rtems/src/timerident.c | 56 --- c/src/exec/rtems/src/timerreset.c | 77 ---- c/src/exec/rtems/src/timerserver.c | 316 ---------------- c/src/exec/rtems/src/timerserverfireafter.c | 83 ---- c/src/exec/rtems/src/timerserverfirewhen.c | 91 ----- 108 files changed, 10877 deletions(-) delete mode 100644 c/src/exec/rtems/src/.cvsignore delete mode 100644 c/src/exec/rtems/src/Makefile.am delete mode 100644 c/src/exec/rtems/src/attr.c delete mode 100644 c/src/exec/rtems/src/clockget.c delete mode 100644 c/src/exec/rtems/src/clockset.c delete mode 100644 c/src/exec/rtems/src/clocktick.c delete mode 100644 c/src/exec/rtems/src/dpmem.c delete mode 100644 c/src/exec/rtems/src/dpmemcreate.c delete mode 100644 c/src/exec/rtems/src/dpmemdelete.c delete mode 100644 c/src/exec/rtems/src/dpmemexternal2internal.c delete mode 100644 c/src/exec/rtems/src/dpmemident.c delete mode 100644 c/src/exec/rtems/src/dpmeminternal2external.c delete mode 100644 c/src/exec/rtems/src/event.c delete mode 100644 c/src/exec/rtems/src/eventmp.c delete mode 100644 c/src/exec/rtems/src/eventreceive.c delete mode 100644 c/src/exec/rtems/src/eventseize.c delete mode 100644 c/src/exec/rtems/src/eventsend.c delete mode 100644 c/src/exec/rtems/src/eventsurrender.c delete mode 100644 c/src/exec/rtems/src/eventtimeout.c delete mode 100644 c/src/exec/rtems/src/intr.c delete mode 100644 c/src/exec/rtems/src/intrbody.c delete mode 100644 c/src/exec/rtems/src/intrcatch.c delete mode 100644 c/src/exec/rtems/src/mp.c delete mode 100644 c/src/exec/rtems/src/msg.c delete mode 100644 c/src/exec/rtems/src/msgmp.c delete mode 100644 c/src/exec/rtems/src/msgqallocate.c delete mode 100644 c/src/exec/rtems/src/msgqbroadcast.c delete mode 100644 c/src/exec/rtems/src/msgqcreate.c delete mode 100644 c/src/exec/rtems/src/msgqdelete.c delete mode 100644 c/src/exec/rtems/src/msgqflush.c delete mode 100644 c/src/exec/rtems/src/msgqgetnumberpending.c delete mode 100644 c/src/exec/rtems/src/msgqident.c delete mode 100644 c/src/exec/rtems/src/msgqreceive.c delete mode 100644 c/src/exec/rtems/src/msgqsend.c delete mode 100644 c/src/exec/rtems/src/msgqsubmit.c delete mode 100644 c/src/exec/rtems/src/msgqtranslatereturncode.c delete mode 100644 c/src/exec/rtems/src/msgqurgent.c delete mode 100644 c/src/exec/rtems/src/part.c delete mode 100644 c/src/exec/rtems/src/partcreate.c delete mode 100644 c/src/exec/rtems/src/partdelete.c delete mode 100644 c/src/exec/rtems/src/partgetbuffer.c delete mode 100644 c/src/exec/rtems/src/partident.c delete mode 100644 c/src/exec/rtems/src/partmp.c delete mode 100644 c/src/exec/rtems/src/partreturnbuffer.c delete mode 100644 c/src/exec/rtems/src/ratemon.c delete mode 100644 c/src/exec/rtems/src/ratemoncancel.c delete mode 100644 c/src/exec/rtems/src/ratemoncreate.c delete mode 100644 c/src/exec/rtems/src/ratemondelete.c delete mode 100644 c/src/exec/rtems/src/ratemongetstatus.c delete mode 100644 c/src/exec/rtems/src/ratemonident.c delete mode 100644 c/src/exec/rtems/src/ratemonperiod.c delete mode 100644 c/src/exec/rtems/src/ratemontimeout.c delete mode 100644 c/src/exec/rtems/src/region.c delete mode 100644 c/src/exec/rtems/src/regioncreate.c delete mode 100644 c/src/exec/rtems/src/regiondelete.c delete mode 100644 c/src/exec/rtems/src/regionextend.c delete mode 100644 c/src/exec/rtems/src/regiongetinfo.c delete mode 100644 c/src/exec/rtems/src/regiongetsegment.c delete mode 100644 c/src/exec/rtems/src/regiongetsegmentsize.c delete mode 100644 c/src/exec/rtems/src/regionident.c delete mode 100644 c/src/exec/rtems/src/regionmp.c delete mode 100644 c/src/exec/rtems/src/regionreturnsegment.c delete mode 100644 c/src/exec/rtems/src/rtclock.c delete mode 100644 c/src/exec/rtems/src/rtemstimer.c delete mode 100644 c/src/exec/rtems/src/sem.c delete mode 100644 c/src/exec/rtems/src/semcreate.c delete mode 100644 c/src/exec/rtems/src/semdelete.c delete mode 100644 c/src/exec/rtems/src/semflush.c delete mode 100644 c/src/exec/rtems/src/semident.c delete mode 100644 c/src/exec/rtems/src/semmp.c delete mode 100644 c/src/exec/rtems/src/semobtain.c delete mode 100644 c/src/exec/rtems/src/semrelease.c delete mode 100644 c/src/exec/rtems/src/semtranslatereturncode.c delete mode 100644 c/src/exec/rtems/src/signal.c delete mode 100644 c/src/exec/rtems/src/signalcatch.c delete mode 100644 c/src/exec/rtems/src/signalmp.c delete mode 100644 c/src/exec/rtems/src/signalsend.c delete mode 100644 c/src/exec/rtems/src/taskcreate.c delete mode 100644 c/src/exec/rtems/src/taskdelete.c delete mode 100644 c/src/exec/rtems/src/taskgetnote.c delete mode 100644 c/src/exec/rtems/src/taskident.c delete mode 100644 c/src/exec/rtems/src/taskinitusers.c delete mode 100644 c/src/exec/rtems/src/taskissuspended.c delete mode 100644 c/src/exec/rtems/src/taskmode.c delete mode 100644 c/src/exec/rtems/src/taskmp.c delete mode 100644 c/src/exec/rtems/src/taskrestart.c delete mode 100644 c/src/exec/rtems/src/taskresume.c delete mode 100644 c/src/exec/rtems/src/tasks.c delete mode 100644 c/src/exec/rtems/src/tasksetnote.c delete mode 100644 c/src/exec/rtems/src/tasksetpriority.c delete mode 100644 c/src/exec/rtems/src/taskstart.c delete mode 100644 c/src/exec/rtems/src/tasksuspend.c delete mode 100644 c/src/exec/rtems/src/taskvariableadd.c delete mode 100644 c/src/exec/rtems/src/taskvariabledelete.c delete mode 100644 c/src/exec/rtems/src/taskvariableget.c delete mode 100644 c/src/exec/rtems/src/taskwakeafter.c delete mode 100644 c/src/exec/rtems/src/taskwakewhen.c delete mode 100644 c/src/exec/rtems/src/timercancel.c delete mode 100644 c/src/exec/rtems/src/timercreate.c delete mode 100644 c/src/exec/rtems/src/timerdelete.c delete mode 100644 c/src/exec/rtems/src/timerfireafter.c delete mode 100644 c/src/exec/rtems/src/timerfirewhen.c delete mode 100644 c/src/exec/rtems/src/timergetinfo.c delete mode 100644 c/src/exec/rtems/src/timerident.c delete mode 100644 c/src/exec/rtems/src/timerreset.c delete mode 100644 c/src/exec/rtems/src/timerserver.c delete mode 100644 c/src/exec/rtems/src/timerserverfireafter.c delete mode 100644 c/src/exec/rtems/src/timerserverfirewhen.c (limited to 'c/src/exec/rtems/src') diff --git a/c/src/exec/rtems/src/.cvsignore b/c/src/exec/rtems/src/.cvsignore deleted file mode 100644 index 282522db03..0000000000 --- a/c/src/exec/rtems/src/.cvsignore +++ /dev/null @@ -1,2 +0,0 @@ -Makefile -Makefile.in diff --git a/c/src/exec/rtems/src/Makefile.am b/c/src/exec/rtems/src/Makefile.am deleted file mode 100644 index 7b5f53b757..0000000000 --- a/c/src/exec/rtems/src/Makefile.am +++ /dev/null @@ -1,79 +0,0 @@ -## -## $Id$ -## - - -include $(top_srcdir)/automake/multilib.am -include $(top_srcdir)/automake/compile.am -include $(top_srcdir)/automake/lib.am - -# We only build multiprocessing related files if HAS_MP was defined -MP_C_FILES = eventmp.c mp.c msgmp.c partmp.c regionmp.c semmp.c signalmp.c \ - taskmp.c - -TASK_C_FILES = tasks.c taskcreate.c taskdelete.c taskgetnote.c taskident.c \ - taskinitusers.c taskissuspended.c taskmode.c taskrestart.c taskresume.c \ - tasksetnote.c tasksetpriority.c taskstart.c tasksuspend.c \ - taskwakeafter.c taskwakewhen.c taskvariableadd.c taskvariabledelete.c \ - taskvariableget.c - -RATEMON_C_FILES = ratemon.c ratemoncancel.c ratemoncreate.c ratemondelete.c \ - ratemongetstatus.c ratemonident.c ratemonperiod.c ratemontimeout.c - -INTR_C_FILES = intr.c intrbody.c intrcatch.c - -CLOCK_C_FILES = rtclock.c clockget.c clockset.c clocktick.c - -TIMER_C_FILES = rtemstimer.c timercancel.c timercreate.c timerdelete.c \ - timerfireafter.c timerfirewhen.c timergetinfo.c timerident.c timerreset.c \ - timerserver.c timerserverfireafter.c timerserverfirewhen.c - -MESSAGE_QUEUE_C_FILES = msg.c msgqallocate.c msgqbroadcast.c msgqcreate.c \ - msgqdelete.c msgqflush.c msgqgetnumberpending.c msgqident.c \ - msgqreceive.c msgqsend.c msgqsubmit.c msgqtranslatereturncode.c \ - msgqurgent.c - -SEMAPHORE_C_FILES = sem.c semcreate.c semdelete.c semident.c semobtain.c \ - semrelease.c semflush.c semtranslatereturncode.c - -EVENT_C_FILES = event.c eventreceive.c eventseize.c eventsend.c \ - eventsurrender.c eventtimeout.c - -SIGNAL_C_FILES = signal.c signalcatch.c signalsend.c - -REGION_C_FILES = region.c regioncreate.c regiondelete.c regionextend.c \ - regiongetsegment.c regiongetsegmentsize.c regionident.c \ - regionreturnsegment.c regiongetinfo.c - -PARTITION_C_FILES = part.c partcreate.c partdelete.c partgetbuffer.c \ - partident.c partreturnbuffer.c - -DPMEM_C_FILES = dpmem.c dpmemcreate.c dpmemdelete.c dpmemexternal2internal.c \ - dpmemident.c dpmeminternal2external.c - -STD_C_FILES = attr.c $(TASK_C_FILES) $(RATEMON_C_FILES) $(INTR_C_FILES) \ - $(CLOCK_C_FILES) $(TIMER_C_FILES) $(SEMAPHORE_C_FILES) \ - $(MESSAGE_QUEUE_C_FILES) $(EVENT_C_FILES) $(SIGNAL_C_FILES) \ - $(PARTITION_C_FILES) $(REGION_C_FILES) $(DPMEM_C_FILES) - -if HAS_MP -C_FILES = $(STD_C_FILES) $(MP_C_FILES) -else -C_FILES = $(STD_C_FILES) -endif - -C_O_FILES = $(C_FILES:%.c=${ARCH}/%.o) - -OBJS = $(C_O_FILES) - -# -# Add local stuff here using += -# - -AM_CPPFLAGS += -D__RTEMS_INSIDE__ - -all-local: ${ARCH} ${OBJS} - -EXTRA_DIST = $(STD_C_FILES) $(MP_C_FILES) - -include $(top_srcdir)/automake/local.am diff --git a/c/src/exec/rtems/src/attr.c b/c/src/exec/rtems/src/attr.c deleted file mode 100644 index bff1e61a16..0000000000 --- a/c/src/exec/rtems/src/attr.c +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Body for Attribute Routines - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include - -rtems_unsigned32 rtems_minimum_stack_size = STACK_MINIMUM_SIZE; -rtems_unsigned32 rtems_interrupt_mask = RTEMS_INTERRUPT_MASK; - -rtems_attribute rtems_interrupt_level_attribute( - unsigned32 level -) -{ - return RTEMS_INTERRUPT_LEVEL(level); -} - diff --git a/c/src/exec/rtems/src/clockget.c b/c/src/exec/rtems/src/clockget.c deleted file mode 100644 index e143aba213..0000000000 --- a/c/src/exec/rtems/src/clockget.c +++ /dev/null @@ -1,89 +0,0 @@ -/* - * Clock Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_clock_get - * - * This directive returns the current date and time. If the time has - * not been set by a tm_set then an error is returned. - * - * Input parameters: - * option - which value to return - * time_buffer - pointer to output buffer (a time and date structure - * or an interval) - * - * Output parameters: - * time_buffer - output filled in - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_clock_get( - rtems_clock_get_options option, - void *time_buffer -) -{ - ISR_Level level; - rtems_interval tmp; - - switch ( option ) { - case RTEMS_CLOCK_GET_TOD: - if ( !_TOD_Is_set ) - return RTEMS_NOT_DEFINED; - - *(rtems_time_of_day *)time_buffer = _TOD_Current; - return RTEMS_SUCCESSFUL; - - case RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH: - if ( !_TOD_Is_set ) - return RTEMS_NOT_DEFINED; - - *(rtems_interval *)time_buffer = _TOD_Seconds_since_epoch; - return RTEMS_SUCCESSFUL; - - case RTEMS_CLOCK_GET_TICKS_SINCE_BOOT: - *(rtems_interval *)time_buffer = _Watchdog_Ticks_since_boot; - return RTEMS_SUCCESSFUL; - - case RTEMS_CLOCK_GET_TICKS_PER_SECOND: - *(rtems_interval *)time_buffer = _TOD_Ticks_per_second; - return RTEMS_SUCCESSFUL; - - case RTEMS_CLOCK_GET_TIME_VALUE: - if ( !_TOD_Is_set ) - return RTEMS_NOT_DEFINED; - - _ISR_Disable( level ); - ((rtems_clock_time_value *)time_buffer)->seconds = - _TOD_Seconds_since_epoch; - tmp = _TOD_Current.ticks; - _ISR_Enable( level ); - - tmp *= _TOD_Microseconds_per_tick; - ((rtems_clock_time_value *)time_buffer)->microseconds = tmp; - - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* should never get here */ - -} diff --git a/c/src/exec/rtems/src/clockset.c b/c/src/exec/rtems/src/clockset.c deleted file mode 100644 index cc2d2c68d9..0000000000 --- a/c/src/exec/rtems/src/clockset.c +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Clock Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_clock_set - * - * This directive sets the date and time for this node. - * - * Input parameters: - * time_buffer - pointer to the time and date structure - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_clock_set( - rtems_time_of_day *time_buffer -) -{ - rtems_interval seconds; - - if ( _TOD_Validate( time_buffer ) ) { - seconds = _TOD_To_seconds( time_buffer ); - _Thread_Disable_dispatch(); - _TOD_Set( time_buffer, seconds ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - return RTEMS_INVALID_CLOCK; -} diff --git a/c/src/exec/rtems/src/clocktick.c b/c/src/exec/rtems/src/clocktick.c deleted file mode 100644 index d80725a1b2..0000000000 --- a/c/src/exec/rtems/src/clocktick.c +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Clock Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_clock_tick - * - * This directive notifies the executve that a tick has occurred. - * When the tick occurs the time manager updates and maintains - * the calendar time, timeslicing, and any timeout delays. - * - * Input parameters: NONE - * - * Output parameters: - * RTEMS_SUCCESSFUL - always succeeds - * - * NOTE: This routine only works for leap-years through 2099. - */ - -rtems_status_code rtems_clock_tick( void ) -{ - _TOD_Tickle_ticks(); - - _Watchdog_Tickle_ticks(); - - _Thread_Tickle_timeslice(); - - if ( _Thread_Is_context_switch_necessary() && - _Thread_Is_dispatching_enabled() ) - _Thread_Dispatch(); - - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/dpmem.c b/c/src/exec/rtems/src/dpmem.c deleted file mode 100644 index 9a3b663260..0000000000 --- a/c/src/exec/rtems/src/dpmem.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Dual Port Memory Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Dual_ported_memory_Manager_initialization - * - * This routine initializes all dual-ported memory manager related - * data structures. - * - * Input parameters: - * maximum_ports - number of ports to initialize - * - * Output parameters: NONE - */ - -void _Dual_ported_memory_Manager_initialization( - unsigned32 maximum_ports -) -{ - _Objects_Initialize_information( - &_Dual_ported_memory_Information, /* object information table */ - OBJECTS_CLASSIC_API, /* object API */ - OBJECTS_RTEMS_PORTS, /* object class */ - maximum_ports, /* maximum objects of this class */ - sizeof( Dual_ported_memory_Control ), - /* size of this object's control block */ - FALSE, /* TRUE if names of this object are strings */ - RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of each object's name */ -#if defined(RTEMS_MULTIPROCESSING) - , - FALSE, /* TRUE if this is a global object class */ - NULL /* Proxy extraction support callout */ -#endif - ); -} diff --git a/c/src/exec/rtems/src/dpmemcreate.c b/c/src/exec/rtems/src/dpmemcreate.c deleted file mode 100644 index 951391d8b6..0000000000 --- a/c/src/exec/rtems/src/dpmemcreate.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Dual Port Memory Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_port_create - * - * This directive creates a port into a dual-ported memory area. - * - * Input parameters: - * name - user defined port name - * internal_start - internal start address of port - * external_start - external start address of port - * length - physical length in bytes - * id - address of port id to set - * - * Output parameters: - * id - port id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_port_create( - rtems_name name, - void *internal_start, - void *external_start, - unsigned32 length, - Objects_Id *id -) -{ - register Dual_ported_memory_Control *the_port; - - if ( !rtems_is_name_valid( name) ) - return RTEMS_INVALID_NAME; - - if ( !_Addresses_Is_aligned( internal_start ) || - !_Addresses_Is_aligned( external_start ) ) - return RTEMS_INVALID_ADDRESS; - - _Thread_Disable_dispatch(); /* to prevent deletion */ - - the_port = _Dual_ported_memory_Allocate(); - - if ( !the_port ) { - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } - - the_port->internal_base = internal_start; - the_port->external_base = external_start; - the_port->length = length - 1; - - _Objects_Open( - &_Dual_ported_memory_Information, - &the_port->Object, - name - ); - - *id = the_port->Object.id; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/dpmemdelete.c b/c/src/exec/rtems/src/dpmemdelete.c deleted file mode 100644 index 872e2626f0..0000000000 --- a/c/src/exec/rtems/src/dpmemdelete.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Dual Port Memory Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_port_delete - * - * This directive allows a thread to delete a dual-ported memory area - * specified by the dual-ported memory identifier. - * - * Input parameters: - * id - dual-ported memory area id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_port_delete( - Objects_Id id -) -{ - register Dual_ported_memory_Control *the_port; - Objects_Locations location; - - the_port = _Dual_ported_memory_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* this error cannot be returned */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - _Objects_Close( &_Dual_ported_memory_Information, &the_port->Object ); - _Dual_ported_memory_Free( the_port ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/dpmemexternal2internal.c b/c/src/exec/rtems/src/dpmemexternal2internal.c deleted file mode 100644 index 92407a3b55..0000000000 --- a/c/src/exec/rtems/src/dpmemexternal2internal.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Dual Port Memory Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_port_external_to_internal - * - * This directive converts an external dual-ported memory address to an - * internal dual-ported memory address. If the given external address - * is an invalid dual-ported address, then the internal address is set - * to the given external address. - * - * Input parameters: - * id - id of dp memory object - * external - external address - * internal - pointer of internal address to set - * - * Output parameters: - * internal - internal address - * RTEMS_SUCCESSFUL - always succeeds - */ - -rtems_status_code rtems_port_external_to_internal( - Objects_Id id, - void *external, - void **internal -) -{ - register Dual_ported_memory_Control *the_port; - Objects_Locations location; - unsigned32 ending; - - the_port = _Dual_ported_memory_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* this error cannot be returned */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - ending = _Addresses_Subtract( external, the_port->external_base ); - if ( ending > the_port->length ) - *internal = external; - else - *internal = _Addresses_Add_offset( the_port->internal_base, - ending ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/dpmemident.c b/c/src/exec/rtems/src/dpmemident.c deleted file mode 100644 index e68bf23d6c..0000000000 --- a/c/src/exec/rtems/src/dpmemident.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Dual Port Memory Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_port_ident - * - * This directive returns the system ID associated with - * the port name. - * - * Input parameters: - * name - user defined port name - * id - pointer to port id - * - * Output parameters: - * *id - port id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_port_ident( - rtems_name name, - Objects_Id *id -) -{ - Objects_Name_to_id_errors status; - - status = _Objects_Name_to_id( - &_Dual_ported_memory_Information, - name, - OBJECTS_SEARCH_ALL_NODES, - id - ); - - return _Status_Object_name_errors_to_status[ status ]; -} diff --git a/c/src/exec/rtems/src/dpmeminternal2external.c b/c/src/exec/rtems/src/dpmeminternal2external.c deleted file mode 100644 index 23bc02e43f..0000000000 --- a/c/src/exec/rtems/src/dpmeminternal2external.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Dual Port Memory Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_port_internal_to_external - * - * This directive converts an internal dual-ported memory address to an - * external dual-ported memory address. If the given internal address - * is an invalid dual-ported address, then the external address is set - * to the given internal address. - * - * Input parameters: - * id - id of dual-ported memory object - * internal - internal address to set - * external - pointer to external address - * - * Output parameters: - * external - external address - * RTEMS_SUCCESSFUL - always succeeds - */ - -rtems_status_code rtems_port_internal_to_external( - Objects_Id id, - void *internal, - void **external -) -{ - register Dual_ported_memory_Control *the_port; - Objects_Locations location; - unsigned32 ending; - - the_port = _Dual_ported_memory_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* this error cannot be returned */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - ending = _Addresses_Subtract( internal, the_port->internal_base ); - if ( ending > the_port->length ) - *external = internal; - else - *external = _Addresses_Add_offset( the_port->external_base, - ending ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/event.c b/c/src/exec/rtems/src/event.c deleted file mode 100644 index f11cd8c167..0000000000 --- a/c/src/exec/rtems/src/event.c +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Event Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Event_Manager_initialization - * - * DESCRIPTION: - * - * This routine performs the initialization necessary for this manager. - */ - -void _Event_Manager_initialization( void ) -{ - _Event_Sync_state = EVENT_SYNC_SYNCHRONIZED; - - /* - * Register the MP Process Packet routine. - */ - -#if defined(RTEMS_MULTIPROCESSING) - _MPCI_Register_packet_processor( MP_PACKET_EVENT, _Event_MP_Process_packet ); -#endif -} diff --git a/c/src/exec/rtems/src/eventmp.c b/c/src/exec/rtems/src/eventmp.c deleted file mode 100644 index 13fb4f7abd..0000000000 --- a/c/src/exec/rtems/src/eventmp.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - * Multiprocessing Support for the Event Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Event_MP_Send_process_packet - * - * This subprogram is not needed since there are no process - * packets to be sent by this manager. - * - */ - -/*PAGE - * - * _Event_MP_Send_request_packet - * - */ - -rtems_status_code _Event_MP_Send_request_packet ( - Event_MP_Remote_operations operation, - Objects_Id event_id, - rtems_event_set event_in -) -{ - Event_MP_Packet *the_packet; - - switch ( operation ) { - - case EVENT_MP_SEND_REQUEST: - - the_packet = _Event_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_EVENT; - the_packet->Prefix.length = sizeof ( Event_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( Event_MP_Packet ); - the_packet->operation = operation; - the_packet->Prefix.id = event_id; - the_packet->event_in = event_in; - - return (rtems_status_code) - _MPCI_Send_request_packet( - rtems_get_node( event_id ), - &the_packet->Prefix, - STATES_READY - ); - - break; - - case EVENT_MP_SEND_RESPONSE: - break; - - } - /* - * The following line is included to satisfy compilers which - * produce warnings when a function does not end with a return. - */ - return RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * _Event_MP_Send_response_packet - * - */ - -void _Event_MP_Send_response_packet ( - Event_MP_Remote_operations operation, - Thread_Control *the_thread -) -{ - Event_MP_Packet *the_packet; - - switch ( operation ) { - - case EVENT_MP_SEND_RESPONSE: - - the_packet = ( Event_MP_Packet *) the_thread->receive_packet; - -/* - * The packet being returned already contains the class, length, and - * to_convert fields, therefore they are not set in this routine. - */ - the_packet->operation = operation; - the_packet->Prefix.id = the_packet->Prefix.source_tid; - - _MPCI_Send_response_packet( - rtems_get_node( the_packet->Prefix.source_tid ), - &the_packet->Prefix - ); - break; - - case EVENT_MP_SEND_REQUEST: - break; - - } -} - -/*PAGE - * - * - * _Event_MP_Process_packet - * - */ - -void _Event_MP_Process_packet ( - rtems_packet_prefix *the_packet_prefix -) -{ - Event_MP_Packet *the_packet; - Thread_Control *the_thread; - - the_packet = (Event_MP_Packet *) the_packet_prefix; - - switch ( the_packet->operation ) { - - case EVENT_MP_SEND_REQUEST: - - the_packet->Prefix.return_code = rtems_event_send( - the_packet->Prefix.id, - the_packet->event_in - ); - - _Event_MP_Send_response_packet( - EVENT_MP_SEND_RESPONSE, - _Thread_Executing - ); - break; - - case EVENT_MP_SEND_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - _MPCI_Return_packet( the_packet_prefix ); - - break; - - } -} - -/*PAGE - * - * _Event_MP_Send_object_was_deleted - * - * This subprogram is not needed since there are no objects - * deleted by this manager. - * - */ - -/*PAGE - * - * _Event_MP_Send_extract_proxy - * - * This subprogram is not needed since there are no objects - * deleted by this manager. - * - */ - -/*PAGE - * - * _Event_MP_Get_packet - * - */ - -Event_MP_Packet *_Event_MP_Get_packet ( void ) -{ - return ( (Event_MP_Packet *) _MPCI_Get_packet() ); -} - -/* end of file */ diff --git a/c/src/exec/rtems/src/eventreceive.c b/c/src/exec/rtems/src/eventreceive.c deleted file mode 100644 index 7b8f477ea0..0000000000 --- a/c/src/exec/rtems/src/eventreceive.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Event Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_event_receive - * - * This directive allows a thread to receive a set of events. - * - * Input parameters: - * event_in - input event condition - * option_set - options - * ticks - number of ticks to wait (0 means wait forever) - * event_out - pointer to output event set - * - * Output parameters: - * event out - event set - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_event_receive( - rtems_event_set event_in, - rtems_option option_set, - rtems_interval ticks, - rtems_event_set *event_out -) -{ - RTEMS_API_Control *api; - - api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; - - if ( _Event_sets_Is_empty( event_in ) ) { - *event_out = api->pending_events; - return RTEMS_SUCCESSFUL; - } - - _Thread_Disable_dispatch(); - _Event_Seize( event_in, option_set, ticks, event_out ); - _Thread_Enable_dispatch(); - return( _Thread_Executing->Wait.return_code ); -} diff --git a/c/src/exec/rtems/src/eventseize.c b/c/src/exec/rtems/src/eventseize.c deleted file mode 100644 index ca41c65b6a..0000000000 --- a/c/src/exec/rtems/src/eventseize.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * Event Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Event_Seize - * - * This routine attempts to satisfy the requested event condition - * for the running thread. - * - * Input parameters: - * event_in - the event condition to satisfy - * option_set - acquire event options - * ticks - interval to wait - * event_out - pointer to event set output area - * - * Output parameters: NONE - * *event_out - event set output area filled in - * - * INTERRUPT LATENCY: - * available - * wait - * check sync - */ - -void _Event_Seize( - rtems_event_set event_in, - rtems_option option_set, - rtems_interval ticks, - rtems_event_set *event_out -) -{ - Thread_Control *executing; - rtems_event_set seized_events; - rtems_event_set pending_events; - ISR_Level level; - RTEMS_API_Control *api; - Event_Sync_states sync_state; - - executing = _Thread_Executing; - executing->Wait.return_code = RTEMS_SUCCESSFUL; - - api = executing->API_Extensions[ THREAD_API_RTEMS ]; - - _ISR_Disable( level ); - pending_events = api->pending_events; - seized_events = _Event_sets_Get( pending_events, event_in ); - - if ( !_Event_sets_Is_empty( seized_events ) && - (seized_events == event_in || _Options_Is_any( option_set )) ) { - api->pending_events = - _Event_sets_Clear( pending_events, seized_events ); - _ISR_Enable( level ); - *event_out = seized_events; - return; - } - - if ( _Options_Is_no_wait( option_set ) ) { - _ISR_Enable( level ); - executing->Wait.return_code = RTEMS_UNSATISFIED; - *event_out = seized_events; - return; - } - - _Event_Sync_state = EVENT_SYNC_NOTHING_HAPPENED; - - executing->Wait.option = (unsigned32) option_set; - executing->Wait.count = (unsigned32) event_in; - executing->Wait.return_argument = event_out; - - _ISR_Enable( level ); - - if ( ticks ) { - _Watchdog_Initialize( - &executing->Timer, - _Event_Timeout, - executing->Object.id, - NULL - ); - _Watchdog_Insert_ticks( &executing->Timer, ticks ); - } - - _Thread_Set_state( executing, STATES_WAITING_FOR_EVENT ); - - _ISR_Disable( level ); - - sync_state = _Event_Sync_state; - _Event_Sync_state = EVENT_SYNC_SYNCHRONIZED; - - switch ( sync_state ) { - case EVENT_SYNC_SYNCHRONIZED: - /* - * This cannot happen. It indicates that this routine did not - * enter the synchronization states above. - */ - return; - - case EVENT_SYNC_NOTHING_HAPPENED: - _ISR_Enable( level ); - return; - - case EVENT_SYNC_TIMEOUT: - executing->Wait.return_code = RTEMS_TIMEOUT; - _ISR_Enable( level ); - _Thread_Unblock( executing ); - return; - - case EVENT_SYNC_SATISFIED: - if ( _Watchdog_Is_active( &executing->Timer ) ) { - _Watchdog_Deactivate( &executing->Timer ); - _ISR_Enable( level ); - (void) _Watchdog_Remove( &executing->Timer ); - } else - _ISR_Enable( level ); - _Thread_Unblock( executing ); - return; - } -} diff --git a/c/src/exec/rtems/src/eventsend.c b/c/src/exec/rtems/src/eventsend.c deleted file mode 100644 index 62a5b48162..0000000000 --- a/c/src/exec/rtems/src/eventsend.c +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Event Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_event_send - * - * This directive allows a thread send an event set to another thread. - * - * Input parameters: - * id - thread id - * event - event set - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_event_send( - Objects_Id id, - rtems_event_set event_in -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - RTEMS_API_Control *api; - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - return( - _Event_MP_Send_request_packet( - EVENT_MP_SEND_REQUEST, - id, - event_in - ) - ); -#endif - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - case OBJECTS_LOCAL: - api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; - _Event_sets_Post( event_in, &api->pending_events ); - _Event_Surrender( the_thread ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/eventsurrender.c b/c/src/exec/rtems/src/eventsurrender.c deleted file mode 100644 index 1f8f5ea70b..0000000000 --- a/c/src/exec/rtems/src/eventsurrender.c +++ /dev/null @@ -1,106 +0,0 @@ -/* - * Event Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Event_Surrender - * - * This routines remove a thread from the specified threadq. - * - * Input parameters: - * the_thread - pointer to thread to be dequeued - * - * Output parameters: NONE - * - * INTERRUPT LATENCY: - * before flash - * after flash - * check sync - */ - -void _Event_Surrender( - Thread_Control *the_thread -) -{ - ISR_Level level; - rtems_event_set pending_events; - rtems_event_set event_condition; - rtems_event_set seized_events; - rtems_option option_set; - RTEMS_API_Control *api; - - api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; - - option_set = (rtems_option) the_thread->Wait.option; - - _ISR_Disable( level ); - pending_events = api->pending_events; - event_condition = (rtems_event_set) the_thread->Wait.count; - - seized_events = _Event_sets_Get( pending_events, event_condition ); - - if ( !_Event_sets_Is_empty( seized_events ) ) { - if ( _States_Is_waiting_for_event( the_thread->current_state ) ) { - if ( seized_events == event_condition || _Options_Is_any( option_set ) ) { - api->pending_events = - _Event_sets_Clear( pending_events, seized_events ); - (rtems_event_set) the_thread->Wait.count = 0; - *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; - - _ISR_Flash( level ); - - if ( !_Watchdog_Is_active( &the_thread->Timer ) ) { - _ISR_Enable( level ); - _Thread_Unblock( the_thread ); - } - else { - _Watchdog_Deactivate( &the_thread->Timer ); - _ISR_Enable( level ); - (void) _Watchdog_Remove( &the_thread->Timer ); - _Thread_Unblock( the_thread ); - } - return; - } - } - - switch ( _Event_Sync_state ) { - case EVENT_SYNC_SYNCHRONIZED: - case EVENT_SYNC_SATISFIED: - break; - - case EVENT_SYNC_NOTHING_HAPPENED: - case EVENT_SYNC_TIMEOUT: - if ( !_Thread_Is_executing( the_thread ) ) - break; - - if ( seized_events == event_condition || _Options_Is_any(option_set) ) { - api->pending_events = - _Event_sets_Clear( pending_events,seized_events ); - *(rtems_event_set *)the_thread->Wait.return_argument = seized_events; - _Event_Sync_state = EVENT_SYNC_SATISFIED; - } - break; - } - } - _ISR_Enable( level ); -} diff --git a/c/src/exec/rtems/src/eventtimeout.c b/c/src/exec/rtems/src/eventtimeout.c deleted file mode 100644 index bb5eaa403c..0000000000 --- a/c/src/exec/rtems/src/eventtimeout.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Event Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Event_Timeout - * - * This routine processes a thread which timeouts while waiting to - * receive an event_set. It is called by the watchdog handler. - * - * Input parameters: - * id - thread id - * - * Output parameters: NONE - */ - -void _Event_Timeout( - Objects_Id id, - void *ignored -) -{ - Thread_Control *the_thread; - Objects_Locations location; - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* impossible */ - case OBJECTS_ERROR: - break; - case OBJECTS_LOCAL: - - /* - * If the event manager is not synchronized, then it is either - * "nothing happened", "timeout", or "satisfied". If the_thread - * is the executing thread, then it is in the process of blocking - * and it is the thread which is responsible for the synchronization - * process. - * - * If it is not satisfied, then it is "nothing happened" and - * this is the "timeout" transition. After a request is satisfied, - * a timeout is not allowed to occur. - */ - - if ( _Event_Sync_state != EVENT_SYNC_SYNCHRONIZED && - _Thread_Is_executing( the_thread ) ) { - if ( _Event_Sync_state != EVENT_SYNC_SATISFIED ) - _Event_Sync_state = EVENT_SYNC_TIMEOUT; - } else { - the_thread->Wait.return_code = RTEMS_TIMEOUT; - _Thread_Unblock( the_thread ); - } - _Thread_Unnest_dispatch(); - break; - } -} diff --git a/c/src/exec/rtems/src/intr.c b/c/src/exec/rtems/src/intr.c deleted file mode 100644 index 9663e7cfb0..0000000000 --- a/c/src/exec/rtems/src/intr.c +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Interrupt Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include - -/* _Interrupt_Manager_initialization - * - * This routine initializes the interrupt manager. - * - * Input parameters: NONE - * - * Output parameters: NONE - */ - -void _Interrupt_Manager_initialization( void ) -{ -} diff --git a/c/src/exec/rtems/src/intrbody.c b/c/src/exec/rtems/src/intrbody.c deleted file mode 100644 index 4a265d5c1f..0000000000 --- a/c/src/exec/rtems/src/intrbody.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Bodies for Inlined Interrupt Manager Routines - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include - -/* - * Real body for rtems_interrupt_disable - */ - -#undef rtems_interrupt_disable - -rtems_interrupt_level rtems_interrupt_disable( void ) -{ - rtems_interrupt_level previous_level; - - _ISR_Disable( previous_level ); - - return previous_level; -} - -/* - * Real body for rtems_interrupt_enable - */ - -#undef rtems_interrupt_enable - -void rtems_interrupt_enable( - rtems_interrupt_level previous_level -) -{ - _ISR_Enable( previous_level ); -} - -/* - * Real body for rtems_interrupt_flash - */ - -#undef rtems_interrupt_flash - -void rtems_interrupt_flash( - rtems_interrupt_level previous_level -) -{ - _ISR_Flash( previous_level ); -} - -/* - * Real body for rtems_interrupt_is_in_progress - */ - -#undef rtems_interrupt_is_in_progress - -boolean rtems_interrupt_is_in_progress( void ) -{ - return _ISR_Is_in_progress(); -} diff --git a/c/src/exec/rtems/src/intrcatch.c b/c/src/exec/rtems/src/intrcatch.c deleted file mode 100644 index 4b68d5dbfd..0000000000 --- a/c/src/exec/rtems/src/intrcatch.c +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Interrupt Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include - -/* rtems_interrupt_catch - * - * This directive allows a thread to specify what action to take when - * catching signals. - * - * Input parameters: - * new_isr_handler - address of interrupt service routine (isr) - * vector - interrupt vector number - * old_isr_handler - address at which to store previous ISR address - * - * Output parameters: - * RTEMS_SUCCESSFUL - always succeeds - * *old_isr_handler - previous ISR address - */ - -rtems_status_code rtems_interrupt_catch( - rtems_isr_entry new_isr_handler, - rtems_vector_number vector, - rtems_isr_entry *old_isr_handler -) -{ - if ( !_ISR_Is_vector_number_valid( vector ) ) - return RTEMS_INVALID_NUMBER; - - if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) ) - return RTEMS_INVALID_ADDRESS; - - if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) ) - return RTEMS_INVALID_ADDRESS; - - _ISR_Install_vector( - vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler ); - - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/mp.c b/c/src/exec/rtems/src/mp.c deleted file mode 100644 index d6e575cfc0..0000000000 --- a/c/src/exec/rtems/src/mp.c +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Multiprocessing Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include - -/*PAGE - * - * _Multiprocessing_Manager_initialization - * - */ - -void _Multiprocessing_Manager_initialization ( void ) -{ -} - -/*PAGE - * - * rtems_multiprocessing_announce - * - */ - -void rtems_multiprocessing_announce ( void ) -{ - _MPCI_Announce(); -} - -/* end of file */ diff --git a/c/src/exec/rtems/src/msg.c b/c/src/exec/rtems/src/msg.c deleted file mode 100644 index 62529b6dd2..0000000000 --- a/c/src/exec/rtems/src/msg.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * _Message_queue_Manager_initialization - * - * This routine initializes all message queue manager related - * data structures. - * - * Input parameters: - * maximum_message_queues - number of message queues to initialize - * - * Output parameters: NONE - */ - -void _Message_queue_Manager_initialization( - unsigned32 maximum_message_queues -) -{ - _Objects_Initialize_information( - &_Message_queue_Information, /* object information table */ - OBJECTS_CLASSIC_API, /* object API */ - OBJECTS_RTEMS_MESSAGE_QUEUES, /* object class */ - maximum_message_queues, /* maximum objects of this class */ - sizeof( Message_queue_Control ), - /* size of this object's control block */ - FALSE, /* TRUE if names of this object are strings */ - RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of each object's name */ -#if defined(RTEMS_MULTIPROCESSING) - , - FALSE, /* TRUE if this is a global object class */ - NULL /* Proxy extraction support callout */ -#endif - ); - - /* - * Register the MP Process Packet routine. - */ - -#if defined(RTEMS_MULTIPROCESSING) - _MPCI_Register_packet_processor( - MP_PACKET_MESSAGE_QUEUE, - _Message_queue_MP_Process_packet - ); -#endif - -} diff --git a/c/src/exec/rtems/src/msgmp.c b/c/src/exec/rtems/src/msgmp.c deleted file mode 100644 index 6d48ff4955..0000000000 --- a/c/src/exec/rtems/src/msgmp.c +++ /dev/null @@ -1,504 +0,0 @@ -/* - * Multiprocessing Support for the Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Message_queue_MP_Send_process_packet - * - */ - -void _Message_queue_MP_Send_process_packet ( - Message_queue_MP_Remote_operations operation, - Objects_Id message_queue_id, - rtems_name name, - Objects_Id proxy_id -) -{ - Message_queue_MP_Packet *the_packet; - unsigned32 node; - - switch ( operation ) { - - case MESSAGE_QUEUE_MP_ANNOUNCE_CREATE: - case MESSAGE_QUEUE_MP_ANNOUNCE_DELETE: - case MESSAGE_QUEUE_MP_EXTRACT_PROXY: - - the_packet = _Message_queue_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_MESSAGE_QUEUE; - the_packet->Prefix.length = sizeof ( Message_queue_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( Message_queue_MP_Packet ); - the_packet->operation = operation; - the_packet->Prefix.id = message_queue_id; - the_packet->name = name; - the_packet->proxy_id = proxy_id; - - if ( operation == MESSAGE_QUEUE_MP_EXTRACT_PROXY ) - node = rtems_get_node( message_queue_id ); - else - node = MPCI_ALL_NODES; - - _MPCI_Send_process_packet( node, &the_packet->Prefix ); - break; - - case MESSAGE_QUEUE_MP_RECEIVE_REQUEST: - case MESSAGE_QUEUE_MP_RECEIVE_RESPONSE: - case MESSAGE_QUEUE_MP_SEND_REQUEST: - case MESSAGE_QUEUE_MP_SEND_RESPONSE: - case MESSAGE_QUEUE_MP_URGENT_REQUEST: - case MESSAGE_QUEUE_MP_URGENT_RESPONSE: - case MESSAGE_QUEUE_MP_BROADCAST_REQUEST: - case MESSAGE_QUEUE_MP_BROADCAST_RESPONSE: - case MESSAGE_QUEUE_MP_FLUSH_REQUEST: - case MESSAGE_QUEUE_MP_FLUSH_RESPONSE: - case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST: - case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE: - break; - - } -} - -/*PAGE - * - * _Message_queue_MP_Send_request_packet - * - */ - -rtems_status_code _Message_queue_MP_Send_request_packet ( - Message_queue_MP_Remote_operations operation, - Objects_Id message_queue_id, - void *buffer, - unsigned32 *size_p, - rtems_option option_set, - rtems_interval timeout -) -{ - Message_queue_MP_Packet *the_packet; - - switch ( operation ) { - - case MESSAGE_QUEUE_MP_SEND_REQUEST: - case MESSAGE_QUEUE_MP_URGENT_REQUEST: - case MESSAGE_QUEUE_MP_BROADCAST_REQUEST: - case MESSAGE_QUEUE_MP_FLUSH_REQUEST: - case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST: - - the_packet = _Message_queue_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_MESSAGE_QUEUE; - the_packet->Prefix.length = sizeof(Message_queue_MP_Packet); - if ( size_p ) - the_packet->Prefix.length += *size_p; - the_packet->Prefix.to_convert = sizeof(Message_queue_MP_Packet); - - /* - * make sure message is not too big for our MPCI driver - * We have to check it here instead of waiting for MPCI because - * we are about to slam in the payload - */ - - if (the_packet->Prefix.length > _MPCI_table->maximum_packet_size) { - _Thread_Enable_dispatch(); - return RTEMS_INVALID_SIZE; - } - - if (! _Options_Is_no_wait(option_set)) - the_packet->Prefix.timeout = timeout; - - the_packet->operation = operation; - the_packet->Prefix.id = message_queue_id; - the_packet->option_set = option_set; - - /* - * Copy the data into place if needed - */ - - if (buffer) { - the_packet->Buffer.size = *size_p; - _CORE_message_queue_Copy_buffer( - buffer, - the_packet->Buffer.buffer, - *size_p - ); - } - - return (rtems_status_code) _MPCI_Send_request_packet( - rtems_get_node(message_queue_id), - &the_packet->Prefix, - STATES_WAITING_FOR_MESSAGE - ); - break; - - case MESSAGE_QUEUE_MP_RECEIVE_REQUEST: - - the_packet = _Message_queue_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_MESSAGE_QUEUE; - the_packet->Prefix.length = sizeof(Message_queue_MP_Packet); - the_packet->Prefix.to_convert = sizeof(Message_queue_MP_Packet); - - if (! _Options_Is_no_wait(option_set)) - the_packet->Prefix.timeout = timeout; - - the_packet->operation = MESSAGE_QUEUE_MP_RECEIVE_REQUEST; - the_packet->Prefix.id = message_queue_id; - the_packet->option_set = option_set; - the_packet->size = 0; /* just in case of an error */ - - _Thread_Executing->Wait.return_argument = (unsigned32 *)buffer; - _Thread_Executing->Wait.return_argument_1 = size_p; - - return (rtems_status_code) _MPCI_Send_request_packet( - rtems_get_node(message_queue_id), - &the_packet->Prefix, - STATES_WAITING_FOR_MESSAGE - ); - break; - - case MESSAGE_QUEUE_MP_ANNOUNCE_CREATE: - case MESSAGE_QUEUE_MP_ANNOUNCE_DELETE: - case MESSAGE_QUEUE_MP_EXTRACT_PROXY: - case MESSAGE_QUEUE_MP_RECEIVE_RESPONSE: - case MESSAGE_QUEUE_MP_SEND_RESPONSE: - case MESSAGE_QUEUE_MP_URGENT_RESPONSE: - case MESSAGE_QUEUE_MP_BROADCAST_RESPONSE: - case MESSAGE_QUEUE_MP_FLUSH_RESPONSE: - case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE: - break; - } - - return RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * _Message_queue_MP_Send_response_packet - * - */ - -void _Message_queue_MP_Send_response_packet ( - Message_queue_MP_Remote_operations operation, - Objects_Id message_queue_id, - Thread_Control *the_thread -) -{ - Message_queue_MP_Packet *the_packet; - - switch ( operation ) { - - case MESSAGE_QUEUE_MP_RECEIVE_RESPONSE: - case MESSAGE_QUEUE_MP_SEND_RESPONSE: - case MESSAGE_QUEUE_MP_URGENT_RESPONSE: - case MESSAGE_QUEUE_MP_BROADCAST_RESPONSE: - case MESSAGE_QUEUE_MP_FLUSH_RESPONSE: - case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE: - - the_packet = ( Message_queue_MP_Packet *) the_thread->receive_packet; - -/* - * The packet being returned already contains the class, length, and - * to_convert fields, therefore they are not set in this routine. - * - * Exception: MESSAGE_QUEUE_MP_RECEIVE_RESPONSE needs payload length - * added to 'length' - */ - the_packet->operation = operation; - the_packet->Prefix.id = the_packet->Prefix.source_tid; - - if (operation == MESSAGE_QUEUE_MP_RECEIVE_RESPONSE) - the_packet->Prefix.length += the_packet->size; - - _MPCI_Send_response_packet( - rtems_get_node( the_packet->Prefix.source_tid ), - &the_packet->Prefix - ); - break; - - case MESSAGE_QUEUE_MP_ANNOUNCE_CREATE: - case MESSAGE_QUEUE_MP_ANNOUNCE_DELETE: - case MESSAGE_QUEUE_MP_EXTRACT_PROXY: - case MESSAGE_QUEUE_MP_RECEIVE_REQUEST: - case MESSAGE_QUEUE_MP_SEND_REQUEST: - case MESSAGE_QUEUE_MP_URGENT_REQUEST: - case MESSAGE_QUEUE_MP_BROADCAST_REQUEST: - case MESSAGE_QUEUE_MP_FLUSH_REQUEST: - case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST: - break; - - } -} - -/*PAGE - * - * - * _Message_queue_MP_Process_packet - * - */ - -void _Message_queue_MP_Process_packet ( - rtems_packet_prefix *the_packet_prefix -) -{ - Message_queue_MP_Packet *the_packet; - Thread_Control *the_thread; - boolean ignored; - - the_packet = (Message_queue_MP_Packet *) the_packet_prefix; - - switch ( the_packet->operation ) { - - case MESSAGE_QUEUE_MP_ANNOUNCE_CREATE: - - ignored = _Objects_MP_Allocate_and_open( - &_Message_queue_Information, - the_packet->name, - the_packet->Prefix.id, - TRUE - ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case MESSAGE_QUEUE_MP_ANNOUNCE_DELETE: - - _Objects_MP_Close( &_Message_queue_Information, the_packet->Prefix.id ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case MESSAGE_QUEUE_MP_EXTRACT_PROXY: - - the_thread = _Thread_MP_Find_proxy( the_packet->proxy_id ); - - if (! _Thread_Is_null( the_thread ) ) - _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case MESSAGE_QUEUE_MP_RECEIVE_REQUEST: - - the_packet->Prefix.return_code = rtems_message_queue_receive( - the_packet->Prefix.id, - the_packet->Buffer.buffer, - &the_packet->size, - the_packet->option_set, - the_packet->Prefix.timeout - ); - - if (! _Thread_Is_proxy_blocking( the_packet->Prefix.return_code ) ) - _Message_queue_MP_Send_response_packet( - MESSAGE_QUEUE_MP_RECEIVE_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - case MESSAGE_QUEUE_MP_RECEIVE_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - if (the_packet->Prefix.return_code == RTEMS_SUCCESSFUL) { - *(rtems_unsigned32 *)the_thread->Wait.return_argument_1 = - the_packet->size; - - _CORE_message_queue_Copy_buffer( - the_packet->Buffer.buffer, - the_thread->Wait.return_argument, - the_packet->size - ); - } - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case MESSAGE_QUEUE_MP_SEND_REQUEST: - - the_packet->Prefix.return_code = rtems_message_queue_send( - the_packet->Prefix.id, - the_packet->Buffer.buffer, - the_packet->Buffer.size - ); - - _Message_queue_MP_Send_response_packet( - MESSAGE_QUEUE_MP_SEND_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - case MESSAGE_QUEUE_MP_SEND_RESPONSE: - case MESSAGE_QUEUE_MP_URGENT_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case MESSAGE_QUEUE_MP_URGENT_REQUEST: - - the_packet->Prefix.return_code = rtems_message_queue_urgent( - the_packet->Prefix.id, - the_packet->Buffer.buffer, - the_packet->Buffer.size - ); - - _Message_queue_MP_Send_response_packet( - MESSAGE_QUEUE_MP_URGENT_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - case MESSAGE_QUEUE_MP_BROADCAST_REQUEST: - - the_packet->Prefix.return_code = rtems_message_queue_broadcast( - the_packet->Prefix.id, - the_packet->Buffer.buffer, - the_packet->Buffer.size, - &the_packet->count - ); - - _Message_queue_MP_Send_response_packet( - MESSAGE_QUEUE_MP_BROADCAST_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - case MESSAGE_QUEUE_MP_BROADCAST_RESPONSE: - case MESSAGE_QUEUE_MP_FLUSH_RESPONSE: - case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - *(unsigned32 *)the_thread->Wait.return_argument = the_packet->count; - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case MESSAGE_QUEUE_MP_FLUSH_REQUEST: - - the_packet->Prefix.return_code = rtems_message_queue_flush( - the_packet->Prefix.id, - &the_packet->count - ); - - _Message_queue_MP_Send_response_packet( - MESSAGE_QUEUE_MP_FLUSH_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - case MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST: - - the_packet->Prefix.return_code = rtems_message_queue_get_number_pending( - the_packet->Prefix.id, - &the_packet->count - ); - - _Message_queue_MP_Send_response_packet( - MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - } -} - -/*PAGE - * - * _Message_queue_MP_Send_object_was_deleted - * - */ - -void _Message_queue_MP_Send_object_was_deleted ( - Thread_Control *the_proxy -) -{ - the_proxy->receive_packet->return_code = RTEMS_OBJECT_WAS_DELETED; - - _Message_queue_MP_Send_response_packet( - MESSAGE_QUEUE_MP_RECEIVE_RESPONSE, - the_proxy->Wait.id, - the_proxy - ); -} - -/*PAGE - * - * _Message_queue_MP_Send_extract_proxy - * - */ - -void _Message_queue_MP_Send_extract_proxy ( - Thread_Control *the_thread -) -{ - _Message_queue_MP_Send_process_packet( - MESSAGE_QUEUE_MP_EXTRACT_PROXY, - the_thread->Wait.id, - (rtems_name) 0, - the_thread->Object.id - ); -} - -/*PAGE - * - * _Message_queue_MP_Get_packet - * - */ - -Message_queue_MP_Packet *_Message_queue_MP_Get_packet ( void ) -{ - return ( (Message_queue_MP_Packet *) _MPCI_Get_packet() ); -} - - -/*PAGE - * - * _Message_queue_Core_message_queue_mp_support - * - * Input parameters: - * the_thread - the remote thread the message was submitted to - * id - id of the message queue - * - * Output parameters: NONE - */ - -void _Message_queue_Core_message_queue_mp_support ( - Thread_Control *the_thread, - Objects_Id id -) -{ - the_thread->receive_packet->return_code = RTEMS_SUCCESSFUL; - - _Message_queue_MP_Send_response_packet( - MESSAGE_QUEUE_MP_RECEIVE_RESPONSE, - id, - the_thread - ); -} - -/* end of file */ diff --git a/c/src/exec/rtems/src/msgqallocate.c b/c/src/exec/rtems/src/msgqallocate.c deleted file mode 100644 index 6945a13415..0000000000 --- a/c/src/exec/rtems/src/msgqallocate.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * _Message_queue_Allocate - * - * Allocate a message queue and the space for its messages - * - * Input parameters: - * the_message_queue - the message queue to allocate message buffers - * count - maximum message and reserved buffer count - * max_message_size - maximum size of each message - * - * Output parameters: - * the_message_queue - set if successful, NULL otherwise - */ - -Message_queue_Control *_Message_queue_Allocate ( - unsigned32 count, - unsigned32 max_message_size -) -{ - return - (Message_queue_Control *)_Objects_Allocate(&_Message_queue_Information); - -} diff --git a/c/src/exec/rtems/src/msgqbroadcast.c b/c/src/exec/rtems/src/msgqbroadcast.c deleted file mode 100644 index bd79602b6b..0000000000 --- a/c/src/exec/rtems/src/msgqbroadcast.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_message_queue_broadcast - * - * This directive sends a message for every thread waiting on the queue - * designated by id. - * - * Input parameters: - * id - pointer to message queue - * buffer - pointer to message buffer - * size - size of message to broadcast - * count - pointer to area to store number of threads made ready - * - * Output parameters: - * count - number of threads made ready - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_message_queue_broadcast( - Objects_Id id, - void *buffer, - unsigned32 size, - unsigned32 *count -) -{ - register Message_queue_Control *the_message_queue; - Objects_Locations location; - CORE_message_queue_Status core_status; - - the_message_queue = _Message_queue_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Executing->Wait.return_argument = count; - - return - _Message_queue_MP_Send_request_packet( - MESSAGE_QUEUE_MP_BROADCAST_REQUEST, - id, - buffer, - &size, - 0, /* option_set not used */ - MPCI_DEFAULT_TIMEOUT - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - core_status = _CORE_message_queue_Broadcast( - &the_message_queue->message_queue, - buffer, - size, - id, -#if defined(RTEMS_MULTIPROCESSING) - _Message_queue_Core_message_queue_mp_support, -#else - NULL, -#endif - count - ); - - _Thread_Enable_dispatch(); - return - _Message_queue_Translate_core_message_queue_return_code( core_status ); - - } - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/msgqcreate.c b/c/src/exec/rtems/src/msgqcreate.c deleted file mode 100644 index 537704360b..0000000000 --- a/c/src/exec/rtems/src/msgqcreate.c +++ /dev/null @@ -1,158 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_message_queue_create - * - * This directive creates a message queue by allocating and initializing - * a message queue data structure. - * - * Input parameters: - * name - user defined queue name - * count - maximum message and reserved buffer count - * max_message_size - maximum size of each message - * attribute_set - process method - * id - pointer to queue - * - * Output parameters: - * id - queue id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_message_queue_create( - rtems_name name, - unsigned32 count, - unsigned32 max_message_size, - rtems_attribute attribute_set, - Objects_Id *id -) -{ - register Message_queue_Control *the_message_queue; - CORE_message_queue_Attributes the_msgq_attributes; -#if defined(RTEMS_MULTIPROCESSING) - boolean is_global; -#endif - - if ( !rtems_is_name_valid( name ) ) - return RTEMS_INVALID_NAME; - -#if defined(RTEMS_MULTIPROCESSING) - if ( (is_global = _Attributes_Is_global( attribute_set ) ) && - !_System_state_Is_multiprocessing ) - return RTEMS_MP_NOT_CONFIGURED; -#endif - - if ( count == 0 ) - return RTEMS_INVALID_NUMBER; - - if ( max_message_size == 0 ) - return RTEMS_INVALID_SIZE; - -#if defined(RTEMS_MULTIPROCESSING) -#if 1 - /* - * I am not 100% sure this should be an error. - * It seems reasonable to create a que with a large max size, - * and then just send smaller msgs from remote (or all) nodes. - */ - - if ( is_global && (_MPCI_table->maximum_packet_size < max_message_size) ) - return RTEMS_INVALID_SIZE; -#endif -#endif - - _Thread_Disable_dispatch(); /* protects object pointer */ - - the_message_queue = _Message_queue_Allocate( count, max_message_size ); - - if ( !the_message_queue ) { - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } - -#if defined(RTEMS_MULTIPROCESSING) - if ( is_global && - !( _Objects_MP_Allocate_and_open( &_Message_queue_Information, - name, the_message_queue->Object.id, FALSE ) ) ) { - _Message_queue_Free( the_message_queue ); - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } -#endif - - the_message_queue->attribute_set = attribute_set; - - if (_Attributes_Is_priority( attribute_set ) ) - the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY; - else - the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO; - - if ( ! _CORE_message_queue_Initialize( - &the_message_queue->message_queue, - &the_msgq_attributes, - count, - max_message_size - ) ) { -#if defined(RTEMS_MULTIPROCESSING) - if ( is_global ) - _Objects_MP_Close( - &_Message_queue_Information, the_message_queue->Object.id); -#endif - - _Message_queue_Free( the_message_queue ); - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } - - _Objects_Open( - &_Message_queue_Information, - &the_message_queue->Object, - name - ); - - *id = the_message_queue->Object.id; - -#if defined(RTEMS_MULTIPROCESSING) - if ( is_global ) - _Message_queue_MP_Send_process_packet( - MESSAGE_QUEUE_MP_ANNOUNCE_CREATE, - the_message_queue->Object.id, - name, - 0 - ); -#endif - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/msgqdelete.c b/c/src/exec/rtems/src/msgqdelete.c deleted file mode 100644 index 715fb7bced..0000000000 --- a/c/src/exec/rtems/src/msgqdelete.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_message_queue_delete - * - * This directive allows a thread to delete the message queue specified - * by the given queue identifier. - * - * Input parameters: - * id - queue id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_message_queue_delete( - Objects_Id id -) -{ - register Message_queue_Control *the_message_queue; - Objects_Locations location; - - the_message_queue = _Message_queue_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - _Objects_Close( &_Message_queue_Information, - &the_message_queue->Object ); - - _CORE_message_queue_Close( - &the_message_queue->message_queue, -#if defined(RTEMS_MULTIPROCESSING) - _Message_queue_MP_Send_object_was_deleted, -#else - NULL, -#endif - CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED - ); - - _Message_queue_Free( the_message_queue ); - -#if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( the_message_queue->attribute_set ) ) { - _Objects_MP_Close( - &_Message_queue_Information, - the_message_queue->Object.id - ); - - _Message_queue_MP_Send_process_packet( - MESSAGE_QUEUE_MP_ANNOUNCE_DELETE, - the_message_queue->Object.id, - 0, /* Not used */ - 0 - ); - } -#endif - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/msgqflush.c b/c/src/exec/rtems/src/msgqflush.c deleted file mode 100644 index b4ce3ae375..0000000000 --- a/c/src/exec/rtems/src/msgqflush.c +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_message_queue_flush - * - * This directive removes all pending messages from a queue and returns - * the number of messages removed. If no messages were present then - * a count of zero is returned. - * - * Input parameters: - * id - queue id - * count - return area for count - * - * Output parameters: - * count - number of messages removed ( 0 = empty queue ) - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_message_queue_flush( - Objects_Id id, - unsigned32 *count -) -{ - register Message_queue_Control *the_message_queue; - Objects_Locations location; - - the_message_queue = _Message_queue_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Executing->Wait.return_argument = count; - - return - _Message_queue_MP_Send_request_packet( - MESSAGE_QUEUE_MP_FLUSH_REQUEST, - id, - 0, /* buffer not used */ - 0, /* size */ - 0, /* option_set not used */ - MPCI_DEFAULT_TIMEOUT - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - *count = _CORE_message_queue_Flush( &the_message_queue->message_queue ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/msgqgetnumberpending.c b/c/src/exec/rtems/src/msgqgetnumberpending.c deleted file mode 100644 index c2cad97198..0000000000 --- a/c/src/exec/rtems/src/msgqgetnumberpending.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_message_queue_get_number_pending - * - * This directive returns the number of messages pending. - * - * Input parameters: - * id - queue id - * count - return area for count - * - * Output parameters: - * count - number of messages removed ( 0 = empty queue ) - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_message_queue_get_number_pending( - Objects_Id id, - unsigned32 *count -) -{ - register Message_queue_Control *the_message_queue; - Objects_Locations location; - - the_message_queue = _Message_queue_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Executing->Wait.return_argument = count; - - return _Message_queue_MP_Send_request_packet( - MESSAGE_QUEUE_MP_GET_NUMBER_PENDING_REQUEST, - id, - 0, /* buffer not used */ - 0, /* size */ - 0, /* option_set not used */ - MPCI_DEFAULT_TIMEOUT - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - *count = the_message_queue->message_queue.number_of_pending_messages; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/msgqident.c b/c/src/exec/rtems/src/msgqident.c deleted file mode 100644 index 253d90b616..0000000000 --- a/c/src/exec/rtems/src/msgqident.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_message_queue_ident - * - * This directive returns the system ID associated with - * the message queue name. - * - * Input parameters: - * name - user defined message queue name - * node - node(s) to be searched - * id - pointer to message queue id - * - * Output parameters: - * *id - message queue id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_message_queue_ident( - rtems_name name, - unsigned32 node, - Objects_Id *id -) -{ - Objects_Name_to_id_errors status; - - status = _Objects_Name_to_id( - &_Message_queue_Information, - name, - node, - id - ); - - return _Status_Object_name_errors_to_status[ status ]; -} diff --git a/c/src/exec/rtems/src/msgqreceive.c b/c/src/exec/rtems/src/msgqreceive.c deleted file mode 100644 index 27e66a4a49..0000000000 --- a/c/src/exec/rtems/src/msgqreceive.c +++ /dev/null @@ -1,104 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_message_queue_receive - * - * This directive dequeues a message from the designated message queue - * and copies it into the requesting thread's buffer. - * - * Input parameters: - * id - queue id - * buffer - pointer to message buffer - * size - size of message receive - * option_set - options on receive - * timeout - number of ticks to wait - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_message_queue_receive( - Objects_Id id, - void *buffer, - unsigned32 *size, - unsigned32 option_set, - rtems_interval timeout -) -{ - register Message_queue_Control *the_message_queue; - Objects_Locations location; - boolean wait; - - the_message_queue = _Message_queue_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - return _Message_queue_MP_Send_request_packet( - MESSAGE_QUEUE_MP_RECEIVE_REQUEST, - id, - buffer, - size, - option_set, - timeout - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( _Options_Is_no_wait( option_set ) ) - wait = FALSE; - else - wait = TRUE; - - _CORE_message_queue_Seize( - &the_message_queue->message_queue, - the_message_queue->Object.id, - buffer, - size, - wait, - timeout - ); - _Thread_Enable_dispatch(); - return _Message_queue_Translate_core_message_queue_return_code( - _Thread_Executing->Wait.return_code - ); - - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/msgqsend.c b/c/src/exec/rtems/src/msgqsend.c deleted file mode 100644 index 2010e4a6b9..0000000000 --- a/c/src/exec/rtems/src/msgqsend.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_message_queue_send - * - * This routine implements the directives q_send. It sends a - * message to the specified message queue. - * - * Input parameters: - * id - pointer to message queue - * buffer - pointer to message buffer - * size - size of message to sent urgently - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_message_queue_send( - Objects_Id id, - void *buffer, - unsigned32 size -) -{ - return( _Message_queue_Submit(id, buffer, size, MESSAGE_QUEUE_SEND_REQUEST) ); -} diff --git a/c/src/exec/rtems/src/msgqsubmit.c b/c/src/exec/rtems/src/msgqsubmit.c deleted file mode 100644 index 9f7993c88e..0000000000 --- a/c/src/exec/rtems/src/msgqsubmit.c +++ /dev/null @@ -1,144 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * _Message_queue_Submit - * - * This routine implements the directives rtems_message_queue_send - * and rtems_message_queue_urgent. It processes a message that is - * to be submitted to the designated message queue. The message will - * either be processed as a send send message which it will be inserted - * at the rear of the queue or it will be processed as an urgent message - * which will be inserted at the front of the queue. - * - * Input parameters: - * id - pointer to message queue - * buffer - pointer to message buffer - * size - size in bytes of message to send - * submit_type - send or urgent message - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -#if defined(RTEMS_MULTIPROCESSING) -#define MESSAGE_QUEUE_MP_HANDLER _Message_queue_Core_message_queue_mp_support -#else -#define MESSAGE_QUEUE_MP_HANDLER NULL -#endif - -rtems_status_code _Message_queue_Submit( - Objects_Id id, - void *buffer, - unsigned32 size, - Message_queue_Submit_types submit_type -) -{ - register Message_queue_Control *the_message_queue; - Objects_Locations location; - CORE_message_queue_Status msg_status; - - the_message_queue = _Message_queue_Get( id, &location ); - switch ( location ) - { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - switch ( submit_type ) { - case MESSAGE_QUEUE_SEND_REQUEST: - return _Message_queue_MP_Send_request_packet( - MESSAGE_QUEUE_MP_SEND_REQUEST, - id, - buffer, - &size, - 0, /* option_set */ - MPCI_DEFAULT_TIMEOUT - ); - - case MESSAGE_QUEUE_URGENT_REQUEST: - return _Message_queue_MP_Send_request_packet( - MESSAGE_QUEUE_MP_URGENT_REQUEST, - id, - buffer, - &size, - 0, /* option_set */ - MPCI_DEFAULT_TIMEOUT - ); - } - break; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - switch ( submit_type ) { - case MESSAGE_QUEUE_SEND_REQUEST: - msg_status = _CORE_message_queue_Send( - &the_message_queue->message_queue, - buffer, - size, - id, - MESSAGE_QUEUE_MP_HANDLER, - FALSE, /* sender does not block */ - 0 /* no timeout */ - ); - break; - case MESSAGE_QUEUE_URGENT_REQUEST: - msg_status = _CORE_message_queue_Urgent( - &the_message_queue->message_queue, - buffer, - size, - id, - MESSAGE_QUEUE_MP_HANDLER, - FALSE, /* sender does not block */ - 0 /* no timeout */ - ); - break; - default: - return RTEMS_INTERNAL_ERROR; /* should never get here */ - } - - _Thread_Enable_dispatch(); - - /* - * Since this API does not allow for blocking sends, we can directly - * return the returned msg_status. - */ - - return - _Message_queue_Translate_core_message_queue_return_code( msg_status ); - - } - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/msgqtranslatereturncode.c b/c/src/exec/rtems/src/msgqtranslatereturncode.c deleted file mode 100644 index 69707b227e..0000000000 --- a/c/src/exec/rtems/src/msgqtranslatereturncode.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * _Message_queue_Translate_core_message_queue_return_code - * - * Input parameters: - * the_message_queue_status - message_queue status code to translate - * - * Output parameters: - * rtems status code - translated RTEMS status code - * - */ - -rtems_status_code _Message_queue_Translate_core_return_code_[] = { - RTEMS_SUCCESSFUL, /* CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL */ - RTEMS_INVALID_SIZE, /* CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE */ - RTEMS_TOO_MANY, /* CORE_MESSAGE_QUEUE_STATUS_TOO_MANY */ - RTEMS_UNSATISFIED, /* CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED */ - RTEMS_UNSATISFIED, /* CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT */ - RTEMS_OBJECT_WAS_DELETED, /* CORE_MESSAGE_QUEUE_STATUS_WAS_DELETED */ - RTEMS_TIMEOUT /* CORE_MESSAGE_QUEUE_STATUS_TIMEOUT */ -}; - -rtems_status_code _Message_queue_Translate_core_message_queue_return_code ( - unsigned32 status -) -{ -#if defined(RTEMS_MULTIPROCESSING) - if ( status == THREAD_STATUS_PROXY_BLOCKING ) - return RTEMS_PROXY_BLOCKING; - else -#endif - if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT ) - return RTEMS_INTERNAL_ERROR; - else - return _Message_queue_Translate_core_return_code_[status]; -} diff --git a/c/src/exec/rtems/src/msgqurgent.c b/c/src/exec/rtems/src/msgqurgent.c deleted file mode 100644 index ddff018b13..0000000000 --- a/c/src/exec/rtems/src/msgqurgent.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Message Queue Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_message_queue_urgent - * - * This routine implements the directives q_urgent. It urgents a - * message to the specified message queue. - * - * Input parameters: - * id - pointer to message queue - * buffer - pointer to message buffer - * size - size of message to sent urgently - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_message_queue_urgent( - Objects_Id id, - void *buffer, - unsigned32 size -) -{ - return(_Message_queue_Submit(id, buffer, size, MESSAGE_QUEUE_URGENT_REQUEST)); -} diff --git a/c/src/exec/rtems/src/part.c b/c/src/exec/rtems/src/part.c deleted file mode 100644 index add2a77f9f..0000000000 --- a/c/src/exec/rtems/src/part.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Partition Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Partition_Manager_initialization - * - * This routine initializes all partition manager related - * data structures. - * - * Input parameters: - * maximum_partitions - number of partitions to initialize - * - * Output parameters: NONE - */ - -void _Partition_Manager_initialization( - unsigned32 maximum_partitions -) -{ - _Objects_Initialize_information( - &_Partition_Information, /* object information table */ - OBJECTS_CLASSIC_API, /* object API */ - OBJECTS_RTEMS_PARTITIONS, /* object class */ - maximum_partitions, /* maximum objects of this class */ - sizeof( Partition_Control ), /* size of this object's control block */ - FALSE, /* TRUE if the name is a string */ - RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of an object name */ -#if defined(RTEMS_MULTIPROCESSING) - , - FALSE, /* TRUE if this is a global object class */ - NULL /* Proxy extraction support callout */ -#endif - ); - - /* - * Register the MP Process Packet routine. - */ - -#if defined(RTEMS_MULTIPROCESSING) - _MPCI_Register_packet_processor( - MP_PACKET_PARTITION, - _Partition_MP_Process_packet - ); -#endif - -} diff --git a/c/src/exec/rtems/src/partcreate.c b/c/src/exec/rtems/src/partcreate.c deleted file mode 100644 index ffd398b3e1..0000000000 --- a/c/src/exec/rtems/src/partcreate.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Partition Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_partition_create - * - * This directive creates a partiton of fixed sized buffers from the - * given contiguous memory area. - * - * Input parameters: - * name - user defined partition name - * starting_address - physical start address of partition - * length - physical length in bytes - * buffer_size - size of buffers in bytes - * attribute_set - partition attributes - * id - pointer to partition id - * - * Output parameters: - * id - partition id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_partition_create( - rtems_name name, - void *starting_address, - unsigned32 length, - unsigned32 buffer_size, - rtems_attribute attribute_set, - Objects_Id *id -) -{ - register Partition_Control *the_partition; - - if ( !rtems_is_name_valid( name ) ) - return RTEMS_INVALID_NAME; - - if ( length == 0 || buffer_size == 0 || length < buffer_size || - !_Partition_Is_buffer_size_aligned( buffer_size ) ) - return RTEMS_INVALID_SIZE; - - if ( !_Addresses_Is_aligned( starting_address ) ) - return RTEMS_INVALID_ADDRESS; - -#if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( attribute_set ) && - !_System_state_Is_multiprocessing ) - return RTEMS_MP_NOT_CONFIGURED; -#endif - - _Thread_Disable_dispatch(); /* prevents deletion */ - - the_partition = _Partition_Allocate(); - - if ( !the_partition ) { - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } - -#if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( attribute_set ) && - !( _Objects_MP_Allocate_and_open( &_Partition_Information, name, - the_partition->Object.id, FALSE ) ) ) { - _Partition_Free( the_partition ); - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } -#endif - - the_partition->starting_address = starting_address; - the_partition->length = length; - the_partition->buffer_size = buffer_size; - the_partition->attribute_set = attribute_set; - the_partition->number_of_used_blocks = 0; - - _Chain_Initialize( &the_partition->Memory, starting_address, - length / buffer_size, buffer_size ); - - _Objects_Open( &_Partition_Information, &the_partition->Object, name ); - - *id = the_partition->Object.id; -#if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( attribute_set ) ) - _Partition_MP_Send_process_packet( - PARTITION_MP_ANNOUNCE_CREATE, - the_partition->Object.id, - name, - 0 /* Not used */ - ); -#endif - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/partdelete.c b/c/src/exec/rtems/src/partdelete.c deleted file mode 100644 index 2872c19991..0000000000 --- a/c/src/exec/rtems/src/partdelete.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Partition Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_partition_delete - * - * This directive allows a thread to delete a partition specified by - * the partition identifier, provided that none of its buffers are - * still allocated. - * - * Input parameters: - * id - partition id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_partition_delete( - Objects_Id id -) -{ - register Partition_Control *the_partition; - Objects_Locations location; - - the_partition = _Partition_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( the_partition->number_of_used_blocks == 0 ) { - _Objects_Close( &_Partition_Information, &the_partition->Object ); - _Partition_Free( the_partition ); -#if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( the_partition->attribute_set ) ) { - - _Objects_MP_Close( - &_Partition_Information, - the_partition->Object.id - ); - - _Partition_MP_Send_process_packet( - PARTITION_MP_ANNOUNCE_DELETE, - the_partition->Object.id, - 0, /* Not used */ - 0 /* Not used */ - ); - } -#endif - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - _Thread_Enable_dispatch(); - return RTEMS_RESOURCE_IN_USE; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/partgetbuffer.c b/c/src/exec/rtems/src/partgetbuffer.c deleted file mode 100644 index 761add6727..0000000000 --- a/c/src/exec/rtems/src/partgetbuffer.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Partition Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_partition_get_buffer - * - * This directive will obtain a buffer from a buffer partition. - * - * Input parameters: - * id - partition id - * buffer - pointer to buffer address - * - * Output parameters: - * buffer - pointer to buffer address filled in - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_partition_get_buffer( - Objects_Id id, - void **buffer -) -{ - register Partition_Control *the_partition; - Objects_Locations location; - void *the_buffer; - - the_partition = _Partition_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Executing->Wait.return_argument = buffer; - return( - _Partition_MP_Send_request_packet( - PARTITION_MP_GET_BUFFER_REQUEST, - id, - 0 /* Not used */ - ) - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - the_buffer = _Partition_Allocate_buffer( the_partition ); - if ( the_buffer ) { - the_partition->number_of_used_blocks += 1; - _Thread_Enable_dispatch(); - *buffer = the_buffer; - return RTEMS_SUCCESSFUL; - } - _Thread_Enable_dispatch(); - return RTEMS_UNSATISFIED; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/partident.c b/c/src/exec/rtems/src/partident.c deleted file mode 100644 index ce65b76ae9..0000000000 --- a/c/src/exec/rtems/src/partident.c +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Partition Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_partition_ident - * - * This directive returns the system ID associated with - * the partition name. - * - * Input parameters: - * name - user defined partition name - * node - node(s) to be searched - * id - pointer to partition id - * - * Output parameters: - * *id - partition id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_partition_ident( - rtems_name name, - unsigned32 node, - Objects_Id *id -) -{ - Objects_Name_to_id_errors status; - - status = _Objects_Name_to_id( &_Partition_Information, name, node, id ); - - return _Status_Object_name_errors_to_status[ status ]; -} diff --git a/c/src/exec/rtems/src/partmp.c b/c/src/exec/rtems/src/partmp.c deleted file mode 100644 index 88838f86b3..0000000000 --- a/c/src/exec/rtems/src/partmp.c +++ /dev/null @@ -1,301 +0,0 @@ -/* - * Multiprocessing Support for the Partition Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Partition_MP_Send_process_packet - * - */ - -void _Partition_MP_Send_process_packet ( - Partition_MP_Remote_operations operation, - Objects_Id partition_id, - rtems_name name, - Objects_Id proxy_id -) -{ - Partition_MP_Packet *the_packet; - unsigned32 node; - - switch ( operation ) { - - case PARTITION_MP_ANNOUNCE_CREATE: - case PARTITION_MP_ANNOUNCE_DELETE: - case PARTITION_MP_EXTRACT_PROXY: - - the_packet = _Partition_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_PARTITION; - the_packet->Prefix.length = sizeof ( Partition_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( Partition_MP_Packet ); - the_packet->operation = operation; - the_packet->Prefix.id = partition_id; - the_packet->name = name; - the_packet->proxy_id = proxy_id; - - if ( operation == PARTITION_MP_EXTRACT_PROXY ) - node = rtems_get_node( partition_id ); - else - node = MPCI_ALL_NODES; - - _MPCI_Send_process_packet( node, &the_packet->Prefix ); - break; - - case PARTITION_MP_GET_BUFFER_REQUEST: - case PARTITION_MP_GET_BUFFER_RESPONSE: - case PARTITION_MP_RETURN_BUFFER_REQUEST: - case PARTITION_MP_RETURN_BUFFER_RESPONSE: - break; - } -} - -/*PAGE - * - * _Partition_MP_Send_request_packet - * - */ - -rtems_status_code _Partition_MP_Send_request_packet ( - Partition_MP_Remote_operations operation, - Objects_Id partition_id, - void *buffer -) -{ - Partition_MP_Packet *the_packet; - - switch ( operation ) { - - case PARTITION_MP_GET_BUFFER_REQUEST: - case PARTITION_MP_RETURN_BUFFER_REQUEST: - - the_packet = _Partition_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_PARTITION; - the_packet->Prefix.length = sizeof ( Partition_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( Partition_MP_Packet ); - the_packet->operation = operation; - the_packet->Prefix.id = partition_id; - the_packet->buffer = buffer; - - return - _MPCI_Send_request_packet( - rtems_get_node( partition_id ), - &the_packet->Prefix, - STATES_READY /* Not used */ - ); - - break; - - case PARTITION_MP_ANNOUNCE_CREATE: - case PARTITION_MP_ANNOUNCE_DELETE: - case PARTITION_MP_EXTRACT_PROXY: - case PARTITION_MP_GET_BUFFER_RESPONSE: - case PARTITION_MP_RETURN_BUFFER_RESPONSE: - break; - - } - /* - * The following line is included to satisfy compilers which - * produce warnings when a function does not end with a return. - */ - return RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * _Partition_MP_Send_response_packet - * - */ - -void _Partition_MP_Send_response_packet ( - Partition_MP_Remote_operations operation, - Objects_Id partition_id, - Thread_Control *the_thread -) -{ - Partition_MP_Packet *the_packet; - - switch ( operation ) { - - case PARTITION_MP_GET_BUFFER_RESPONSE: - case PARTITION_MP_RETURN_BUFFER_RESPONSE: - - the_packet = ( Partition_MP_Packet *) the_thread->receive_packet; - -/* - * The packet being returned already contains the class, length, and - * to_convert fields, therefore they are not set in this routine. - */ - the_packet->operation = operation; - the_packet->Prefix.id = the_packet->Prefix.source_tid; - - _MPCI_Send_response_packet( - rtems_get_node( the_packet->Prefix.source_tid ), - &the_packet->Prefix - ); - break; - - case PARTITION_MP_ANNOUNCE_CREATE: - case PARTITION_MP_ANNOUNCE_DELETE: - case PARTITION_MP_EXTRACT_PROXY: - case PARTITION_MP_GET_BUFFER_REQUEST: - case PARTITION_MP_RETURN_BUFFER_REQUEST: - break; - - } -} - -/*PAGE - * - * - * _Partition_MP_Process_packet - * - */ - -void _Partition_MP_Process_packet ( - rtems_packet_prefix *the_packet_prefix -) -{ - Partition_MP_Packet *the_packet; - Thread_Control *the_thread; - boolean ignored; - - the_packet = (Partition_MP_Packet *) the_packet_prefix; - - switch ( the_packet->operation ) { - - case PARTITION_MP_ANNOUNCE_CREATE: - - ignored = _Objects_MP_Allocate_and_open( - &_Partition_Information, - the_packet->name, - the_packet->Prefix.id, - TRUE - ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case PARTITION_MP_ANNOUNCE_DELETE: - - _Objects_MP_Close( &_Partition_Information, the_packet->Prefix.id ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case PARTITION_MP_EXTRACT_PROXY: - - the_thread = _Thread_MP_Find_proxy( the_packet->proxy_id ); - - if ( ! _Thread_Is_null( the_thread ) ) - _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case PARTITION_MP_GET_BUFFER_REQUEST: - - the_packet->Prefix.return_code = rtems_partition_get_buffer( - the_packet->Prefix.id, - &the_packet->buffer - ); - - _Partition_MP_Send_response_packet( - PARTITION_MP_GET_BUFFER_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - case PARTITION_MP_GET_BUFFER_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - *(void **)the_thread->Wait.return_argument = the_packet->buffer; - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case PARTITION_MP_RETURN_BUFFER_REQUEST: - - the_packet->Prefix.return_code = rtems_partition_return_buffer( - the_packet->Prefix.id, - the_packet->buffer - ); - - _Partition_MP_Send_response_packet( - PARTITION_MP_RETURN_BUFFER_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - case PARTITION_MP_RETURN_BUFFER_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - } -} - -/*PAGE - * - * _Partition_MP_Send_object_was_deleted - * - * This routine is not needed by the Partition since a partition - * cannot be deleted when buffers are in use. - * - */ - -/*PAGE - * - * _Partition_MP_Send_extract_proxy - * - */ - -void _Partition_MP_Send_extract_proxy ( - Thread_Control *the_thread -) -{ - _Partition_MP_Send_process_packet( - PARTITION_MP_EXTRACT_PROXY, - the_thread->Wait.id, - (rtems_name) 0, - the_thread->Object.id - ); - -} - -/*PAGE - * - * _Partition_MP_Get_packet - * - */ - -Partition_MP_Packet *_Partition_MP_Get_packet ( void ) -{ - return ( (Partition_MP_Packet *) _MPCI_Get_packet() ); -} - -/* end of file */ diff --git a/c/src/exec/rtems/src/partreturnbuffer.c b/c/src/exec/rtems/src/partreturnbuffer.c deleted file mode 100644 index 2e8008c146..0000000000 --- a/c/src/exec/rtems/src/partreturnbuffer.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Partition Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_partition_return_buffer - * - * This directive will return the given buffer to the specified - * buffer partition. - * - * Input parameters: - * id - partition id - * buffer - pointer to buffer address - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_partition_return_buffer( - Objects_Id id, - void *buffer -) -{ - register Partition_Control *the_partition; - Objects_Locations location; - - the_partition = _Partition_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - return _Partition_MP_Send_request_packet( - PARTITION_MP_RETURN_BUFFER_REQUEST, - id, - buffer - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( _Partition_Is_buffer_valid( buffer, the_partition ) ) { - _Partition_Free_buffer( the_partition, buffer ); - the_partition->number_of_used_blocks -= 1; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - _Thread_Enable_dispatch(); - return RTEMS_INVALID_ADDRESS; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/ratemon.c b/c/src/exec/rtems/src/ratemon.c deleted file mode 100644 index 979787afa3..0000000000 --- a/c/src/exec/rtems/src/ratemon.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Rate Monotonic Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Rate_monotonic_Manager_initialization - * - * This routine initializes all Rate Monotonic Manager related - * data structures. - * - * Input parameters: - * maximum_periods - number of periods timers to initialize - * - * Output parameters: NONE - * - * NOTE: The Rate Monotonic Manager is built on top of the Watchdog - * Handler. - */ - -void _Rate_monotonic_Manager_initialization( - unsigned32 maximum_periods -) -{ - _Objects_Initialize_information( - &_Rate_monotonic_Information, /* object information table */ - OBJECTS_CLASSIC_API, /* object API */ - OBJECTS_RTEMS_PERIODS, /* object class */ - maximum_periods, /* maximum objects of this class */ - sizeof( Rate_monotonic_Control ), /* size of this object's control block */ - FALSE, /* TRUE if the name is a string */ - RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of an object name */ -#if defined(RTEMS_MULTIPROCESSING) - , - FALSE, /* TRUE if this is a global object class */ - NULL /* Proxy extraction support callout */ -#endif - ); -} diff --git a/c/src/exec/rtems/src/ratemoncancel.c b/c/src/exec/rtems/src/ratemoncancel.c deleted file mode 100644 index 6281b6527e..0000000000 --- a/c/src/exec/rtems/src/ratemoncancel.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Rate Monotonic Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_rate_monotonic_cancel - * - * This directive allows a thread to cancel a rate monotonic timer. - * - * Input parameters: - * id - rate monotonic id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful and caller is not the owning thread - * error code - if unsuccessful - */ - -rtems_status_code rtems_rate_monotonic_cancel( - Objects_Id id -) -{ - Rate_monotonic_Control *the_period; - Objects_Locations location; - - the_period = _Rate_monotonic_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: - return RTEMS_INTERNAL_ERROR; /* should never return this */ - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( !_Thread_Is_executing( the_period->owner ) ) { - _Thread_Enable_dispatch(); - return RTEMS_NOT_OWNER_OF_RESOURCE; - } - (void) _Watchdog_Remove( &the_period->Timer ); - the_period->state = RATE_MONOTONIC_INACTIVE; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/ratemoncreate.c b/c/src/exec/rtems/src/ratemoncreate.c deleted file mode 100644 index a27fa2ee7a..0000000000 --- a/c/src/exec/rtems/src/ratemoncreate.c +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Rate Monotonic Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_rate_monotonic_create - * - * This directive creates a rate monotonic timer and performs - * some initialization. - * - * Input parameters: - * name - name of period - * id - pointer to rate monotonic id - * - * Output parameters: - * id - rate monotonic id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_rate_monotonic_create( - rtems_name name, - Objects_Id *id -) -{ - Rate_monotonic_Control *the_period; - - if ( !rtems_is_name_valid( name ) ) - return RTEMS_INVALID_NAME; - - _Thread_Disable_dispatch(); /* to prevent deletion */ - - the_period = _Rate_monotonic_Allocate(); - - if ( !the_period ) { - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } - - the_period->owner = _Thread_Executing; - the_period->state = RATE_MONOTONIC_INACTIVE; - - _Objects_Open( &_Rate_monotonic_Information, &the_period->Object, name ); - - *id = the_period->Object.id; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/ratemondelete.c b/c/src/exec/rtems/src/ratemondelete.c deleted file mode 100644 index 8d144e1b09..0000000000 --- a/c/src/exec/rtems/src/ratemondelete.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Rate Monotonic Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_rate_monotonic_delete - * - * This directive allows a thread to delete a rate monotonic timer. - * - * Input parameters: - * id - rate monotonic id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_rate_monotonic_delete( - Objects_Id id -) -{ - Rate_monotonic_Control *the_period; - Objects_Locations location; - - the_period = _Rate_monotonic_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - _Objects_Close( &_Rate_monotonic_Information, &the_period->Object ); - (void) _Watchdog_Remove( &the_period->Timer ); - the_period->state = RATE_MONOTONIC_INACTIVE; - _Rate_monotonic_Free( the_period ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/ratemongetstatus.c b/c/src/exec/rtems/src/ratemongetstatus.c deleted file mode 100644 index a53a586974..0000000000 --- a/c/src/exec/rtems/src/ratemongetstatus.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Rate Monotonic Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_rate_monotonic_get_status - * - * This directive allows a thread to obtain status information on a - * period. - * - * Input parameters: - * id - rate monotonic id - * status - pointer to status control block - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - * - */ - -rtems_status_code rtems_rate_monotonic_get_status( - Objects_Id id, - rtems_rate_monotonic_period_status *status -) -{ - Objects_Locations location; - Rate_monotonic_Control *the_period; - - if ( status == NULL ) - return RTEMS_INVALID_ADDRESS; - - the_period = _Rate_monotonic_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - status->state = the_period->state; - - if ( status->state == RATE_MONOTONIC_INACTIVE ) { - status->ticks_since_last_period = 0; - status->ticks_executed_since_last_period = 0; - } else { - status->ticks_since_last_period = - _Watchdog_Ticks_since_boot - the_period->time_at_period; - - status->ticks_executed_since_last_period = - the_period->owner->ticks_executed - - the_period->owner_ticks_executed_at_period; - } - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/ratemonident.c b/c/src/exec/rtems/src/ratemonident.c deleted file mode 100644 index 33d4e3fd3d..0000000000 --- a/c/src/exec/rtems/src/ratemonident.c +++ /dev/null @@ -1,55 +0,0 @@ -/* - * Rate Monotonic Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_rate_monotonic_ident - * - * This directive returns the system ID associated with - * the rate monotonic period name. - * - * Input parameters: - * name - user defined period name - * id - pointer to period id - * - * Output parameters: - * *id - region id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_rate_monotonic_ident( - rtems_name name, - Objects_Id *id -) -{ - Objects_Name_to_id_errors status; - - status = _Objects_Name_to_id( - &_Rate_monotonic_Information, - name, - OBJECTS_SEARCH_LOCAL_NODE, - id - ); - - return _Status_Object_name_errors_to_status[ status ]; -} diff --git a/c/src/exec/rtems/src/ratemonperiod.c b/c/src/exec/rtems/src/ratemonperiod.c deleted file mode 100644 index 854f39f812..0000000000 --- a/c/src/exec/rtems/src/ratemonperiod.c +++ /dev/null @@ -1,163 +0,0 @@ -/* - * Rate Monotonic Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_rate_monotonic_period - * - * This directive allows a thread to manipulate a rate monotonic timer. - * - * Input parameters: - * id - rate monotonic id - * length - length of period (in ticks) - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_rate_monotonic_period( - Objects_Id id, - rtems_interval length -) -{ - Rate_monotonic_Control *the_period; - Objects_Locations location; - rtems_status_code return_value; - rtems_rate_monotonic_period_states local_state; - ISR_Level level; - - the_period = _Rate_monotonic_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( !_Thread_Is_executing( the_period->owner ) ) { - _Thread_Enable_dispatch(); - return RTEMS_NOT_OWNER_OF_RESOURCE; - } - - if ( length == RTEMS_PERIOD_STATUS ) { - switch ( the_period->state ) { - case RATE_MONOTONIC_INACTIVE: - return_value = RTEMS_NOT_DEFINED; - break; - case RATE_MONOTONIC_ACTIVE: - return_value = RTEMS_SUCCESSFUL; - break; - case RATE_MONOTONIC_EXPIRED: - return_value = RTEMS_TIMEOUT; - break; - default: /* unreached -- only to remove warnings */ - return_value = RTEMS_INTERNAL_ERROR; - break; - } - _Thread_Enable_dispatch(); - return( return_value ); - } - - _ISR_Disable( level ); - switch ( the_period->state ) { - case RATE_MONOTONIC_INACTIVE: - _ISR_Enable( level ); - the_period->state = RATE_MONOTONIC_ACTIVE; - _Watchdog_Initialize( - &the_period->Timer, - _Rate_monotonic_Timeout, - id, - NULL - ); - - the_period->owner_ticks_executed_at_period = - _Thread_Executing->ticks_executed; - - the_period->time_at_period = _Watchdog_Ticks_since_boot; - the_period->next_length = length; - - _Watchdog_Insert_ticks( &the_period->Timer, length ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - - case RATE_MONOTONIC_ACTIVE: - /* - * This tells the _Rate_monotonic_Timeout that this task is - * in the process of blocking on the period and that we - * may be changing the length of the next period. - */ - - the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING; - the_period->next_length = length; - - _ISR_Enable( level ); - - _Thread_Executing->Wait.id = the_period->Object.id; - _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD ); - - /* - * Did the watchdog timer expire while we were actually blocking - * on it? - */ - - _ISR_Disable( level ); - local_state = the_period->state; - the_period->state = RATE_MONOTONIC_ACTIVE; - _ISR_Enable( level ); - - /* - * If it did, then we want to unblock ourself and continue as - * if nothing happen. The period was reset in the timeout routine. - */ - - if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING ) - _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD ); - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - break; - - case RATE_MONOTONIC_EXPIRED: - _ISR_Enable( level ); - the_period->state = RATE_MONOTONIC_ACTIVE; - the_period->owner_ticks_executed_at_period = - _Thread_Executing->ticks_executed; - the_period->time_at_period = _Watchdog_Ticks_since_boot; - the_period->next_length = length; - - _Watchdog_Insert_ticks( &the_period->Timer, length ); - _Thread_Enable_dispatch(); - return RTEMS_TIMEOUT; - - case RATE_MONOTONIC_OWNER_IS_BLOCKING: - case RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING: - /* - * These should never happen. - */ - break; - } - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/ratemontimeout.c b/c/src/exec/rtems/src/ratemontimeout.c deleted file mode 100644 index 607cee16ce..0000000000 --- a/c/src/exec/rtems/src/ratemontimeout.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Rate Monotonic Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Rate_monotonic_Timeout - * - * This routine processes a period ending. If the owning thread - * is waiting for the period, that thread is unblocked and the - * period reinitiated. Otherwise, the period is expired. - * This routine is called by the watchdog handler. - * - * Input parameters: - * id - period id - * - * Output parameters: NONE - */ - -void _Rate_monotonic_Timeout( - Objects_Id id, - void *ignored -) -{ - Rate_monotonic_Control *the_period; - Objects_Locations location; - Thread_Control *the_thread; - - /* - * When we get here, the Timer is already off the chain so we do not - * have to worry about that -- hence no _Watchdog_Remove(). - */ - - the_period = _Rate_monotonic_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* impossible */ - case OBJECTS_ERROR: - break; - - case OBJECTS_LOCAL: - the_thread = the_period->owner; - if ( _States_Is_waiting_for_period( the_thread->current_state ) && - the_thread->Wait.id == the_period->Object.id ) { - _Thread_Unblock( the_thread ); - the_period->owner_ticks_executed_at_period = - the_thread->ticks_executed; - - the_period->time_at_period = _Watchdog_Ticks_since_boot; - - _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); - } else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) { - the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING; - the_period->owner_ticks_executed_at_period = - the_thread->ticks_executed; - - the_period->time_at_period = _Watchdog_Ticks_since_boot; - _Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length ); - } else - the_period->state = RATE_MONOTONIC_EXPIRED; - _Thread_Unnest_dispatch(); - break; - } -} diff --git a/c/src/exec/rtems/src/region.c b/c/src/exec/rtems/src/region.c deleted file mode 100644 index ee627e65a4..0000000000 --- a/c/src/exec/rtems/src/region.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Region Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Region_Manager_initialization - * - * This routine initializes all region manager related data structures. - * - * Input parameters: - * maximum_regions - number of regions to initialize - * - * Output parameters: NONE - */ - -void _Region_Manager_initialization( - unsigned32 maximum_regions -) -{ - /* XXX move me */ - _API_Mutex_Initialization( 1 ); - _API_Mutex_Allocate( _RTEMS_Allocator_Mutex ); - - _Objects_Initialize_information( - &_Region_Information, /* object information table */ - OBJECTS_CLASSIC_API, /* object API */ - OBJECTS_RTEMS_REGIONS, /* object class */ - maximum_regions, /* maximum objects of this class */ - sizeof( Region_Control ), /* size of this object's control block */ - FALSE, /* TRUE if the name is a string */ - RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of an object name */ -#if defined(RTEMS_MULTIPROCESSING) - , - FALSE, /* TRUE if this is a global object class */ - NULL /* Proxy extraction support callout */ -#endif - ); - - /* - * Register the MP Process Packet routine. - */ - -#if defined(RTEMS_MULTIPROCESSING) - _MPCI_Register_packet_processor( - MP_PACKET_REGION, - 0 /* XXX _Region_MP_Process_packet */ - ); -#endif - -} - diff --git a/c/src/exec/rtems/src/regioncreate.c b/c/src/exec/rtems/src/regioncreate.c deleted file mode 100644 index 1bb8620a88..0000000000 --- a/c/src/exec/rtems/src/regioncreate.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Region Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_region_create - * - * This directive creates a region of physical contiguous memory area - * from which variable sized segments can be allocated. - * - * Input parameters: - * name - user defined region name - * starting_address - physical start address of region - * length - physical length in bytes - * page_size - page size in bytes - * attribute_set - region attributes - * id - address of region id to set - * - * Output parameters: - * id - region id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_region_create( - rtems_name name, - void *starting_address, - unsigned32 length, - unsigned32 page_size, - rtems_attribute attribute_set, - Objects_Id *id -) -{ - Region_Control *the_region; - - if ( !rtems_is_name_valid( name ) ) - return RTEMS_INVALID_NAME; - - if ( !_Addresses_Is_aligned( starting_address ) ) - return RTEMS_INVALID_ADDRESS; - - _RTEMS_Lock_allocator(); /* to prevent deletion */ - - the_region = _Region_Allocate(); - - if ( !the_region ) { - _RTEMS_Unlock_allocator(); - return RTEMS_TOO_MANY; - } - - the_region->maximum_segment_size = - _Heap_Initialize(&the_region->Memory, starting_address, length, page_size); - - if ( !the_region->maximum_segment_size ) { - _Region_Free( the_region ); - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_SIZE; - } - - the_region->starting_address = starting_address; - the_region->length = length; - the_region->page_size = page_size; - the_region->attribute_set = attribute_set; - the_region->number_of_used_blocks = 0; - - _Thread_queue_Initialize( - &the_region->Wait_queue, - _Attributes_Is_priority( attribute_set ) ? - THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO, - STATES_WAITING_FOR_SEGMENT, - RTEMS_TIMEOUT - ); - - _Objects_Open( &_Region_Information, &the_region->Object, name ); - - *id = the_region->Object.id; - _RTEMS_Unlock_allocator(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/regiondelete.c b/c/src/exec/rtems/src/regiondelete.c deleted file mode 100644 index 9b7c297d7a..0000000000 --- a/c/src/exec/rtems/src/regiondelete.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Region Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_region_delete - * - * This directive allows a thread to delete a region specified by - * the region identifier, provided that none of its segments are - * still allocated. - * - * Input parameters: - * id - region id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_region_delete( - Objects_Id id -) -{ - register Region_Control *the_region; - Objects_Locations location; - - _RTEMS_Lock_allocator(); - the_region = _Region_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* this error cannot be returned */ - _RTEMS_Unlock_allocator(); - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - _Region_Debug_Walk( the_region, 5 ); - if ( the_region->number_of_used_blocks == 0 ) { - _Objects_Close( &_Region_Information, &the_region->Object ); - _Region_Free( the_region ); - _RTEMS_Unlock_allocator(); - return RTEMS_SUCCESSFUL; - } - _RTEMS_Unlock_allocator(); - return RTEMS_RESOURCE_IN_USE; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/regionextend.c b/c/src/exec/rtems/src/regionextend.c deleted file mode 100644 index c36969beda..0000000000 --- a/c/src/exec/rtems/src/regionextend.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Region Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_region_extend - * - * This directive attempts to grow a region of physical contiguous memory area - * from which variable sized segments can be allocated. - * - * Input parameters: - * id - id of region to grow - * start - starting address of memory area for extension - * length - physical length in bytes to grow the region - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_region_extend( - Objects_Id id, - void *starting_address, - unsigned32 length -) -{ - Region_Control *the_region; - Objects_Locations location; - unsigned32 amount_extended; - Heap_Extend_status heap_status; - rtems_status_code status; - - status = RTEMS_SUCCESSFUL; - - _RTEMS_Lock_allocator(); /* to prevent deletion */ - the_region = _Region_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* this error cannot be returned */ - _RTEMS_Unlock_allocator(); - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - - heap_status = _Heap_Extend( - &the_region->Memory, - starting_address, - length, - &amount_extended - ); - - switch ( heap_status ) { - case HEAP_EXTEND_SUCCESSFUL: - the_region->length += amount_extended; - the_region->maximum_segment_size += amount_extended; - break; - case HEAP_EXTEND_ERROR: - status = RTEMS_INVALID_ADDRESS; - break; - case HEAP_EXTEND_NOT_IMPLEMENTED: - status = RTEMS_NOT_IMPLEMENTED; - break; - } - _RTEMS_Unlock_allocator(); - return( status ); - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/regiongetinfo.c b/c/src/exec/rtems/src/regiongetinfo.c deleted file mode 100644 index 2f7f21b72a..0000000000 --- a/c/src/exec/rtems/src/regiongetinfo.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Region Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_region_get_information - * - * This directive will return information about the region specified. - * - * Input parameters: - * id - region id - * the_info - pointer to region information block - * - * Output parameters: - * *the_info - region information block filled in - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_region_get_information( - Objects_Id id, - Heap_Information_block *the_info -) -{ - register Region_Control *the_region; - Objects_Locations location; - - if ( !the_info ) - return RTEMS_INVALID_ADDRESS; - - _RTEMS_Lock_allocator(); - the_region = _Region_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* this error cannot be returned */ - _RTEMS_Unlock_allocator(); - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - - if ( _Heap_Get_information( &the_region->Memory, the_info ) ) { - _RTEMS_Unlock_allocator(); - return RTEMS_SUCCESSFUL; - } - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_ADDRESS; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/regiongetsegment.c b/c/src/exec/rtems/src/regiongetsegment.c deleted file mode 100644 index 613cec1303..0000000000 --- a/c/src/exec/rtems/src/regiongetsegment.c +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Region Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_region_get_segment - * - * This directive will obtain a segment from the given region. - * - * Input parameters: - * id - region id - * size - segment size in bytes - * option_set - wait option - * timeout - number of ticks to wait (0 means wait forever) - * segment - pointer to segment address - * - * Output parameters: - * segment - pointer to segment address filled in - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_region_get_segment( - Objects_Id id, - unsigned32 size, - rtems_option option_set, - rtems_interval timeout, - void **segment -) -{ - register Region_Control *the_region; - Objects_Locations location; - Thread_Control *executing; - void *the_segment; - - *segment = NULL; - - if ( size == 0 ) - return RTEMS_INVALID_SIZE; - - _RTEMS_Lock_allocator(); - executing = _Thread_Executing; - the_region = _Region_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* this error cannot be returned */ - _RTEMS_Unlock_allocator(); - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( size > the_region->maximum_segment_size ) { - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_SIZE; - } - - _Region_Debug_Walk( the_region, 1 ); - - the_segment = _Region_Allocate_segment( the_region, size ); - - _Region_Debug_Walk( the_region, 2 ); - - if ( the_segment ) { - the_region->number_of_used_blocks += 1; - _RTEMS_Unlock_allocator(); - *segment = the_segment; - return RTEMS_SUCCESSFUL; - } - - if ( _Options_Is_no_wait( option_set ) ) { - _RTEMS_Unlock_allocator(); - return RTEMS_UNSATISFIED; - } - - executing->Wait.queue = &the_region->Wait_queue; - executing->Wait.id = id; - executing->Wait.count = size; - executing->Wait.return_argument = (unsigned32 *) segment; - - _Thread_queue_Enter_critical_section( &the_region->Wait_queue ); - - _Thread_queue_Enqueue( &the_region->Wait_queue, timeout ); - - _RTEMS_Unlock_allocator(); - return (rtems_status_code) executing->Wait.return_code; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/regiongetsegmentsize.c b/c/src/exec/rtems/src/regiongetsegmentsize.c deleted file mode 100644 index abdf755173..0000000000 --- a/c/src/exec/rtems/src/regiongetsegmentsize.c +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Region Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_region_get_segment_size - * - * This directive will return the size of the segment indicated - * - * Input parameters: - * id - region id - * segment - segment address - * size - pointer to segment size in bytes - * - * Output parameters: - * size - segment size in bytes filled in - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_region_get_segment_size( - Objects_Id id, - void *segment, - unsigned32 *size -) -{ - register Region_Control *the_region; - Objects_Locations location; - Thread_Control *executing; - - _RTEMS_Lock_allocator(); - executing = _Thread_Executing; - the_region = _Region_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* this error cannot be returned */ - _RTEMS_Unlock_allocator(); - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - - if ( _Heap_Size_of_user_area( &the_region->Memory, segment, size ) ) { - _RTEMS_Unlock_allocator(); - return RTEMS_SUCCESSFUL; - } - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_ADDRESS; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/regionident.c b/c/src/exec/rtems/src/regionident.c deleted file mode 100644 index b1e9ec77b0..0000000000 --- a/c/src/exec/rtems/src/regionident.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Region Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_region_ident - * - * This directive returns the system ID associated with - * the region name. - * - * Input parameters: - * name - user defined region name - * id - pointer to region id - * - * Output parameters: - * *id - region id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_region_ident( - rtems_name name, - Objects_Id *id -) -{ - Objects_Name_to_id_errors status; - - status = _Objects_Name_to_id( - &_Region_Information, - name, - OBJECTS_SEARCH_LOCAL_NODE, - id - ); - - return _Status_Object_name_errors_to_status[ status ]; -} diff --git a/c/src/exec/rtems/src/regionmp.c b/c/src/exec/rtems/src/regionmp.c deleted file mode 100644 index bd19e43ad0..0000000000 --- a/c/src/exec/rtems/src/regionmp.c +++ /dev/null @@ -1,309 +0,0 @@ -/* - * Multiprocessing Support for the Region Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Region_MP_Send_process_packet - * - */ - -void _Region_MP_Send_process_packet ( - Region_MP_Remote_operations operation, - Objects_Id region_id, - rtems_name name, - Objects_Id proxy_id -) -{ - Region_MP_Packet *the_packet; - unsigned32 node; - - switch ( operation ) { - - case REGION_MP_ANNOUNCE_CREATE: - case REGION_MP_ANNOUNCE_DELETE: - case REGION_MP_EXTRACT_PROXY: - - the_packet = _Region_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_REGION; - the_packet->Prefix.length = sizeof ( Region_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( Region_MP_Packet ); - the_packet->operation = operation; - the_packet->Prefix.id = region_id; - the_packet->name = name; - the_packet->proxy_id = proxy_id; - - if ( operation == REGION_MP_EXTRACT_PROXY ) - node = rtems_get_node( region_id ); - else - node = MPCI_ALL_NODES; - - _MPCI_Send_process_packet( node, &the_packet->Prefix ); - break; - - case REGION_MP_GET_SEGMENT_REQUEST: - case REGION_MP_GET_SEGMENT_RESPONSE: - case REGION_MP_RETURN_SEGMENT_REQUEST: - case REGION_MP_RETURN_SEGMENT_RESPONSE: - break; - } -} - -/*PAGE - * - * _Region_MP_Send_request_packet - * - */ - -rtems_status_code _Region_MP_Send_request_packet ( - Region_MP_Remote_operations operation, - Objects_Id region_id, - void *segment, - unsigned32 size, - rtems_option option_set, - rtems_interval timeout -) -{ - Region_MP_Packet *the_packet; - - switch ( operation ) { - - case REGION_MP_GET_SEGMENT_REQUEST: - case REGION_MP_RETURN_SEGMENT_REQUEST: - - the_packet = _Region_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_REGION; - the_packet->Prefix.length = sizeof ( Region_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( Region_MP_Packet ); - if ( ! _Options_Is_no_wait(option_set)) - the_packet->Prefix.timeout = timeout; - - the_packet->operation = operation; - the_packet->Prefix.id = region_id; - the_packet->segment = segment; - the_packet->size = size; - the_packet->option_set = option_set; - - return (rtems_status_code) _MPCI_Send_request_packet( - rtems_get_node( region_id ), - &the_packet->Prefix, - STATES_READY /* Not used */ - ); - break; - - case REGION_MP_ANNOUNCE_CREATE: - case REGION_MP_ANNOUNCE_DELETE: - case REGION_MP_EXTRACT_PROXY: - case REGION_MP_GET_SEGMENT_RESPONSE: - case REGION_MP_RETURN_SEGMENT_RESPONSE: - break; - - } - /* - * The following line is included to satisfy compilers which - * produce warnings when a function does not end with a return. - */ - return RTEMS_INTERNAL_ERROR; -} - -/*PAGE - * - * _Region_MP_Send_response_packet - * - */ - -void _Region_MP_Send_response_packet ( - Region_MP_Remote_operations operation, - Objects_Id region_id, - Thread_Control *the_thread -) -{ - Region_MP_Packet *the_packet; - - switch ( operation ) { - - case REGION_MP_GET_SEGMENT_RESPONSE: - case REGION_MP_RETURN_SEGMENT_RESPONSE: - - the_packet = ( Region_MP_Packet *) the_thread->receive_packet; - -/* - * The packet being returned already contains the class, length, and - * to_convert fields, therefore they are not set in this routine. - */ - the_packet->operation = operation; - the_packet->Prefix.id = the_packet->Prefix.source_tid; - - _MPCI_Send_response_packet( - rtems_get_node( the_packet->Prefix.source_tid ), - &the_packet->Prefix - ); - break; - - case REGION_MP_ANNOUNCE_CREATE: - case REGION_MP_ANNOUNCE_DELETE: - case REGION_MP_EXTRACT_PROXY: - case REGION_MP_GET_SEGMENT_REQUEST: - case REGION_MP_RETURN_SEGMENT_REQUEST: - break; - - } -} - -/*PAGE - * - * - * _Region_MP_Process_packet - * - */ - -void _Region_MP_Process_packet ( - rtems_packet_prefix *the_packet_prefix -) -{ - Region_MP_Packet *the_packet; - Thread_Control *the_thread; - boolean ignored; - - the_packet = (Region_MP_Packet *) the_packet_prefix; - - switch ( the_packet->operation ) { - - case REGION_MP_ANNOUNCE_CREATE: - - ignored = _Objects_MP_Allocate_and_open( - &_Region_Information, - the_packet->name, - the_packet->Prefix.id, - TRUE - ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case REGION_MP_ANNOUNCE_DELETE: - - _Objects_MP_Close( &_Region_Information, the_packet->Prefix.id ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case REGION_MP_EXTRACT_PROXY: - - the_thread = _Thread_MP_Find_proxy( the_packet->proxy_id ); - - if ( ! _Thread_Is_null( the_thread ) ) - _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case REGION_MP_GET_SEGMENT_REQUEST: - - the_packet->Prefix.return_code = rtems_region_get_segment( - the_packet->Prefix.id, - the_packet->size, - the_packet->option_set, - the_packet->Prefix.timeout, - &the_packet->segment - ); - - _Region_MP_Send_response_packet( - REGION_MP_GET_SEGMENT_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - case REGION_MP_GET_SEGMENT_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - *(void **)the_thread->Wait.return_argument = the_packet->segment; - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case REGION_MP_RETURN_SEGMENT_REQUEST: - - the_packet->Prefix.return_code = rtems_region_return_segment( - the_packet->Prefix.id, - the_packet->segment - ); - - _Region_MP_Send_response_packet( - REGION_MP_RETURN_SEGMENT_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - case REGION_MP_RETURN_SEGMENT_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - } -} - -/*PAGE - * - * _Region_MP_Send_object_was_deleted - * - * This routine is not needed by the Region since a region - * cannot be deleted when segments are in use. - * - */ - -/*PAGE - * - * _Region_MP_Send_extract_proxy - * - */ - -void _Region_MP_Send_extract_proxy ( - Thread_Control *the_thread -) -{ - _Region_MP_Send_process_packet( - REGION_MP_EXTRACT_PROXY, - the_thread->Wait.id, - (rtems_name) 0, - the_thread->Object.id - ); -} - -/*PAGE - * - * _Region_MP_Get_packet - * - */ - -Region_MP_Packet *_Region_MP_Get_packet ( void ) -{ - return ( (Region_MP_Packet *) _MPCI_Get_packet() ); -} - -/* end of file */ diff --git a/c/src/exec/rtems/src/regionreturnsegment.c b/c/src/exec/rtems/src/regionreturnsegment.c deleted file mode 100644 index f144145afd..0000000000 --- a/c/src/exec/rtems/src/regionreturnsegment.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * Region Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#ifdef RTEMS_REGION_SHRED_ON_FREE -#include - -#ifndef RTEMS_REGION_FREE_SHRED_PATTERN -#define RTEMS_REGION_FREE_SHRED_PATTERN 0x00 -#endif -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_region_return_segment - * - * This directive will return a segment to its region. - * - * Input parameters: - * id - region id - * segment - pointer to segment address - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_region_return_segment( - Objects_Id id, - void *segment -) -{ - register Region_Control *the_region; - Thread_Control *the_thread; - Objects_Locations location; - void **the_segment; -#ifdef RTEMS_REGION_FREE_SHRED_PATTERN - unsigned32 size; -#endif - int status; - - _RTEMS_Lock_allocator(); - the_region = _Region_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: /* this error cannot be returned */ - _RTEMS_Unlock_allocator(); - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - - _Region_Debug_Walk( the_region, 3 ); - -#ifdef RTEMS_REGION_FREE_SHRED_PATTERN - if ( _Heap_Size_of_user_area( &the_region->Memory, segment, size ) ) { - memset(segment, (RTEMS_REGION_FREE_SHRED_PATTERN & 0xFF), size); - } else { - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_ADDRESS; - } -#endif - - status = _Region_Free_segment( the_region, segment ); - - _Region_Debug_Walk( the_region, 4 ); - - if ( !status ) { - _RTEMS_Unlock_allocator(); - return RTEMS_INVALID_ADDRESS; - } - - the_region->number_of_used_blocks -= 1; - for ( ; ; ) { - the_thread = _Thread_queue_First( &the_region->Wait_queue ); - - if ( the_thread == NULL ) - break; - - the_segment = (void **) _Region_Allocate_segment( - the_region, - the_thread->Wait.count - ); - - if ( the_segment == NULL ) - break; - - *(void **)the_thread->Wait.return_argument = the_segment; - the_region->number_of_used_blocks += 1; - _Thread_queue_Extract( &the_region->Wait_queue, the_thread ); - the_thread->Wait.return_code = RTEMS_SUCCESSFUL; - } - - _RTEMS_Unlock_allocator(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/rtclock.c b/c/src/exec/rtems/src/rtclock.c deleted file mode 100644 index 7c5967f895..0000000000 --- a/c/src/exec/rtems/src/rtclock.c +++ /dev/null @@ -1,22 +0,0 @@ -/* - * Clock Manager - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include - -/* No initialization routine */ diff --git a/c/src/exec/rtems/src/rtemstimer.c b/c/src/exec/rtems/src/rtemstimer.c deleted file mode 100644 index 442f1656f7..0000000000 --- a/c/src/exec/rtems/src/rtemstimer.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Timer Manager - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Timer_Manager_initialization - * - * This routine initializes all timer manager related data structures. - * - * Input parameters: - * maximum_timers - number of timers to initialize - * - * Output parameters: NONE - */ - -void _Timer_Manager_initialization( - unsigned32 maximum_timers -) -{ - _Objects_Initialize_information( - &_Timer_Information, /* object information table */ - OBJECTS_CLASSIC_API, /* object API */ - OBJECTS_RTEMS_TIMERS, /* object class */ - maximum_timers, /* maximum objects of this class */ - sizeof( Timer_Control ), /* size of this object's control block */ - FALSE, /* TRUE if the name is a string */ - RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of an object name */ -#if defined(RTEMS_MULTIPROCESSING) - , - FALSE, /* TRUE if this is a global object class */ - NULL /* Proxy extraction support callout */ -#endif - ); - - /* - * Initialize the pointer to the Timer Server TCB to NULL indicating - * that task-based timer support is not initialized. - */ - - _Timer_Server = NULL; -} diff --git a/c/src/exec/rtems/src/sem.c b/c/src/exec/rtems/src/sem.c deleted file mode 100644 index 8c8df032a9..0000000000 --- a/c/src/exec/rtems/src/sem.c +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Semaphore Manager - * - * DESCRIPTION: - * - * This package is the implementation of the Semaphore Manager. - * This manager utilizes standard Dijkstra counting semaphores to provide - * synchronization and mutual exclusion capabilities. - * - * Directives provided are: - * - * + create a semaphore - * + get an ID of a semaphore - * + delete a semaphore - * + acquire a semaphore - * + release a semaphore - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include - -#include - -/*PAGE - * - * _Semaphore_Manager_initialization - * - * This routine initializes all semaphore manager related data structures. - * - * Input parameters: - * maximum_semaphores - maximum configured semaphores - * - * Output parameters: NONE - */ - -void _Semaphore_Manager_initialization( - unsigned32 maximum_semaphores -) -{ - _Objects_Initialize_information( - &_Semaphore_Information, /* object information table */ - OBJECTS_CLASSIC_API, /* object API */ - OBJECTS_RTEMS_SEMAPHORES, /* object class */ - maximum_semaphores, /* maximum objects of this class */ - sizeof( Semaphore_Control ), /* size of this object's control block */ - FALSE, /* TRUE if the name is a string */ - RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of an object name */ -#if defined(RTEMS_MULTIPROCESSING) - , - FALSE, /* TRUE if this is a global object class */ - NULL /* Proxy extraction support callout */ -#endif - ); - - /* - * Register the MP Process Packet routine. - */ - -#if defined(RTEMS_MULTIPROCESSING) - _MPCI_Register_packet_processor( - MP_PACKET_SEMAPHORE, - _Semaphore_MP_Process_packet - ); -#endif - -} diff --git a/c/src/exec/rtems/src/semcreate.c b/c/src/exec/rtems/src/semcreate.c deleted file mode 100644 index 5d0fffb575..0000000000 --- a/c/src/exec/rtems/src/semcreate.c +++ /dev/null @@ -1,219 +0,0 @@ -/* - * Semaphore Manager - * - * DESCRIPTION: - * - * This package is the implementation of the Semaphore Manager. - * This manager utilizes standard Dijkstra counting semaphores to provide - * synchronization and mutual exclusion capabilities. - * - * Directives provided are: - * - * + create a semaphore - * + get an ID of a semaphore - * + delete a semaphore - * + acquire a semaphore - * + release a semaphore - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include - -#include - -/*PAGE - * - * rtems_semaphore_create - * - * This directive creates a semaphore and sets the initial value based - * on the given count. A semaphore id is returned. - * - * Input parameters: - * name - user defined semaphore name - * count - initial count of semaphore - * attribute_set - semaphore attributes - * priority_ceiling - semaphore's ceiling priority - * id - pointer to semaphore id - * - * Output parameters: - * id - semaphore id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_semaphore_create( - rtems_name name, - unsigned32 count, - rtems_attribute attribute_set, - rtems_task_priority priority_ceiling, - Objects_Id *id -) -{ - register Semaphore_Control *the_semaphore; - CORE_mutex_Attributes the_mutex_attributes; - CORE_semaphore_Attributes the_semaphore_attributes; - unsigned32 lock; - - if ( !rtems_is_name_valid( name ) ) - return RTEMS_INVALID_NAME; - -#if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( attribute_set ) ) { - - if ( !_System_state_Is_multiprocessing ) - return RTEMS_MP_NOT_CONFIGURED; - - if ( _Attributes_Is_inherit_priority( attribute_set ) ) - return RTEMS_NOT_DEFINED; - - } else -#endif - - if ( _Attributes_Is_inherit_priority( attribute_set ) || - _Attributes_Is_priority_ceiling( attribute_set ) ) { - - if ( ! ( (_Attributes_Is_binary_semaphore( attribute_set ) || - _Attributes_Is_simple_binary_semaphore( attribute_set )) && - - _Attributes_Is_priority( attribute_set ) ) ) - return RTEMS_NOT_DEFINED; - - } - - if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) ) - return RTEMS_INVALID_NUMBER; - - _Thread_Disable_dispatch(); /* prevents deletion */ - - the_semaphore = _Semaphore_Allocate(); - - if ( !the_semaphore ) { - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } - -#if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( attribute_set ) && - ! ( _Objects_MP_Allocate_and_open( &_Semaphore_Information, name, - the_semaphore->Object.id, FALSE ) ) ) { - _Semaphore_Free( the_semaphore ); - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } -#endif - - the_semaphore->attribute_set = attribute_set; - - /* - * If it is not a counting semaphore, then it is either a - * simple binary semaphore or a more powerful mutex style binary - * semaphore. - */ - - if ( !_Attributes_Is_counting_semaphore( attribute_set ) ) { - if ( _Attributes_Is_inherit_priority( attribute_set ) ) - the_mutex_attributes.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT; - else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) - the_mutex_attributes.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING; - else if ( _Attributes_Is_priority( attribute_set ) ) - the_mutex_attributes.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY; - else - the_mutex_attributes.discipline = CORE_MUTEX_DISCIPLINES_FIFO; - - - if ( _Attributes_Is_binary_semaphore( attribute_set ) ) { - the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; - - switch ( the_mutex_attributes.discipline ) { - case CORE_MUTEX_DISCIPLINES_FIFO: - case CORE_MUTEX_DISCIPLINES_PRIORITY: - the_mutex_attributes.only_owner_release = FALSE; - break; - case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING: - case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT: - the_mutex_attributes.only_owner_release = TRUE; - break; - } - } else { - the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS; - the_mutex_attributes.only_owner_release = FALSE; - } - - the_mutex_attributes.priority_ceiling = priority_ceiling; - - if ( count == 1 ) - lock = CORE_MUTEX_UNLOCKED; - else - lock = CORE_MUTEX_LOCKED; - - _CORE_mutex_Initialize( - &the_semaphore->Core_control.mutex, - &the_mutex_attributes, - lock - ); - } else { - if ( _Attributes_Is_priority( attribute_set ) ) - the_semaphore_attributes.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY; - else - the_semaphore_attributes.discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO; - - /* - * This effectively disables limit checking. - */ - - the_semaphore_attributes.maximum_count = 0xFFFFFFFF; - - /* - * The following are just to make Purify happy. - */ - - the_mutex_attributes.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES; - the_mutex_attributes.priority_ceiling = PRIORITY_MINIMUM; - - _CORE_semaphore_Initialize( - &the_semaphore->Core_control.semaphore, - &the_semaphore_attributes, - count - ); - } - - _Objects_Open( &_Semaphore_Information, &the_semaphore->Object, name ); - - *id = the_semaphore->Object.id; - -#if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( attribute_set ) ) - _Semaphore_MP_Send_process_packet( - SEMAPHORE_MP_ANNOUNCE_CREATE, - the_semaphore->Object.id, - name, - 0 /* Not used */ - ); -#endif - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/semdelete.c b/c/src/exec/rtems/src/semdelete.c deleted file mode 100644 index 079d9ed810..0000000000 --- a/c/src/exec/rtems/src/semdelete.c +++ /dev/null @@ -1,132 +0,0 @@ -/* - * Semaphore Manager - * - * DESCRIPTION: - * - * This package is the implementation of the Semaphore Manager. - * This manager utilizes standard Dijkstra counting semaphores to provide - * synchronization and mutual exclusion capabilities. - * - * Directives provided are: - * - * + create a semaphore - * + get an ID of a semaphore - * + delete a semaphore - * + acquire a semaphore - * + release a semaphore - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include - -#include - -/*PAGE - * - * rtems_semaphore_delete - * - * This directive allows a thread to delete a semaphore specified by - * the semaphore id. The semaphore is freed back to the inactive - * semaphore chain. - * - * Input parameters: - * id - semaphore id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -#if defined(RTEMS_MULTIPROCESSING) -#define SEMAPHORE_MP_OBJECT_WAS_DELETED _Semaphore_MP_Send_object_was_deleted -#else -#define SEMAPHORE_MP_OBJECT_WAS_DELETED NULL -#endif - -rtems_status_code rtems_semaphore_delete( - Objects_Id id -) -{ - register Semaphore_Control *the_semaphore; - Objects_Locations location; - - the_semaphore = _Semaphore_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { - if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) && - !_Attributes_Is_simple_binary_semaphore( - the_semaphore->attribute_set ) ) { - _Thread_Enable_dispatch(); - return RTEMS_RESOURCE_IN_USE; - } - _CORE_mutex_Flush( - &the_semaphore->Core_control.mutex, - SEMAPHORE_MP_OBJECT_WAS_DELETED, - CORE_MUTEX_WAS_DELETED - ); - } else { - _CORE_semaphore_Flush( - &the_semaphore->Core_control.semaphore, - SEMAPHORE_MP_OBJECT_WAS_DELETED, - CORE_SEMAPHORE_WAS_DELETED - ); - } - - _Objects_Close( &_Semaphore_Information, &the_semaphore->Object ); - - _Semaphore_Free( the_semaphore ); - -#if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( the_semaphore->attribute_set ) ) { - - _Objects_MP_Close( &_Semaphore_Information, the_semaphore->Object.id ); - - _Semaphore_MP_Send_process_packet( - SEMAPHORE_MP_ANNOUNCE_DELETE, - the_semaphore->Object.id, - 0, /* Not used */ - 0 /* Not used */ - ); - } -#endif - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/semflush.c b/c/src/exec/rtems/src/semflush.c deleted file mode 100644 index dcdd8b1b34..0000000000 --- a/c/src/exec/rtems/src/semflush.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * rtems_semaphore_flush - * - * DESCRIPTION: - * - * This package is the implementation of the flush directive - * of the Semaphore Manager. - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include - -#include - -/*PAGE - * - * rtems_semaphore_flush - * - * This directive allows a thread to flush the threads - * pending on the semaphore. - * - * Input parameters: - * id - semaphore id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -#if defined(RTEMS_MULTIPROCESSING) -#define SEND_OBJECT_WAS_DELETED _Semaphore_MP_Send_object_was_deleted -#else -#define SEND_OBJECT_WAS_DELETED NULL -#endif - -rtems_status_code rtems_semaphore_flush( - Objects_Id id -) -{ - register Semaphore_Control *the_semaphore; - Objects_Locations location; - - the_semaphore = _Semaphore_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { - _CORE_mutex_Flush( - &the_semaphore->Core_control.mutex, - SEND_OBJECT_WAS_DELETED, - CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT - ); - } else { - _CORE_semaphore_Flush( - &the_semaphore->Core_control.semaphore, - SEND_OBJECT_WAS_DELETED, - CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT - ); - } - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/semident.c b/c/src/exec/rtems/src/semident.c deleted file mode 100644 index 9cb642ad77..0000000000 --- a/c/src/exec/rtems/src/semident.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Semaphore Manager - * - * DESCRIPTION: - * - * This package is the implementation of the Semaphore Manager. - * This manager utilizes standard Dijkstra counting semaphores to provide - * synchronization and mutual exclusion capabilities. - * - * Directives provided are: - * - * + create a semaphore - * + get an ID of a semaphore - * + delete a semaphore - * + acquire a semaphore - * + release a semaphore - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include - -#include - -/*PAGE - * - * rtems_semaphore_ident - * - * This directive returns the system ID associated with - * the semaphore name. - * - * Input parameters: - * name - user defined semaphore name - * node - node(s) to be searched - * id - pointer to semaphore id - * - * Output parameters: - * *id - semaphore id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_semaphore_ident( - rtems_name name, - unsigned32 node, - Objects_Id *id -) -{ - Objects_Name_to_id_errors status; - - status = _Objects_Name_to_id( &_Semaphore_Information, name, node, id ); - - return _Status_Object_name_errors_to_status[ status ]; -} diff --git a/c/src/exec/rtems/src/semmp.c b/c/src/exec/rtems/src/semmp.c deleted file mode 100644 index f479467bc9..0000000000 --- a/c/src/exec/rtems/src/semmp.c +++ /dev/null @@ -1,361 +0,0 @@ -/* - * Multiprocessing Support for the Semaphore Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Semaphore_MP_Send_process_packet - * - */ - -void _Semaphore_MP_Send_process_packet ( - Semaphore_MP_Remote_operations operation, - Objects_Id semaphore_id, - rtems_name name, - Objects_Id proxy_id -) -{ - Semaphore_MP_Packet *the_packet; - unsigned32 node; - - switch ( operation ) { - - case SEMAPHORE_MP_ANNOUNCE_CREATE: - case SEMAPHORE_MP_ANNOUNCE_DELETE: - case SEMAPHORE_MP_EXTRACT_PROXY: - - the_packet = _Semaphore_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_SEMAPHORE; - the_packet->Prefix.length = sizeof ( Semaphore_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( Semaphore_MP_Packet ); - the_packet->operation = operation; - the_packet->Prefix.id = semaphore_id; - the_packet->name = name; - the_packet->proxy_id = proxy_id; - - if ( operation == SEMAPHORE_MP_EXTRACT_PROXY ) - node = rtems_get_node( semaphore_id ); - else - node = MPCI_ALL_NODES; - - _MPCI_Send_process_packet( node, &the_packet->Prefix ); - break; - - case SEMAPHORE_MP_OBTAIN_REQUEST: - case SEMAPHORE_MP_OBTAIN_RESPONSE: - case SEMAPHORE_MP_RELEASE_REQUEST: - case SEMAPHORE_MP_RELEASE_RESPONSE: - break; - } -} - -/*PAGE - * - * _Semaphore_MP_Send_request_packet - * - */ - -rtems_status_code _Semaphore_MP_Send_request_packet ( - Semaphore_MP_Remote_operations operation, - Objects_Id semaphore_id, - rtems_option option_set, - rtems_interval timeout -) -{ - Semaphore_MP_Packet *the_packet; - - switch ( operation ) { - - case SEMAPHORE_MP_OBTAIN_REQUEST: - case SEMAPHORE_MP_RELEASE_REQUEST: - - the_packet = _Semaphore_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_SEMAPHORE; - the_packet->Prefix.length = sizeof ( Semaphore_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( Semaphore_MP_Packet ); - if ( ! _Options_Is_no_wait(option_set)) - the_packet->Prefix.timeout = timeout; - - the_packet->operation = operation; - the_packet->Prefix.id = semaphore_id; - the_packet->option_set = option_set; - - return _MPCI_Send_request_packet( - rtems_get_node( semaphore_id ), - &the_packet->Prefix, - STATES_WAITING_FOR_SEMAPHORE - ); - break; - - case SEMAPHORE_MP_ANNOUNCE_CREATE: - case SEMAPHORE_MP_ANNOUNCE_DELETE: - case SEMAPHORE_MP_EXTRACT_PROXY: - case SEMAPHORE_MP_OBTAIN_RESPONSE: - case SEMAPHORE_MP_RELEASE_RESPONSE: - break; - - } - /* - * The following line is included to satisfy compilers which - * produce warnings when a function does not end with a return. - */ - return RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * _Semaphore_MP_Send_response_packet - * - */ - -void _Semaphore_MP_Send_response_packet ( - Semaphore_MP_Remote_operations operation, - Objects_Id semaphore_id, - Thread_Control *the_thread -) -{ - Semaphore_MP_Packet *the_packet; - - switch ( operation ) { - - case SEMAPHORE_MP_OBTAIN_RESPONSE: - case SEMAPHORE_MP_RELEASE_RESPONSE: - - the_packet = ( Semaphore_MP_Packet *) the_thread->receive_packet; - -/* - * The packet being returned already contains the class, length, and - * to_convert fields, therefore they are not set in this routine. - */ - the_packet->operation = operation; - the_packet->Prefix.id = the_packet->Prefix.source_tid; - - _MPCI_Send_response_packet( - rtems_get_node( the_packet->Prefix.source_tid ), - &the_packet->Prefix - ); - break; - - case SEMAPHORE_MP_ANNOUNCE_CREATE: - case SEMAPHORE_MP_ANNOUNCE_DELETE: - case SEMAPHORE_MP_EXTRACT_PROXY: - case SEMAPHORE_MP_OBTAIN_REQUEST: - case SEMAPHORE_MP_RELEASE_REQUEST: - break; - - } -} - -/*PAGE - * - * - * _Semaphore_MP_Process_packet - * - */ - -void _Semaphore_MP_Process_packet ( - rtems_packet_prefix *the_packet_prefix -) -{ - Semaphore_MP_Packet *the_packet; - Thread_Control *the_thread; - boolean ignored; - - the_packet = (Semaphore_MP_Packet *) the_packet_prefix; - - switch ( the_packet->operation ) { - - case SEMAPHORE_MP_ANNOUNCE_CREATE: - - ignored = _Objects_MP_Allocate_and_open( - &_Semaphore_Information, - the_packet->name, - the_packet->Prefix.id, - TRUE - ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case SEMAPHORE_MP_ANNOUNCE_DELETE: - - _Objects_MP_Close( &_Semaphore_Information, the_packet->Prefix.id ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case SEMAPHORE_MP_EXTRACT_PROXY: - - the_thread = _Thread_MP_Find_proxy( the_packet->proxy_id ); - - if ( ! _Thread_Is_null( the_thread ) ) - _Thread_queue_Extract( the_thread->Wait.queue, the_thread ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case SEMAPHORE_MP_OBTAIN_REQUEST: - - the_packet->Prefix.return_code = rtems_semaphore_obtain( - the_packet->Prefix.id, - the_packet->option_set, - the_packet->Prefix.timeout - ); - - if ( ! _Thread_Is_proxy_blocking( the_packet->Prefix.return_code ) ) - _Semaphore_MP_Send_response_packet( - SEMAPHORE_MP_OBTAIN_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - - case SEMAPHORE_MP_OBTAIN_RESPONSE: - case SEMAPHORE_MP_RELEASE_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case SEMAPHORE_MP_RELEASE_REQUEST: - - the_packet->Prefix.return_code = rtems_semaphore_release( - the_packet->Prefix.id - ); - - _Semaphore_MP_Send_response_packet( - SEMAPHORE_MP_RELEASE_RESPONSE, - the_packet->Prefix.id, - _Thread_Executing - ); - break; - } -} - -/*PAGE - * - * _Semaphore_MP_Send_object_was_deleted - * - */ - -void _Semaphore_MP_Send_object_was_deleted ( - Thread_Control *the_proxy -) -{ - the_proxy->receive_packet->return_code = RTEMS_OBJECT_WAS_DELETED; - - _Semaphore_MP_Send_response_packet( - SEMAPHORE_MP_OBTAIN_RESPONSE, - the_proxy->Wait.id, - the_proxy - ); - -} - -/*PAGE - * - * _Semaphore_MP_Send_extract_proxy - * - */ - -void _Semaphore_MP_Send_extract_proxy ( - Thread_Control *the_thread -) -{ - _Semaphore_MP_Send_process_packet( - SEMAPHORE_MP_EXTRACT_PROXY, - the_thread->Wait.id, - (rtems_name) 0, - the_thread->Object.id - ); - -} - -/*PAGE - * - * _Semaphore_MP_Get_packet - * - */ - -Semaphore_MP_Packet *_Semaphore_MP_Get_packet ( void ) -{ - return ( (Semaphore_MP_Packet *) _MPCI_Get_packet() ); -} - -/*PAGE - * - * _Semaphore_Core_mutex_mp_support - * - * Input parameters: - * the_thread - the remote thread the semaphore was surrendered to - * id - id of the surrendered semaphore - * - * Output parameters: NONE - */ - -#if defined(RTEMS_MULTIPROCESSING) -void _Semaphore_Core_mutex_mp_support ( - Thread_Control *the_thread, - Objects_Id id -) -{ - the_thread->receive_packet->return_code = RTEMS_SUCCESSFUL; - - _Semaphore_MP_Send_response_packet( - SEMAPHORE_MP_OBTAIN_RESPONSE, - id, - the_thread - ); -} -#endif - - -/*PAGE - * - * _Semaphore_Core_semaphore_mp_support - * - * Input parameters: - * the_thread - the remote thread the semaphore was surrendered to - * id - id of the surrendered semaphore - * - * Output parameters: NONE - */ - -#if defined(RTEMS_MULTIPROCESSING) -void _Semaphore_Core_semaphore_mp_support ( - Thread_Control *the_thread, - Objects_Id id -) -{ - the_thread->receive_packet->return_code = RTEMS_SUCCESSFUL; - - _Semaphore_MP_Send_response_packet( - SEMAPHORE_MP_OBTAIN_RESPONSE, - id, - the_thread - ); -} -#endif -/* end of file */ diff --git a/c/src/exec/rtems/src/semobtain.c b/c/src/exec/rtems/src/semobtain.c deleted file mode 100644 index 997b1b12ab..0000000000 --- a/c/src/exec/rtems/src/semobtain.c +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Semaphore Manager - * - * DESCRIPTION: - * - * This package is the implementation of the Semaphore Manager. - * This manager utilizes standard Dijkstra counting semaphores to provide - * synchronization and mutual exclusion capabilities. - * - * Directives provided are: - * - * + create a semaphore - * + get an ID of a semaphore - * + delete a semaphore - * + acquire a semaphore - * + release a semaphore - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include - -#include - -/*PAGE - * - * rtems_semaphore_obtain - * - * This directive allows a thread to acquire a semaphore. - * - * Input parameters: - * id - semaphore id - * option_set - wait option - * timeout - number of ticks to wait (0 means wait forever) - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_semaphore_obtain( - Objects_Id id, - unsigned32 option_set, - rtems_interval timeout -) -{ - register Semaphore_Control *the_semaphore; - Objects_Locations location; - boolean wait; - ISR_Level level; - - the_semaphore = _Semaphore_Get_interrupt_disable( id, &location, &level ); - switch ( location ) { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - return _Semaphore_MP_Send_request_packet( - SEMAPHORE_MP_OBTAIN_REQUEST, - id, - option_set, - timeout - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( _Options_Is_no_wait( option_set ) ) - wait = FALSE; - else - wait = TRUE; - - if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { - _CORE_mutex_Seize( - &the_semaphore->Core_control.mutex, - id, - wait, - timeout, - level - ); - return _Semaphore_Translate_core_mutex_return_code( - _Thread_Executing->Wait.return_code ); - } - - /* must be a counting semaphore */ - _CORE_semaphore_Seize_isr_disable( - &the_semaphore->Core_control.semaphore, - id, - wait, - timeout, - &level - ); - return _Semaphore_Translate_core_semaphore_return_code( - _Thread_Executing->Wait.return_code ); - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/semrelease.c b/c/src/exec/rtems/src/semrelease.c deleted file mode 100644 index 7c2a395f38..0000000000 --- a/c/src/exec/rtems/src/semrelease.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Semaphore Manager - * - * DESCRIPTION: - * - * This package is the implementation of the Semaphore Manager. - * This manager utilizes standard Dijkstra counting semaphores to provide - * synchronization and mutual exclusion capabilities. - * - * Directives provided are: - * - * + create a semaphore - * + get an ID of a semaphore - * + delete a semaphore - * + acquire a semaphore - * + release a semaphore - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include - -#include - -/*PAGE - * - * rtems_semaphore_release - * - * This directive allows a thread to release a semaphore. - * - * Input parameters: - * id - semaphore id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -#if defined(RTEMS_MULTIPROCESSING) -#define MUTEX_MP_SUPPORT _Semaphore_Core_mutex_mp_support -#else -#define MUTEX_MP_SUPPORT NULL -#endif - -rtems_status_code rtems_semaphore_release( - Objects_Id id -) -{ - register Semaphore_Control *the_semaphore; - Objects_Locations location; - CORE_mutex_Status mutex_status; - CORE_semaphore_Status semaphore_status; - - the_semaphore = _Semaphore_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - return _Semaphore_MP_Send_request_packet( - SEMAPHORE_MP_RELEASE_REQUEST, - id, - 0, /* Not used */ - MPCI_DEFAULT_TIMEOUT - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) { - mutex_status = _CORE_mutex_Surrender( - &the_semaphore->Core_control.mutex, - id, - MUTEX_MP_SUPPORT - ); - _Thread_Enable_dispatch(); - return _Semaphore_Translate_core_mutex_return_code( mutex_status ); - } else { - semaphore_status = _CORE_semaphore_Surrender( - &the_semaphore->Core_control.semaphore, - id, - MUTEX_MP_SUPPORT - ); - _Thread_Enable_dispatch(); - return - _Semaphore_Translate_core_semaphore_return_code( semaphore_status ); - } - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/semtranslatereturncode.c b/c/src/exec/rtems/src/semtranslatereturncode.c deleted file mode 100644 index cb91dccf18..0000000000 --- a/c/src/exec/rtems/src/semtranslatereturncode.c +++ /dev/null @@ -1,120 +0,0 @@ -/* - * Semaphore Manager - * - * DESCRIPTION: - * - * This package is the implementation of the Semaphore Manager. - * This manager utilizes standard Dijkstra counting semaphores to provide - * synchronization and mutual exclusion capabilities. - * - * Directives provided are: - * - * + create a semaphore - * + get an ID of a semaphore - * + delete a semaphore - * + acquire a semaphore - * + release a semaphore - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#if defined(RTEMS_MULTIPROCESSING) -#include -#endif -#include - -#include - -/*PAGE - * - * _Semaphore_Translate_core_mutex_return_code - * - * Input parameters: - * the_mutex_status - mutex status code to translate - * - * Output parameters: - * rtems status code - translated RTEMS status code - * - */ - -rtems_status_code _Semaphore_Translate_core_mutex_return_code_[] = { - RTEMS_SUCCESSFUL, /* CORE_MUTEX_STATUS_SUCCESSFUL */ - RTEMS_UNSATISFIED, /* CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT */ - RTEMS_UNSATISFIED, /* CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED */ - RTEMS_NOT_OWNER_OF_RESOURCE, /* CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE */ - RTEMS_OBJECT_WAS_DELETED, /* CORE_MUTEX_WAS_DELETED */ - RTEMS_TIMEOUT, /* CORE_MUTEX_TIMEOUT */ - RTEMS_INTERNAL_ERROR, /* CORE_MUTEX_STATUS_CEILING_VIOLATED */ -}; - - -rtems_status_code _Semaphore_Translate_core_mutex_return_code ( - unsigned32 the_mutex_status -) -{ -#if defined(RTEMS_MULTIPROCESSING) - if ( the_mutex_status == THREAD_STATUS_PROXY_BLOCKING ) - return RTEMS_PROXY_BLOCKING; - else -#endif - if ( the_mutex_status > CORE_MUTEX_STATUS_CEILING_VIOLATED ) - return RTEMS_INTERNAL_ERROR; - else - return _Semaphore_Translate_core_mutex_return_code_[the_mutex_status]; -} - -/*PAGE - * - * _Semaphore_Translate_core_semaphore_return_code - * - * Input parameters: - * the_semaphore_status - semaphore status code to translate - * - * Output parameters: - * rtems status code - translated RTEMS status code - * - */ - -rtems_status_code _Semaphore_Translate_core_semaphore_return_code_[] = { - RTEMS_SUCCESSFUL, /* CORE_SEMAPHORE_STATUS_SUCCESSFUL */ - RTEMS_UNSATISFIED, /* CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT */ - RTEMS_OBJECT_WAS_DELETED, /* CORE_SEMAPHORE_WAS_DELETED */ - RTEMS_TIMEOUT, /* CORE_SEMAPHORE_TIMEOUT */ - RTEMS_INTERNAL_ERROR, /* CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED */ - -}; - -rtems_status_code _Semaphore_Translate_core_semaphore_return_code ( - unsigned32 the_semaphore_status -) -{ -#if defined(RTEMS_MULTIPROCESSING) - if ( the_semaphore_status == THREAD_STATUS_PROXY_BLOCKING ) - return RTEMS_PROXY_BLOCKING; - else -#endif - if ( the_semaphore_status > CORE_MUTEX_STATUS_CEILING_VIOLATED ) - return RTEMS_INTERNAL_ERROR; - else - return _Semaphore_Translate_core_semaphore_return_code_[the_semaphore_status]; -} diff --git a/c/src/exec/rtems/src/signal.c b/c/src/exec/rtems/src/signal.c deleted file mode 100644 index 618eb22824..0000000000 --- a/c/src/exec/rtems/src/signal.c +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Signal Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Signal_Manager_initialization - * - * This routine initializes all signal manager related data structures. - * - * Input parameters: NONE - * - * Output parameters: NONE - */ - -void _Signal_Manager_initialization( void ) -{ - /* - * Register the MP Process Packet routine. - */ - -#if defined(RTEMS_MULTIPROCESSING) - _MPCI_Register_packet_processor( - MP_PACKET_SIGNAL, - _Signal_MP_Process_packet - ); -#endif -} diff --git a/c/src/exec/rtems/src/signalcatch.c b/c/src/exec/rtems/src/signalcatch.c deleted file mode 100644 index 676c99b4b6..0000000000 --- a/c/src/exec/rtems/src/signalcatch.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Signal Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_signal_catch - * - * This directive allows a thread to specify what action to take when - * catching signals. - * - * Input parameters: - * handler - address of asynchronous signal routine (asr) - * ( NULL indicates asr is invalid ) - * mode_set - mode value for asr - * - * Output parameters: - * RTEMS_SUCCESSFUL - always succeeds - */ - -rtems_status_code rtems_signal_catch( - rtems_asr_entry asr_handler, - rtems_mode mode_set -) -{ - Thread_Control *executing; - RTEMS_API_Control *api; - ASR_Information *asr; - -/* XXX normalize mode */ - executing = _Thread_Executing; - api = (RTEMS_API_Control*)executing->API_Extensions[ THREAD_API_RTEMS ]; - asr = &api->Signal; - - _Thread_Disable_dispatch(); /* cannot reschedule while */ - /* the thread is inconsistent */ - - if ( !_ASR_Is_null_handler( asr_handler ) ) { - asr->mode_set = mode_set; - asr->handler = asr_handler; - } - else - _ASR_Initialize( asr ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/signalmp.c b/c/src/exec/rtems/src/signalmp.c deleted file mode 100644 index e50f9ea6da..0000000000 --- a/c/src/exec/rtems/src/signalmp.c +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Multiprocessing Support for the Signal Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _Signal_MP_Send_process_packet - * - * This subprogram is not needed since there are no process - * packets to be sent by this manager. - * - */ - -/*PAGE - * - * _Signal_MP_Send_request_packet - * - */ - -rtems_status_code _Signal_MP_Send_request_packet ( - Signal_MP_Remote_operations operation, - Objects_Id task_id, - rtems_signal_set signal_in -) -{ - Signal_MP_Packet *the_packet; - - switch ( operation ) { - - case SIGNAL_MP_SEND_REQUEST: - - the_packet = _Signal_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_SIGNAL; - the_packet->Prefix.length = sizeof ( Signal_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( Signal_MP_Packet ); - the_packet->operation = operation; - the_packet->Prefix.id = task_id; - the_packet->signal_in = signal_in; - - return _MPCI_Send_request_packet( - rtems_get_node( task_id ), - &the_packet->Prefix, - STATES_READY /* Not used */ - ); - break; - - case SIGNAL_MP_SEND_RESPONSE: - break; - - } - /* - * The following line is included to satisfy compilers which - * produce warnings when a function does not end with a return. - */ - return RTEMS_INTERNAL_ERROR; -} - -/*PAGE - * - * _Signal_MP_Send_response_packet - * - */ - -void _Signal_MP_Send_response_packet ( - Signal_MP_Remote_operations operation, - Thread_Control *the_thread -) -{ - Signal_MP_Packet *the_packet; - - switch ( operation ) { - - case SIGNAL_MP_SEND_RESPONSE: - - the_packet = ( Signal_MP_Packet *) the_thread->receive_packet; - -/* - * The packet being returned already contains the class, length, and - * to_convert fields, therefore they are not set in this routine. - */ - the_packet->operation = operation; - the_packet->Prefix.id = the_packet->Prefix.source_tid; - - _MPCI_Send_response_packet( - rtems_get_node( the_packet->Prefix.source_tid ), - &the_packet->Prefix - ); - break; - - case SIGNAL_MP_SEND_REQUEST: - break; - - } -} - -/*PAGE - * - * - * _Signal_MP_Process_packet - * - */ - -void _Signal_MP_Process_packet ( - rtems_packet_prefix *the_packet_prefix -) -{ - Signal_MP_Packet *the_packet; - Thread_Control *the_thread; - - the_packet = (Signal_MP_Packet *) the_packet_prefix; - - switch ( the_packet->operation ) { - - case SIGNAL_MP_SEND_REQUEST: - - the_packet->Prefix.return_code = rtems_signal_send( - the_packet->Prefix.id, - the_packet->signal_in - ); - - _Signal_MP_Send_response_packet( - SIGNAL_MP_SEND_RESPONSE, - _Thread_Executing - ); - break; - - case SIGNAL_MP_SEND_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - } -} - -/*PAGE - * - * _Signal_MP_Send_object_was_deleted - * - * This subprogram is not needed since there are no objects - * deleted by this manager. - * - */ - -/*PAGE - * - * _Signal_MP_Send_extract_proxy - * - * This subprogram is not needed since there are no objects - * deleted by this manager. - * - */ - -/*PAGE - * - * _Signal_MP_Get_packet - * - */ - -Signal_MP_Packet *_Signal_MP_Get_packet ( void ) -{ - return ( (Signal_MP_Packet *) _MPCI_Get_packet() ); -} - -/* end of file */ diff --git a/c/src/exec/rtems/src/signalsend.c b/c/src/exec/rtems/src/signalsend.c deleted file mode 100644 index cb808dc8fb..0000000000 --- a/c/src/exec/rtems/src/signalsend.c +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Signal Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_signal_send - * - * This directive allows a thread to send signals to a thread. - * - * Input parameters: - * id - thread id - * signal_set - signal set - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_signal_send( - Objects_Id id, - rtems_signal_set signal_set -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - RTEMS_API_Control *api; - ASR_Information *asr; - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - return _Signal_MP_Send_request_packet( - SIGNAL_MP_SEND_REQUEST, - id, - signal_set - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; - asr = &api->Signal; - - if ( ! _ASR_Is_null_handler( asr->handler ) ) { - if ( asr->is_enabled ) { - _ASR_Post_signals( signal_set, &asr->signals_posted ); - - the_thread->do_post_task_switch_extension = TRUE; - - if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) ) - _ISR_Signals_to_thread_executing = TRUE; - } else { - _ASR_Post_signals( signal_set, &asr->signals_pending ); - } - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - _Thread_Enable_dispatch(); - return RTEMS_NOT_DEFINED; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/taskcreate.c b/c/src/exec/rtems/src/taskcreate.c deleted file mode 100644 index c445589687..0000000000 --- a/c/src/exec/rtems/src/taskcreate.c +++ /dev/null @@ -1,228 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_create - * - * This directive creates a thread by allocating and initializing a - * thread control block and a stack. The newly created thread is - * placed in the dormant state. - * - * Input parameters: - * name - user defined thread name - * initial_priority - thread priority - * stack_size - stack size in bytes - * initial_modes - initial thread mode - * attribute_set - thread attributes - * id - pointer to thread id - * - * Output parameters: - * id - thread id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_create( - rtems_name name, - rtems_task_priority initial_priority, - unsigned32 stack_size, - rtems_mode initial_modes, - rtems_attribute attribute_set, - Objects_Id *id -) -{ - register Thread_Control *the_thread; - boolean is_fp; -#if defined(RTEMS_MULTIPROCESSING) - Objects_MP_Control *the_global_object = NULL; - boolean is_global; -#endif - boolean status; - rtems_attribute the_attribute_set; - Priority_Control core_priority; - RTEMS_API_Control *api; - ASR_Information *asr; - - - if ( !rtems_is_name_valid( name ) ) - return RTEMS_INVALID_NAME; - - /* - * Core Thread Initialize insures we get the minimum amount of - * stack space. - */ - -#if 0 - if ( !_Stack_Is_enough( stack_size ) ) - return RTEMS_INVALID_SIZE; -#endif - - /* - * Fix the attribute set to match the attributes which - * this processor (1) requires and (2) is able to support. - * First add in the required flags for attribute_set - * Typically this might include FP if the platform - * or application required all tasks to be fp aware. - * Then turn off the requested bits which are not supported. - */ - - the_attribute_set = _Attributes_Set( attribute_set, ATTRIBUTES_REQUIRED ); - the_attribute_set = - _Attributes_Clear( the_attribute_set, ATTRIBUTES_NOT_SUPPORTED ); - - if ( _Attributes_Is_floating_point( the_attribute_set ) ) - is_fp = TRUE; - else - is_fp = FALSE; - - /* - * Validate the RTEMS API priority and convert it to the core priority range. - */ - - if ( !_Attributes_Is_system_task( the_attribute_set ) ) { - if ( !_RTEMS_tasks_Priority_is_valid( initial_priority ) ) - return RTEMS_INVALID_PRIORITY; - } - - core_priority = _RTEMS_tasks_Priority_to_Core( initial_priority ); - -#if defined(RTEMS_MULTIPROCESSING) - if ( _Attributes_Is_global( the_attribute_set ) ) { - - is_global = TRUE; - - if ( !_System_state_Is_multiprocessing ) - return RTEMS_MP_NOT_CONFIGURED; - - } else - is_global = FALSE; -#endif - - /* - * Make sure system is MP if this task is global - */ - - /* - * Disable dispatch for protection - */ - - _Thread_Disable_dispatch(); - - /* - * Allocate the thread control block and -- if the task is global -- - * allocate a global object control block. - * - * NOTE: This routine does not use the combined allocate and open - * global object routine because this results in a lack of - * control over when memory is allocated and can be freed in - * the event of an error. - */ - - the_thread = _RTEMS_tasks_Allocate(); - - if ( !the_thread ) { - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } - -#if defined(RTEMS_MULTIPROCESSING) - if ( is_global ) { - the_global_object = _Objects_MP_Allocate_global_object(); - - if ( _Objects_MP_Is_null_global_object( the_global_object ) ) { - _RTEMS_tasks_Free( the_thread ); - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } - } -#endif - - /* - * Initialize the core thread for this task. - */ - - status = _Thread_Initialize( - &_RTEMS_tasks_Information, - the_thread, - NULL, - stack_size, - is_fp, - core_priority, - _Modes_Is_preempt(initial_modes) ? TRUE : FALSE, - _Modes_Is_timeslice(initial_modes) ? - THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE : - THREAD_CPU_BUDGET_ALGORITHM_NONE, - NULL, /* no budget algorithm callout */ - _Modes_Get_interrupt_level(initial_modes), - name - ); - - if ( !status ) { -#if defined(RTEMS_MULTIPROCESSING) - if ( is_global ) - _Objects_MP_Free_global_object( the_global_object ); -#endif - _RTEMS_tasks_Free( the_thread ); - _Thread_Enable_dispatch(); - return RTEMS_UNSATISFIED; - } - - api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; - asr = &api->Signal; - - asr->is_enabled = _Modes_Is_asr_disabled(initial_modes) ? FALSE : TRUE; - - *id = the_thread->Object.id; - -#if defined(RTEMS_MULTIPROCESSING) - if ( is_global ) { - - the_thread->is_global = TRUE; - - _Objects_MP_Open( - &_RTEMS_tasks_Information, - the_global_object, - name, - the_thread->Object.id - ); - - _RTEMS_tasks_MP_Send_process_packet( - RTEMS_TASKS_MP_ANNOUNCE_CREATE, - the_thread->Object.id, - name - ); - - } -#endif - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/taskdelete.c b/c/src/exec/rtems/src/taskdelete.c deleted file mode 100644 index a5d09d2749..0000000000 --- a/c/src/exec/rtems/src/taskdelete.c +++ /dev/null @@ -1,100 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_delete - * - * This directive allows a thread to delete itself or the thread - * identified in the id field. The executive halts execution - * of the thread and frees the thread control block. - * - * Input parameters: - * id - thread id - * - * Output parameters: - * nothing - if id is the requesting thread (always succeeds) - * RTEMS_SUCCESSFUL - if successful and id is - * not the requesting thread - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_delete( - Objects_Id id -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - Objects_Information *the_information; - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - the_information = _Objects_Get_information( the_thread->Object.id ); - - if ( !the_information ) { - _Thread_Enable_dispatch(); - return RTEMS_INVALID_ID; - /* This should never happen if _Thread_Get() works right */ - } - - _Thread_Close( the_information, the_thread ); - - _RTEMS_tasks_Free( the_thread ); - -#if defined(RTEMS_MULTIPROCESSING) - if ( the_thread->is_global ) { - - _Objects_MP_Close( &_RTEMS_tasks_Information, the_thread->Object.id ); - - _RTEMS_tasks_MP_Send_process_packet( - RTEMS_TASKS_MP_ANNOUNCE_DELETE, - the_thread->Object.id, - 0 /* Not used */ - ); - } -#endif - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/taskgetnote.c b/c/src/exec/rtems/src/taskgetnote.c deleted file mode 100644 index 47e6c24bef..0000000000 --- a/c/src/exec/rtems/src/taskgetnote.c +++ /dev/null @@ -1,105 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_get_note - * - * This directive obtains the note from the specified notepad - * of the specified thread. - * - * Input parameters: - * id - thread id - * notepad - notepad number - * note - pointer to note - * - * Output parameters: - * note - filled in if successful - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_get_note( - Objects_Id id, - unsigned32 notepad, - unsigned32 *note -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - RTEMS_API_Control *api; - - /* - * NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would - * be checking an unsigned number for being negative. - */ - - if ( notepad > RTEMS_NOTEPAD_LAST ) - return RTEMS_INVALID_NUMBER; - - /* - * Optimize the most likely case to avoid the Thread_Dispatch. - */ - - if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || - _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { - api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; - *note = api->Notepads[ notepad ]; - return RTEMS_SUCCESSFUL; - } - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Executing->Wait.return_argument = note; - - return _RTEMS_tasks_MP_Send_request_packet( - RTEMS_TASKS_MP_GET_NOTE_REQUEST, - id, - 0, /* Not used */ - notepad, - 0 /* Not used */ - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; - *note = api->Notepads[ notepad ]; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/taskident.c b/c/src/exec/rtems/src/taskident.c deleted file mode 100644 index f58b462814..0000000000 --- a/c/src/exec/rtems/src/taskident.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_ident - * - * This directive returns the system ID associated with - * the thread name. - * - * Input parameters: - * name - user defined thread name - * node - node(s) to be searched - * id - pointer to thread id - * - * Output parameters: - * *id - thread id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_ident( - rtems_name name, - unsigned32 node, - Objects_Id *id -) -{ - Objects_Name_to_id_errors status; - - if ( name == OBJECTS_ID_OF_SELF ) { - *id = _Thread_Executing->Object.id; - return RTEMS_SUCCESSFUL; - } - - status = _Objects_Name_to_id( &_RTEMS_tasks_Information, name, node, id ); - - return _Status_Object_name_errors_to_status[ status ]; -} diff --git a/c/src/exec/rtems/src/taskinitusers.c b/c/src/exec/rtems/src/taskinitusers.c deleted file mode 100644 index dceb32a194..0000000000 --- a/c/src/exec/rtems/src/taskinitusers.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _RTEMS_tasks_Initialize_user_tasks - * - * This routine creates and starts all configured user - * initialzation threads. - * - * Input parameters: NONE - * - * Output parameters: NONE - */ - -void _RTEMS_tasks_Initialize_user_tasks( void ) -{ - unsigned32 index; - unsigned32 maximum; - rtems_id id; - rtems_status_code return_value; - rtems_initialization_tasks_table *user_tasks; - - /* - * NOTE: This is slightly different from the Ada implementation. - */ - - user_tasks = _RTEMS_tasks_User_initialization_tasks; - maximum = _RTEMS_tasks_Number_of_initialization_tasks; - - if ( !user_tasks || maximum == 0 ) - return; - - for ( index=0 ; index < maximum ; index++ ) { - return_value = rtems_task_create( - user_tasks[ index ].name, - user_tasks[ index ].initial_priority, - user_tasks[ index ].stack_size, - user_tasks[ index ].mode_set, - user_tasks[ index ].attribute_set, - &id - ); - - if ( !rtems_is_status_successful( return_value ) ) - _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, TRUE, return_value ); - - return_value = rtems_task_start( - id, - user_tasks[ index ].entry_point, - user_tasks[ index ].argument - ); - - if ( !rtems_is_status_successful( return_value ) ) - _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, TRUE, return_value ); - } -} diff --git a/c/src/exec/rtems/src/taskissuspended.c b/c/src/exec/rtems/src/taskissuspended.c deleted file mode 100644 index bea81e8126..0000000000 --- a/c/src/exec/rtems/src/taskissuspended.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_is_suspended - * - * This directive returns a status indicating whether or not - * the specified task is suspended. - * - * Input parameters: - * id - thread id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful and not suspended - * RTEMS_ALREADY_SUSPENDED - if successful and suspended - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_is_suspended( - Objects_Id id -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: - -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( !_States_Is_suspended( the_thread->current_state ) ) { - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - _Thread_Enable_dispatch(); - return RTEMS_ALREADY_SUSPENDED; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/taskmode.c b/c/src/exec/rtems/src/taskmode.c deleted file mode 100644 index 85a4d996af..0000000000 --- a/c/src/exec/rtems/src/taskmode.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_mode - * - * This directive enables and disables several modes of - * execution for the requesting thread. - * - * Input parameters: - * mode_set - new mode - * mask - mask - * previous_mode_set - address of previous mode set - * - * Output: - * *previous_mode_set - previous mode set - * always return RTEMS_SUCCESSFUL; - */ - -rtems_status_code rtems_task_mode( - rtems_mode mode_set, - rtems_mode mask, - rtems_mode *previous_mode_set -) -{ - Thread_Control *executing; - RTEMS_API_Control *api; - ASR_Information *asr; - boolean is_asr_enabled = FALSE; - boolean needs_asr_dispatching = FALSE; - rtems_mode old_mode; - - executing = _Thread_Executing; - api = executing->API_Extensions[ THREAD_API_RTEMS ]; - asr = &api->Signal; - - old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT; - - if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE ) - old_mode |= RTEMS_NO_TIMESLICE; - else - old_mode |= RTEMS_TIMESLICE; - - old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR; - old_mode |= _ISR_Get_level(); - - *previous_mode_set = old_mode; - - /* - * These are generic thread scheduling characteristics. - */ - - if ( mask & RTEMS_PREEMPT_MASK ) - executing->is_preemptible = _Modes_Is_preempt(mode_set) ? TRUE : FALSE; - - if ( mask & RTEMS_TIMESLICE_MASK ) { - if ( _Modes_Is_timeslice(mode_set) ) - executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE; - else - executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; - } - - /* - * Set the new interrupt level - */ - - if ( mask & RTEMS_INTERRUPT_MASK ) - _Modes_Set_interrupt_level( mode_set ); - - /* - * This is specific to the RTEMS API - */ - - is_asr_enabled = FALSE; - needs_asr_dispatching = FALSE; - - if ( mask & RTEMS_ASR_MASK ) { - is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? FALSE : TRUE; - if ( is_asr_enabled != asr->is_enabled ) { - asr->is_enabled = is_asr_enabled; - _ASR_Swap_signals( asr ); - if ( _ASR_Are_signals_pending( asr ) ) { - needs_asr_dispatching = TRUE; - executing->do_post_task_switch_extension = TRUE; - } - } - } - - if ( _System_state_Is_up(_System_state_Current) ) - if ( _Thread_Evaluate_mode() || needs_asr_dispatching ) - _Thread_Dispatch(); - - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/taskmp.c b/c/src/exec/rtems/src/taskmp.c deleted file mode 100644 index 7e5baca9a3..0000000000 --- a/c/src/exec/rtems/src/taskmp.c +++ /dev/null @@ -1,339 +0,0 @@ -/* - * Multiprocessing Support for the RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _RTEMS_tasks_MP_Send_process_packet - * - */ - -void _RTEMS_tasks_MP_Send_process_packet ( - RTEMS_tasks_MP_Remote_operations operation, - Objects_Id task_id, - rtems_name name -) -{ - RTEMS_tasks_MP_Packet *the_packet; - - switch ( operation ) { - - case RTEMS_TASKS_MP_ANNOUNCE_CREATE: - case RTEMS_TASKS_MP_ANNOUNCE_DELETE: - - the_packet = _RTEMS_tasks_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_TASKS; - the_packet->Prefix.length = sizeof ( RTEMS_tasks_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( RTEMS_tasks_MP_Packet ); - the_packet->operation = operation; - the_packet->Prefix.id = task_id; - the_packet->name = name; - - _MPCI_Send_process_packet( MPCI_ALL_NODES, &the_packet->Prefix ); - break; - - case RTEMS_TASKS_MP_SUSPEND_REQUEST: - case RTEMS_TASKS_MP_SUSPEND_RESPONSE: - case RTEMS_TASKS_MP_RESUME_REQUEST: - case RTEMS_TASKS_MP_RESUME_RESPONSE: - case RTEMS_TASKS_MP_SET_PRIORITY_REQUEST: - case RTEMS_TASKS_MP_SET_PRIORITY_RESPONSE: - case RTEMS_TASKS_MP_GET_NOTE_REQUEST: - case RTEMS_TASKS_MP_GET_NOTE_RESPONSE: - case RTEMS_TASKS_MP_SET_NOTE_REQUEST: - case RTEMS_TASKS_MP_SET_NOTE_RESPONSE: - break; - } -} - -/*PAGE - * - * _RTEMS_tasks_MP_Send_request_packet - * - */ - -rtems_status_code _RTEMS_tasks_MP_Send_request_packet ( - RTEMS_tasks_MP_Remote_operations operation, - Objects_Id task_id, - rtems_task_priority new_priority, - unsigned32 notepad, - unsigned32 note -) -{ - RTEMS_tasks_MP_Packet *the_packet; - - switch ( operation ) { - - case RTEMS_TASKS_MP_SUSPEND_REQUEST: - case RTEMS_TASKS_MP_RESUME_REQUEST: - case RTEMS_TASKS_MP_SET_PRIORITY_REQUEST: - case RTEMS_TASKS_MP_GET_NOTE_REQUEST: - case RTEMS_TASKS_MP_SET_NOTE_REQUEST: - - the_packet = _RTEMS_tasks_MP_Get_packet(); - the_packet->Prefix.the_class = MP_PACKET_TASKS; - the_packet->Prefix.length = sizeof ( RTEMS_tasks_MP_Packet ); - the_packet->Prefix.to_convert = sizeof ( RTEMS_tasks_MP_Packet ); - the_packet->operation = operation; - the_packet->Prefix.id = task_id; - the_packet->the_priority = new_priority; - the_packet->notepad = notepad; - the_packet->note = note; - - return _MPCI_Send_request_packet( - rtems_get_node( task_id ), - &the_packet->Prefix, - STATES_READY /* Not used */ - ); - break; - - case RTEMS_TASKS_MP_ANNOUNCE_CREATE: - case RTEMS_TASKS_MP_ANNOUNCE_DELETE: - case RTEMS_TASKS_MP_SUSPEND_RESPONSE: - case RTEMS_TASKS_MP_RESUME_RESPONSE: - case RTEMS_TASKS_MP_SET_PRIORITY_RESPONSE: - case RTEMS_TASKS_MP_GET_NOTE_RESPONSE: - case RTEMS_TASKS_MP_SET_NOTE_RESPONSE: - break; - - } - /* - * The following line is included to satisfy compilers which - * produce warnings when a function does not end with a return. - */ - return RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * _RTEMS_tasks_MP_Send_response_packet - * - */ - -void _RTEMS_tasks_MP_Send_response_packet ( - RTEMS_tasks_MP_Remote_operations operation, - Thread_Control *the_thread -) -{ - RTEMS_tasks_MP_Packet *the_packet; - - switch ( operation ) { - - case RTEMS_TASKS_MP_SUSPEND_RESPONSE: - case RTEMS_TASKS_MP_RESUME_RESPONSE: - case RTEMS_TASKS_MP_SET_PRIORITY_RESPONSE: - case RTEMS_TASKS_MP_GET_NOTE_RESPONSE: - case RTEMS_TASKS_MP_SET_NOTE_RESPONSE: - - the_packet = (RTEMS_tasks_MP_Packet *) the_thread->receive_packet; - -/* - * The packet being returned already contains the class, length, and - * to_convert fields, therefore they are not set in this routine. - */ - the_packet->operation = operation; - the_packet->Prefix.id = the_packet->Prefix.source_tid; - - _MPCI_Send_response_packet( - rtems_get_node( the_packet->Prefix.source_tid ), - &the_packet->Prefix - ); - break; - - case RTEMS_TASKS_MP_ANNOUNCE_CREATE: - case RTEMS_TASKS_MP_ANNOUNCE_DELETE: - case RTEMS_TASKS_MP_SUSPEND_REQUEST: - case RTEMS_TASKS_MP_RESUME_REQUEST: - case RTEMS_TASKS_MP_SET_PRIORITY_REQUEST: - case RTEMS_TASKS_MP_GET_NOTE_REQUEST: - case RTEMS_TASKS_MP_SET_NOTE_REQUEST: - break; - - } -} - -/*PAGE - * - * - * _RTEMS_tasks_MP_Process_packet - * - */ - -void _RTEMS_tasks_MP_Process_packet ( - rtems_packet_prefix *the_packet_prefix -) -{ - RTEMS_tasks_MP_Packet *the_packet; - Thread_Control *the_thread; - boolean ignored; - - the_packet = (RTEMS_tasks_MP_Packet *) the_packet_prefix; - - switch ( the_packet->operation ) { - - case RTEMS_TASKS_MP_ANNOUNCE_CREATE: - - ignored = _Objects_MP_Allocate_and_open( - &_RTEMS_tasks_Information, - the_packet->name, - the_packet->Prefix.id, - TRUE - ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case RTEMS_TASKS_MP_ANNOUNCE_DELETE: - - _Objects_MP_Close( &_RTEMS_tasks_Information, the_packet->Prefix.id ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case RTEMS_TASKS_MP_SUSPEND_REQUEST: - - the_packet->Prefix.return_code = rtems_task_suspend( - the_packet->Prefix.id - ); - - _RTEMS_tasks_MP_Send_response_packet( - RTEMS_TASKS_MP_SUSPEND_RESPONSE, - _Thread_Executing - ); - break; - - case RTEMS_TASKS_MP_SUSPEND_RESPONSE: - case RTEMS_TASKS_MP_RESUME_RESPONSE: - case RTEMS_TASKS_MP_SET_NOTE_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case RTEMS_TASKS_MP_RESUME_REQUEST: - - the_packet->Prefix.return_code = rtems_task_resume( - the_packet->Prefix.id - ); - - _RTEMS_tasks_MP_Send_response_packet( - RTEMS_TASKS_MP_RESUME_RESPONSE, - _Thread_Executing - ); - break; - - case RTEMS_TASKS_MP_SET_PRIORITY_REQUEST: - - the_packet->Prefix.return_code = rtems_task_set_priority( - the_packet->Prefix.id, - the_packet->the_priority, - &the_packet->the_priority - ); - - _RTEMS_tasks_MP_Send_response_packet( - RTEMS_TASKS_MP_SET_PRIORITY_RESPONSE, - _Thread_Executing - ); - break; - - case RTEMS_TASKS_MP_SET_PRIORITY_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - *(rtems_task_priority *)the_thread->Wait.return_argument = - the_packet->the_priority; - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case RTEMS_TASKS_MP_GET_NOTE_REQUEST: - - the_packet->Prefix.return_code = rtems_task_get_note( - the_packet->Prefix.id, - the_packet->notepad, - &the_packet->note - ); - - _RTEMS_tasks_MP_Send_response_packet( - RTEMS_TASKS_MP_GET_NOTE_RESPONSE, - _Thread_Executing - ); - break; - - case RTEMS_TASKS_MP_GET_NOTE_RESPONSE: - - the_thread = _MPCI_Process_response( the_packet_prefix ); - - *(unsigned32 *)the_thread->Wait.return_argument = the_packet->note; - - _MPCI_Return_packet( the_packet_prefix ); - break; - - case RTEMS_TASKS_MP_SET_NOTE_REQUEST: - - the_packet->Prefix.return_code = rtems_task_set_note( - the_packet->Prefix.id, - the_packet->notepad, - the_packet->note - ); - - _RTEMS_tasks_MP_Send_response_packet( - RTEMS_TASKS_MP_SET_NOTE_RESPONSE, - _Thread_Executing - ); - break; - } -} - -/*PAGE - * - * _RTEMS_tasks_MP_Send_object_was_deleted - * - * This routine is not neededby the Tasks since a task - * cannot be globally deleted. - * - */ - -/*PAGE - * - * _RTEMS_tasks_MP_Send_extract_proxy - * - * This routine is not neededby the Tasks since a task - * cannot be globally deleted. - * - */ - -/*PAGE - * - * _RTEMS_tasks_MP_Get_packet - * - */ - -RTEMS_tasks_MP_Packet *_RTEMS_tasks_MP_Get_packet ( void ) -{ - return (RTEMS_tasks_MP_Packet *) _MPCI_Get_packet(); -} - -/* end of file */ diff --git a/c/src/exec/rtems/src/taskrestart.c b/c/src/exec/rtems/src/taskrestart.c deleted file mode 100644 index f7f14efaef..0000000000 --- a/c/src/exec/rtems/src/taskrestart.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_restart - * - * This directive readies the specified thread. It restores - * the thread environment to the original values established - * at thread creation and start time. A thread can be restarted - * from any state except the dormant state. - * - * Input parameters: - * id - thread id - * argument - thread argument - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_restart( - Objects_Id id, - unsigned32 argument -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( _Thread_Restart( the_thread, NULL, argument ) ) { - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - _Thread_Enable_dispatch(); - return RTEMS_INCORRECT_STATE; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/taskresume.c b/c/src/exec/rtems/src/taskresume.c deleted file mode 100644 index 226c6942fe..0000000000 --- a/c/src/exec/rtems/src/taskresume.c +++ /dev/null @@ -1,81 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_resume - * - * This directive will remove the specified thread - * from the suspended state. - * - * Input parameters: - * id - thread id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_resume( - Objects_Id id -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - return _RTEMS_tasks_MP_Send_request_packet( - RTEMS_TASKS_MP_RESUME_REQUEST, - id, - 0, /* Not used */ - 0, /* Not used */ - 0 /* Not used */ - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( _States_Is_suspended( the_thread->current_state ) ) { - _Thread_Resume( the_thread, TRUE ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - _Thread_Enable_dispatch(); - return RTEMS_INCORRECT_STATE; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/tasks.c b/c/src/exec/rtems/src/tasks.c deleted file mode 100644 index d8fc8a0564..0000000000 --- a/c/src/exec/rtems/src/tasks.c +++ /dev/null @@ -1,286 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * _RTEMS_tasks_Create_extension - * - * This routine is an extension routine that is invoked as part - * of creating any type of task or thread in the system. If the - * task is created via another API, then this routine is invoked - * and this API given the opportunity to initialize its extension - * area. - */ - -boolean _RTEMS_tasks_Create_extension( - Thread_Control *executing, - Thread_Control *created -) -{ - RTEMS_API_Control *api; - - api = _Workspace_Allocate( sizeof( RTEMS_API_Control ) ); - - if ( !api ) - return FALSE; - - created->API_Extensions[ THREAD_API_RTEMS ] = api; - - api->pending_events = EVENT_SETS_NONE_PENDING; - _ASR_Initialize( &api->Signal ); - created->task_variables = NULL; - return TRUE; -} - -/*PAGE - * - * _RTEMS_tasks_Start_extension - * - * This extension routine is invoked when a task is started for the - * first time. - */ - -User_extensions_routine _RTEMS_tasks_Start_extension( - Thread_Control *executing, - Thread_Control *started -) -{ - RTEMS_API_Control *api; - - api = started->API_Extensions[ THREAD_API_RTEMS ]; - - api->pending_events = EVENT_SETS_NONE_PENDING; - - _ASR_Initialize( &api->Signal ); -} - -/*PAGE - * - * _RTEMS_tasks_Delete_extension - * - * This extension routine is invoked when a task is deleted. - */ - -User_extensions_routine _RTEMS_tasks_Delete_extension( - Thread_Control *executing, - Thread_Control *deleted -) -{ - rtems_task_variable_t *tvp, *next; - - /* - * Free per task variable memory - */ - - tvp = deleted->task_variables; - deleted->task_variables = NULL; - while (tvp) { - next = tvp->next; - if (tvp->dtor) - (*tvp->dtor)(*tvp->ptr ); - if (executing == deleted) - *tvp->ptr = tvp->gval; - _Workspace_Free( tvp ); - tvp = next; - } - - /* - * Free API specific memory - */ - - (void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] ); - deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL; -} - -/*PAGE - * - * _RTEMS_tasks_Switch_extension - * - * This extension routine is invoked at each context switch. - */ - -void _RTEMS_tasks_Switch_extension( - Thread_Control *executing, - Thread_Control *heir -) -{ - rtems_task_variable_t *tvp; - - /* - * Per Task Variables - */ - - tvp = executing->task_variables; - while (tvp) { - tvp->tval = *tvp->ptr; - *tvp->ptr = tvp->gval; - tvp = tvp->next; - } - - tvp = heir->task_variables; - while (tvp) { - tvp->gval = *tvp->ptr; - *tvp->ptr = tvp->tval; - tvp = tvp->next; - } -} - -/*PAGE - * - * _RTEMS_tasks_Post_switch_extension - * - * This extension routine is invoked at each context switch. - */ - -void _RTEMS_tasks_Post_switch_extension( - Thread_Control *executing -) -{ - ISR_Level level; - RTEMS_API_Control *api; - ASR_Information *asr; - rtems_signal_set signal_set; - Modes_Control prev_mode; - - api = executing->API_Extensions[ THREAD_API_RTEMS ]; - - /* - * Signal Processing - */ - - asr = &api->Signal; - - _ISR_Disable( level ); - signal_set = asr->signals_posted; - asr->signals_posted = 0; - _ISR_Enable( level ); - - - if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ - return; - - asr->nest_level += 1; - rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); - - (*asr->handler)( signal_set ); - - asr->nest_level -= 1; - rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode ); - -} - -API_extensions_Control _RTEMS_tasks_API_extensions = { - { NULL, NULL }, - NULL, /* predriver */ - _RTEMS_tasks_Initialize_user_tasks, /* postdriver */ - _RTEMS_tasks_Post_switch_extension /* post switch */ -}; - -User_extensions_Control _RTEMS_tasks_User_extensions = { - { NULL, NULL }, - { { NULL, NULL }, _RTEMS_tasks_Switch_extension }, - { _RTEMS_tasks_Create_extension, /* create */ - _RTEMS_tasks_Start_extension, /* start */ - _RTEMS_tasks_Start_extension, /* restart */ - _RTEMS_tasks_Delete_extension, /* delete */ - _RTEMS_tasks_Switch_extension, /* switch */ - NULL, /* begin */ - NULL, /* exitted */ - NULL /* fatal */ - } -}; - -/*PAGE - * - * _RTEMS_tasks_Manager_initialization - * - * This routine initializes all Task Manager related data structures. - * - * Input parameters: - * maximum_tasks - number of tasks to initialize - * - * Output parameters: NONE - */ - -void _RTEMS_tasks_Manager_initialization( - unsigned32 maximum_tasks, - unsigned32 number_of_initialization_tasks, - rtems_initialization_tasks_table *user_tasks -) -{ - - _RTEMS_tasks_Number_of_initialization_tasks = number_of_initialization_tasks; - _RTEMS_tasks_User_initialization_tasks = user_tasks; - - /* - * There may not be any RTEMS initialization tasks configured. - */ - -#if 0 - if ( user_tasks == NULL || number_of_initialization_tasks == 0 ) - _Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, TRUE, RTEMS_TOO_MANY ); -#endif - - _Objects_Initialize_information( - &_RTEMS_tasks_Information, /* object information table */ - OBJECTS_CLASSIC_API, /* object API */ - OBJECTS_RTEMS_TASKS, /* object class */ - maximum_tasks, /* maximum objects of this class */ - sizeof( Thread_Control ), /* size of this object's control block */ - FALSE, /* TRUE if the name is a string */ - RTEMS_MAXIMUM_NAME_LENGTH /* maximum length of an object name */ -#if defined(RTEMS_MULTIPROCESSING) - , - FALSE, /* TRUE if this is a global object class */ - NULL /* Proxy extraction support callout */ -#endif - ); - - /* - * Add all the extensions for this API - */ - - _User_extensions_Add_API_set( &_RTEMS_tasks_User_extensions ); - - _API_extensions_Add( &_RTEMS_tasks_API_extensions ); - - /* - * Register the MP Process Packet routine. - */ - -#if defined(RTEMS_MULTIPROCESSING) - _MPCI_Register_packet_processor( - MP_PACKET_TASKS, - _RTEMS_tasks_MP_Process_packet - ); -#endif - -} - diff --git a/c/src/exec/rtems/src/tasksetnote.c b/c/src/exec/rtems/src/tasksetnote.c deleted file mode 100644 index d992bf48ca..0000000000 --- a/c/src/exec/rtems/src/tasksetnote.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_set_note - * - * This directive sets the specified notepad contents to the given - * note. - * - * Input parameters: - * id - thread id - * notepad - notepad number - * note - note value - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_set_note( - Objects_Id id, - unsigned32 notepad, - unsigned32 note -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - RTEMS_API_Control *api; - - /* - * NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would - * be checking an unsigned number for being negative. - */ - - if ( notepad > RTEMS_NOTEPAD_LAST ) - return RTEMS_INVALID_NUMBER; - - /* - * Optimize the most likely case to avoid the Thread_Dispatch. - */ - - if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) || - _Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) { - api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ]; - api->Notepads[ notepad ] = note; - return RTEMS_SUCCESSFUL; - } - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - return _RTEMS_tasks_MP_Send_request_packet( - RTEMS_TASKS_MP_SET_NOTE_REQUEST, - id, - 0, /* Not used */ - notepad, - note - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; - api->Notepads[ notepad ] = note; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/tasksetpriority.c b/c/src/exec/rtems/src/tasksetpriority.c deleted file mode 100644 index 426d9dc123..0000000000 --- a/c/src/exec/rtems/src/tasksetpriority.c +++ /dev/null @@ -1,98 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_set_priority - * - * This directive changes the priority of the specified thread. - * The specified thread can be any thread in the system including - * the requesting thread. - * - * Input parameters: - * id - thread id (0 indicates requesting thread) - * new_priority - thread priority (0 indicates current priority) - * old_priority - pointer to previous priority - * - * Output parameters: - * old_priority - previous priority - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_set_priority( - Objects_Id id, - rtems_task_priority new_priority, - rtems_task_priority *old_priority -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - - if ( new_priority != RTEMS_CURRENT_PRIORITY && - !_RTEMS_tasks_Priority_is_valid( new_priority ) ) - return RTEMS_INVALID_PRIORITY; - - if ( !old_priority ) - return RTEMS_INVALID_ADDRESS; - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Executing->Wait.return_argument = old_priority; - return _RTEMS_tasks_MP_Send_request_packet( - RTEMS_TASKS_MP_SET_PRIORITY_REQUEST, - id, - new_priority, - 0, /* Not used */ - 0 /* Not used */ - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - /* XXX convert from core priority */ - *old_priority = the_thread->current_priority; - if ( new_priority != RTEMS_CURRENT_PRIORITY ) { - the_thread->real_priority = new_priority; - if ( the_thread->resource_count == 0 || - the_thread->current_priority > new_priority ) - _Thread_Change_priority( the_thread, new_priority, FALSE ); - } - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/taskstart.c b/c/src/exec/rtems/src/taskstart.c deleted file mode 100644 index 6764333d87..0000000000 --- a/c/src/exec/rtems/src/taskstart.c +++ /dev/null @@ -1,84 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_start - * - * This directive readies the thread identified by the "id" - * based on its current priorty, to await execution. A thread - * can be started only from the dormant state. - * - * Input parameters: - * id - thread id - * entry_point - start execution address of thread - * argument - thread argument - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_start( - rtems_id id, - rtems_task_entry entry_point, - unsigned32 argument -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - - if ( entry_point == NULL ) - return RTEMS_INVALID_ADDRESS; - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( _Thread_Start( - the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) { - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - _Thread_Enable_dispatch(); - return RTEMS_INCORRECT_STATE; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/tasksuspend.c b/c/src/exec/rtems/src/tasksuspend.c deleted file mode 100644 index a0ff597c8d..0000000000 --- a/c/src/exec/rtems/src/tasksuspend.c +++ /dev/null @@ -1,82 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_suspend - * - * This directive will place the specified thread in the "suspended" - * state. Note that the suspended state can be in addition to - * other waiting states. - * - * Input parameters: - * id - thread id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_suspend( - Objects_Id id -) -{ - register Thread_Control *the_thread; - Objects_Locations location; - - the_thread = _Thread_Get( id, &location ); - switch ( location ) { - - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - return _RTEMS_tasks_MP_Send_request_packet( - RTEMS_TASKS_MP_SUSPEND_REQUEST, - id, - 0, /* Not used */ - 0, /* Not used */ - 0 /* Not used */ - ); -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( !_States_Is_suspended( the_thread->current_state ) ) { - _Thread_Suspend( the_thread ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - _Thread_Enable_dispatch(); - return RTEMS_ALREADY_SUSPENDED; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/taskvariableadd.c b/c/src/exec/rtems/src/taskvariableadd.c deleted file mode 100644 index 04d56d409d..0000000000 --- a/c/src/exec/rtems/src/taskvariableadd.c +++ /dev/null @@ -1,85 +0,0 @@ -/* - * rtems_task_variable_add - Add a per-task variable - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include - -/* - * rtems_task_variable_add - * - * This directive registers a task variable. - */ - -rtems_status_code rtems_task_variable_add( - rtems_id tid, - void **ptr, - void (*dtor)(void *) -) -{ - Thread_Control *the_thread; - Objects_Locations location; - rtems_task_variable_t *tvp, *new; - - the_thread = _Thread_Get (tid, &location); - switch (location) { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - default: - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_LOCAL: - - /* - * Figure out if the variable is already in this task's list. - */ - - tvp = the_thread->task_variables; - while (tvp) { - if (tvp->ptr == ptr) { - tvp->dtor = dtor; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - tvp = tvp->next; - } - - /* - * Now allocate memory for this task variable. - */ - - new = (rtems_task_variable_t *) - _Workspace_Allocate(sizeof(rtems_task_variable_t)); - if (new == NULL) { - _Thread_Enable_dispatch(); - return RTEMS_NO_MEMORY; - } - new->gval = *ptr; - new->ptr = ptr; - new->dtor = dtor; - - new->next = the_thread->task_variables; - the_thread->task_variables = new; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/taskvariabledelete.c b/c/src/exec/rtems/src/taskvariabledelete.c deleted file mode 100644 index d87a772c18..0000000000 --- a/c/src/exec/rtems/src/taskvariabledelete.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * rtems_task_variable_delete - Delete a per-task variable - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include - -/* - * rtems_task_variable_delete - * - * This directive removes a task variable. - */ - -rtems_status_code rtems_task_variable_delete( - rtems_id tid, - void **ptr -) -{ - Thread_Control *the_thread; - Objects_Locations location; - rtems_task_variable_t *tvp, *prev; - - prev = NULL; - - the_thread = _Thread_Get (tid, &location); - switch (location) { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - default: - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_LOCAL: - tvp = the_thread->task_variables; - while (tvp) { - if (tvp->ptr == ptr) { - if (prev) prev->next = tvp->next; - else the_thread->task_variables = tvp->next; - if (_Thread_Is_executing (the_thread)) - *tvp->ptr = tvp->gval; - _Thread_Enable_dispatch(); - _Workspace_Free(tvp); - return RTEMS_SUCCESSFUL; - } - prev = tvp; - tvp = tvp->next; - } - _Thread_Enable_dispatch(); - return RTEMS_INVALID_ADDRESS; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/taskvariableget.c b/c/src/exec/rtems/src/taskvariableget.c deleted file mode 100644 index cc6e98045c..0000000000 --- a/c/src/exec/rtems/src/taskvariableget.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * rtems_task_variable_get - Get a per-task variable - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include - -/* - * rtems_task_variable_get - * - * This directive gets the value of a task variable. - */ - -rtems_status_code rtems_task_variable_get( - rtems_id tid, - void **ptr, - void **result -) -{ - Thread_Control *the_thread; - Objects_Locations location; - rtems_task_variable_t *tvp; - - the_thread = _Thread_Get (tid, &location); - switch (location) { - case OBJECTS_REMOTE: -#if defined(RTEMS_MULTIPROCESSING) - _Thread_Dispatch(); - return RTEMS_ILLEGAL_ON_REMOTE_OBJECT; -#endif - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - default: - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_LOCAL: - - /* - * Figure out if the variable is in this task's list. - */ - - tvp = the_thread->task_variables; - while (tvp) { - if (tvp->ptr == ptr) { - /* - * Should this return the current (i.e not the - * saved) value if `tid' is the current task? - */ - *result = tvp->tval; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - tvp = tvp->next; - } - _Thread_Enable_dispatch(); - return RTEMS_INVALID_ADDRESS; - } - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/taskwakeafter.c b/c/src/exec/rtems/src/taskwakeafter.c deleted file mode 100644 index 65ecfa64d2..0000000000 --- a/c/src/exec/rtems/src/taskwakeafter.c +++ /dev/null @@ -1,64 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_wake_after - * - * This directive suspends the requesting thread for the given amount - * of ticks. - * - * Input parameters: - * ticks - number of ticks to wait - * - * Output parameters: - * RTEMS_SUCCESSFUL - always successful - */ - -rtems_status_code rtems_task_wake_after( - rtems_interval ticks -) -{ - _Thread_Disable_dispatch(); - if ( ticks == 0 ) { - _Thread_Yield_processor(); - } else { - _Thread_Set_state( _Thread_Executing, STATES_DELAYING ); - _Watchdog_Initialize( - &_Thread_Executing->Timer, - _Thread_Delay_ended, - _Thread_Executing->Object.id, - NULL - ); - _Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks ); - } - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/taskwakewhen.c b/c/src/exec/rtems/src/taskwakewhen.c deleted file mode 100644 index 3469b7ee17..0000000000 --- a/c/src/exec/rtems/src/taskwakewhen.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * RTEMS Task Manager - * - * - * COPYRIGHT (c) 1989-1999. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_task_wake_when - * - * This directive blocks the requesting thread until the given date and - * time is reached. - * - * Input parameters: - * time_buffer - pointer to the time and date structure - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_task_wake_when( -rtems_time_of_day *time_buffer -) -{ - Watchdog_Interval seconds; - - if ( !_TOD_Is_set ) - return RTEMS_NOT_DEFINED; - - time_buffer->ticks = 0; - - if ( !_TOD_Validate( time_buffer ) ) - return RTEMS_INVALID_CLOCK; - - seconds = _TOD_To_seconds( time_buffer ); - - if ( seconds <= _TOD_Seconds_since_epoch ) - return RTEMS_INVALID_CLOCK; - - _Thread_Disable_dispatch(); - _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME ); - _Watchdog_Initialize( - &_Thread_Executing->Timer, - _Thread_Delay_ended, - _Thread_Executing->Object.id, - NULL - ); - _Watchdog_Insert_seconds( - &_Thread_Executing->Timer, - seconds - _TOD_Seconds_since_epoch - ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/timercancel.c b/c/src/exec/rtems/src/timercancel.c deleted file mode 100644 index a4b2ea60d5..0000000000 --- a/c/src/exec/rtems/src/timercancel.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Timer Manager - rtems_timer_cancel directive - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_timer_cancel - * - * This directive allows a thread to cancel a timer. - * - * Input parameters: - * id - timer id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_timer_cancel( - Objects_Id id -) -{ - Timer_Control *the_timer; - Objects_Locations location; - - the_timer = _Timer_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - if ( !_Timer_Is_dormant_class( the_timer->the_class ) ) - (void) _Watchdog_Remove( &the_timer->Ticker ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/timercreate.c b/c/src/exec/rtems/src/timercreate.c deleted file mode 100644 index a2e1fb72c5..0000000000 --- a/c/src/exec/rtems/src/timercreate.c +++ /dev/null @@ -1,66 +0,0 @@ -/* - * Timer Manager - rtems_timer_create directive - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_timer_create - * - * This directive creates a timer and performs some initialization. - * - * Input parameters: - * name - timer name - * id - pointer to timer id - * - * Output parameters: - * id - timer id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_timer_create( - rtems_name name, - Objects_Id *id -) -{ - Timer_Control *the_timer; - - if ( !rtems_is_name_valid( name ) ) - return RTEMS_INVALID_NAME; - - _Thread_Disable_dispatch(); /* to prevent deletion */ - - the_timer = _Timer_Allocate(); - - if ( !the_timer ) { - _Thread_Enable_dispatch(); - return RTEMS_TOO_MANY; - } - - the_timer->the_class = TIMER_DORMANT; - - _Objects_Open( &_Timer_Information, &the_timer->Object, name ); - - *id = the_timer->Object.id; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} diff --git a/c/src/exec/rtems/src/timerdelete.c b/c/src/exec/rtems/src/timerdelete.c deleted file mode 100644 index 87c61941d7..0000000000 --- a/c/src/exec/rtems/src/timerdelete.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - * Timer Manager - rtems_timer_delete directive - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_timer_delete - * - * This directive allows a thread to delete a timer. - * - * Input parameters: - * id - timer id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_timer_delete( - Objects_Id id -) -{ - Timer_Control *the_timer; - Objects_Locations location; - - the_timer = _Timer_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - _Objects_Close( &_Timer_Information, &the_timer->Object ); - (void) _Watchdog_Remove( &the_timer->Ticker ); - _Timer_Free( the_timer ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/timerfireafter.c b/c/src/exec/rtems/src/timerfireafter.c deleted file mode 100644 index 76a3e3a0e6..0000000000 --- a/c/src/exec/rtems/src/timerfireafter.c +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Timer Manager - rtems_timer_fire_after directive - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_timer_fire_after - * - * This directive allows a thread to start a timer. - * - * Input parameters: - * id - timer id - * ticks - interval until routine is fired - * routine - routine to schedule - * user_data - passed as argument to routine when it is fired - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_timer_fire_after( - Objects_Id id, - rtems_interval ticks, - rtems_timer_service_routine_entry routine, - void *user_data -) -{ - Timer_Control *the_timer; - Objects_Locations location; - - if ( ticks == 0 ) - return RTEMS_INVALID_NUMBER; - - the_timer = _Timer_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - (void) _Watchdog_Remove( &the_timer->Ticker ); - the_timer->the_class = TIMER_INTERVAL; - _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); - _Watchdog_Insert_ticks( &the_timer->Ticker, ticks ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/timerfirewhen.c b/c/src/exec/rtems/src/timerfirewhen.c deleted file mode 100644 index c2d9fdc222..0000000000 --- a/c/src/exec/rtems/src/timerfirewhen.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Timer Manager - rtems_timer_fire_when directive - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_timer_fire_when - * - * This directive allows a thread to start a timer. - * - * Input parameters: - * id - timer id - * wall_time - time of day to fire timer - * routine - routine to schedule - * user_data - passed as argument to routine when it is fired - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_timer_fire_when( - Objects_Id id, - rtems_time_of_day *wall_time, - rtems_timer_service_routine_entry routine, - void *user_data -) -{ - Timer_Control *the_timer; - Objects_Locations location; - rtems_interval seconds; - - if ( !_TOD_Is_set ) - return RTEMS_NOT_DEFINED; - - if ( !_TOD_Validate( wall_time ) ) - return RTEMS_INVALID_CLOCK; - - seconds = _TOD_To_seconds( wall_time ); - if ( seconds <= _TOD_Seconds_since_epoch ) - return RTEMS_INVALID_CLOCK; - - the_timer = _Timer_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - (void) _Watchdog_Remove( &the_timer->Ticker ); - the_timer->the_class = TIMER_TIME_OF_DAY; - _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); - _Watchdog_Insert_seconds( - &the_timer->Ticker, - seconds - _TOD_Seconds_since_epoch - ); - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/timergetinfo.c b/c/src/exec/rtems/src/timergetinfo.c deleted file mode 100644 index efcd9c71a5..0000000000 --- a/c/src/exec/rtems/src/timergetinfo.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Timer Manager - rtems_timer_get_information directive - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_timer_get_information - * - * This directive allows a thread to obtain information about a timer. - * - * Input parameters: - * id - timer id - * the_info - pointer to timer information block - * - * Output parameters: - * *the_info - region information block filled in - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - * - */ - -rtems_status_code rtems_timer_get_information( - Objects_Id id, - rtems_timer_information *the_info -) -{ - Timer_Control *the_timer; - Objects_Locations location; - - if ( !the_info ) - return RTEMS_INVALID_ADDRESS; - - the_timer = _Timer_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - the_info->the_class = the_timer->the_class; - the_info->initial = the_timer->Ticker.initial; - the_info->start_time = the_timer->Ticker.start_time; - the_info->stop_time = the_timer->Ticker.stop_time; - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/timerident.c b/c/src/exec/rtems/src/timerident.c deleted file mode 100644 index f8e1815026..0000000000 --- a/c/src/exec/rtems/src/timerident.c +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Timer Manager - rtems_timer_ident directive - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_timer_ident - * - * This directive returns the system ID associated with - * the timer name. - * - * Input parameters: - * name - user defined message queue name - * id - pointer to timer id - * - * Output parameters: - * *id - message queue id - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_timer_ident( - rtems_name name, - Objects_Id *id -) -{ - Objects_Name_to_id_errors status; - - status = _Objects_Name_to_id( - &_Timer_Information, - name, - OBJECTS_SEARCH_LOCAL_NODE, - id - ); - - return _Status_Object_name_errors_to_status[ status ]; -} diff --git a/c/src/exec/rtems/src/timerreset.c b/c/src/exec/rtems/src/timerreset.c deleted file mode 100644 index 796fb5ecfb..0000000000 --- a/c/src/exec/rtems/src/timerreset.c +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Timer Manager - rtems_timer_reset directive - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_timer_reset - * - * This directive allows a thread to reset a timer. - * - * Input parameters: - * id - timer id - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_timer_reset( - Objects_Id id -) -{ - Timer_Control *the_timer; - Objects_Locations location; - - the_timer = _Timer_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - switch ( the_timer->the_class ) { - case TIMER_INTERVAL: - _Watchdog_Remove( &the_timer->Ticker ); - _Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker ); - break; - case TIMER_INTERVAL_ON_TASK: - _Timer_Server_stop_ticks_timer(); - _Watchdog_Remove( &the_timer->Ticker ); - _Timer_Server_process_ticks_chain(); - _Watchdog_Insert( &_Timer_Ticks_chain, &the_timer->Ticker ); - _Timer_Server_reset_ticks_timer(); - break; - case TIMER_TIME_OF_DAY: - case TIMER_TIME_OF_DAY_ON_TASK: - case TIMER_DORMANT: - _Thread_Enable_dispatch(); - return RTEMS_NOT_DEFINED; - } - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/timerserver.c b/c/src/exec/rtems/src/timerserver.c deleted file mode 100644 index 902f94aaf1..0000000000 --- a/c/src/exec/rtems/src/timerserver.c +++ /dev/null @@ -1,316 +0,0 @@ -/* - * Timer Manager - rtems_timer_initiate_server directive along with - * the Timer Server Body and support routines - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -/* - * The following chains contain the list of interval timers that are - * executed in the context of the Timer Server. - * - * NOTE: These are prototyped in rtems/timer/timer.h but since we - * do not actually use them until after the Timer Server is - * initiated, we can actually declare them here and avoid forcing - * them into the minimum footprint. - */ - -Chain_Control _Timer_Ticks_chain; -Chain_Control _Timer_Seconds_chain; - -/* - * These variables keep track of the last time the Timer Server actually - * processed the chain. - */ - -Watchdog_Interval _Timer_Server_seconds_last_time; -Watchdog_Interval _Timer_Server_ticks_last_time; - -/* - * The timer used to control when the Timer Server wakes up to service - * "when" timers. - */ - -Watchdog_Control _Timer_Seconds_timer; - -/*PAGE - * - * _Timer_Server_body - * - * This is the server for task based timers. This task executes whenever - * a task-based timer should fire. It services both "after" and "when" - * timers. It is not created automatically but must be created explicitly - * by the application before task-based timers may be initiated. - * - * Input parameters: - * Ignored - the task argument is ignored - * - * Output parameters: NONE - */ - -Thread _Timer_Server_body( - unsigned32 ignored -) -{ - /* - * Initialize the "last time" markers to indicate the timer that - * the server was initiated. - */ - - _Timer_Server_ticks_last_time = _Watchdog_Ticks_since_boot; - _Timer_Server_seconds_last_time = _TOD_Seconds_since_epoch; - - _Thread_Disable_dispatch(); - while(1) { - - /* - * Block until there is something to do. - */ - - _Thread_Set_state( _Timer_Server, STATES_DELAYING ); - _Timer_Server_reset_ticks_timer(); - _Timer_Server_reset_seconds_timer(); - _Thread_Enable_dispatch(); - - /* - * At this point, at least one of the timers this task relies - * upon has fired. Stop them both while we process any outstanding - * timers. Before we block, we will restart them. - */ - - _Timer_Server_stop_ticks_timer(); - _Timer_Server_stop_seconds_timer(); - - /* - * Disable dispatching while processing the timers since we want - * to mimic the environment that non-task-based TSRs execute in. - * This ensures that the primary difference is that _ISR_Nest_level - * is 0 for task-based timers and non-zero for the others. - */ - - _Thread_Disable_dispatch(); - _Timer_Server_process_ticks_chain(); - _Timer_Server_process_seconds_chain(); - } -} - -/*PAGE - * - * rtems_timer_initiate_server - * - * This directive creates and starts the server for task-based timers. - * It must be invoked before any task-based timers can be initiated. - * - * Input parameters: - * priority - timer server priority - * stack_size - stack size in bytes - * attribute_set - timer server attributes - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - - -rtems_status_code rtems_timer_initiate_server( - unsigned32 priority, - unsigned32 stack_size, - rtems_attribute attribute_set -) -{ - rtems_id id; - rtems_status_code status; - rtems_task_priority _priority; - - /* - * Make sure the requested priority is valid. - */ - - _priority = priority; - if ( priority == RTEMS_TIMER_SERVER_DEFAULT_PRIORITY ) - _priority = 0; - else if ( !_RTEMS_tasks_Priority_is_valid( priority ) ) - return RTEMS_INVALID_PRIORITY; - - /* - * Just to make sure the test versus create/start operation are atomic. - */ - - _Thread_Disable_dispatch(); - - if ( _Timer_Server ) { - _Thread_Enable_dispatch(); - return RTEMS_INCORRECT_STATE; - } - - /* - * Create the Timer Server with the name the name of "TIME". The attribute - * RTEMS_SYSTEM_TASK allows us to set a priority to 0 which will makes it - * higher than any other task in the system. It can be viewed as a low - * priority interrupt. It is also always NO_PREEMPT so it looks like - * an interrupt to other tasks. - * - * We allow the user to override the default priority because the Timer - * Server can invoke TSRs which must adhere to language run-time or - * other library rules. For example, if using a TSR written in Ada the - * Server should run at the same priority as the priority Ada task. - * Otherwise, the priority ceiling for the mutex used to protect the - * GNAT run-time is violated. - */ - - status = rtems_task_create( - 0x4954454d, /* "TIME" */ - _priority, /* create with priority 1 since 0 is illegal */ - stack_size, /* let user specify stack size */ - RTEMS_NO_PREEMPT, /* no preempt is like an interrupt */ - /* user may want floating point but we need */ - /* system task specified for 0 priority */ - attribute_set | RTEMS_SYSTEM_TASK, - &id /* get the id back */ - ); - if (status) { - _Thread_Enable_dispatch(); - return status; - } - - status = rtems_task_start( - id, /* the id from create */ - (rtems_task_entry) _Timer_Server_body, /* the timer server entry point */ - 0 /* there is no argument */ - ); - if (status) { - /* - * One would expect a call to rtems_task_delete() here to clean up - * but there is actually no way (in normal circumstances) that the - * start can fail. The id and starting address are known to be - * be good. If this service fails, something is weirdly wrong on the - * target such as a stray write in an ISR or incorrect memory layout. - */ - _Thread_Enable_dispatch(); - return status; - } - - /* - * We work with the TCB pointer, not the ID, so we need to convert - * to a TCB pointer from here out. - * - * NOTE: Setting the pointer to the Timer Server TCB to a value other than - * NULL indicates that task-based timer support is initialized. - */ - - _Timer_Server = (Thread_Control *)_Objects_Get_local_object( - &_RTEMS_tasks_Information, - _Objects_Get_index(id) - ); - - /* - * Initialize the timer lists that the server will manage. - */ - - _Chain_Initialize_empty( &_Timer_Ticks_chain ); - _Chain_Initialize_empty( &_Timer_Seconds_chain ); - - /* - * Initialize the timers that will be used to control when the - * Timer Server wakes up and services the task-based timers. - */ - - _Watchdog_Initialize( &_Timer_Server->Timer, _Thread_Delay_ended, id, NULL ); - _Watchdog_Initialize( &_Timer_Seconds_timer, _Thread_Delay_ended, id, NULL ); - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; -} - -/*PAGE - * - * _Timer_Server_process_ticks_chain - * - * This routine is responsible for adjusting the list of task-based - * interval timers to reflect the passage of time. - * - * Input parameters: NONE - * - * Output parameters: NONE - */ - -void _Timer_Server_process_ticks_chain(void) -{ - Watchdog_Interval snapshot; - Watchdog_Interval ticks; - - snapshot = _Watchdog_Ticks_since_boot; - if ( snapshot >= _Timer_Server_ticks_last_time ) - ticks = snapshot - _Timer_Server_ticks_last_time; - else - ticks = (0xFFFFFFFF - _Timer_Server_ticks_last_time) + snapshot; - - _Timer_Server_ticks_last_time = snapshot; - _Watchdog_Adjust( &_Timer_Ticks_chain, WATCHDOG_FORWARD, ticks ); -} - -/*PAGE - * - * _Timer_Server_process_seconds_chain - * - * This routine is responsible for adjusting the list of task-based - * time of day timers to reflect the passage of time. - * - * Input parameters: NONE - * - * Output parameters: NONE - */ - -void _Timer_Server_process_seconds_chain(void) -{ - Watchdog_Interval snapshot; - Watchdog_Interval ticks; - - /* - * Process the seconds chain. Start by checking that the Time - * of Day (TOD) has not been set backwards. If it has then - * we want to adjust the _Timer_Seconds_chain to indicate this. - */ - - snapshot = _TOD_Seconds_since_epoch; - if ( snapshot > _Timer_Server_seconds_last_time ) { - /* - * This path is for normal forward movement and cases where the - * TOD has been set forward. - */ - - ticks = snapshot - _Timer_Server_seconds_last_time; - _Watchdog_Adjust( &_Timer_Seconds_chain, WATCHDOG_FORWARD, ticks ); - - } else if ( snapshot < _Timer_Server_seconds_last_time ) { - /* - * The current TOD is before the last TOD which indicates that - * TOD has been set backwards. - */ - - ticks = _Timer_Server_seconds_last_time - snapshot; - _Watchdog_Adjust( &_Timer_Seconds_chain, WATCHDOG_BACKWARD, ticks ); - } - _Timer_Server_seconds_last_time = snapshot; -} - diff --git a/c/src/exec/rtems/src/timerserverfireafter.c b/c/src/exec/rtems/src/timerserverfireafter.c deleted file mode 100644 index 8c53449f1d..0000000000 --- a/c/src/exec/rtems/src/timerserverfireafter.c +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Timer Manager - rtems_timer_server fire_after directive - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_timer_server_fire_after - * - * This directive allows a thread to start a timer which will by - * executed by the Timer Server when it fires. - * - * Input parameters: - * id - timer id - * ticks - interval until routine is fired - * routine - routine to schedule - * user_data - passed as argument to routine when it is fired - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_timer_server_fire_after( - Objects_Id id, - rtems_interval ticks, - rtems_timer_service_routine_entry routine, - void *user_data -) -{ - Timer_Control *the_timer; - Objects_Locations location; - extern Chain_Control _Timer_Ticks_chain; - - if ( !_Timer_Server ) - return RTEMS_INCORRECT_STATE; - - if ( ticks == 0 ) - return RTEMS_INVALID_NUMBER; - - the_timer = _Timer_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - (void) _Watchdog_Remove( &the_timer->Ticker ); - the_timer->the_class = TIMER_INTERVAL_ON_TASK; - _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); - the_timer->Ticker.initial = ticks; - - _Timer_Server_stop_ticks_timer(); - _Timer_Server_process_ticks_chain(); - _Watchdog_Insert( &_Timer_Ticks_chain, &the_timer->Ticker ); - _Timer_Server_reset_ticks_timer(); - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} diff --git a/c/src/exec/rtems/src/timerserverfirewhen.c b/c/src/exec/rtems/src/timerserverfirewhen.c deleted file mode 100644 index 4385d06cf8..0000000000 --- a/c/src/exec/rtems/src/timerserverfirewhen.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Timer Manager - rtems_timer_server fire_when directive - * - * - * COPYRIGHT (c) 1989-2002. - * On-Line Applications Research Corporation (OAR). - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.OARcorp.com/rtems/license.html. - * - * $Id$ - */ - -#include -#include -#include -#include -#include -#include -#include -#include - -/*PAGE - * - * rtems_timer_server_fire_when - * - * This directive allows a thread to start a timer which will by - * executed by the Timer Server when it fires. - * - * Input parameters: - * id - timer id - * wall_time - time of day to fire timer - * routine - routine to schedule - * user_data - passed as argument to routine when it is fired - * - * Output parameters: - * RTEMS_SUCCESSFUL - if successful - * error code - if unsuccessful - */ - -rtems_status_code rtems_timer_server_fire_when( - Objects_Id id, - rtems_time_of_day *wall_time, - rtems_timer_service_routine_entry routine, - void *user_data -) -{ - Timer_Control *the_timer; - Objects_Locations location; - rtems_interval seconds; - extern Chain_Control _Timer_Seconds_chain; - - if ( !_Timer_Server ) - return RTEMS_INCORRECT_STATE; - - if ( !_TOD_Is_set ) - return RTEMS_NOT_DEFINED; - - if ( !_TOD_Validate( wall_time ) ) - return RTEMS_INVALID_CLOCK; - - seconds = _TOD_To_seconds( wall_time ); - if ( seconds <= _TOD_Seconds_since_epoch ) - return RTEMS_INVALID_CLOCK; - - the_timer = _Timer_Get( id, &location ); - switch ( location ) { - case OBJECTS_REMOTE: /* should never return this */ - return RTEMS_INTERNAL_ERROR; - - case OBJECTS_ERROR: - return RTEMS_INVALID_ID; - - case OBJECTS_LOCAL: - (void) _Watchdog_Remove( &the_timer->Ticker ); - the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK; - _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data ); - the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch; - - _Timer_Server_stop_seconds_timer(); - _Timer_Server_process_seconds_chain(); - _Watchdog_Insert( &_Timer_Seconds_chain, &the_timer->Ticker ); - _Timer_Server_reset_seconds_timer(); - - _Thread_Enable_dispatch(); - return RTEMS_SUCCESSFUL; - } - - return RTEMS_INTERNAL_ERROR; /* unreached - only to remove warnings */ -} -- cgit v1.2.3