Lines Matching +full:entry +full:- +full:method
1 /*-
2 * SPDX-License-Identifier: BSD-4-Clause
186 if (procstat->type == PROCSTAT_KVM) in procstat_close()
187 kvm_close(procstat->kd); in procstat_close()
188 else if (procstat->type == PROCSTAT_CORE) in procstat_close()
189 procstat_core_close(procstat->core); in procstat_close()
205 procstat->type = PROCSTAT_SYSCTL; in procstat_open_sysctl()
227 procstat->type = PROCSTAT_KVM; in procstat_open_kvm()
228 procstat->kd = kd; in procstat_open_kvm()
248 procstat->type = PROCSTAT_CORE; in procstat_open_core()
249 procstat->core = core; in procstat_open_core()
266 if (procstat->type == PROCSTAT_KVM) { in procstat_getprocs()
268 p0 = kvm_getprocs(procstat->kd, what, arg, &cnt); in procstat_getprocs()
280 } else if (procstat->type == PROCSTAT_SYSCTL) { in procstat_getprocs()
310 if ((len % sizeof(*p)) != 0 || p->ki_structsize != sizeof(*p)) { in procstat_getprocs()
316 } else if (procstat->type == PROCSTAT_CORE) { in procstat_getprocs()
317 p = procstat_core_get(procstat->core, PSC_TYPE_PROC, NULL, in procstat_getprocs()
319 if ((len % sizeof(*p)) != 0 || p->ki_structsize != sizeof(*p)) { in procstat_getprocs()
326 warnx("unknown access method: %d", procstat->type); in procstat_getprocs()
348 switch (procstat->type) { in procstat_getfiles()
355 warnx("unknown access method: %d", procstat->type); in procstat_getfiles()
366 if (fst->fs_path != NULL) in procstat_freefiles()
367 free(fst->fs_path); in procstat_freefiles()
371 if (procstat->vmentries != NULL) { in procstat_freefiles()
372 free(procstat->vmentries); in procstat_freefiles()
373 procstat->vmentries = NULL; in procstat_freefiles()
375 if (procstat->files != NULL) { in procstat_freefiles()
376 free(procstat->files); in procstat_freefiles()
377 procstat->files = NULL; in procstat_freefiles()
385 struct filestat *entry; in filestat_new_entry() local
387 entry = calloc(1, sizeof(*entry)); in filestat_new_entry()
388 if (entry == NULL) { in filestat_new_entry()
392 entry->fs_typedep = typedep; in filestat_new_entry()
393 entry->fs_fflags = fflags; in filestat_new_entry()
394 entry->fs_uflags = uflags; in filestat_new_entry()
395 entry->fs_fd = fd; in filestat_new_entry()
396 entry->fs_type = type; in filestat_new_entry()
397 entry->fs_ref_count = refcount; in filestat_new_entry()
398 entry->fs_offset = offset; in filestat_new_entry()
399 entry->fs_path = path; in filestat_new_entry()
401 entry->fs_cap_rights = *cap_rightsp; in filestat_new_entry()
403 cap_rights_init(&entry->fs_cap_rights); in filestat_new_entry()
404 return (entry); in filestat_new_entry()
416 error = kvm_read_all(kd, (unsigned long)kp->ki_paddr, &proc, in getctty()
420 kp->ki_paddr, kp->ki_pid); in getctty()
429 proc.p_pgrp, kp->ki_pid); in getctty()
436 pgrp.pg_session, kp->ki_pid); in getctty()
466 struct filestat *entry; in procstat_getfiles_kvm() local
478 kd = procstat->kd; in procstat_getfiles_kvm()
481 if (kp->ki_fd == NULL || kp->ki_pd == NULL) in procstat_getfiles_kvm()
483 if (!kvm_read_all(kd, (unsigned long)kp->ki_fd, &filed, in procstat_getfiles_kvm()
485 warnx("can't read filedesc at %p", (void *)kp->ki_fd); in procstat_getfiles_kvm()
488 if (!kvm_read_all(kd, (unsigned long)kp->ki_pd, &pathsd, in procstat_getfiles_kvm()
490 warnx("can't read pwddesc at %p", (void *)kp->ki_pd); in procstat_getfiles_kvm()
514 entry = filestat_new_entry(pwd.pwd_rdir, PS_FST_TYPE_VNODE, -1, in procstat_getfiles_kvm()
516 if (entry != NULL) in procstat_getfiles_kvm()
517 STAILQ_INSERT_TAIL(head, entry, next); in procstat_getfiles_kvm()
521 entry = filestat_new_entry(pwd.pwd_cdir, PS_FST_TYPE_VNODE, -1, in procstat_getfiles_kvm()
523 if (entry != NULL) in procstat_getfiles_kvm()
524 STAILQ_INSERT_TAIL(head, entry, next); in procstat_getfiles_kvm()
528 entry = filestat_new_entry(pwd.pwd_jdir, PS_FST_TYPE_VNODE, -1, in procstat_getfiles_kvm()
530 if (entry != NULL) in procstat_getfiles_kvm()
531 STAILQ_INSERT_TAIL(head, entry, next); in procstat_getfiles_kvm()
535 if (kp->ki_tracep) { in procstat_getfiles_kvm()
536 entry = filestat_new_entry(kp->ki_tracep, PS_FST_TYPE_VNODE, -1, in procstat_getfiles_kvm()
539 if (entry != NULL) in procstat_getfiles_kvm()
540 STAILQ_INSERT_TAIL(head, entry, next); in procstat_getfiles_kvm()
543 if (kp->ki_textvp) { in procstat_getfiles_kvm()
544 entry = filestat_new_entry(kp->ki_textvp, PS_FST_TYPE_VNODE, -1, in procstat_getfiles_kvm()
546 if (entry != NULL) in procstat_getfiles_kvm()
547 STAILQ_INSERT_TAIL(head, entry, next); in procstat_getfiles_kvm()
551 entry = filestat_new_entry(vp, PS_FST_TYPE_VNODE, -1, in procstat_getfiles_kvm()
554 if (entry != NULL) in procstat_getfiles_kvm()
555 STAILQ_INSERT_TAIL(head, entry, next); in procstat_getfiles_kvm()
576 if (fdt->fdt_ofiles[i].fde_file == NULL) { in procstat_getfiles_kvm()
579 if (!kvm_read_all(kd, (unsigned long)fdt->fdt_ofiles[i].fde_file, &file, in procstat_getfiles_kvm()
582 (void *)fdt->fdt_ofiles[i].fde_file); in procstat_getfiles_kvm()
632 entry = filestat_new_entry(data, type, i, in procstat_getfiles_kvm()
634 if (entry != NULL) in procstat_getfiles_kvm()
635 STAILQ_INSERT_TAIL(head, entry, next); in procstat_getfiles_kvm()
645 if (!kvm_read_all(kd, (unsigned long)kp->ki_vmspace, &vmspace, in procstat_getfiles_kvm()
648 (void *)kp->ki_vmspace); in procstat_getfiles_kvm()
654 entryp != NULL && entryp != &kp->ki_vmspace->vm_map.header; in procstat_getfiles_kvm()
682 * Create filestat entry. in procstat_getfiles_kvm()
684 entry = filestat_new_entry(object.handle, in procstat_getfiles_kvm()
685 PS_FST_TYPE_VNODE, -1, fflags, in procstat_getfiles_kvm()
687 if (entry != NULL) in procstat_getfiles_kvm()
688 STAILQ_INSERT_TAIL(head, entry, next); in procstat_getfiles_kvm()
816 if (kf->kf_structsize == 0) in kinfo_getfile_core()
818 bp += kf->kf_structsize; in kinfo_getfile_core()
833 if (kf->kf_structsize == 0) in kinfo_getfile_core()
835 /* Copy/expand into pre-zeroed buffer */ in kinfo_getfile_core()
836 memcpy(kp, kf, kf->kf_structsize); in kinfo_getfile_core()
838 bp += kf->kf_structsize; in kinfo_getfile_core()
840 kp->kf_structsize = sizeof(*kp); in kinfo_getfile_core()
855 struct filestat *entry; in procstat_getfiles_sysctl() local
864 switch (procstat->type) { in procstat_getfiles_sysctl()
866 files = kinfo_getfile(kp->ki_pid, &cnt); in procstat_getfiles_sysctl()
869 files = kinfo_getfile_core(procstat->core, &cnt); in procstat_getfiles_sysctl()
878 procstat->files = files; in procstat_getfiles_sysctl()
890 type = kinfo_type2fst(kif->kf_type); in procstat_getfiles_sysctl()
891 fd = kif->kf_fd >= 0 ? kif->kf_fd : -1; in procstat_getfiles_sysctl()
892 fflags = kinfo_fflags2fst(kif->kf_flags); in procstat_getfiles_sysctl()
893 uflags = kinfo_uflags2fst(kif->kf_fd); in procstat_getfiles_sysctl()
894 refcount = kif->kf_ref_count; in procstat_getfiles_sysctl()
895 offset = kif->kf_offset; in procstat_getfiles_sysctl()
896 if (*kif->kf_path != '\0') in procstat_getfiles_sysctl()
897 path = strdup(kif->kf_path); in procstat_getfiles_sysctl()
900 cap_rights = kif->kf_cap_rights; in procstat_getfiles_sysctl()
903 * Create filestat entry. in procstat_getfiles_sysctl()
905 entry = filestat_new_entry(kif, type, fd, fflags, uflags, in procstat_getfiles_sysctl()
907 if (entry != NULL) in procstat_getfiles_sysctl()
908 STAILQ_INSERT_TAIL(head, entry, next); in procstat_getfiles_sysctl()
912 procstat->vmentries = vmentries; in procstat_getfiles_sysctl()
917 if (kve->kve_type != KVME_TYPE_VNODE) in procstat_getfiles_sysctl()
920 if (kve->kve_protection & KVME_PROT_READ) in procstat_getfiles_sysctl()
922 if ((kve->kve_flags & KVME_FLAG_COW) == 0 && in procstat_getfiles_sysctl()
923 kve->kve_protection & KVME_PROT_WRITE) in procstat_getfiles_sysctl()
925 offset = kve->kve_offset; in procstat_getfiles_sysctl()
926 refcount = kve->kve_ref_count; in procstat_getfiles_sysctl()
927 if (*kve->kve_path != '\0') in procstat_getfiles_sysctl()
928 path = strdup(kve->kve_path); in procstat_getfiles_sysctl()
931 entry = filestat_new_entry(kve, PS_FST_TYPE_VNODE, -1, in procstat_getfiles_sysctl()
934 if (entry != NULL) in procstat_getfiles_sysctl()
935 STAILQ_INSERT_TAIL(head, entry, next); in procstat_getfiles_sysctl()
948 if (procstat->type == PROCSTAT_KVM) { in procstat_get_pipe_info()
949 return (procstat_get_pipe_info_kvm(procstat->kd, fst, ps, in procstat_get_pipe_info()
951 } else if (procstat->type == PROCSTAT_SYSCTL || in procstat_get_pipe_info()
952 procstat->type == PROCSTAT_CORE) { in procstat_get_pipe_info()
955 warnx("unknown access method: %d", procstat->type); in procstat_get_pipe_info()
973 pipep = fst->fs_typedep; in procstat_get_pipe_info_kvm()
980 ps->addr = (uintptr_t)pipep; in procstat_get_pipe_info_kvm()
981 ps->peer = (uintptr_t)pi.pipe_peer; in procstat_get_pipe_info_kvm()
982 ps->buffer_cnt = pi.pipe_buffer.cnt; in procstat_get_pipe_info_kvm()
1000 kif = fst->fs_typedep; in procstat_get_pipe_info_sysctl()
1003 ps->addr = kif->kf_un.kf_pipe.kf_pipe_addr; in procstat_get_pipe_info_sysctl()
1004 ps->peer = kif->kf_un.kf_pipe.kf_pipe_peer; in procstat_get_pipe_info_sysctl()
1005 ps->buffer_cnt = kif->kf_un.kf_pipe.kf_pipe_buffer_cnt; in procstat_get_pipe_info_sysctl()
1015 if (procstat->type == PROCSTAT_KVM) { in procstat_get_pts_info()
1016 return (procstat_get_pts_info_kvm(procstat->kd, fst, pts, in procstat_get_pts_info()
1018 } else if (procstat->type == PROCSTAT_SYSCTL || in procstat_get_pts_info()
1019 procstat->type == PROCSTAT_CORE) { in procstat_get_pts_info()
1022 warnx("unknown access method: %d", procstat->type); in procstat_get_pts_info()
1040 ttyp = fst->fs_typedep; in procstat_get_pts_info_kvm()
1047 pts->dev = dev2udev(kd, tty.t_dev); in procstat_get_pts_info_kvm()
1048 (void)kdevtoname(kd, tty.t_dev, pts->devname); in procstat_get_pts_info_kvm()
1066 kif = fst->fs_typedep; in procstat_get_pts_info_sysctl()
1069 pts->dev = kif->kf_un.kf_pts.kf_pts_dev; in procstat_get_pts_info_sysctl()
1070 strlcpy(pts->devname, kif->kf_path, sizeof(pts->devname)); in procstat_get_pts_info_sysctl()
1080 if (procstat->type == PROCSTAT_KVM) { in procstat_get_sem_info()
1081 return (procstat_get_sem_info_kvm(procstat->kd, fst, sem, in procstat_get_sem_info()
1083 } else if (procstat->type == PROCSTAT_SYSCTL || in procstat_get_sem_info()
1084 procstat->type == PROCSTAT_CORE) { in procstat_get_sem_info()
1087 warnx("unknown access method: %d", procstat->type); in procstat_get_sem_info()
1107 ksemp = fst->fs_typedep; in procstat_get_sem_info_kvm()
1115 sem->mode = S_IFREG | ksem.ks_mode; in procstat_get_sem_info_kvm()
1116 sem->value = ksem.ks_value; in procstat_get_sem_info_kvm()
1117 if (fst->fs_path == NULL && ksem.ks_path != NULL) { in procstat_get_sem_info_kvm()
1119 for (i = 0; i < MAXPATHLEN - 1; i++) { in procstat_get_sem_info_kvm()
1130 fst->fs_path = path; in procstat_get_sem_info_kvm()
1149 kif = fst->fs_typedep; in procstat_get_sem_info_sysctl()
1152 sem->value = kif->kf_un.kf_sem.kf_sem_value; in procstat_get_sem_info_sysctl()
1153 sem->mode = kif->kf_un.kf_sem.kf_sem_mode; in procstat_get_sem_info_sysctl()
1163 if (procstat->type == PROCSTAT_KVM) { in procstat_get_shm_info()
1164 return (procstat_get_shm_info_kvm(procstat->kd, fst, shm, in procstat_get_shm_info()
1166 } else if (procstat->type == PROCSTAT_SYSCTL || in procstat_get_shm_info()
1167 procstat->type == PROCSTAT_CORE) { in procstat_get_shm_info()
1170 warnx("unknown access method: %d", procstat->type); in procstat_get_shm_info()
1190 shmfdp = fst->fs_typedep; in procstat_get_shm_info_kvm()
1198 shm->mode = S_IFREG | shmfd.shm_mode; in procstat_get_shm_info_kvm()
1199 shm->size = shmfd.shm_size; in procstat_get_shm_info_kvm()
1200 if (fst->fs_path == NULL && shmfd.shm_path != NULL) { in procstat_get_shm_info_kvm()
1202 for (i = 0; i < MAXPATHLEN - 1; i++) { in procstat_get_shm_info_kvm()
1213 fst->fs_path = path; in procstat_get_shm_info_kvm()
1232 kif = fst->fs_typedep; in procstat_get_shm_info_sysctl()
1235 shm->size = kif->kf_un.kf_file.kf_file_size; in procstat_get_shm_info_sysctl()
1236 shm->mode = kif->kf_un.kf_file.kf_file_mode; in procstat_get_shm_info_sysctl()
1246 if (procstat->type == PROCSTAT_KVM) { in procstat_get_vnode_info()
1247 return (procstat_get_vnode_info_kvm(procstat->kd, fst, vn, in procstat_get_vnode_info()
1249 } else if (procstat->type == PROCSTAT_SYSCTL || in procstat_get_vnode_info()
1250 procstat->type == PROCSTAT_CORE) { in procstat_get_vnode_info()
1253 warnx("unknown access method: %d", procstat->type); in procstat_get_vnode_info()
1292 vp = fst->fs_typedep; in procstat_get_vnode_info_kvm()
1301 vn->vn_type = vntype2psfsttype(vnode.v_type); in procstat_get_vnode_info_kvm()
1310 tagstr[sizeof(tagstr) - 1] = '\0'; in procstat_get_vnode_info_kvm()
1327 vn->vn_mntdir = getmnton(kd, vnode.v_mount); in procstat_get_vnode_info_kvm()
1330 vn->vn_dev = dev2udev(kd, vnode.v_rdev); in procstat_get_vnode_info_kvm()
1331 (void)kdevtoname(kd, vnode.v_rdev, vn->vn_devname); in procstat_get_vnode_info_kvm()
1333 vn->vn_dev = -1; in procstat_get_vnode_info_kvm()
1393 if (fst->fs_typedep == NULL) in procstat_get_vnode_info_sysctl()
1395 if (fst->fs_uflags & PS_FST_UFLAG_MMAP) { in procstat_get_vnode_info_sysctl()
1396 kve = fst->fs_typedep; in procstat_get_vnode_info_sysctl()
1397 fileid = kve->kve_vn_fileid; in procstat_get_vnode_info_sysctl()
1398 fsid = kve->kve_vn_fsid; in procstat_get_vnode_info_sysctl()
1399 mode = kve->kve_vn_mode; in procstat_get_vnode_info_sysctl()
1400 path = kve->kve_path; in procstat_get_vnode_info_sysctl()
1401 rdev = kve->kve_vn_rdev; in procstat_get_vnode_info_sysctl()
1402 size = kve->kve_vn_size; in procstat_get_vnode_info_sysctl()
1403 vntype = kinfo_vtype2fst(kve->kve_vn_type); in procstat_get_vnode_info_sysctl()
1404 status = kve->kve_status; in procstat_get_vnode_info_sysctl()
1406 kif = fst->fs_typedep; in procstat_get_vnode_info_sysctl()
1407 fileid = kif->kf_un.kf_file.kf_file_fileid; in procstat_get_vnode_info_sysctl()
1408 fsid = kif->kf_un.kf_file.kf_file_fsid; in procstat_get_vnode_info_sysctl()
1409 mode = kif->kf_un.kf_file.kf_file_mode; in procstat_get_vnode_info_sysctl()
1410 path = kif->kf_path; in procstat_get_vnode_info_sysctl()
1411 rdev = kif->kf_un.kf_file.kf_file_rdev; in procstat_get_vnode_info_sysctl()
1412 size = kif->kf_un.kf_file.kf_file_size; in procstat_get_vnode_info_sysctl()
1413 vntype = kinfo_vtype2fst(kif->kf_vnode_type); in procstat_get_vnode_info_sysctl()
1414 status = kif->kf_status; in procstat_get_vnode_info_sysctl()
1416 vn->vn_type = vntype; in procstat_get_vnode_info_sysctl()
1428 vn->vn_mntdir = strdup(stbuf.f_mntonname); in procstat_get_vnode_info_sysctl()
1430 vn->vn_mntdir = strdup("-"); in procstat_get_vnode_info_sysctl()
1431 vn->vn_dev = rdev; in procstat_get_vnode_info_sysctl()
1435 strlcpy(vn->vn_devname, name, in procstat_get_vnode_info_sysctl()
1436 sizeof(vn->vn_devname)); in procstat_get_vnode_info_sysctl()
1438 name = devname(vn->vn_dev, S_IFCHR); in procstat_get_vnode_info_sysctl()
1440 strlcpy(vn->vn_devname, name, in procstat_get_vnode_info_sysctl()
1441 sizeof(vn->vn_devname)); in procstat_get_vnode_info_sysctl()
1443 vn->vn_fsid = fsid; in procstat_get_vnode_info_sysctl()
1444 vn->vn_fileid = fileid; in procstat_get_vnode_info_sysctl()
1445 vn->vn_size = size; in procstat_get_vnode_info_sysctl()
1446 vn->vn_mode = mode; in procstat_get_vnode_info_sysctl()
1456 if (procstat->type == PROCSTAT_KVM) { in procstat_get_socket_info()
1457 return (procstat_get_socket_info_kvm(procstat->kd, fst, sock, in procstat_get_socket_info()
1459 } else if (procstat->type == PROCSTAT_SYSCTL || in procstat_get_socket_info()
1460 procstat->type == PROCSTAT_CORE) { in procstat_get_socket_info()
1463 warnx("unknown access method: %d", procstat->type); in procstat_get_socket_info()
1485 so = fst->fs_typedep; in procstat_get_socket_info_kvm()
1488 sock->so_addr = (uintptr_t)so; in procstat_get_socket_info_kvm()
1495 /* fill in protosw entry */ in procstat_get_socket_info_kvm()
1508 if ((len = kvm_read(kd, (unsigned long)dom.dom_name, sock->dname, in procstat_get_socket_info_kvm()
1509 sizeof(sock->dname) - 1)) < 0) { in procstat_get_socket_info_kvm()
1511 sock->dname[0] = '\0'; in procstat_get_socket_info_kvm()
1514 sock->dname[len] = '\0'; in procstat_get_socket_info_kvm()
1519 sock->type = s.so_type; in procstat_get_socket_info_kvm()
1520 sock->proto = proto.pr_protocol; in procstat_get_socket_info_kvm()
1521 sock->dom_family = dom.dom_family; in procstat_get_socket_info_kvm()
1522 sock->so_pcb = (uintptr_t)s.so_pcb; in procstat_get_socket_info_kvm()
1523 sock->sendq = s.so_snd.sb_ccc; in procstat_get_socket_info_kvm()
1524 sock->recvq = s.so_rcv.sb_ccc; in procstat_get_socket_info_kvm()
1525 sock->so_rcv_sb_state = s.so_rcv.sb_state; in procstat_get_socket_info_kvm()
1526 sock->so_snd_sb_state = s.so_snd.sb_state; in procstat_get_socket_info_kvm()
1539 sock->unp_conn = (uintptr_t)unpcb.unp_conn; in procstat_get_socket_info_kvm()
1563 kif = fst->fs_typedep; in procstat_get_socket_info_sysctl()
1570 sock->type = kif->kf_sock_type; in procstat_get_socket_info_sysctl()
1571 sock->proto = kif->kf_sock_protocol; in procstat_get_socket_info_sysctl()
1572 sock->dom_family = kif->kf_sock_domain; in procstat_get_socket_info_sysctl()
1573 sock->so_pcb = kif->kf_un.kf_sock.kf_sock_pcb; in procstat_get_socket_info_sysctl()
1574 strlcpy(sock->dname, kif->kf_path, sizeof(sock->dname)); in procstat_get_socket_info_sysctl()
1575 bcopy(&kif->kf_un.kf_sock.kf_sa_local, &sock->sa_local, in procstat_get_socket_info_sysctl()
1576 kif->kf_un.kf_sock.kf_sa_local.ss_len); in procstat_get_socket_info_sysctl()
1577 bcopy(&kif->kf_un.kf_sock.kf_sa_peer, &sock->sa_peer, in procstat_get_socket_info_sysctl()
1578 kif->kf_un.kf_sock.kf_sa_peer.ss_len); in procstat_get_socket_info_sysctl()
1583 switch (sock->dom_family) { in procstat_get_socket_info_sysctl()
1586 if (sock->proto == IPPROTO_TCP) { in procstat_get_socket_info_sysctl()
1587 sock->sendq = kif->kf_un.kf_sock.kf_sock_sendq; in procstat_get_socket_info_sysctl()
1588 sock->recvq = kif->kf_un.kf_sock.kf_sock_recvq; in procstat_get_socket_info_sysctl()
1592 if (kif->kf_un.kf_sock.kf_sock_unpconn != 0) { in procstat_get_socket_info_sysctl()
1593 sock->so_rcv_sb_state = in procstat_get_socket_info_sysctl()
1594 kif->kf_un.kf_sock.kf_sock_rcv_sb_state; in procstat_get_socket_info_sysctl()
1595 sock->so_snd_sb_state = in procstat_get_socket_info_sysctl()
1596 kif->kf_un.kf_sock.kf_sock_snd_sb_state; in procstat_get_socket_info_sysctl()
1597 sock->unp_conn = in procstat_get_socket_info_sysctl()
1598 kif->kf_un.kf_sock.kf_sock_unpconn; in procstat_get_socket_info_sysctl()
1599 sock->sendq = kif->kf_un.kf_sock.kf_sock_sendq; in procstat_get_socket_info_sysctl()
1600 sock->recvq = kif->kf_un.kf_sock.kf_sock_recvq; in procstat_get_socket_info_sysctl()
1689 for (mt = mhead; mt != NULL; mt = mt->next) in getmnton()
1690 if (m == mt->m) in getmnton()
1691 return (mt->mntonname); in getmnton()
1698 mt->m = m; in getmnton()
1699 bcopy(&mnt.mnt_stat.f_mntonname[0], &mt->mntonname[0], MNAMELEN); in getmnton()
1700 mt->mntonname[MNAMELEN] = '\0'; in getmnton()
1701 mt->next = mhead; in getmnton()
1703 return (mt->mntonname); in getmnton()
1725 av->bufsize = bufsize; in argvec_alloc()
1726 av->buf = malloc(av->bufsize); in argvec_alloc()
1727 if (av->buf == NULL) { in argvec_alloc()
1731 av->argc = 32; in argvec_alloc()
1732 av->argv = malloc(sizeof(char *) * av->argc); in argvec_alloc()
1733 if (av->argv == NULL) { in argvec_alloc()
1734 free(av->buf); in argvec_alloc()
1745 free(av->argv); in argvec_free()
1746 free(av->buf); in argvec_free()
1761 if (procstat->type == PROCSTAT_KVM) { in getargv()
1762 warnx("can't use kvm access method"); in getargv()
1765 if (procstat->type != PROCSTAT_SYSCTL && in getargv()
1766 procstat->type != PROCSTAT_CORE) { in getargv()
1767 warnx("unknown access method: %d", procstat->type); in getargv()
1774 avp = (struct argvec **)(env ? &procstat->argv : &procstat->envv); in getargv()
1786 } else if (av->bufsize < nchr) { in getargv()
1787 av->buf = reallocf(av->buf, nchr); in getargv()
1788 if (av->buf == NULL) { in getargv()
1793 if (procstat->type == PROCSTAT_SYSCTL) { in getargv()
1797 name[3] = kp->ki_pid; in getargv()
1799 error = sysctl(name, nitems(name), av->buf, &len, NULL, 0); in getargv()
1804 } else /* procstat->type == PROCSTAT_CORE */ { in getargv()
1807 if (procstat_core_get(procstat->core, type, av->buf, &len) in getargv()
1813 argv = av->argv; in getargv()
1814 argc = av->argc; in getargv()
1816 for (p = av->buf; p < av->buf + len; p += strlen(p) + 1) { in getargv()
1827 av->argv = argv; in getargv()
1828 av->argc = argc; in getargv()
1852 if (procstat->argv != NULL) { in procstat_freeargv()
1853 argvec_free(procstat->argv); in procstat_freeargv()
1854 procstat->argv = NULL; in procstat_freeargv()
1874 if (procstat->envv != NULL) { in procstat_freeenvv()
1875 argvec_free(procstat->envv); in procstat_freeenvv()
1876 procstat->envv = NULL; in procstat_freeenvv()
1906 if (kv->kve_structsize == 0) in kinfo_getvmmap_core()
1908 bp += kv->kve_structsize; in kinfo_getvmmap_core()
1923 if (kv->kve_structsize == 0) in kinfo_getvmmap_core()
1925 /* Copy/expand into pre-zeroed buffer */ in kinfo_getvmmap_core()
1926 memcpy(kp, kv, kv->kve_structsize); in kinfo_getvmmap_core()
1928 bp += kv->kve_structsize; in kinfo_getvmmap_core()
1930 kp->kve_structsize = sizeof(*kp); in kinfo_getvmmap_core()
1943 switch (procstat->type) { in procstat_getvmmap()
1945 warnx("kvm method is not supported"); in procstat_getvmmap()
1948 return (kinfo_getvmmap(kp->ki_pid, cntp)); in procstat_getvmmap()
1950 return (kinfo_getvmmap_core(procstat->core, cntp)); in procstat_getvmmap()
1952 warnx("unknown access method: %d", procstat->type); in procstat_getvmmap()
1975 if (!kvm_read_all(kd, (unsigned long)kp->ki_paddr, &proc, in procstat_getgroups_kvm()
1978 kp->ki_paddr, kp->ki_pid); in procstat_getgroups_kvm()
1986 proc.p_ucred, kp->ki_pid); in procstat_getgroups_kvm()
1997 ucred.cr_groups, kp->ki_pid); in procstat_getgroups_kvm()
2022 if (sysctl(mib, nitems(mib), groups, &len, NULL, 0) == -1) { in procstat_getgroups_sysctl()
2048 switch (procstat->type) { in procstat_getgroups()
2050 return (procstat_getgroups_kvm(procstat->kd, kp, cntp)); in procstat_getgroups()
2052 return (procstat_getgroups_sysctl(kp->ki_pid, cntp)); in procstat_getgroups()
2054 return (procstat_getgroups_core(procstat->core, cntp)); in procstat_getgroups()
2056 warnx("unknown access method: %d", procstat->type); in procstat_getgroups()
2075 if (kp->ki_pd == NULL) in procstat_getumask_kvm()
2076 return (-1); in procstat_getumask_kvm()
2077 if (!kvm_read_all(kd, (unsigned long)kp->ki_pd, &pd, sizeof(pd))) { in procstat_getumask_kvm()
2078 warnx("can't read pwddesc at %p for pid %d", kp->ki_pd, in procstat_getumask_kvm()
2079 kp->ki_pid); in procstat_getumask_kvm()
2080 return (-1); in procstat_getumask_kvm()
2112 return (-1); in procstat_getumask_core()
2115 return (-1); in procstat_getumask_core()
2126 switch (procstat->type) { in procstat_getumask()
2128 return (procstat_getumask_kvm(procstat->kd, kp, maskp)); in procstat_getumask()
2130 return (procstat_getumask_sysctl(kp->ki_pid, maskp)); in procstat_getumask()
2132 return (procstat_getumask_core(procstat->core, maskp)); in procstat_getumask()
2134 warnx("unknown access method: %d", procstat->type); in procstat_getumask()
2135 return (-1); in procstat_getumask()
2149 if (!kvm_read_all(kd, (unsigned long)kp->ki_paddr, &proc, in procstat_getrlimit_kvm()
2152 kp->ki_paddr, kp->ki_pid); in procstat_getrlimit_kvm()
2153 return (-1); in procstat_getrlimit_kvm()
2156 return (-1); in procstat_getrlimit_kvm()
2160 (void *)offset, kp->ki_pid); in procstat_getrlimit_kvm()
2161 return (-1); in procstat_getrlimit_kvm()
2181 return (-1); in procstat_getrlimit_sysctl()
2184 return (-1); in procstat_getrlimit_sysctl()
2198 return (-1); in procstat_getrlimit_core()
2202 return (-1); in procstat_getrlimit_core()
2205 return (-1); in procstat_getrlimit_core()
2216 switch (procstat->type) { in procstat_getrlimit()
2218 return (procstat_getrlimit_kvm(procstat->kd, kp, which, in procstat_getrlimit()
2221 return (procstat_getrlimit_sysctl(kp->ki_pid, which, rlimit)); in procstat_getrlimit()
2223 return (procstat_getrlimit_core(procstat->core, which, rlimit)); in procstat_getrlimit()
2225 warnx("unknown access method: %d", procstat->type); in procstat_getrlimit()
2226 return (-1); in procstat_getrlimit()
2258 return (-1); in procstat_getpathname_core()
2259 result = -1; in procstat_getpathname_core()
2275 switch (procstat->type) { in procstat_getpathname()
2282 return (procstat_getpathname_sysctl(kp->ki_pid, pathname, in procstat_getpathname()
2285 return (procstat_getpathname_core(procstat->core, pathname, in procstat_getpathname()
2288 warnx("unknown access method: %d", procstat->type); in procstat_getpathname()
2289 return (-1); in procstat_getpathname()
2300 if (!kvm_read_all(kd, (unsigned long)kp->ki_paddr, &proc, in procstat_getosrel_kvm()
2303 kp->ki_paddr, kp->ki_pid); in procstat_getosrel_kvm()
2304 return (-1); in procstat_getosrel_kvm()
2335 return (-1); in procstat_getosrel_core()
2338 return (-1); in procstat_getosrel_core()
2348 switch (procstat->type) { in procstat_getosrel()
2350 return (procstat_getosrel_kvm(procstat->kd, kp, osrelp)); in procstat_getosrel()
2352 return (procstat_getosrel_sysctl(kp->ki_pid, osrelp)); in procstat_getosrel()
2354 return (procstat_getosrel_core(procstat->core, osrelp)); in procstat_getosrel()
2356 warnx("unknown access method: %d", procstat->type); in procstat_getosrel()
2357 return (-1); in procstat_getosrel()
2411 if (sysctl(name, nitems(name), auxv32, &len, NULL, 0) == -1) { in procstat_getauxv32_sysctl()
2424 * XXX: We expect that values for a_type on a 32-bit platform in procstat_getauxv32_sysctl()
2425 * are directly mapped to values on 64-bit one, which is not in procstat_getauxv32_sysctl()
2437 * type-aware. in procstat_getauxv32_sysctl()
2469 if (sysctl(name, nitems(name), auxv, &len, NULL, 0) == -1) { in procstat_getauxv_sysctl()
2496 switch (procstat->type) { in procstat_getauxv()
2498 warnx("kvm method is not supported"); in procstat_getauxv()
2501 return (procstat_getauxv_sysctl(kp->ki_pid, cntp)); in procstat_getauxv()
2503 return (procstat_getauxv_core(procstat->core, cntp)); in procstat_getauxv()
2505 warnx("unknown access method: %d", procstat->type); in procstat_getauxv()
2543 switch (procstat->type) { in procstat_getptlwpinfo()
2545 warnx("kvm method is not supported"); in procstat_getptlwpinfo()
2548 warnx("sysctl method is not supported"); in procstat_getptlwpinfo()
2551 return (procstat_getptlwpinfo_core(procstat->core, cntp)); in procstat_getptlwpinfo()
2553 warnx("unknown access method: %d", procstat->type); in procstat_getptlwpinfo()
2583 if (error == -1 && errno == ENOENT) { in procstat_getkstack_sysctl()
2588 if (error == -1) in procstat_getkstack_sysctl()
2595 if (sysctl(name, nitems(name), kkstp, &len, NULL, 0) == -1 && in procstat_getkstack_sysctl()
2610 switch (procstat->type) { in procstat_getkstack()
2612 warnx("kvm method is not supported"); in procstat_getkstack()
2615 return (procstat_getkstack_sysctl(kp->ki_pid, cntp)); in procstat_getkstack()
2617 warnx("core method is not supported"); in procstat_getkstack()
2620 warnx("unknown access method: %d", procstat->type); in procstat_getkstack()
2670 c += kl->kl_structsize) { in procstat_getadvlock_sysctl()
2672 if (sizeof(*kl) < (size_t)kl->kl_structsize) { in procstat_getadvlock_sysctl()
2681 switch (kl->kl_rw) { in procstat_getadvlock_sysctl()
2683 a->rw = PS_ADVLOCK_RO; in procstat_getadvlock_sysctl()
2686 a->rw = PS_ADVLOCK_RW; in procstat_getadvlock_sysctl()
2693 switch (kl->kl_type) { in procstat_getadvlock_sysctl()
2695 a->type = PS_ADVLOCK_TYPE_FLOCK; in procstat_getadvlock_sysctl()
2698 a->type = PS_ADVLOCK_TYPE_PID; in procstat_getadvlock_sysctl()
2701 a->type = PS_ADVLOCK_TYPE_REMOTE; in procstat_getadvlock_sysctl()
2708 a->pid = kl->kl_pid; in procstat_getadvlock_sysctl()
2709 a->sysid = kl->kl_sysid; in procstat_getadvlock_sysctl()
2710 a->file_fsid = kl->kl_file_fsid; in procstat_getadvlock_sysctl()
2711 a->file_rdev = kl->kl_file_rdev; in procstat_getadvlock_sysctl()
2712 a->file_fileid = kl->kl_file_fileid; in procstat_getadvlock_sysctl()
2713 a->start = kl->kl_start; in procstat_getadvlock_sysctl()
2714 a->len = kl->kl_len; in procstat_getadvlock_sysctl()
2715 if (kl->kl_path[0] != '\0') { in procstat_getadvlock_sysctl()
2716 a->path = strdup(kl->kl_path); in procstat_getadvlock_sysctl()
2717 if (a->path == NULL) { in procstat_getadvlock_sysctl()
2723 a->path = NULL; in procstat_getadvlock_sysctl()
2739 switch (procstat->type) { in procstat_getadvlock()
2741 warnx("kvm method is not supported"); in procstat_getadvlock()
2746 warnx("core method is not supported"); in procstat_getadvlock()
2749 warnx("unknown access method: %d", procstat->type); in procstat_getadvlock()
2761 free(__DECONST(char *, a->path)); in procstat_freeadvlock()
2781 if (error == -1) in procstat_getrlimitusage_sysctl()
2788 if (error == -1) { in procstat_getrlimitusage_sysctl()
2800 switch (procstat->type) { in procstat_getrlimitusage()
2802 warnx("kvm method is not supported"); in procstat_getrlimitusage()
2805 return (procstat_getrlimitusage_sysctl(kp->ki_pid, cntp)); in procstat_getrlimitusage()
2807 warnx("core method is not supported"); in procstat_getrlimitusage()
2810 warnx("unknown access method: %d", procstat->type); in procstat_getrlimitusage()
2837 if (error == -1) { in procstat_get_kqueue_info_sysctl()
2850 if (error == -1) { in procstat_get_kqueue_info_sysctl()
2868 switch (procstat->type) { in procstat_get_kqueue_info()
2870 warnx("kvm method is not supported"); in procstat_get_kqueue_info()
2873 return (procstat_get_kqueue_info_sysctl(kp->ki_pid, kqfd, in procstat_get_kqueue_info()
2876 k = procstat_core_get(procstat->core, PSC_TYPE_KQUEUES, in procstat_get_kqueue_info()
2885 if (kn->knt_kq_fd == kqfd) in procstat_get_kqueue_info()
2896 if (kn->knt_kq_fd != kqfd) in procstat_get_kqueue_info()
2905 warnx("unknown access method: %d", procstat->type); in procstat_get_kqueue_info()