Lines Matching refs:lvp

304 lib_va_free(struct lib_va *lvp)  in lib_va_free()  argument
306 int is_64bit = lvp->lv_flags & LV_ELF64; in lib_va_free()
307 ASSERT(lvp->lv_refcnt == 0); in lib_va_free()
309 if (lvp->lv_base_va != NULL) { in lib_va_free()
311 lvp->lv_base_va, lvp->lv_len); in lib_va_free()
318 kmem_free(lvp, sizeof (struct lib_va)); in lib_va_free()
330 struct lib_va *lvp; in lib_va_find() local
339 lvp = *tmp; in lib_va_find()
340 if (LIB_VA_MATCH_ID(lvp, vap)) { in lib_va_find()
341 if (LIB_VA_MATCH_TIME(lvp, vap)) { in lib_va_find()
342 ASSERT((lvp->lv_flags & LV_DEL) == 0); in lib_va_find()
343 lvp->lv_refcnt++; in lib_va_find()
350 del = lvp; in lib_va_find()
361 lvp = NULL; in lib_va_find()
369 return (lvp); in lib_va_find()
371 tmp = &lvp->lv_next; in lib_va_find()
394 struct lib_va *lvp; in lib_va_add_hash() local
403 lvp = kmem_alloc(sizeof (struct lib_va), KM_SLEEP); in lib_va_add_hash()
417 kmem_free(lvp, sizeof (struct lib_va)); in lib_va_add_hash()
452 lvp->lv_base_va = base_va; in lib_va_add_hash()
453 lvp->lv_len = len; in lib_va_add_hash()
454 lvp->lv_align = align; in lib_va_add_hash()
455 lvp->lv_nodeid = vap->va_nodeid; in lib_va_add_hash()
456 lvp->lv_fsid = vap->va_fsid; in lib_va_add_hash()
457 lvp->lv_ctime.tv_sec = vap->va_ctime.tv_sec; in lib_va_add_hash()
458 lvp->lv_ctime.tv_nsec = vap->va_ctime.tv_nsec; in lib_va_add_hash()
459 lvp->lv_mtime.tv_sec = vap->va_mtime.tv_sec; in lib_va_add_hash()
460 lvp->lv_mtime.tv_nsec = vap->va_mtime.tv_nsec; in lib_va_add_hash()
461 lvp->lv_next = NULL; in lib_va_add_hash()
462 lvp->lv_refcnt = 1; in lib_va_add_hash()
465 lvp->lv_num_segs = 0; in lib_va_add_hash()
468 lvp->lv_flags = LV_ELF64; in lib_va_add_hash()
471 lvp->lv_flags = LV_ELF32; in lib_va_add_hash()
483 *tmp = lvp; in lib_va_add_hash()
490 return (lvp); in lib_va_add_hash()
499 lib_va_release(struct lib_va *lvp) in lib_va_release() argument
504 ASSERT(lvp->lv_refcnt > 0); in lib_va_release()
506 index = LIB_VA_HASH(lvp->lv_nodeid); in lib_va_release()
508 if (--lvp->lv_refcnt == 0 && (lvp->lv_flags & LV_DEL)) { in lib_va_release()
513 ASSERT(lvp->lv_next == 0); in lib_va_release()
514 lib_va_free(lvp); in lib_va_release()
647 mmapobj_lookup_start_addr(struct lib_va *lvp) in mmapobj_lookup_start_addr() argument
658 ASSERT(lvp != NULL); in mmapobj_lookup_start_addr()
663 base = lvp->lv_base_va; in mmapobj_lookup_start_addr()
664 len = lvp->lv_len; in mmapobj_lookup_start_addr()
674 if (lvp->lv_flags & LV_ELF64) { in mmapobj_lookup_start_addr()
678 align = lvp->lv_align; in mmapobj_lookup_start_addr()
1538 struct lib_va *lvp = NULL; in process_phdr() local
1594 lvp = lib_va_find(&vattr); in process_phdr()
1596 if (lvp != NULL) { in process_phdr()
1599 start_addr = mmapobj_lookup_start_addr(lvp); in process_phdr()
1601 lib_va_release(lvp); in process_phdr()
1611 loadable = lvp->lv_num_segs; in process_phdr()
1612 len = lvp->lv_len; in process_phdr()
1613 align = lvp->lv_align; in process_phdr()
1631 ASSERT(lvp == NULL); in process_phdr()
1635 if (lvp) { in process_phdr()
1636 ASSERT(len == lvp->lv_len); in process_phdr()
1637 ASSERT(align == lvp->lv_align); in process_phdr()
1648 ASSERT(lvp == NULL); in process_phdr()
1664 if (lvp) { in process_phdr()
1665 lib_va_release(lvp); in process_phdr()
1702 ASSERT(lvp ? use_lib_va == 0 : 1); in process_phdr()
1703 start_addr = mmapobj_alloc_start_addr(&lvp, len, in process_phdr()
1706 if (lvp) { in process_phdr()
1707 lib_va_release(lvp); in process_phdr()
1718 if (lvp != NULL && loadable > LIBVA_CACHED_SEGS && use_lib_va) { in process_phdr()
1719 lvp->lv_num_segs = loadable; in process_phdr()
1720 lib_va_release(lvp); in process_phdr()
1721 lvp = NULL; in process_phdr()
1755 if (lvp != NULL && use_lib_va == 0) { in process_phdr()
1756 lib_va_release(lvp); in process_phdr()
1758 lvp = NULL; in process_phdr()
1871 ASSERT(lvp == NULL); in process_phdr()
1878 if (lvp) { in process_phdr()
1880 if (lvp->lv_num_segs == 0 && loadable <= LIBVA_CACHED_SEGS) { in process_phdr()
1881 bcopy(mrp, lvp->lv_mps, in process_phdr()
1892 lvp->lv_num_segs = loadable; in process_phdr()
1893 lib_va_release(lvp); in process_phdr()
2290 struct lib_va *lvp; in mmapobj_map_interpret() local
2315 if (padding == 0 && (lvp = lib_va_find(&vattr)) != NULL) { in mmapobj_map_interpret()
2320 lvp->lv_flags & LV_ELF64) || in mmapobj_map_interpret()
2322 lvp->lv_flags & LV_ELF32)) { in mmapobj_map_interpret()
2323 lib_va_release(lvp); in mmapobj_map_interpret()
2327 num_segs = lvp->lv_num_segs; in mmapobj_map_interpret()
2330 lib_va_release(lvp); in mmapobj_map_interpret()
2341 start_addr = mmapobj_lookup_start_addr(lvp); in mmapobj_map_interpret()
2343 lib_va_release(lvp); in mmapobj_map_interpret()
2347 bcopy(lvp->lv_mps, mrp, in mmapobj_map_interpret()
2353 lib_va_release(lvp); in mmapobj_map_interpret()
2363 lib_va_release(lvp); in mmapobj_map_interpret()