OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [rtems/] [c/] [src/] [exec/] [score/] [include/] [rtems/] [score/] [objectmp.h] - Blame information for rev 587

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 30 unneback
/*  objectmp.h
2
 *
3
 *  This include file contains all the constants and structures associated
4
 *  with the manipulation of Global RTEMS Objects.
5
 *
6
 *  COPYRIGHT (c) 1989-1999.
7
 *  On-Line Applications Research Corporation (OAR).
8
 *
9
 *  The license and distribution terms for this file may be
10
 *  found in the file LICENSE in this distribution or at
11
 *  http://www.OARcorp.com/rtems/license.html.
12
 *
13
 *  $Id: objectmp.h,v 1.2 2001-09-27 11:59:32 chris Exp $
14
 */
15
 
16
#ifndef __RTEMS_OBJECTS_MP_h
17
#define __RTEMS_OBJECTS_MP_h
18
 
19
#ifdef __cplusplus
20
extern "C" {
21
#endif
22
 
23
/*
24
 *  This defines the Global Object Control Block used to manage
25
 *  objects resident on other nodes.
26
 */
27
 
28
typedef struct {
29
  Objects_Control Object;
30
  unsigned32      name;     /* XXX broken but works */
31
  /* XXX If any API is MP with variable length names .. BOOM!!!! */
32
}   Objects_MP_Control;
33
 
34
/*
35
 *  _Objects_MP_Handler_initialization
36
 *
37
 *  DESCRIPTION:
38
 *
39
 *  This routine intializes the inactive global object chain
40
 *  based on the maximum number of global objects configured.
41
 */
42
 
43
void _Objects_MP_Handler_initialization (
44
  unsigned32 node,
45
  unsigned32 maximum_nodes,
46
  unsigned32 maximum_global_objects
47
);
48
 
49
/*PAGE
50
 *
51
 *  _Objects_MP_Open
52
 *
53
 *  DESCRIPTION:
54
 *
55
 *  This routine place the specified global object in the
56
 *  specified information table.
57
 */
58
 
59
void _Objects_MP_Open (
60
  Objects_Information *information,
61
  Objects_MP_Control  *the_global_object,
62
  unsigned32           the_name,      /* XXX -- wrong for variable */
63
  Objects_Id           the_id
64
);
65
 
66
/*
67
 *  _Objects_MP_Allocate_and_open
68
 *
69
 *  DESCRIPTION:
70
 *
71
 *  This routine allocates a global object control block
72
 *  and places it in the specified information table.  If the
73
 *  allocation fails, then is_fatal_error determines the
74
 *  error processing actions taken.
75
 */
76
 
77
boolean _Objects_MP_Allocate_and_open (
78
  Objects_Information *information,
79
  unsigned32           the_name,     /* XXX -- wrong for variable length */
80
  Objects_Id           the_id,
81
  boolean              is_fatal_error
82
);
83
 
84
/*
85
 *  _Objects_MP_Close
86
 *
87
 *  DESCRIPTION:
88
 *
89
 *  This routine removes a global object from the specified
90
 *  information table and deallocates the global object control block.
91
 */
92
 
93
void _Objects_MP_Close (
94
  Objects_Information *information,
95
  Objects_Id           the_id
96
);
97
 
98
/*
99
 *  _Objects_MP_Global_name_search
100
 *
101
 *  DESCRIPTION:
102
 *
103
 *  This routine looks for the object with the_name in the global
104
 *  object tables indicated by information.  It returns the ID of the
105
 *  object with that name if one is found.
106
 */
107
 
108
Objects_Name_to_id_errors _Objects_MP_Global_name_search (
109
  Objects_Information *information,
110
  Objects_Name         the_name,
111
  unsigned32           nodes_to_search,
112
  Objects_Id          *the_id
113
);
114
 
115
/*
116
 *  _Objects_MP_Is_remote
117
 *
118
 *  DESCRIPTION:
119
 *
120
 *  This function searches the Global Object Table managed
121
 *  by information for the object indicated by ID.  If the object
122
 *  is found, then location is set to objects_remote, otherwise
123
 *  location is set to objects_error.  In both cases, the_object
124
 *  is undefined.
125
 */
126
 
127
void _Objects_MP_Is_remote (
128
  Objects_Information  *information,
129
  Objects_Id            the_id,
130
  Objects_Locations    *location,
131
  Objects_Control     **the_object
132
);
133
 
134
/*
135
 *  The following chain header is used to manage the set of
136
 *  inactive global object control blocks.
137
 */
138
 
139
SCORE_EXTERN unsigned32     _Objects_MP_Maximum_global_objects;
140
SCORE_EXTERN Chain_Control  _Objects_MP_Inactive_global_objects;
141
 
142
#ifndef __RTEMS_APPLICATION__
143
#include <rtems/score/objectmp.inl>
144
#endif
145
 
146
#ifdef __cplusplus
147
}
148
#endif
149
 
150
#endif
151
/* end of include file */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.