forked from Imagelibrary/rtems
2002-01-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
* configure.ac: Autoupdate to 2.52. Remove pdl2texi. * Makefile.am: Remove pdl2texi.
This commit is contained in:
@@ -1,3 +1,9 @@
|
|||||||
|
2002-01-21 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||||
|
|
||||||
|
* configure.ac: Autoupdate to 2.52.
|
||||||
|
Remove pdl2texi.
|
||||||
|
* Makefile.am: Remove pdl2texi.
|
||||||
|
|
||||||
2002-01-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
2002-01-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||||
|
|
||||||
* Makefile.am: Require automake-1.5.
|
* Makefile.am: Require automake-1.5.
|
||||||
|
|||||||
@@ -4,4 +4,4 @@ AUTOMAKE_OPTIONS = foreign 1.5
|
|||||||
|
|
||||||
EXTRA_DIST = word-replace2
|
EXTRA_DIST = word-replace2
|
||||||
|
|
||||||
SUBDIRS = bmenu src2html1.4a src2html pdl2texi texi2www
|
SUBDIRS = bmenu src2html1.4a src2html texi2www
|
||||||
|
|||||||
@@ -1,8 +1,9 @@
|
|||||||
dnl Process this file with autoconf to produce a configure script.
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
dnl NOTE: This is a very coarse port to automake
|
dnl NOTE: This is a very coarse port to automake
|
||||||
AC_PREREQ(2.13)
|
AC_PREREQ(2.52)
|
||||||
|
|
||||||
AC_INIT(word-replace2)
|
AC_INIT
|
||||||
|
AC_CONFIG_SRCDIR([word-replace2])
|
||||||
|
|
||||||
AM_INIT_AUTOMAKE(rtemsdoc-tools,0.0.0,no)
|
AM_INIT_AUTOMAKE(rtemsdoc-tools,0.0.0,no)
|
||||||
dnl Checks for programs.
|
dnl Checks for programs.
|
||||||
@@ -19,14 +20,13 @@ dnl Checks for typedefs, structures, and compiler characteristics.
|
|||||||
dnl Checks for library functions.
|
dnl Checks for library functions.
|
||||||
AC_CHECK_FUNCS(strdup strstr)
|
AC_CHECK_FUNCS(strdup strstr)
|
||||||
|
|
||||||
AC_OUTPUT(
|
AC_CONFIG_FILES([Makefile
|
||||||
Makefile
|
|
||||||
bmenu/Makefile
|
bmenu/Makefile
|
||||||
src2html/Makefile
|
src2html/Makefile
|
||||||
src2html1.4a/Makefile
|
src2html1.4a/Makefile
|
||||||
src2html1.4a/Ctags/Makefile
|
src2html1.4a/Ctags/Makefile
|
||||||
src2html1.4a/FreeBSD/Makefile
|
src2html1.4a/FreeBSD/Makefile
|
||||||
src2html1.4a/ctags-emacs/Makefile
|
src2html1.4a/ctags-emacs/Makefile
|
||||||
pdl2texi/Makefile
|
|
||||||
texi2www/Makefile
|
texi2www/Makefile
|
||||||
)
|
])
|
||||||
|
AC_OUTPUT
|
||||||
|
|||||||
@@ -1,4 +0,0 @@
|
|||||||
.deps
|
|
||||||
Makefile
|
|
||||||
Makefile.in
|
|
||||||
pdl2texi
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
2002-01-18 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
|
||||||
|
|
||||||
* Makefile.am: Require automake-1.5.
|
|
||||||
|
|
||||||
2000-08-10 Joel Sherrill <joel@OARcorp.com>
|
|
||||||
|
|
||||||
* ChangeLog: New file.
|
|
||||||
@@ -1,57 +0,0 @@
|
|||||||
#
|
|
||||||
# COPYRIGHT (c) 1996-2000.
|
|
||||||
# On-Line Applications Research Corporation (OAR).
|
|
||||||
# All rights reserved.
|
|
||||||
#
|
|
||||||
# $Id$
|
|
||||||
#
|
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = foreign 1.5
|
|
||||||
|
|
||||||
PROG = pdl2texi
|
|
||||||
noinst_PROGRAMS = $(PROG)
|
|
||||||
|
|
||||||
#$(BASE).texi: $(BASE).d ./$(PROG)
|
|
||||||
# ./$(PROG) $(BASE).d
|
|
||||||
|
|
||||||
pdl2texi_SOURCES = address.inl chain.h main.c system.h base.h chain.inl \
|
|
||||||
address.h chain.c isr.h
|
|
||||||
|
|
||||||
BASE = sample
|
|
||||||
|
|
||||||
#drive: Drive
|
|
||||||
#Drive: $(BASE).txt
|
|
||||||
# /usr1/home/joel/tmp/makeinfo $(PROJECT).texi
|
|
||||||
|
|
||||||
#dvi: $(PROJECT).dvi
|
|
||||||
#ps: $(PROJECT).ps
|
|
||||||
#info: Drive
|
|
||||||
#html: $(PROJECT).texi $(BASE).txt
|
|
||||||
# ../textools/texi2html $(PROJECT).texi
|
|
||||||
|
|
||||||
$(BASE).txt: $(BASE).d
|
|
||||||
./$(PROG) -v -p "Turret Subsystem" -u "Turret Subsystem" $(BASE).d
|
|
||||||
|
|
||||||
wtest:
|
|
||||||
rm -f $(BASE).txt
|
|
||||||
./$(PROG) -w -v -p "Turret Subsystem" -u "Turret Subsystem" $(BASE).d
|
|
||||||
|
|
||||||
enum:
|
|
||||||
./$(PROG) -w -v -p "Magic Subsystem" \
|
|
||||||
-u "Magic Subsystem" test_cases/enum.d
|
|
||||||
./$(PROG) -w -v -p "Magic Subsystem" \
|
|
||||||
-u "Magic Subsystem" test_cases/enumbad.d
|
|
||||||
|
|
||||||
avdas:
|
|
||||||
./$(PROG) -v -p "Magic Subsystem" \
|
|
||||||
-u "Magic Subsystem" test_cases/avdas.d
|
|
||||||
./$(PROG) -w -v -p "Magic Subsystem" \
|
|
||||||
-u "Magic Subsystem" test_cases/avdas.d
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f *.o $(PROG) *.txt core *.html $(PROJECT) Drive.texi
|
|
||||||
rm -f *.dvi *.ps *.log *.aux *.cp *.fn *.ky *.pg *.toc *.tp *.vr $(BASE)
|
|
||||||
rm -f test_cases/*.txt test_cases/*.texi
|
|
||||||
|
|
||||||
EXTRA_DIST = test_cases/enum.d test_cases/enumbad.d test_cases/table.d s.d \
|
|
||||||
sample.d
|
|
||||||
@@ -1,110 +0,0 @@
|
|||||||
/* address.h
|
|
||||||
*
|
|
||||||
* This include file contains the information required to manipulate
|
|
||||||
* physical addresses.
|
|
||||||
*
|
|
||||||
* COPYRIGHT (c) 1997.
|
|
||||||
* On-Line Applications Research Corporation (OAR).
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __ADDRESSES_h
|
|
||||||
#define __ADDRESSES_h
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Addresses_Add_offset
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
*
|
|
||||||
* This function is used to add an offset to a base address.
|
|
||||||
* It returns the resulting address. This address is typically
|
|
||||||
* converted to an access type before being used further.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void *_Addresses_Add_offset (
|
|
||||||
void *base,
|
|
||||||
unsigned32 offset
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Addresses_Subtract_offset
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
*
|
|
||||||
* This function is used to subtract an offset from a base
|
|
||||||
* address. It returns the resulting address. This address is
|
|
||||||
* typically converted to an access type before being used further.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void *_Addresses_Subtract_offset(
|
|
||||||
void *base,
|
|
||||||
unsigned32 offset
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Addresses_Add
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
*
|
|
||||||
* This function is used to add two addresses. It returns the
|
|
||||||
* resulting address. This address is typically converted to an
|
|
||||||
* access type before being used further.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void *_Addresses_Add (
|
|
||||||
void *left,
|
|
||||||
void *right
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Addresses_Subtract
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
*
|
|
||||||
* This function is used to subtract two addresses. It returns the
|
|
||||||
* resulting offset.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE unsigned32 _Addresses_Subtract (
|
|
||||||
void *left,
|
|
||||||
void *right
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Addresses_Is_aligned
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
*
|
|
||||||
* This function returns TRUE if the given address is correctly
|
|
||||||
* aligned for this processor and FALSE otherwise. Proper alignment
|
|
||||||
* is based on correctness and efficiency.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Addresses_Is_aligned (
|
|
||||||
void *address
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Addresses_Is_in_range
|
|
||||||
*
|
|
||||||
* DESCRIPTION:
|
|
||||||
*
|
|
||||||
* This function returns TRUE if the given address is within the
|
|
||||||
* memory range specified and FALSE otherwise. base is the address
|
|
||||||
* of the first byte in the memory range and limit is the address
|
|
||||||
* of the last byte in the memory range. The base address is
|
|
||||||
* assumed to be lower than the limit address.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Addresses_Is_in_range (
|
|
||||||
void *address,
|
|
||||||
void *base,
|
|
||||||
void *limit
|
|
||||||
);
|
|
||||||
|
|
||||||
#include "address.inl"
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/* end of include file */
|
|
||||||
@@ -1,104 +0,0 @@
|
|||||||
/*
|
|
||||||
* This include file contains the bodies of the routines
|
|
||||||
* about addresses which are inlined.
|
|
||||||
*
|
|
||||||
* COPYRIGHT (c) 1997.
|
|
||||||
* On-Line Applications Research Corporation (OAR).
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __INLINE_ADDRESSES_inl
|
|
||||||
#define __INLINE_ADDRESSES_inl
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Addresses_Add_offset
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void *_Addresses_Add_offset (
|
|
||||||
void *base,
|
|
||||||
unsigned32 offset
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return (base + offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Addresses_Subtract_offset
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void *_Addresses_Subtract_offset (
|
|
||||||
void *base,
|
|
||||||
unsigned32 offset
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return (base - offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Addresses_Add
|
|
||||||
*
|
|
||||||
* NOTE: The cast of an address to an unsigned32 makes this code
|
|
||||||
* dependent on an addresses being thirty two bits.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void *_Addresses_Add (
|
|
||||||
void *left,
|
|
||||||
void *right
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return (left + (unsigned32)right);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Addresses_Subtract
|
|
||||||
*
|
|
||||||
* NOTE: The cast of an address to an unsigned32 makes this code
|
|
||||||
* dependent on an addresses being thirty two bits.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE unsigned32 _Addresses_Subtract (
|
|
||||||
void *left,
|
|
||||||
void *right
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return (left - right);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Addresses_Is_aligned
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Addresses_Is_aligned (
|
|
||||||
void *address
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return ( ( (unsigned32)address % 4 ) == 0 );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Addresses_Is_aligned
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Addresses_Is_in_range (
|
|
||||||
void *address,
|
|
||||||
void *base,
|
|
||||||
void *limit
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return ( address >= base && address <= limit );
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/* end of include file */
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
/*
|
|
||||||
* COPYRIGHT (c) 1997.
|
|
||||||
* On-Line Applications Research Corporation (OAR).
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __PDL2AMI_h
|
|
||||||
#define __PDL2AMI_h
|
|
||||||
|
|
||||||
#include "system.h"
|
|
||||||
#include "chain.h"
|
|
||||||
|
|
||||||
#ifndef EXTERN
|
|
||||||
#define EXTERN extern
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Paragraph size should be kept down because it is allocated for each
|
|
||||||
* Line_Control. If this number is large, the memory requirements for
|
|
||||||
* the program increase significantly.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define BUFFER_SIZE (10 * 1024)
|
|
||||||
#define PARAGRAPH_SIZE (8 * 1024)
|
|
||||||
|
|
||||||
#define NUMBER_ELEMENTS( _x ) (sizeof(_x) / sizeof _x[0])
|
|
||||||
|
|
||||||
void exit_application(
|
|
||||||
int status
|
|
||||||
);
|
|
||||||
|
|
||||||
void ProcessFile(
|
|
||||||
char *inname,
|
|
||||||
char *outname
|
|
||||||
);
|
|
||||||
|
|
||||||
void strtolower(
|
|
||||||
char *dest,
|
|
||||||
char *src
|
|
||||||
);
|
|
||||||
|
|
||||||
void strtoInitialCaps(
|
|
||||||
char *dest,
|
|
||||||
char *src
|
|
||||||
);
|
|
||||||
|
|
||||||
void StripBlanks( void );
|
|
||||||
|
|
||||||
void MergeParagraphs( void );
|
|
||||||
|
|
||||||
int CheckForIncomplete( void );
|
|
||||||
|
|
||||||
int CheckOutline( void );
|
|
||||||
|
|
||||||
int CheckSections( void );
|
|
||||||
|
|
||||||
void GenerateLists( void );
|
|
||||||
|
|
||||||
void GenerateAList(
|
|
||||||
char *section,
|
|
||||||
Chain_Control *the_list
|
|
||||||
);
|
|
||||||
|
|
||||||
void LookForInternalInconsistencies( void );
|
|
||||||
|
|
||||||
int Match_Argument(
|
|
||||||
char **array,
|
|
||||||
int entries,
|
|
||||||
char *users
|
|
||||||
);
|
|
||||||
|
|
||||||
void usage( void );
|
|
||||||
|
|
||||||
void ReadFileIntoChain(
|
|
||||||
char *inname
|
|
||||||
);
|
|
||||||
|
|
||||||
int MergeText( void );
|
|
||||||
|
|
||||||
int CheckForBadWhiteSpace();
|
|
||||||
|
|
||||||
void RemoveCopyright();
|
|
||||||
|
|
||||||
void RemovePagebreaks();
|
|
||||||
|
|
||||||
int RemoveExtraBlankLines();
|
|
||||||
|
|
||||||
void FormatToTexinfo( void );
|
|
||||||
|
|
||||||
void FormatToWord( void );
|
|
||||||
|
|
||||||
void PrintFile(
|
|
||||||
char *out
|
|
||||||
);
|
|
||||||
|
|
||||||
void DumpList(
|
|
||||||
Chain_Control *the_list
|
|
||||||
);
|
|
||||||
|
|
||||||
void ReleaseFile();
|
|
||||||
|
|
||||||
EXTERN boolean Verbose; /* status/debug msgs */
|
|
||||||
EXTERN boolean Statistics; /* statistics msgs */
|
|
||||||
EXTERN boolean OutputWord; /* Output MS-Word */
|
|
||||||
EXTERN boolean IncompletesAreErrors;
|
|
||||||
EXTERN boolean InsertTBDs;
|
|
||||||
EXTERN Chain_Control Lines;
|
|
||||||
|
|
||||||
EXTERN int NumberOfAttributes;
|
|
||||||
EXTERN int NumberOfAssociations;
|
|
||||||
EXTERN int NumberOfAbstractTypes;
|
|
||||||
EXTERN int NumberOfDataItems;
|
|
||||||
EXTERN int NumberOfMethods;
|
|
||||||
EXTERN int NumberOfTasks;
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,229 +0,0 @@
|
|||||||
/*
|
|
||||||
* Chain Handler
|
|
||||||
*
|
|
||||||
* COPYRIGHT (c) 1997.
|
|
||||||
* On-Line Applications Research Corporation (OAR).
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "system.h"
|
|
||||||
#include "address.h"
|
|
||||||
#include "chain.h"
|
|
||||||
#include "isr.h"
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Initialize
|
|
||||||
*
|
|
||||||
* This kernel routine initializes a doubly linked chain.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* the_chain - pointer to chain header
|
|
||||||
* starting_address - starting address of first node
|
|
||||||
* number_nodes - number of nodes in chain
|
|
||||||
* node_size - size of node in bytes
|
|
||||||
*
|
|
||||||
* Output parameters: NONE
|
|
||||||
*/
|
|
||||||
|
|
||||||
void _Chain_Initialize(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
void *starting_address,
|
|
||||||
unsigned32 number_nodes,
|
|
||||||
unsigned32 node_size
|
|
||||||
)
|
|
||||||
{
|
|
||||||
unsigned32 count;
|
|
||||||
Chain_Node *current;
|
|
||||||
Chain_Node *next;
|
|
||||||
|
|
||||||
count = number_nodes;
|
|
||||||
current = _Chain_Head( the_chain );
|
|
||||||
the_chain->permanent_null = NULL;
|
|
||||||
next = (Chain_Node *)starting_address;
|
|
||||||
while ( count-- ) {
|
|
||||||
current->next = next;
|
|
||||||
next->previous = current;
|
|
||||||
current = next;
|
|
||||||
next = (Chain_Node *)
|
|
||||||
_Addresses_Add_offset( (void *) next, node_size );
|
|
||||||
}
|
|
||||||
current->next = _Chain_Tail( the_chain );
|
|
||||||
the_chain->last = current;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Get_first_unprotected
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef USE_INLINES
|
|
||||||
STATIC INLINE Chain_Node *_Chain_Get_first_unprotected(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Chain_Node *return_node;
|
|
||||||
Chain_Node *new_first;
|
|
||||||
|
|
||||||
return_node = the_chain->first;
|
|
||||||
new_first = return_node->next;
|
|
||||||
the_chain->first = new_first;
|
|
||||||
new_first->previous = _Chain_Head( the_chain );
|
|
||||||
|
|
||||||
return return_node;
|
|
||||||
}
|
|
||||||
#endif /* USE_INLINES */
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Get
|
|
||||||
*
|
|
||||||
* This kernel routine returns a pointer to a node taken from the
|
|
||||||
* given chain.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* the_chain - pointer to chain header
|
|
||||||
*
|
|
||||||
* Output parameters:
|
|
||||||
* return_node - pointer to node in chain allocated
|
|
||||||
* CHAIN_END - if no nodes available
|
|
||||||
*
|
|
||||||
* INTERRUPT LATENCY:
|
|
||||||
* only case
|
|
||||||
*/
|
|
||||||
|
|
||||||
Chain_Node *_Chain_Get(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
ISR_Level level;
|
|
||||||
Chain_Node *return_node;
|
|
||||||
|
|
||||||
return_node = NULL;
|
|
||||||
_ISR_Disable( level );
|
|
||||||
if ( !_Chain_Is_empty( the_chain ) )
|
|
||||||
return_node = _Chain_Get_first_unprotected( the_chain );
|
|
||||||
_ISR_Enable( level );
|
|
||||||
return return_node;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Append
|
|
||||||
*
|
|
||||||
* This kernel routine puts a node on the end of the specified chain.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* the_chain - pointer to chain header
|
|
||||||
* node - address of node to put at rear of chain
|
|
||||||
*
|
|
||||||
* Output parameters: NONE
|
|
||||||
*
|
|
||||||
* INTERRUPT LATENCY:
|
|
||||||
* only case
|
|
||||||
*/
|
|
||||||
|
|
||||||
void _Chain_Append(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
ISR_Level level;
|
|
||||||
|
|
||||||
_ISR_Disable( level );
|
|
||||||
_Chain_Append_unprotected( the_chain, node );
|
|
||||||
_ISR_Enable( level );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Extract
|
|
||||||
*
|
|
||||||
* This kernel routine deletes the given node from a chain.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* node - pointer to node in chain to be deleted
|
|
||||||
*
|
|
||||||
* Output parameters: NONE
|
|
||||||
*
|
|
||||||
* INTERRUPT LATENCY:
|
|
||||||
* only case
|
|
||||||
*/
|
|
||||||
|
|
||||||
void _Chain_Extract(
|
|
||||||
Chain_Node *node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
ISR_Level level;
|
|
||||||
|
|
||||||
_ISR_Disable( level );
|
|
||||||
_Chain_Extract_unprotected( node );
|
|
||||||
_ISR_Enable( level );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Insert
|
|
||||||
*
|
|
||||||
* This kernel routine inserts a given node after a specified node
|
|
||||||
* a requested chain.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* after_node - pointer to node in chain to be inserted after
|
|
||||||
* node - pointer to node to be inserted
|
|
||||||
*
|
|
||||||
* Output parameters: NONE
|
|
||||||
*
|
|
||||||
* INTERRUPT LATENCY:
|
|
||||||
* only case
|
|
||||||
*/
|
|
||||||
|
|
||||||
void _Chain_Insert(
|
|
||||||
Chain_Node *after_node,
|
|
||||||
Chain_Node *node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
ISR_Level level;
|
|
||||||
|
|
||||||
_ISR_Disable( level );
|
|
||||||
_Chain_Insert_unprotected( after_node, node );
|
|
||||||
_ISR_Enable( level );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Insert_chain
|
|
||||||
*
|
|
||||||
* This routine inserts a chain after the specified node in another
|
|
||||||
* chain. It is assumed that the insert after node is not on the
|
|
||||||
* second chain.
|
|
||||||
*
|
|
||||||
* Input parameters:
|
|
||||||
* insert_after - insert the chain after this node
|
|
||||||
* to_insert - the chain to insert
|
|
||||||
*/
|
|
||||||
|
|
||||||
void _Chain_Insert_chain(
|
|
||||||
Chain_Node *insert_after,
|
|
||||||
Chain_Control *to_insert
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Chain_Node *first;
|
|
||||||
Chain_Node *last;
|
|
||||||
Chain_Node *insert_after_next;
|
|
||||||
|
|
||||||
first = to_insert->first;
|
|
||||||
last = to_insert->last;
|
|
||||||
|
|
||||||
insert_after_next = insert_after->next;
|
|
||||||
|
|
||||||
insert_after->next = first;
|
|
||||||
first->previous = insert_after;
|
|
||||||
|
|
||||||
insert_after_next->previous = last;
|
|
||||||
last->next = insert_after_next;
|
|
||||||
|
|
||||||
_Chain_Initialize_empty( to_insert );
|
|
||||||
}
|
|
||||||
@@ -1,347 +0,0 @@
|
|||||||
/* chain.h
|
|
||||||
*
|
|
||||||
* This include file contains all the constants and structures associated
|
|
||||||
* with the Doubly Linked Chain Handler.
|
|
||||||
*
|
|
||||||
* COPYRIGHT (c) 1997.
|
|
||||||
* On-Line Applications Research Corporation (OAR).
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __CHAIN_h
|
|
||||||
#define __CHAIN_h
|
|
||||||
|
|
||||||
#include "address.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is used to manage each element (node) which is placed
|
|
||||||
* on a chain.
|
|
||||||
*
|
|
||||||
* NOTE: Typically, a more complicated structure will use the
|
|
||||||
* chain package. The more complicated structure will
|
|
||||||
* include a chain node as the first element in its
|
|
||||||
* control structure. It will then call the chain package
|
|
||||||
* with a pointer to that node element. The node pointer
|
|
||||||
* and the higher level structure start at the same address
|
|
||||||
* so the user can cast the pointers back and forth.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct Chain_Node_struct Chain_Node;
|
|
||||||
|
|
||||||
struct Chain_Node_struct {
|
|
||||||
Chain_Node *next;
|
|
||||||
Chain_Node *previous;
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* This is used to manage a chain. A chain consists of a doubly
|
|
||||||
* linked list of zero or more nodes.
|
|
||||||
*
|
|
||||||
* NOTE: This implementation does not require special checks for
|
|
||||||
* manipulating the first and last elements on the chain.
|
|
||||||
* To accomplish this the chain control structure is
|
|
||||||
* treated as two overlapping chain nodes. The permanent
|
|
||||||
* head of the chain overlays a node structure on the
|
|
||||||
* first and permanent_null fields. The permanent tail
|
|
||||||
* of the chain overlays a node structure on the
|
|
||||||
* permanent_null and last elements of the structure.
|
|
||||||
*/
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
Chain_Node *first;
|
|
||||||
Chain_Node *permanent_null;
|
|
||||||
Chain_Node *last;
|
|
||||||
} Chain_Control;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Initialize
|
|
||||||
*
|
|
||||||
* This routine initializes the_chain structure to manage the
|
|
||||||
* contiguous array of number_nodes nodes which starts at
|
|
||||||
* starting_address. Each node is of node_size bytes.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void _Chain_Initialize(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
void *starting_address,
|
|
||||||
unsigned32 number_nodes,
|
|
||||||
unsigned32 node_size
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Initialize_empty
|
|
||||||
*
|
|
||||||
* This routine initializes the specified chain to contain zero nodes.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Initialize_empty(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Extract_unprotected
|
|
||||||
*
|
|
||||||
* This routine extracts the_node from the chain on which it resides.
|
|
||||||
* It does NOT disable interrupts to insure the atomicity of the
|
|
||||||
* extract operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Extract_unprotected(
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Extract
|
|
||||||
*
|
|
||||||
* This routine extracts the_node from the chain on which it resides.
|
|
||||||
* It disables interrupts to insure the atomicity of the
|
|
||||||
* extract operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void _Chain_Extract(
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Get_unprotected
|
|
||||||
*
|
|
||||||
* This function removes the first node from the_chain and returns
|
|
||||||
* a pointer to that node. If the_chain is empty, then NULL is returned.
|
|
||||||
* It does NOT disable interrupts to insure the atomicity of the
|
|
||||||
* get operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE Chain_Node *_Chain_Get_unprotected(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Get
|
|
||||||
*
|
|
||||||
* This function removes the first node from the_chain and returns
|
|
||||||
* a pointer to that node. If the_chain is empty, then NULL is returned.
|
|
||||||
* It disables interrupts to insure the atomicity of the
|
|
||||||
* get operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
Chain_Node *_Chain_Get(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Get_first_unprotected
|
|
||||||
*
|
|
||||||
* This function removes the first node from the_chain and returns
|
|
||||||
* a pointer to that node. It does NOT disable interrupts to insure
|
|
||||||
* the atomicity of the get operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE Chain_Node *_Chain_Get_first_unprotected(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Insert_unprotected
|
|
||||||
*
|
|
||||||
* This routine inserts the_node on a chain immediately following
|
|
||||||
* after_node. It does NOT disable interrupts to insure the atomicity
|
|
||||||
* of the extract operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Insert_unprotected(
|
|
||||||
Chain_Node *after_node,
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Insert
|
|
||||||
*
|
|
||||||
* This routine inserts the_node on a chain immediately following
|
|
||||||
* after_node. It disables interrupts to insure the atomicity
|
|
||||||
* of the extract operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void _Chain_Insert(
|
|
||||||
Chain_Node *after_node,
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Append_unprotected
|
|
||||||
*
|
|
||||||
* This routine appends the_node onto the end of the_chain.
|
|
||||||
* It does NOT disable interrupts to insure the atomicity of the
|
|
||||||
* append operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Append_unprotected(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Append
|
|
||||||
*
|
|
||||||
* This routine appends the_node onto the end of the_chain.
|
|
||||||
* It disables interrupts to insure the atomicity of the
|
|
||||||
* append operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void _Chain_Append(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Prepend_unprotected
|
|
||||||
*
|
|
||||||
* This routine prepends the_node onto the front of the_chain.
|
|
||||||
* It does NOT disable interrupts to insure the atomicity of the
|
|
||||||
* prepend operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Prepend_unprotected(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Prepend
|
|
||||||
*
|
|
||||||
* This routine prepends the_node onto the front of the_chain.
|
|
||||||
* It disables interrupts to insure the atomicity of the
|
|
||||||
* prepend operation.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Prepend(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Insert_chain
|
|
||||||
*
|
|
||||||
* This routine inserts a chain after the specified node in another
|
|
||||||
* chain. It is assumed that the insert after node is not on the
|
|
||||||
* second chain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
void _Chain_Insert_chain(
|
|
||||||
Chain_Node *insert_after,
|
|
||||||
Chain_Control *to_insert
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Head
|
|
||||||
*
|
|
||||||
* This function returns a pointer to the first node on the chain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE Chain_Node *_Chain_Head(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Tail
|
|
||||||
*
|
|
||||||
* This function returns a pointer to the last node on the chain.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE Chain_Node *_Chain_Tail(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Is_head
|
|
||||||
*
|
|
||||||
* This function returns TRUE if the_node is the head of the_chain and
|
|
||||||
* FALSE otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_head(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Is_tail
|
|
||||||
*
|
|
||||||
* This function returns TRUE if the_node is the tail of the_chain and
|
|
||||||
* FALSE otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_tail(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Is_first
|
|
||||||
*
|
|
||||||
* This function returns TRUE if the_node is the first node on a chain and
|
|
||||||
* FALSE otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_first(
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Is_last
|
|
||||||
*
|
|
||||||
* This function returns TRUE if the_node is the last node on a chain and
|
|
||||||
* FALSE otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_last(
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Is_empty
|
|
||||||
*
|
|
||||||
* This function returns TRUE if there a no nodes on the_chain and
|
|
||||||
* FALSE otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_empty(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Has_only_one_node
|
|
||||||
*
|
|
||||||
* This function returns TRUE if there is only one node on the_chain and
|
|
||||||
* FALSE otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Has_only_one_node(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Is_null
|
|
||||||
*
|
|
||||||
* This function returns TRUE if the_chain is NULL and FALSE otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_null(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* _Chain_Is_null_node
|
|
||||||
*
|
|
||||||
* This function returns TRUE if the_node is NULL and FALSE otherwise.
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_null_node(
|
|
||||||
Chain_Node *the_node
|
|
||||||
);
|
|
||||||
|
|
||||||
#include "chain.inl"
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/* end of include file */
|
|
||||||
@@ -1,270 +0,0 @@
|
|||||||
/*
|
|
||||||
* This include file contains the bodies of the routines which are
|
|
||||||
* associated with doubly linked chains and inlined.
|
|
||||||
*
|
|
||||||
* COPYRIGHT (c) 1997.
|
|
||||||
* On-Line Applications Research Corporation (OAR).
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __INLINE_CHAIN_inl
|
|
||||||
#define __INLINE_CHAIN_inl
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Is_null
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_null(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return ( the_chain == NULL );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Is_null_node
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_null_node(
|
|
||||||
Chain_Node *the_node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return ( the_node == NULL );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Head
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE Chain_Node *_Chain_Head(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return (Chain_Node *) the_chain;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Tail
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE Chain_Node *_Chain_Tail(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return (Chain_Node *) &the_chain->permanent_null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Is_empty
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_empty(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return ( the_chain->first == _Chain_Tail( the_chain ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Is_first
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_first(
|
|
||||||
Chain_Node *the_node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return ( the_node->previous == NULL );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Is_last
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_last(
|
|
||||||
Chain_Node *the_node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return ( the_node->next == NULL );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Has_only_one_node
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Has_only_one_node(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return ( the_chain->first == the_chain->last );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Is_head
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_head(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return ( the_node == _Chain_Head( the_chain ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Is_tail
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE boolean _Chain_Is_tail(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
return ( the_node == _Chain_Tail( the_chain ) );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* Chain_Initialize_empty
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Initialize_empty(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
the_chain->first = _Chain_Tail( the_chain );
|
|
||||||
the_chain->permanent_null = NULL;
|
|
||||||
the_chain->last = _Chain_Head( the_chain );
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Extract_unprotected
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Extract_unprotected(
|
|
||||||
Chain_Node *the_node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Chain_Node *next;
|
|
||||||
Chain_Node *previous;
|
|
||||||
|
|
||||||
next = the_node->next;
|
|
||||||
previous = the_node->previous;
|
|
||||||
next->previous = previous;
|
|
||||||
previous->next = next;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Get_first_unprotected
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE Chain_Node *_Chain_Get_first_unprotected(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Chain_Node *return_node;
|
|
||||||
Chain_Node *new_first;
|
|
||||||
|
|
||||||
return_node = the_chain->first;
|
|
||||||
new_first = return_node->next;
|
|
||||||
the_chain->first = new_first;
|
|
||||||
new_first->previous = _Chain_Head( the_chain );
|
|
||||||
|
|
||||||
return return_node;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* Chain_Get_unprotected
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE Chain_Node *_Chain_Get_unprotected(
|
|
||||||
Chain_Control *the_chain
|
|
||||||
)
|
|
||||||
{
|
|
||||||
if ( !_Chain_Is_empty( the_chain ) )
|
|
||||||
return _Chain_Get_first_unprotected( the_chain );
|
|
||||||
else
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Insert_unprotected
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Insert_unprotected(
|
|
||||||
Chain_Node *after_node,
|
|
||||||
Chain_Node *the_node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Chain_Node *before_node;
|
|
||||||
|
|
||||||
the_node->previous = after_node;
|
|
||||||
before_node = after_node->next;
|
|
||||||
after_node->next = the_node;
|
|
||||||
the_node->next = before_node;
|
|
||||||
before_node->previous = the_node;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Append_unprotected
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Append_unprotected(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
Chain_Node *old_last_node;
|
|
||||||
|
|
||||||
the_node->next = _Chain_Tail( the_chain );
|
|
||||||
old_last_node = the_chain->last;
|
|
||||||
the_chain->last = the_node;
|
|
||||||
old_last_node->next = the_node;
|
|
||||||
the_node->previous = old_last_node;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Prepend_unprotected
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Prepend_unprotected(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
_Chain_Insert_unprotected( _Chain_Head( the_chain ), the_node );
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/*PAGE
|
|
||||||
*
|
|
||||||
* _Chain_Prepend
|
|
||||||
*/
|
|
||||||
|
|
||||||
STATIC INLINE void _Chain_Prepend(
|
|
||||||
Chain_Control *the_chain,
|
|
||||||
Chain_Node *the_node
|
|
||||||
)
|
|
||||||
{
|
|
||||||
_Chain_Insert( _Chain_Head( the_chain ), the_node );
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
/* end of include file */
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
/*
|
|
||||||
* COPYRIGHT (c) 1997.
|
|
||||||
* On-Line Applications Research Corporation (OAR).
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef __ISR_h
|
|
||||||
#define __ISR_h
|
|
||||||
|
|
||||||
typedef unsigned32 ISR_Level;
|
|
||||||
|
|
||||||
#define _ISR_Disable
|
|
||||||
#define _ISR_Enable
|
|
||||||
|
|
||||||
#endif
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -1,129 +0,0 @@
|
|||||||
|
|
||||||
OBJECT: Object_name
|
|
||||||
DESCRIPTION:
|
|
||||||
This object ...
|
|
||||||
(briefly describe the object's primary responsibility or purpose)
|
|
||||||
COPYRIGHT:
|
|
||||||
Copyright (c) 1995, On-Line Applications Research Corporation (OAR)
|
|
||||||
PORTING:
|
|
||||||
THEORY OF OPERATION:
|
|
||||||
DERIVATION:
|
|
||||||
DEPENDENCIES:
|
|
||||||
NOTES:
|
|
||||||
|
|
||||||
ATTRIBUTE DESCRIPTIONS:
|
|
||||||
|
|
||||||
ATTRIBUTE: An_attribute
|
|
||||||
DESCRIPTION:
|
|
||||||
This attribute ...
|
|
||||||
(briefly describe the attribute's primary purpose)
|
|
||||||
TYPE: float [constant]|integer [constant]
|
|
||||||
(indicate one of the above)
|
|
||||||
RANGE|MEMBERS: 0 - +INFINITY or MEMBER1, MEMBER2, MEMBER3
|
|
||||||
(indicate RANGE or MEMBERS and specify, MEMBERS should be listed
|
|
||||||
in all caps, RANGE can use +/-INFINITY)
|
|
||||||
UNITS:
|
|
||||||
SCALE FACTOR:
|
|
||||||
DEFAULTS:
|
|
||||||
TOLERANCE:
|
|
||||||
REQUIREMENTS:
|
|
||||||
ABCD 3.2.4 A paragraph title
|
|
||||||
(indicate document, paragraph number, paragraph title)
|
|
||||||
REFERENCES:
|
|
||||||
NOTES:
|
|
||||||
|
|
||||||
ASSOCIATION DESCRIPTIONS:
|
|
||||||
|
|
||||||
ASSOCIATION:
|
|
||||||
DESCRIPTION:
|
|
||||||
VISIBILTY:
|
|
||||||
ASSOCIATED WITH:
|
|
||||||
MULTIPLICITY:
|
|
||||||
REQUIREMENTS:
|
|
||||||
ABCD 3.2.4 A paragraph title
|
|
||||||
(indicate document, paragraph number, paragraph title)
|
|
||||||
REFERENCES:
|
|
||||||
NOTES:
|
|
||||||
|
|
||||||
ABSTRACT TYPE DESCRIPTIONS:
|
|
||||||
|
|
||||||
ABSTRACT TYPE:
|
|
||||||
DESCRIPTION:
|
|
||||||
This type ...
|
|
||||||
(briefly describe the type's primary purpose)
|
|
||||||
VISIBILITY: private|public
|
|
||||||
(indicate one of the above)
|
|
||||||
DERIVATION:
|
|
||||||
MEMBERS|RANGE: 0 - +INFINITY or MEMBER1, MEMBER2, MEMBER3
|
|
||||||
(indicate RANGE or MEMBERS and specify, MEMBERS should be listed
|
|
||||||
in all caps, RANGE can use +/-INFINITY)
|
|
||||||
UNITS:
|
|
||||||
SCALE FACTOR:
|
|
||||||
DEFAULTS:
|
|
||||||
TOLERANCE:
|
|
||||||
REQUIREMENTS:
|
|
||||||
ABCD 3.2.4 A paragraph title
|
|
||||||
(indicate document, paragraph number, paragraph title)
|
|
||||||
REFERENCES:
|
|
||||||
NOTES:
|
|
||||||
|
|
||||||
DATA ITEM DESCRIPTIONS:
|
|
||||||
|
|
||||||
DATA ITEM:
|
|
||||||
DESCRIPTION:
|
|
||||||
This data item ...
|
|
||||||
(briefly describe the data item's primary purpose)
|
|
||||||
TYPE:
|
|
||||||
UNITS:
|
|
||||||
SCALE FACTOR:
|
|
||||||
DEFAULTS:
|
|
||||||
TOLERANCE:
|
|
||||||
NOTES:
|
|
||||||
|
|
||||||
METHODS DESCRIPTIONS:
|
|
||||||
(List methods alphabetically grouping public methods followed
|
|
||||||
by private methods.)
|
|
||||||
|
|
||||||
METHOD: Some_method
|
|
||||||
DESCRIPTION:
|
|
||||||
This method ...
|
|
||||||
(briefly describe the method's primary responsibility)
|
|
||||||
VISIBILITY: private|public
|
|
||||||
(indicate one of the above)
|
|
||||||
INPUTS:
|
|
||||||
input_one - the first and only input
|
|
||||||
(specify the logical inputs followed by a description,
|
|
||||||
indicate 'none' if there are no inputs)
|
|
||||||
OUTPUTS:
|
|
||||||
output_one - the first and only output
|
|
||||||
(specify the logical outputs followed by a description,
|
|
||||||
indicate 'none' if there are no outputs, use 'result' if the
|
|
||||||
method is a boolean function)
|
|
||||||
REQUIREMENTS:
|
|
||||||
ABCD 3.2.4 A paragraph title
|
|
||||||
(indicate document, paragraph number, paragraph title)
|
|
||||||
REFERENCES:
|
|
||||||
NOTES:
|
|
||||||
PDL:
|
|
||||||
|
|
||||||
TASK DESCRIPTIONS:
|
|
||||||
|
|
||||||
TASK:
|
|
||||||
DESCRIPTION:
|
|
||||||
This task ...
|
|
||||||
(briefly describe the task's primary responsibility)
|
|
||||||
INPUTS:
|
|
||||||
SYNCHRONIZATION: delay|event|message|semaphore|signal|period
|
|
||||||
(indicate one or more of the above and list any events,
|
|
||||||
messages, or signals that can be received)
|
|
||||||
TIMING:
|
|
||||||
(specify any timing information that is related to the
|
|
||||||
synchronization specified above)
|
|
||||||
REQUIREMENTS:
|
|
||||||
ABCD 3.2.4 A paragraph title
|
|
||||||
(indicate document, paragraph number, paragraph title)
|
|
||||||
REFERENCES:
|
|
||||||
NOTES:
|
|
||||||
PDL:
|
|
||||||
|
|
||||||
ENDOBJECT: Object_name
|
|
||||||
@@ -1,136 +0,0 @@
|
|||||||
(All fields marked with an '*' are optional and can be deleted if
|
|
||||||
there is no applicable information.
|
|
||||||
All entity names (OBJECT, ATTRIBUTE, METHOD, etc.) are proper nouns
|
|
||||||
and thus should only have the first letter capitalized.)
|
|
||||||
|
|
||||||
OBJECT: Object_name
|
|
||||||
DESCRIPTION:
|
|
||||||
This object ...
|
|
||||||
(briefly describe the object's primary responsibility or purpose)
|
|
||||||
*COPYRIGHT:
|
|
||||||
Copyright (c) 1995, On-Line Applications Research Corporation (OAR)
|
|
||||||
*PORTING:
|
|
||||||
THEORY OF OPERATION:
|
|
||||||
*DERIVATION:
|
|
||||||
*DEPENDENCIES:
|
|
||||||
*NOTES:
|
|
||||||
|
|
||||||
ATTRIBUTE DESCRIPTIONS:
|
|
||||||
|
|
||||||
ATTRIBUTE: An_attribute
|
|
||||||
DESCRIPTION:
|
|
||||||
This attribute ...
|
|
||||||
(briefly describe the attribute's primary purpose)
|
|
||||||
TYPE: float [constant]|integer [constant]
|
|
||||||
(indicate one of the above)
|
|
||||||
MEMBERS|RANGE: 0 - +INFINITY or MEMBER1, MEMBER2, MEMBER3
|
|
||||||
(indicate RANGE or MEMBERS and specify, MEMBERS should be listed
|
|
||||||
in all caps, RANGE can use +/-INFINITY)
|
|
||||||
*UNITS:
|
|
||||||
*SCALE FACTOR:
|
|
||||||
*DEFAULTS:
|
|
||||||
*TOLERANCE:
|
|
||||||
*REQUIREMENTS:
|
|
||||||
ABCD 3.2.4 A paragraph title
|
|
||||||
(indicate document, paragraph number, paragraph title)
|
|
||||||
*REFERENCES:
|
|
||||||
*NOTES:
|
|
||||||
|
|
||||||
ASSOCIATION DESCRIPTIONS:
|
|
||||||
|
|
||||||
ASSOCIATION: name
|
|
||||||
DESCRIPTION:
|
|
||||||
This association ...
|
|
||||||
(briefly describe the association's primary purpose)
|
|
||||||
VISIBILITY: private|public
|
|
||||||
(indicate one of the above)
|
|
||||||
ASSOCIATED WITH: object_name
|
|
||||||
MULTIPLICITY:
|
|
||||||
*REQUIREMENTS:
|
|
||||||
ABCD 3.2.4 A paragraph title
|
|
||||||
(indicate document, paragraph number, paragraph title)
|
|
||||||
*REFERENCES:
|
|
||||||
*NOTES:
|
|
||||||
|
|
||||||
ABSTRACT TYPE DESCRIPTIONS:
|
|
||||||
|
|
||||||
ABSTRACT TYPE: name
|
|
||||||
DESCRIPTION:
|
|
||||||
This type ...
|
|
||||||
(briefly describe the type's primary purpose)
|
|
||||||
VISIBILITY: private|public
|
|
||||||
(indicate one of the above)
|
|
||||||
DERIVATION:
|
|
||||||
MEMBERS|RANGE: 0 - +INFINITY or MEMBER1, MEMBER2, MEMBER3
|
|
||||||
(indicate RANGE or MEMBERS and specify, MEMBERS should be listed
|
|
||||||
in all caps, RANGE can use +/-INFINITY)
|
|
||||||
*UNITS:
|
|
||||||
*SCALE FACTOR:
|
|
||||||
*DEFAULTS:
|
|
||||||
*TOLERANCE:
|
|
||||||
*REQUIREMENTS:
|
|
||||||
ABCD 3.2.4 A paragraph title
|
|
||||||
(indicate document, paragraph number, paragraph title)
|
|
||||||
*REFERENCES:
|
|
||||||
*NOTES:
|
|
||||||
|
|
||||||
DATA ITEM DESCRIPTIONS:
|
|
||||||
|
|
||||||
DATA ITEM: name
|
|
||||||
DESCRIPTION:
|
|
||||||
This data item ...
|
|
||||||
(briefly describe the data item's primary purpose)
|
|
||||||
TYPE:
|
|
||||||
*UNITS:
|
|
||||||
*SCALE FACTOR:
|
|
||||||
*DEFAULTS:
|
|
||||||
*TOLERANCE:
|
|
||||||
*NOTES:
|
|
||||||
|
|
||||||
METHOD DESCRIPTIONS:
|
|
||||||
(List methods alphabetically grouping public methods followed
|
|
||||||
by private methods.)
|
|
||||||
|
|
||||||
METHOD: Some_method
|
|
||||||
DESCRIPTION:
|
|
||||||
This method ...
|
|
||||||
(briefly describe the method's primary responsibility)
|
|
||||||
VISIBILITY: private|public
|
|
||||||
(indicate one of the above)
|
|
||||||
INPUTS:
|
|
||||||
input_one - the first and only input
|
|
||||||
(specify the logical inputs followed by a description,
|
|
||||||
indicate 'none' if there are no inputs)
|
|
||||||
OUTPUTS:
|
|
||||||
output_one - the first and only output
|
|
||||||
(specify the logical outputs followed by a description,
|
|
||||||
indicate 'none' if there are no outputs, use 'result' if the
|
|
||||||
method is a boolean function)
|
|
||||||
*REQUIREMENTS:
|
|
||||||
ABCD 3.2.4 A paragraph title
|
|
||||||
(indicate document, paragraph number, paragraph title)
|
|
||||||
*REFERENCES:
|
|
||||||
*NOTES:
|
|
||||||
PDL:
|
|
||||||
|
|
||||||
TASK DESCRIPTIONS:
|
|
||||||
|
|
||||||
TASK: name
|
|
||||||
DESCRIPTION:
|
|
||||||
This task ...
|
|
||||||
(briefly describe the task's primary responsibility)
|
|
||||||
INPUTS:
|
|
||||||
SYNCHRONIZATION: delay|event|message|semaphore|signal|period
|
|
||||||
(indicate one or more of the above and list any events,
|
|
||||||
messages, or signals that can be received)
|
|
||||||
TIMING:
|
|
||||||
(specify any timing information that is related to the
|
|
||||||
synchronization specified above)
|
|
||||||
*REQUIREMENTS:
|
|
||||||
ABCD 3.2.4 A paragraph title
|
|
||||||
(indicate document, paragraph number, paragraph title)
|
|
||||||
*REFERENCES:
|
|
||||||
*NOTES:
|
|
||||||
PDL:
|
|
||||||
|
|
||||||
ENDOBJECT: Object_name
|
|
||||||
@@ -1,36 +0,0 @@
|
|||||||
/*
|
|
||||||
* COPYRIGHT (c) 1997.
|
|
||||||
* On-Line Applications Research Corporation (OAR).
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* $Id$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef __SYSTEM_h
|
|
||||||
#define __SYSTEM_h
|
|
||||||
|
|
||||||
typedef unsigned int unsigned32;
|
|
||||||
typedef unsigned short unsigned16;
|
|
||||||
typedef unsigned char unsigned8;
|
|
||||||
|
|
||||||
#define USE_INLINES
|
|
||||||
#define STATIC static
|
|
||||||
#define INLINE inline
|
|
||||||
|
|
||||||
#ifndef NULL
|
|
||||||
#define NULL 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef unsigned int boolean;
|
|
||||||
|
|
||||||
#if !defined( TRUE ) || (TRUE != 1)
|
|
||||||
#undef TRUE
|
|
||||||
#define TRUE (1)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined( FALSE ) || (FALSE != 0)
|
|
||||||
#undef FALSE
|
|
||||||
#define FALSE 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
OBJECT: Testfile
|
|
||||||
DESCRIPTION:
|
|
||||||
This file contains one abstract type without a range and two
|
|
||||||
abstract types with filler ranges.
|
|
||||||
THEORY OF OPERATION:
|
|
||||||
This file will be used to test the .d compiler.
|
|
||||||
|
|
||||||
ATTRIBUTE DESCRIPTIONS: none
|
|
||||||
|
|
||||||
ASSOCIATION DESCRIPTIONS: none
|
|
||||||
|
|
||||||
ABSTRACT TYPE DESCRIPTIONS:
|
|
||||||
|
|
||||||
ABSTRACT TYPE: ID
|
|
||||||
DESCRIPTION:
|
|
||||||
This type defines an identifier for an event set that may be manipulated.
|
|
||||||
VISIBILITY: public
|
|
||||||
DERIVATION: Bin_type handle
|
|
||||||
|
|
||||||
ABSTRACT TYPE: Test_ID
|
|
||||||
DESCRIPTION:
|
|
||||||
This is the abstract type with the range made optional.
|
|
||||||
VISIBILITY: public
|
|
||||||
DERIVATION: Bin_type handle
|
|
||||||
|
|
||||||
ABSTRACT TYPE: Input_Buffer
|
|
||||||
DESCRIPTION:
|
|
||||||
This type indicates the maximum input buffer.
|
|
||||||
VISIBILITY: public
|
|
||||||
DERIVATION: string
|
|
||||||
|
|
||||||
ABSTRACT TYPE: Image_t
|
|
||||||
DESCRIPTION:
|
|
||||||
This type specifies the data maintained for the screen.
|
|
||||||
VISIBILITY: public
|
|
||||||
DERIVATION: array [LINES][COLUMNS] of character
|
|
||||||
|
|
||||||
DATA ITEM DESCRIPTIONS: none
|
|
||||||
|
|
||||||
METHOD DESCRIPTIONS: none
|
|
||||||
|
|
||||||
TASK DESCRIPTIONS: none
|
|
||||||
|
|
||||||
ENDOBJECT: Testfile
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
OBJECT: Testfile
|
|
||||||
DESCRIPTION:
|
|
||||||
This file contains one abstract type without a range and two
|
|
||||||
abstract types with filler ranges.
|
|
||||||
THEORY OF OPERATION:
|
|
||||||
This file will be used to test the .d compiler.
|
|
||||||
|
|
||||||
ATTRIBUTE DESCRIPTIONS: none
|
|
||||||
|
|
||||||
ASSOCIATION DESCRIPTIONS: none
|
|
||||||
|
|
||||||
ABSTRACT TYPE DESCRIPTIONS:
|
|
||||||
|
|
||||||
ABSTRACT TYPE: ID
|
|
||||||
DESCRIPTION:
|
|
||||||
This type defines an identifier for an event set that may be manipulated.
|
|
||||||
VISIBILITY: public
|
|
||||||
DERIVATION: Bin_type handle
|
|
||||||
RANGE: 99 - 99
|
|
||||||
|
|
||||||
ABSTRACT TYPE: Test_ID
|
|
||||||
DESCRIPTION:
|
|
||||||
This is the abstract type with the range made optional.
|
|
||||||
VISIBILITY: public
|
|
||||||
DERIVATION: Bin_type handle
|
|
||||||
|
|
||||||
ABSTRACT TYPE: Input_Buffer
|
|
||||||
DESCRIPTION:
|
|
||||||
This type indicates the maximum input buffer.
|
|
||||||
VISIBILITY: public
|
|
||||||
DERIVATION: string
|
|
||||||
RANGE: 99 - 99
|
|
||||||
|
|
||||||
ABSTRACT TYPE: Image_t
|
|
||||||
DESCRIPTION:
|
|
||||||
This type specifies the data maintained for the screen.
|
|
||||||
VISIBILITY: public
|
|
||||||
DERIVATION: array [LINES][COLUMNS] of character
|
|
||||||
RANGE: 0 - 1 QQQ
|
|
||||||
|
|
||||||
DATA ITEM DESCRIPTIONS: none
|
|
||||||
|
|
||||||
METHOD DESCRIPTIONS: none
|
|
||||||
|
|
||||||
TASK DESCRIPTIONS: none
|
|
||||||
|
|
||||||
ENDOBJECT: Testfile
|
|
||||||
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
OBJECT: AVDAS
|
|
||||||
DESCRIPTION:
|
|
||||||
This file contains a test case which blows up pdl2texi when optimization
|
|
||||||
is enabled. See the makefile for details.
|
|
||||||
THEORY OF OPERATION:
|
|
||||||
This object ..
|
|
||||||
NOTES:
|
|
||||||
The following blows up pdl2texi when -O is set.
|
|
||||||
|
|
||||||
@table
|
|
||||||
System Switch
|
|
||||||
|
|
||||||
@end table
|
|
||||||
|
|
||||||
ATTRIBUTE DESCRIPTIONS: none
|
|
||||||
|
|
||||||
ASSOCIATION DESCRIPTIONS: none
|
|
||||||
|
|
||||||
ABSTRACT TYPE DESCRIPTIONS: none
|
|
||||||
|
|
||||||
DATA ITEM DESCRIPTIONS: none
|
|
||||||
|
|
||||||
METHOD DESCRIPTIONS: none
|
|
||||||
|
|
||||||
TASK DESCRIPTIONS: none
|
|
||||||
|
|
||||||
ENDOBJECT: AVDAS
|
|
||||||
Reference in New Issue
Block a user