Changeset ef67bab in mainline for generic/include/mm


Ignore:
Timestamp:
2006-02-01T00:02:16Z (20 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
071a8ae6
Parents:
fc1e4f6
Message:

Memory management work.
Remove the last (i.e. 'root') argument from page_mapping_insert() and page_mapping_find().
Page table address is now extracted from the first (i.e. 'as') argument.
Add a lot of infrastructure to make the above possible.
sparc64 is now broken, most likely because of insufficient identity mapping of physical memory.

Location:
generic/include/mm
Files:
3 edited

Legend:

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

    rfc1e4f6 ref67bab  
    8181        SPINLOCK_DECLARE(lock);
    8282        link_t as_area_head;
    83         pte_t *ptl0;
    84         asid_t asid;                    /**< Address space identifier. */
     83
     84        /** Page table pointer. Constant on architectures that use global page hash table. */
     85        pte_t *page_table;
     86
     87        /** Address space identifier. Constant on architectures that do not support ASIDs.*/
     88        asid_t asid;
    8589};
    8690
     91struct as_operations {
     92        pte_t *(* page_table_create)(int flags);
     93};
     94typedef struct as_operations as_operations_t;
     95
    8796extern as_t *AS_KERNEL;
     97extern as_operations_t *as_operations;
    8898
    89 extern as_t *as_create(pte_t *ptl0, int flags);
     99extern void as_init(void);
     100extern as_t *as_create(int flags);
    90101extern as_area_t *as_area_create(as_t *as, as_area_type_t type, size_t size, __address base);
    91102extern void as_set_mapping(as_t *as, __address page, __address frame);
  • generic/include/mm/buddy.h

    rfc1e4f6 ref67bab  
    5858extern void buddy_system_structure_print(buddy_system_t *b, size_t elem_size);
    5959
    60 
    6160#endif
  • generic/include/mm/page.h

    rfc1e4f6 ref67bab  
    6262/** Operations to manipulate page mappings. */
    6363struct page_operations {
    64         void (* mapping_insert)(as_t *as, __address page, __address frame, int flags, __address root);
    65         pte_t *(* mapping_find)(as_t *as, __address page, __address root);
     64        void (* mapping_insert)(as_t *as, __address page, __address frame, int flags);
     65        pte_t *(* mapping_find)(as_t *as, __address page);
    6666};
    6767typedef struct page_operations page_operations_t;
     
    7070
    7171extern void page_init(void);
    72 extern void page_mapping_insert(as_t *as, __address page, __address frame, int flags, __address root);
    73 extern pte_t *page_mapping_find(as_t *as, __address page, __address root);
     72extern void page_mapping_insert(as_t *as, __address page, __address frame, int flags);
     73extern pte_t *page_mapping_find(as_t *as, __address page);
     74extern pte_t *page_table_create(int flags);
    7475extern void map_structure(__address s, size_t size);
    7576
Note: See TracChangeset for help on using the changeset viewer.