Ignore:
Timestamp:
Nov 14, 2019, 11:50:09 AM (4 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/kern/process.h

    r635 r651  
    122122typedef struct process_s
    123123{
    124         vmm_t              vmm;              /*! embedded virtual memory manager                 */
    125 
    126         fd_array_t         fd_array;         /*! embedded open file descriptors array            */
    127 
    128         xptr_t             vfs_root_xp;      /*! extended pointer on VFS root inode              */
    129         xptr_t             vfs_bin_xp;       /*! extended pointer on .elf file descriptor        */
    130         pid_t              pid;              /*! process identifier                              */
     124    vmm_t              vmm;              /*! embedded virtual memory manager                 */
     125
     126    fd_array_t         fd_array;         /*! embedded open file descriptors array            */
     127
     128    xptr_t             vfs_root_xp;      /*! extended pointer on VFS root inode              */
     129    xptr_t             vfs_bin_xp;       /*! extended pointer on .elf file descriptor        */
     130    pid_t              pid;              /*! process identifier                              */
    131131    xptr_t             ref_xp;           /*! extended pointer on reference process           */
    132132    xptr_t             owner_xp;         /*! extended pointer on owner process               */
    133133    xptr_t             parent_xp;        /*! extended pointer on parent process              */
    134134
    135         xptr_t             cwd_xp;           /*! extended pointer on current working dir inode   */
    136         remote_busylock_t  cwd_lock;         /*! lock protecting working directory changes       */
    137 
    138         xlist_entry_t      children_root;    /*! root of the children process xlist              */
     135    xptr_t             cwd_xp;           /*! extended pointer on current working dir inode   */
     136    remote_busylock_t  cwd_lock;         /*! lock protecting working directory changes       */
     137
     138    xlist_entry_t      children_root;    /*! root of the children process xlist              */
    139139    remote_queuelock_t children_lock;    /*! lock protecting children process xlist          */
    140140    uint32_t           children_nr;      /*! number of children processes                    */
    141141
    142         xlist_entry_t      children_list;    /*! member of list of children of same parent       */
     142    xlist_entry_t      children_list;    /*! member of list of children of same parent       */
    143143    xlist_entry_t      local_list;       /*! member of list of process in same cluster       */
    144144    xlist_entry_t      copies_list;      /*! member of list of copies of same process        */
    145145    xlist_entry_t      txt_list;         /*! member of list of processes sharing same TXT    */
    146146
    147         struct thread_s  * th_tbl[CONFIG_THREADS_MAX_PER_CLUSTER];       /*! local threads       */
    148 
    149         uint32_t           th_nr;            /*! number of threads in this cluster               */
     147    struct thread_s  * th_tbl[CONFIG_THREADS_MAX_PER_CLUSTER];       /*! local threads       */
     148
     149    uint32_t           th_nr;            /*! number of threads in this cluster               */
    150150    rwlock_t           th_lock;          /*! lock protecting th_tbl[]  i                     */
    151151
Note: See TracChangeset for help on using the changeset viewer.