Changeset 407 for trunk/kernel/libk/elf.c
- Timestamp:
- Nov 7, 2017, 3:08:12 PM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kernel/libk/elf.c
r406 r407 175 175 } 176 176 177 // get .elf file descriptor cluster and local pointer 178 cxy_t file_cxy = GET_CXY( file_xp ); 179 vfs_file_t * file_ptr = (vfs_file_t *)GET_PTR( file_xp ); 180 181 // get local pointer on .elf file mapper 182 mapper_t * mapper_ptr = (mapper_t *)hal_remote_lpt( XPTR( file_cxy , 183 &file_ptr->mapper ) ); 177 184 // register vseg in VMM 178 185 vseg = (vseg_t *)vmm_create_vseg( process, 186 type, 179 187 vbase, 180 188 mem_size, 181 type ); 189 file_offset, 190 file_size, 191 XPTR( file_cxy , mapper_ptr ), 192 local_cxy ); 182 193 if( vseg == NULL ) 183 194 { … … 187 198 } 188 199 189 // get .elf file descriptor cluster and local pointer190 cxy_t file_cxy = GET_CXY( file_xp );191 vfs_file_t * file_ptr = (vfs_file_t *)GET_PTR( file_xp );192 193 // get local pointer on .elf file mapper194 mapper_t * mapper_ptr = (mapper_t *)hal_remote_lpt( XPTR( file_cxy ,195 &file_ptr->mapper ) );196 197 // initialize "file_mapper", "file_offset", "file_size" fields in vseg198 vseg->mapper_xp = XPTR( file_cxy , mapper_ptr );199 vseg->file_offset = file_offset;200 vseg->file_size = file_size;201 202 200 // update reference counter in file descriptor 203 201 vfs_file_count_up( file_xp ); 204 202 205 elf_dmsg("\n[D MSG] %s : found %s vseg / base = %x / size = %x\n"203 elf_dmsg("\n[DBG] %s : found %s vseg / base = %x / size = %x\n" 206 204 " file_size = %x / file_offset = %x / mapper_xp = %l\n", 207 205 __FUNCTION__ , vseg_type_str(vseg->type) , vseg->min , vseg->max - vseg->min , … … 225 223 error_t error; 226 224 227 elf_dmsg("\n[D MSG] %s : core[%x,%d] enter for <%s>\n",225 elf_dmsg("\n[DBG] %s : core[%x,%d] enter for <%s>\n", 228 226 __FUNCTION__ , local_cxy , CURRENT_THREAD->core->lid , pathname ); 229 227 … … 233 231 234 232 // open file 235 error = vfs_open( process ->vfs_cwd_xp,233 error = vfs_open( process, 236 234 pathname, 237 235 O_RDONLY, … … 245 243 } 246 244 247 elf_dmsg("\n[D MSG] %s : open file <%s>\n", __FUNCTION__ , pathname );245 elf_dmsg("\n[DBG] %s : open file <%s>\n", __FUNCTION__ , pathname ); 248 246 249 247 // load header in local buffer … … 258 256 } 259 257 260 elf_dmsg("\n[D MSG] %s : loaded elf header for %s\n", __FUNCTION__ , pathname );258 elf_dmsg("\n[DBG] %s : loaded elf header for %s\n", __FUNCTION__ , pathname ); 261 259 262 260 if( header.e_phnum == 0 ) … … 295 293 } 296 294 297 elf_dmsg("\n[D MSG] %s : segments array allocated for %s\n", __FUNCTION__ , pathname );295 elf_dmsg("\n[DBG] %s : segments array allocated for %s\n", __FUNCTION__ , pathname ); 298 296 299 297 // load seg descriptors array to local buffer … … 312 310 } 313 311 314 elf_dmsg("\n[D MSG] %s loaded segments descriptors for %s \n", __FUNCTION__ , pathname );312 elf_dmsg("\n[DBG] %s loaded segments descriptors for %s \n", __FUNCTION__ , pathname ); 315 313 316 314 // register loadable segments in process VMM … … 337 335 kmem_free(&req); 338 336 339 elf_dmsg("\n[D MSG] %s : core[%x,%d] exit for <%s> / entry_point = %x\n",337 elf_dmsg("\n[DBG] %s : core[%x,%d] exit for <%s> / entry_point = %x\n", 340 338 __FUNCTION__ , local_cxy , CURRENT_THREAD->core->lid , pathname , header.e_entry ); 341 339
Note: See TracChangeset
for help on using the changeset viewer.