Changeset 651 for trunk/kernel/mm/vseg.h


Ignore:
Timestamp:
Nov 14, 2019, 11:50:09 AM (5 years ago)
Author:
alain
Message:

1) Improve the VMM MMAP allocator: implement the "buddy" algorithm
to allocate only aligned blocks.
2) fix a bug in the pthread_join() / pthread_exit() mmechanism.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kernel/mm/vseg.h

    r640 r651  
    4141typedef enum
    4242{
    43     VSEG_TYPE_CODE   = 0,          /*! executable user code     / private / localized     */
    44     VSEG_TYPE_DATA   = 1,          /*! initialized user data    / public  / distributed   */
    45     VSEG_TYPE_STACK  = 2,          /*! execution user stack     / private / localized     */
    46     VSEG_TYPE_ANON   = 3,          /*! anonymous mmap           / public  / localized     */
    47     VSEG_TYPE_FILE   = 4,          /*! file mmap                / public  / localized     */
    48     VSEG_TYPE_REMOTE = 5,          /*! remote mmap              / public  / localized     */
     43    VSEG_TYPE_CODE   = 1,          /*! executable user code     / private / localized     */
     44    VSEG_TYPE_DATA   = 2,          /*! initialized user data    / public  / distributed   */
     45    VSEG_TYPE_STACK  = 3,          /*! execution user stack     / private / localized     */
     46    VSEG_TYPE_ANON   = 4,          /*! anonymous mmap           / public  / localized     */
     47    VSEG_TYPE_FILE   = 5,          /*! file mmap                / public  / localized     */
     48    VSEG_TYPE_REMOTE = 6,          /*! remote mmap              / public  / localized     */
    4949
    50     VSEG_TYPE_KCODE  = 6,          /*! executable kernel code   / private / localized     */
    51     VSEG_TYPE_KDATA  = 7,          /*! initialized kernel data  / private / localized     */
    52     VSEG_TYPE_KDEV   = 8,          /*! kernel peripheral device / public  / localized     */
     50    VSEG_TYPE_KCODE  = 7,          /*! executable kernel code   / private / localized     */
     51    VSEG_TYPE_KDATA  = 8,          /*! initialized kernel data  / private / localized     */
     52    VSEG_TYPE_KDEV   = 9,          /*! kernel peripheral device / public  / localized     */
    5353}
    5454vseg_type_t;
     
    115115
    116116/*******************************************************************************************
    117  * This function initializes a local vseg descriptor, from the arguments values.
    118  * It does NOT register the vseg in the local VMM.
     117 * This function initializes the "flags" field for a local <vseg> descriptor,
     118 * depending on the vseg <type>.
    119119 *******************************************************************************************
    120120 * @ vseg      : pointer on the vseg descriptor.
    121  * @ base      : vseg base address.
    122  * @ size      : vseg size (bytes).
    123  * @ vpn_base  : first page index.
    124  * @ vpn_size  : number of pages.
    125121 * @ type      : vseg type.
    126  * @ cxy       : target cluster for physical mapping.
    127122 ******************************************************************************************/
    128 void vseg_init( vseg_t      * vseg,
    129                     vseg_type_t   type,
    130                 intptr_t      base,
    131                     uint32_t      size,
    132                 vpn_t         vpn_base,
    133                 vpn_t         vpn_size,
    134                 uint32_t      file_offset,
    135                 uint32_t      file_size,
    136                 xptr_t        mapper_xp,
    137                 cxy_t         cxy );
     123void vseg_init_flags( vseg_t      * vseg,
     124                          vseg_type_t   type );
    138125
    139126/*******************************************************************************************
Note: See TracChangeset for help on using the changeset viewer.