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

Subversion Repositories c0or1k

[/] [c0or1k/] [trunk/] [include/] [l4/] [generic/] [space.h] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 drasko
/*
2
 * Generic address space related information.
3
 *
4
 * Copyright (C) 2007-2010 Bahadir Balban
5
 */
6
#ifndef __SPACE_H__
7
#define __SPACE_H__
8
 
9
/*
10
 * Generic mapping flags.
11
 */
12
#define MAP_FAULT                       0
13
#define MAP_USR_RW                      1
14
#define MAP_USR_RO                      2
15
#define MAP_KERN_RW                     3
16
#define MAP_USR_IO                      4
17
#define MAP_KERN_IO                     5
18
#define MAP_USR_RWX                     6
19
#define MAP_KERN_RWX                    7
20
#define MAP_USR_RX                      8
21
#define MAP_KERN_RX                     9
22
#define MAP_UNMAP                       10      /* For unmap syscall */
23
#define MAP_INVALID_FLAGS               (1 << 31)
24
 
25
/* Some default aliases */
26
#define MAP_USR_DEFAULT         MAP_USR_RW
27
#define MAP_KERN_DEFAULT        MAP_KERN_RW
28
#define MAP_IO_DEFAULT          MAP_KERN_IO
29
 
30
#if defined (__KERNEL__)
31
 
32
#include <l4/lib/spinlock.h>
33
#include <l4/lib/list.h>
34
#include <l4/lib/mutex.h>
35
#include <l4/lib/idpool.h>
36
#include <l4/generic/capability.h>
37
#include INC_SUBARCH(mm.h)
38
 
39
/* A simple page table with a reference count */
40
struct address_space {
41
        l4id_t spid;
42
        struct link list;
43
        struct mutex lock;
44
        pgd_table_t *pgd;
45
 
46
        /* Capabilities shared by threads in same space */
47
        struct cap_list cap_list;
48
        int ktcb_refs;
49
};
50
 
51
struct address_space_list {
52
        struct link list;
53
        struct mutex lock;
54
        int count;
55
};
56
 
57
struct address_space *address_space_create(struct address_space *orig);
58
void address_space_delete(struct address_space *space,
59
                          struct ktcb *task_accounted);
60
void address_space_attach(struct ktcb *tcb, struct address_space *space);
61
struct address_space *address_space_find(l4id_t spid);
62
void address_space_add(struct address_space *space);
63
 
64
struct container;
65
void address_space_remove(struct address_space *space, struct container *cont);
66
void init_address_space_list(struct address_space_list *space_list);
67
int check_access(unsigned long vaddr, unsigned long size,
68
                 unsigned int flags, int page_in);
69
int check_access_task(unsigned long vaddr, unsigned long size,
70
                      unsigned int flags, int page_in, struct ktcb *task);
71
#endif
72
 
73
#endif /* __SPACE_H__ */

powered by: WebSVN 2.1.0

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