forked from Imagelibrary/rtems
changes remerged after disk crash -- history lost
This commit is contained in:
@@ -1,9 +0,0 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
This directory contains the SHM driver support files for
|
||||
System V/POSIX derived UNIX flavors.
|
||||
|
||||
WARNING: The interrupt support in this directory currently will
|
||||
only work in a homogeneous system.
|
||||
|
||||
@@ -1,30 +0,0 @@
|
||||
/* rtems_unsigned32 *Shm_Convert_address( addr )
|
||||
*
|
||||
* No address range conversion is required.
|
||||
*
|
||||
* Input parameters:
|
||||
* addr - address to convert
|
||||
*
|
||||
* Output parameters:
|
||||
* returns - converted address
|
||||
*
|
||||
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
* All rights assigned to U.S. Government, 1994.
|
||||
*
|
||||
* This material may be reproduced by or for the U.S. Government pursuant
|
||||
* to the copyright license under the clause at DFARS 252.227-7013. This
|
||||
* notice must appear in all copies of this file and its derivatives.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
#include <shm.h>
|
||||
|
||||
void *Shm_Convert_address(
|
||||
void *addr
|
||||
)
|
||||
{
|
||||
return ( addr );
|
||||
}
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
/* void Shm_get_config( localnode, &shmcfg )
|
||||
*
|
||||
* This routine initializes, if necessary, and returns a pointer
|
||||
* to the Shared Memory Configuration Table for the UNIX
|
||||
* simulator.
|
||||
*
|
||||
* INPUT PARAMETERS:
|
||||
* localnode - local node number
|
||||
* shmcfg - address of pointer to SHM Config Table
|
||||
*
|
||||
* OUTPUT PARAMETERS:
|
||||
* *shmcfg - pointer to SHM Config Table
|
||||
*
|
||||
* NOTES: This driver is capable of supporting a practically unlimited
|
||||
* number of nodes.
|
||||
*
|
||||
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
* All rights assigned to U.S. Government, 1994.
|
||||
*
|
||||
* This material may be reproduced by or for the U.S. Government pursuant
|
||||
* to the copyright license under the clause at DFARS 252.227-7013. This
|
||||
* notice must appear in all copies of this file and its derivatives.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
#include <shm.h>
|
||||
|
||||
shm_config_table BSP_shm_cfgtbl;
|
||||
|
||||
int semid;
|
||||
|
||||
void Shm_Cause_interrupt_unix(
|
||||
rtems_unsigned32 node
|
||||
);
|
||||
|
||||
void Shm_Get_configuration(
|
||||
rtems_unsigned32 localnode,
|
||||
shm_config_table **shmcfg
|
||||
)
|
||||
{
|
||||
_CPU_SHM_Init(
|
||||
Shm_Maximum_nodes,
|
||||
Shm_Is_master_node(),
|
||||
(void **)&BSP_shm_cfgtbl.base,
|
||||
(unsigned32 *)&BSP_shm_cfgtbl.length
|
||||
);
|
||||
|
||||
BSP_shm_cfgtbl.format = SHM_BIG;
|
||||
|
||||
BSP_shm_cfgtbl.cause_intr = Shm_Cause_interrupt_unix;
|
||||
|
||||
#ifdef NEUTRAL_BIG
|
||||
BSP_shm_cfgtbl.convert = NULL_CONVERT;
|
||||
#else
|
||||
BSP_shm_cfgtbl.convert = CPU_swap_u32;
|
||||
#endif
|
||||
|
||||
if ( _CPU_SHM_Get_vector() ) {
|
||||
BSP_shm_cfgtbl.poll_intr = INTR_MODE;
|
||||
BSP_shm_cfgtbl.Intr.address = (vol_u32 *) _CPU_Get_pid(); /* process id */
|
||||
BSP_shm_cfgtbl.Intr.value = _CPU_SHM_Get_vector(); /* signal to send */
|
||||
BSP_shm_cfgtbl.Intr.length = LONG;
|
||||
} else {
|
||||
BSP_shm_cfgtbl.poll_intr = POLLED_MODE;
|
||||
BSP_shm_cfgtbl.Intr.address = NO_INTERRUPT;
|
||||
BSP_shm_cfgtbl.Intr.value = NO_INTERRUPT;
|
||||
BSP_shm_cfgtbl.Intr.length = NO_INTERRUPT;
|
||||
}
|
||||
|
||||
*shmcfg = &BSP_shm_cfgtbl;
|
||||
}
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/* void Shm_interrupt_unix( node )
|
||||
*
|
||||
* This routine is the shared memory driver routine which
|
||||
* generates interrupts to other CPUs.
|
||||
*
|
||||
* Input parameters:
|
||||
* node - destination of this packet (0 = broadcast)
|
||||
*
|
||||
* Output parameters: NONE
|
||||
*
|
||||
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
* All rights assigned to U.S. Government, 1994.
|
||||
*
|
||||
* This material may be reproduced by or for the U.S. Government pursuant
|
||||
* to the copyright license under the clause at DFARS 252.227-7013. This
|
||||
* notice must appear in all copies of this file and its derivatives.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
#include <shm.h>
|
||||
|
||||
void Shm_Cause_interrupt_unix(
|
||||
rtems_unsigned32 node
|
||||
)
|
||||
{
|
||||
Shm_Interrupt_information *intr;
|
||||
intr = &Shm_Interrupt_table[node];
|
||||
|
||||
_CPU_SHM_Send_interrupt( (int) intr->address, (int) intr->value );
|
||||
}
|
||||
|
||||
@@ -1,74 +0,0 @@
|
||||
/* Shared Memory Lock Routines
|
||||
*
|
||||
* This shared memory locked queue support routine need to be
|
||||
* able to lock the specified locked queue. Interrupts are
|
||||
* disabled while the queue is locked to prevent preemption
|
||||
* and deadlock when two tasks poll for the same lock.
|
||||
* previous level.
|
||||
*
|
||||
* COPYRIGHT (c) 1989, 1990, 1991, 1992, 1993, 1994.
|
||||
* On-Line Applications Research Corporation (OAR).
|
||||
* All rights assigned to U.S. Government, 1994.
|
||||
*
|
||||
* This material may be reproduced by or for the U.S. Government pursuant
|
||||
* to the copyright license under the clause at DFARS 252.227-7013. This
|
||||
* notice must appear in all copies of this file and its derivatives.
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#include <bsp.h>
|
||||
#include <shm.h>
|
||||
|
||||
extern int semid;
|
||||
|
||||
/*
|
||||
* Shm_Initialize_lock
|
||||
*
|
||||
* Initialize the lock for the specified locked queue.
|
||||
*/
|
||||
|
||||
void Shm_Initialize_lock(
|
||||
Shm_Locked_queue_Control *lq_cb
|
||||
)
|
||||
{
|
||||
lq_cb->lock = lq_cb - Shm_Locked_queues;
|
||||
}
|
||||
|
||||
/* Shm_Lock( &lq_cb )
|
||||
*
|
||||
* This shared memory locked queue support routine locks the
|
||||
* specified locked queue. It disables interrupts to prevent
|
||||
* a deadlock condition.
|
||||
*/
|
||||
|
||||
void Shm_Lock(
|
||||
Shm_Locked_queue_Control *lq_cb
|
||||
)
|
||||
{
|
||||
rtems_unsigned32 isr_level;
|
||||
|
||||
rtems_interrupt_disable( isr_level );
|
||||
|
||||
Shm_isrstat = isr_level;
|
||||
|
||||
_CPU_SHM_Lock( lq_cb->lock );
|
||||
}
|
||||
|
||||
/*
|
||||
* Shm_Unlock
|
||||
*
|
||||
* Unlock the lock for the specified locked queue.
|
||||
*/
|
||||
|
||||
void Shm_Unlock(
|
||||
Shm_Locked_queue_Control *lq_cb
|
||||
)
|
||||
{
|
||||
rtems_unsigned32 isr_level;
|
||||
|
||||
_CPU_SHM_Unlock( lq_cb->lock );
|
||||
|
||||
isr_level = Shm_isrstat;
|
||||
rtems_interrupt_enable( isr_level );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user