linprocfs.c (96886) | linprocfs.c (99072) |
---|---|
1/* 2 * Copyright (c) 2000 Dag-Erling Co�dan Sm�rgrav 3 * Copyright (c) 1999 Pierre Beyssac 4 * Copyright (c) 1993 Jan-Simon Pendry 5 * Copyright (c) 1993 6 * The Regents of the University of California. All rights reserved. 7 * 8 * This code is derived from software contributed to Berkeley by --- 24 unchanged lines hidden (view full) --- 33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 37 * SUCH DAMAGE. 38 * 39 * @(#)procfs_status.c 8.4 (Berkeley) 6/15/94 40 * | 1/* 2 * Copyright (c) 2000 Dag-Erling Co�dan Sm�rgrav 3 * Copyright (c) 1999 Pierre Beyssac 4 * Copyright (c) 1993 Jan-Simon Pendry 5 * Copyright (c) 1993 6 * The Regents of the University of California. All rights reserved. 7 * 8 * This code is derived from software contributed to Berkeley by --- 24 unchanged lines hidden (view full) --- 33 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 34 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 35 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 36 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 37 * SUCH DAMAGE. 38 * 39 * @(#)procfs_status.c 8.4 (Berkeley) 6/15/94 40 * |
41 * $FreeBSD: head/sys/compat/linprocfs/linprocfs.c 96886 2002-05-19 00:14:50Z jhb $ | 41 * $FreeBSD: head/sys/compat/linprocfs/linprocfs.c 99072 2002-06-29 17:26:22Z julian $ |
42 */ 43 44#include <sys/param.h> 45#include <sys/queue.h> 46#include <sys/blist.h> 47#include <sys/conf.h> 48#include <sys/dkstat.h> 49#include <sys/exec.h> --- 484 unchanged lines hidden (view full) --- 534 PS_ADD("processor", "%d", 0); /* XXX */ 535#undef PS_ADD 536 sbuf_putc(sb, '\n'); 537 538 return (0); 539} 540 541/* | 42 */ 43 44#include <sys/param.h> 45#include <sys/queue.h> 46#include <sys/blist.h> 47#include <sys/conf.h> 48#include <sys/dkstat.h> 49#include <sys/exec.h> --- 484 unchanged lines hidden (view full) --- 534 PS_ADD("processor", "%d", 0); /* XXX */ 535#undef PS_ADD 536 sbuf_putc(sb, '\n'); 537 538 return (0); 539} 540 541/* |
542 * Map process state to descriptive letter. Note that this does not 543 * quite correspond to what Linux outputs, but it's close enough. 544 */ 545static char *state_str[] = { 546 "? (unknown)", 547 "I (idle)", 548 "R (running)", 549 "S (sleeping)", 550 "T (stopped)", 551 "Z (zombie)", 552 "W (waiting)", 553 "M (mutex)" 554}; 555 556/* | |
557 * Filler function for proc/pid/status 558 */ 559static int 560linprocfs_doprocstatus(PFS_FILL_ARGS) 561{ 562 struct kinfo_proc kp; 563 char *state; 564 segsz_t lsize; | 542 * Filler function for proc/pid/status 543 */ 544static int 545linprocfs_doprocstatus(PFS_FILL_ARGS) 546{ 547 struct kinfo_proc kp; 548 char *state; 549 segsz_t lsize; |
550 struct thread *td2; |
|
565 int i; 566 567 mtx_lock_spin(&sched_lock); | 551 int i; 552 553 mtx_lock_spin(&sched_lock); |
568 if (p->p_stat > sizeof state_str / sizeof *state_str) 569 state = state_str[0]; 570 else 571 state = state_str[(int)p->p_stat]; | 554 td2 = FIRST_THREAD_IN_PROC(p); /* XXXKSE pretend only one thread */ 555 556 if (P_SHOULDSTOP(p)) { 557 state = "T (stopped)"; 558 } else { 559 switch(p->p_state) { 560 case PRS_NEW: 561 state = "I (idle)"; 562 break; 563 case PRS_NORMAL: 564 if (p->p_flag & P_WEXIT) { 565 state = "X (exiting)"; 566 break; 567 } 568 switch(td2->td_state) { 569 case TDS_SLP: 570 case TDS_MTX: 571 state = "S (sleeping)"; 572 break; 573 case TDS_RUNQ: 574 case TDS_RUNNING: 575 state = "R (running)"; 576 break; 577 case TDS_NEW: 578 case TDS_UNQUEUED: 579 case TDS_IWAIT: 580 case TDS_SURPLUS: 581 default: 582 state = "? (unknown)"; 583 break; 584 } 585 break; 586 case PRS_WAIT: 587 state = "W (waiting)"; 588 break; 589 case PRS_ZOMBIE: 590 state = "Z (zombie)"; 591 break; 592 default: 593 state = "? (unknown)"; 594 break; 595 } 596 } |
572 mtx_unlock_spin(&sched_lock); 573 574 PROC_LOCK(p); 575 fill_kinfo_proc(p, &kp); 576 sbuf_printf(sb, "Name:\t%s\n", p->p_comm); /* XXX escape */ 577 sbuf_printf(sb, "State:\t%s\n", state); 578 579 /* --- 257 unchanged lines hidden --- | 597 mtx_unlock_spin(&sched_lock); 598 599 PROC_LOCK(p); 600 fill_kinfo_proc(p, &kp); 601 sbuf_printf(sb, "Name:\t%s\n", p->p_comm); /* XXX escape */ 602 sbuf_printf(sb, "State:\t%s\n", state); 603 604 /* --- 257 unchanged lines hidden --- |