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

Function kern_proc_out

freebsd/kern/kern_proc.c:1503–1546  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1501}
1502
1503int
1504kern_proc_out(struct proc *p, struct sbuf *sb, int flags)
1505{
1506 struct thread *td;
1507 struct kinfo_proc ki;
1508#ifdef COMPAT_FREEBSD32
1509 struct kinfo_proc32 ki32;
1510#endif
1511 int error;
1512
1513 PROC_LOCK_ASSERT(p, MA_OWNED);
1514 MPASS(FIRST_THREAD_IN_PROC(p) != NULL);
1515
1516 error = 0;
1517 fill_kinfo_proc(p, &ki);
1518 if ((flags & KERN_PROC_NOTHREADS) != 0) {
1519#ifdef COMPAT_FREEBSD32
1520 if ((flags & KERN_PROC_MASK32) != 0) {
1521 freebsd32_kinfo_proc_out(&ki, &ki32);
1522 if (sbuf_bcat(sb, &ki32, sizeof(ki32)) != 0)
1523 error = ENOMEM;
1524 } else
1525#endif
1526 if (sbuf_bcat(sb, &ki, sizeof(ki)) != 0)
1527 error = ENOMEM;
1528 } else {
1529 FOREACH_THREAD_IN_PROC(p, td) {
1530 fill_kinfo_thread(td, &ki, 1);
1531#ifdef COMPAT_FREEBSD32
1532 if ((flags & KERN_PROC_MASK32) != 0) {
1533 freebsd32_kinfo_proc_out(&ki, &ki32);
1534 if (sbuf_bcat(sb, &ki32, sizeof(ki32)) != 0)
1535 error = ENOMEM;
1536 } else
1537#endif
1538 if (sbuf_bcat(sb, &ki, sizeof(ki)) != 0)
1539 error = ENOMEM;
1540 if (error != 0)
1541 break;
1542 }
1543 }
1544 PROC_UNLOCK(p);
1545 return (error);
1546}
1547
1548static int
1549sysctl_out_proc(struct proc *p, struct sysctl_req *req, int flags)

Callers 2

sysctl_out_procFunction · 0.85

Calls 4

fill_kinfo_procFunction · 0.85
freebsd32_kinfo_proc_outFunction · 0.85
sbuf_bcatFunction · 0.85
fill_kinfo_threadFunction · 0.85

Tested by

no test coverage detected