Deleted Added
full compact
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 ---