Ignore:
Timestamp:
Jan 13, 2021, 12:36:17 AM (3 years ago)
Author:
alain
Message:

All modifications required to support the <tcp_chat> application
including error recovery in case of packet loss.A

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kernel/libk/elf.c

    r671 r683  
    161161                {
    162162                        type                       = VSEG_TYPE_CODE;
    163                         process->vmm.code_vpn_base = vbase >> CONFIG_PPM_PAGE_SHIFT;
     163                        process->vmm.code_vpn_base = vbase >> CONFIG_PPM_PAGE_ORDER;
    164164                }
    165165                else               // found DATA segment
    166166                {
    167167                        type                       = VSEG_TYPE_DATA;
    168                         process->vmm.data_vpn_base = vbase >> CONFIG_PPM_PAGE_SHIFT;
     168                        process->vmm.data_vpn_base = vbase >> CONFIG_PPM_PAGE_ORDER;
    169169                }
    170170
     
    215215{
    216216    uint32_t     new_offset;       // unused, required by vfs_lseek()
    217         kmem_req_t   req;              // kmem request for program header
    218217        Elf_Ehdr     header;           // local buffer for .elf header
    219218        void       * segs_base;        // pointer on buffer for segment descriptors array
     
    278277
    279278        // allocate memory for segment descriptors array
    280         req.type  = KMEM_KCM;
    281         req.order = bits_log2(segs_size);
    282         req.flags = AF_KERNEL;
    283         segs_base = kmem_alloc( &req );
     279        segs_base = kmem_alloc( bits_log2(segs_size) , AF_NONE );
    284280
    285281        if( segs_base == NULL )
     
    295291        {
    296292                printk("\n[ERROR] in %s : cannot seek for descriptors array\n", __FUNCTION__ );
    297                 req.ptr = segs_base;
    298                 kmem_free( &req );
     293                kmem_free( segs_base , bits_log2(segs_size) );
    299294                return -1;
    300295        }
     
    314309        {
    315310                printk("\n[ERROR] in %s : cannot read segments descriptors\n", __FUNCTION__ );
    316                 req.ptr = segs_base;
    317                 kmem_free( &req );
     311                kmem_free( segs_base , bits_log2(segs_size) );
    318312                return -1;
    319313        }
     
    331325        if( error )
    332326        {
    333                 req.ptr = segs_base;
    334                 kmem_free( &req );
     327                printk("\n[ERROR] in %s : cannot register segments descriptors\n", __FUNCTION__ );
     328                kmem_free( segs_base , bits_log2(segs_size) );
    335329                return -1;
    336330        }
     
    343337
    344338        // release allocated memory for program header
    345         req.ptr = segs_base;
    346         kmem_free(&req);
     339    kmem_free( segs_base , bits_log2(segs_size) );
    347340
    348341#if DEBUG_ELF_LOAD
Note: See TracChangeset for help on using the changeset viewer.