Subversion Repositories HelenOS

Rev

Rev 2131 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2131 Rev 2292
Line 87... Line 87...
87
#ifdef __OBJC__
87
#ifdef __OBJC__
88
@interface as_t : base_t {
88
@interface as_t : base_t {
89
    @public
89
    @public
90
        /** Protected by asidlock. */
90
        /** Protected by asidlock. */
91
        link_t inactive_as_with_asid_link;
91
        link_t inactive_as_with_asid_link;
-
 
92
        /**
-
 
93
         * Number of processors on wich is this address space active.
-
 
94
         * Protected by asidlock.
-
 
95
         */
-
 
96
        count_t cpu_refcount;
-
 
97
        /**
-
 
98
         * Address space identifier.
-
 
99
         * Constant on architectures that do not support ASIDs.
-
 
100
         * Protected by asidlock.  
-
 
101
         */
-
 
102
        asid_t asid;
92
       
103
       
93
        mutex_t lock;
104
        mutex_t lock;
94
       
105
       
95
        /** Number of references (i.e tasks that reference this as). */
106
        /** Number of references (i.e tasks that reference this as). */
96
        count_t refcount;
107
        count_t refcount;
97
       
108
       
98
        /** Number of processors on wich is this address space active. */
-
 
99
        count_t cpu_refcount;
-
 
100
       
-
 
101
        /** B+tree of address space areas. */
109
        /** B+tree of address space areas. */
102
        btree_t as_area_btree;
110
        btree_t as_area_btree;
103
       
111
       
104
        /**
-
 
105
         *  Address space identifier.
-
 
106
         *  Constant on architectures that do not support ASIDs.
-
 
107
         */
-
 
108
        asid_t asid;
-
 
109
       
-
 
110
        /** Non-generic content. */
112
        /** Non-generic content. */
111
        as_genarch_t genarch;
113
        as_genarch_t genarch;
112
       
114
       
113
        /** Architecture specific content. */
115
        /** Architecture specific content. */
114
        as_arch_t arch;
116
        as_arch_t arch;
Line 131... Line 133...
131
 * set up during system initialization.
133
 * set up during system initialization.
132
 */
134
 */
133
typedef struct as {
135
typedef struct as {
134
    /** Protected by asidlock. */
136
    /** Protected by asidlock. */
135
    link_t inactive_as_with_asid_link;
137
    link_t inactive_as_with_asid_link;
-
 
138
    /**
-
 
139
     * Number of processors on wich is this address space active.
-
 
140
     * Protected by asidlock.
-
 
141
     */
-
 
142
    count_t cpu_refcount;
-
 
143
    /**
-
 
144
     * Address space identifier.
-
 
145
     * Constant on architectures that do not support ASIDs.
-
 
146
     * Protected by asidlock.
-
 
147
     */
-
 
148
    asid_t asid;
136
 
149
 
137
    mutex_t lock;
150
    mutex_t lock;
138
 
151
 
139
    /** Number of references (i.e tasks that reference this as). */
152
    /** Number of references (i.e tasks that reference this as). */
140
    count_t refcount;
153
    count_t refcount;
141
 
154
 
142
    /** Number of processors on wich is this address space active. */
-
 
143
    count_t cpu_refcount;
-
 
144
 
-
 
145
    /** B+tree of address space areas. */
155
    /** B+tree of address space areas. */
146
    btree_t as_area_btree;
156
    btree_t as_area_btree;
147
   
157
   
148
    /**
-
 
149
     *  Address space identifier.
-
 
150
     *  Constant on architectures that do not support ASIDs.
-
 
151
     */
-
 
152
    asid_t asid;
-
 
153
   
-
 
154
    /** Non-generic content. */
158
    /** Non-generic content. */
155
    as_genarch_t genarch;
159
    as_genarch_t genarch;
156
 
160
 
157
    /** Architecture specific content. */
161
    /** Architecture specific content. */
158
    as_arch_t arch;
162
    as_arch_t arch;
Line 203... Line 207...
203
} mem_backend_data_t;
207
} mem_backend_data_t;
204
 
208
 
205
/** Address space area structure.
209
/** Address space area structure.
206
 *
210
 *
207
 * Each as_area_t structure describes one contiguous area of virtual memory.
211
 * Each as_area_t structure describes one contiguous area of virtual memory.
208
 * In the future, it should not be difficult to support shared areas.
-
 
209
 */
212
 */
210
typedef struct {
213
typedef struct {
211
    mutex_t lock;
214
    mutex_t lock;
212
    /** Containing address space. */
215
    /** Containing address space. */
213
    as_t *as;      
216
    as_t *as;      
Line 248... Line 251...
248
 
251
 
249
#ifndef __OBJC__
252
#ifndef __OBJC__
250
extern as_operations_t *as_operations;
253
extern as_operations_t *as_operations;
251
#endif
254
#endif
252
 
255
 
253
SPINLOCK_EXTERN(inactive_as_with_asid_lock);
-
 
254
extern link_t inactive_as_with_asid_head;
256
extern link_t inactive_as_with_asid_head;
255
 
257
 
256
extern void as_init(void);
258
extern void as_init(void);
257
 
259
 
258
extern as_t *as_create(int flags);
260
extern as_t *as_create(int flags);