Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/generic/include/mm/as.h

    rfc47885 rc0699467  
    3636#define KERN_AS_H_
    3737
    38 #ifdef KERNEL
    39         #include <typedefs.h>
    40 #else
    41         #include <sys/types.h>
    42 #endif
    43 
    44 /** Address space area flags. */
    45 #define AS_AREA_READ       1
    46 #define AS_AREA_WRITE      2
    47 #define AS_AREA_EXEC       4
    48 #define AS_AREA_CACHEABLE  8
    49 
    50 /** Address space area info exported to userspace. */
    51 typedef struct {
    52         /** Starting address */
    53         uintptr_t start_addr;
    54        
    55         /** Area size */
    56         size_t size;
    57        
    58         /** Area flags */
    59         unsigned int flags;
    60 } as_area_info_t;
    61 
    62 #ifdef KERNEL
    63 
     38#include <typedefs.h>
     39#include <abi/mm/as.h>
    6440#include <arch/mm/page.h>
    6541#include <arch/mm/as.h>
    6642#include <arch/mm/asid.h>
     43#include <arch/istate.h>
    6744#include <typedefs.h>
    6845#include <synch/spinlock.h>
     
    8461#define USER_ADDRESS_SPACE_END      USER_ADDRESS_SPACE_END_ARCH
    8562
    86 #define USTACK_ADDRESS  USTACK_ADDRESS_ARCH
     63#ifdef USTACK_ADDRESS_ARCH
     64        #define USTACK_ADDRESS  USTACK_ADDRESS_ARCH
     65#else
     66        #define USTACK_ADDRESS  (USER_ADDRESS_SPACE_END - (STACK_SIZE - 1))
     67#endif
    8768
    8869/** Kernel address space. */
     
    238219/** Address space area backend structure. */
    239220typedef struct mem_backend {
     221        bool (* create)(as_area_t *);
     222        bool (* resize)(as_area_t *, size_t);
     223        void (* share)(as_area_t *);
     224        void (* destroy)(as_area_t *);
     225
    240226        int (* page_fault)(as_area_t *, uintptr_t, pf_access_t);
    241227        void (* frame_free)(as_area_t *, uintptr_t, uintptr_t);
    242         void (* share)(as_area_t *);
    243228} mem_backend_t;
    244229
     
    246231
    247232extern as_operations_t *as_operations;
    248 extern link_t inactive_as_with_asid_head;
     233extern list_t inactive_as_with_asid_list;
    249234
    250235extern void as_init(void);
     
    298283extern mem_backend_t phys_backend;
    299284
    300 /**
    301  * This flags is passed when running the loader, otherwise elf_load()
    302  * would return with a EE_LOADER error code.
    303  *
    304  */
    305 #define ELD_F_NONE    0
    306 #define ELD_F_LOADER  1
    307 
    308 extern unsigned int elf_load(elf_header_t *, as_t *, unsigned int);
    309 
    310285/* Address space area related syscalls. */
    311286extern sysarg_t sys_as_area_create(uintptr_t, size_t, unsigned int);
     
    313288extern sysarg_t sys_as_area_change_flags(uintptr_t, unsigned int);
    314289extern sysarg_t sys_as_area_destroy(uintptr_t);
     290extern sysarg_t sys_as_get_unmapped_area(uintptr_t, size_t);
    315291
    316292/* Introspection functions. */
     
    318294extern void as_print(as_t *);
    319295
    320 #endif /* KERNEL */
    321 
    322296#endif
    323297
Note: See TracChangeset for help on using the changeset viewer.