MCPcopy Create free account
hub / github.com/F-Stack/f-stack / vn_fill_kinfo_vnode

Function vn_fill_kinfo_vnode

freebsd/kern/vfs_vnops.c:2535–2580  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2533}
2534
2535int
2536vn_fill_kinfo_vnode(struct vnode *vp, struct kinfo_file *kif)
2537{
2538 struct vattr va;
2539 char *fullpath, *freepath;
2540 int error;
2541
2542 kif->kf_un.kf_file.kf_file_type = vntype_to_kinfo(vp->v_type);
2543 freepath = NULL;
2544 fullpath = "-";
2545 error = vn_fullpath(vp, &fullpath, &freepath);
2546 if (error == 0) {
2547 strlcpy(kif->kf_path, fullpath, sizeof(kif->kf_path));
2548 }
2549 if (freepath != NULL)
2550 free(freepath, M_TEMP);
2551
2552 KFAIL_POINT_CODE(DEBUG_FP, fill_kinfo_vnode__random_path,
2553 vn_fill_junk(kif);
2554 );
2555
2556 /*
2557 * Retrieve vnode attributes.
2558 */
2559 va.va_fsid = VNOVAL;
2560 va.va_rdev = NODEV;
2561 vn_lock(vp, LK_SHARED | LK_RETRY);
2562 error = VOP_GETATTR(vp, &va, curthread->td_ucred);
2563 VOP_UNLOCK(vp);
2564 if (error != 0)
2565 return (error);
2566 if (va.va_fsid != VNOVAL)
2567 kif->kf_un.kf_file.kf_file_fsid = va.va_fsid;
2568 else
2569 kif->kf_un.kf_file.kf_file_fsid =
2570 vp->v_mount->mnt_stat.f_fsid.val[0];
2571 kif->kf_un.kf_file.kf_file_fsid_freebsd11 =
2572 kif->kf_un.kf_file.kf_file_fsid; /* truncate */
2573 kif->kf_un.kf_file.kf_file_fileid = va.va_fileid;
2574 kif->kf_un.kf_file.kf_file_mode = MAKEIMODE(va.va_type, va.va_mode);
2575 kif->kf_un.kf_file.kf_file_size = va.va_size;
2576 kif->kf_un.kf_file.kf_file_rdev = va.va_rdev;
2577 kif->kf_un.kf_file.kf_file_rdev_freebsd11 =
2578 kif->kf_un.kf_file.kf_file_rdev; /* truncate */
2579 return (0);
2580}
2581
2582int
2583vn_mmap(struct file *fp, vm_map_t map, vm_offset_t *addr, vm_size_t size,

Callers 2

vn_fill_kinfoFunction · 0.70
export_vnode_to_kinfoFunction · 0.70

Calls 7

vntype_to_kinfoFunction · 0.85
vn_fill_junkFunction · 0.85
vn_lockFunction · 0.85
VOP_GETATTRFunction · 0.85
vn_fullpathFunction · 0.70
freeFunction · 0.70
strlcpyFunction · 0.50

Tested by

no test coverage detected