mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-06 11:50:51 -08:00
Adding node type, as a tree node containing an address range. this will eventually become the base of segments.
Copied from Perforce Change: 190489 ServerID: perforce.ravenbrook.com
This commit is contained in:
parent
e887f85024
commit
1678d1642e
6 changed files with 165 additions and 0 deletions
|
|
@ -187,6 +187,7 @@ MPMCOMMON = \
|
|||
mpm.c \
|
||||
mpsi.c \
|
||||
nailboard.c \
|
||||
node.c \
|
||||
policy.c \
|
||||
pool.c \
|
||||
poolabs.c \
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ MPMCOMMON=\
|
|||
[mpm] \
|
||||
[mpsi] \
|
||||
[nailboard] \
|
||||
[node] \
|
||||
[policy] \
|
||||
[pool] \
|
||||
[poolabs] \
|
||||
|
|
|
|||
|
|
@ -240,6 +240,28 @@ typedef struct SegClassStruct {
|
|||
} SegClassStruct;
|
||||
|
||||
|
||||
/* RangeStruct -- address range
|
||||
*
|
||||
* See design.mps.range, range.h, range.c.
|
||||
*/
|
||||
|
||||
typedef struct RangeStruct {
|
||||
Addr base;
|
||||
Addr limit;
|
||||
} RangeStruct;
|
||||
|
||||
|
||||
/* NodeStruct -- address range in a tree
|
||||
*
|
||||
* See node.h, node.c.
|
||||
*/
|
||||
|
||||
typedef struct NodeStruct {
|
||||
TreeStruct treeStruct;
|
||||
RangeStruct rangeStruct;
|
||||
} NodeStruct;
|
||||
|
||||
|
||||
/* SegStruct -- segment structure
|
||||
*
|
||||
* .seg: Segments are the basic units of protection and tracer activity
|
||||
|
|
|
|||
|
|
@ -109,6 +109,7 @@ typedef struct AllocPatternStruct *AllocPattern;
|
|||
typedef struct AllocFrameStruct *AllocFrame; /* <design/alloc-frame/> */
|
||||
typedef struct StackContextStruct *StackContext;
|
||||
typedef struct RangeStruct *Range; /* <design/range/> */
|
||||
typedef struct NodeStruct *Node;
|
||||
typedef struct LandStruct *Land; /* <design/land/> */
|
||||
typedef struct LandClassStruct *LandClass; /* <design/land/> */
|
||||
typedef unsigned FindDelete; /* <design/land/> */
|
||||
|
|
|
|||
78
mps/code/node.c
Normal file
78
mps/code/node.c
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
/* node.c -- binary trees of address ranges
|
||||
*
|
||||
* $Id$
|
||||
* Copyright (C) 2016 Ravenbrook Limited. See end of file for license.
|
||||
*/
|
||||
|
||||
#include "node.h"
|
||||
#include "tree.h"
|
||||
#include "range.h"
|
||||
#include "mpm.h"
|
||||
|
||||
|
||||
void NodeInit(Node node, Addr base, Addr limit)
|
||||
{
|
||||
AVER(node != NULL);
|
||||
TreeInit(NodeTree(node));
|
||||
RangeInit(NodeRange(node), base, limit);
|
||||
AVERT(Node, node);
|
||||
}
|
||||
|
||||
|
||||
Bool NodeCheck(Node node)
|
||||
{
|
||||
CHECKL(node != NULL);
|
||||
CHECKD_NOSIG(Tree, NodeTree(node));
|
||||
CHECKD_NOSIG(Range, NodeRange(node));
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
void NodeFinish(Node node)
|
||||
{
|
||||
AVERT(Node, node);
|
||||
TreeFinish(NodeTree(node));
|
||||
RangeFinish(NodeRange(node));
|
||||
}
|
||||
|
||||
|
||||
/* C. COPYRIGHT AND LICENSE
|
||||
*
|
||||
* Copyright (C) 2013 Ravenbrook Limited <http://www.ravenbrook.com/>.
|
||||
* All rights reserved. This is an open source license. Contact
|
||||
* Ravenbrook for commercial licensing options.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Redistributions in any form must be accompanied by information on how
|
||||
* to obtain complete source code for this software and any accompanying
|
||||
* software that uses this software. The source code must either be
|
||||
* included in the distribution or be available for no more than the cost
|
||||
* of distribution plus a nominal fee, and must be freely redistributable
|
||||
* under reasonable conditions. For an executable file, complete source
|
||||
* code means the source code for all modules it contains. It does not
|
||||
* include source code for modules or files that typically accompany the
|
||||
* major components of the operating system on which the executable file
|
||||
* runs.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
62
mps/code/node.h
Normal file
62
mps/code/node.h
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
/* node.c -- binary trees of address ranges
|
||||
*
|
||||
* $Id$
|
||||
* Copyright (C) 2016 Ravenbrook Limited. See end of file for license.
|
||||
*/
|
||||
|
||||
#ifndef node_h
|
||||
#define node_h
|
||||
|
||||
#include "mpmtypes.h"
|
||||
|
||||
#define NodeTree(node) (&(node)->treeStruct)
|
||||
#define NodeRange(node) (&(node)->rangeStruct)
|
||||
#define NodeOfTree(tree) PARENT(NodeStruct, treeStruct, tree)
|
||||
#define NodeOfRange(range) PARENT(NodeStruct, rangeStruct, range)
|
||||
|
||||
extern void NodeInit(Node node, Addr base, Addr limit);
|
||||
extern Bool NodeCheck(Node node);
|
||||
extern void NodeFinish(Node node);
|
||||
|
||||
#endif /* node_h */
|
||||
|
||||
/* C. COPYRIGHT AND LICENSE
|
||||
*
|
||||
* Copyright (C) 2013 Ravenbrook Limited <http://www.ravenbrook.com/>.
|
||||
* All rights reserved. This is an open source license. Contact
|
||||
* Ravenbrook for commercial licensing options.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are
|
||||
* met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
*
|
||||
* 3. Redistributions in any form must be accompanied by information on how
|
||||
* to obtain complete source code for this software and any accompanying
|
||||
* software that uses this software. The source code must either be
|
||||
* included in the distribution or be available for no more than the cost
|
||||
* of distribution plus a nominal fee, and must be freely redistributable
|
||||
* under reasonable conditions. For an executable file, complete source
|
||||
* code means the source code for all modules it contains. It does not
|
||||
* include source code for modules or files that typically accompany the
|
||||
* major components of the operating system on which the executable file
|
||||
* runs.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
|
||||
* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||
* PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
|
||||
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
|
||||
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
Loading…
Add table
Add a link
Reference in a new issue