Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/netbsd-1-5]: src/sys/miscfs/procfs Pull up revisions 1.1-1.2 (new, via p...
details: https://anonhg.NetBSD.org/src/rev/c74436ab82d6
branches: netbsd-1-5
changeset: 491008:c74436ab82d6
user: he <he%NetBSD.org@localhost>
date: Fri Mar 30 21:48:11 2001 +0000
description:
Pull up revisions 1.1-1.2 (new, via patch, requested by fvdl):
Add some required Linux emulation bits to support the Linux
version of VMware.
diffstat:
sys/miscfs/procfs/procfs_linux.c | 139 +++++++++++++++++++++++++++++++++++++++
1 files changed, 139 insertions(+), 0 deletions(-)
diffs (143 lines):
diff -r 65c2b85e4333 -r c74436ab82d6 sys/miscfs/procfs/procfs_linux.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sys/miscfs/procfs/procfs_linux.c Fri Mar 30 21:48:11 2001 +0000
@@ -0,0 +1,139 @@
+/* $NetBSD: procfs_linux.c,v 1.2.4.2 2001/03/30 21:48:11 he Exp $ */
+
+/*
+ * Copyright (c) 2001 Wasabi Systems, Inc.
+ * All rights reserved.
+ *
+ * Written by Frank van der Linden for Wasabi Systems, Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgement:
+ * This product includes software developed for the NetBSD Project by
+ * Wasabi Systems, Inc.
+ * 4. The name of Wasabi Systems, Inc. may not be used to endorse
+ * or promote products derived from this software without specific prior
+ * written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL WASABI SYSTEMS, INC
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <sys/param.h>
+#include <sys/systm.h>
+#include <sys/time.h>
+#include <sys/kernel.h>
+#include <sys/proc.h>
+#include <sys/vnode.h>
+
+#include <miscfs/procfs/procfs.h>
+
+#include <uvm/uvm_extern.h>
+
+#define PGTOB(p) ((unsigned long)(p) << PAGE_SHIFT)
+#define PGTOKB(p) ((unsigned long)(p) << (PAGE_SHIFT - 10))
+
+/*
+ * Linux compatible /proc/meminfo. Only active when the -o linux
+ * mountflag is used.
+ */
+int
+procfs_domeminfo(struct proc *curp, struct proc *p, struct pfsnode *pfs,
+ struct uio *uio)
+{
+ char buf[512], *cp;
+ int len, error;
+
+ len = snprintf(buf, sizeof buf,
+ " total: used: free: shared: buffers: cached:\n"
+ "Mem: %8lu %8lu %8lu %8lu %8lu %8lu\n"
+ "Swap: %8lu %8lu %8lu\n"
+ "MemTotal: %8lu kB\n"
+ "MemFree: %8lu kB\n"
+ "MemShared: %8lu kB\n"
+ "Buffers: %8lu kB\n"
+ "Cached: %8lu kB\n"
+ "SwapTotal: %8lu kB\n"
+ "SwapFree: %8lu kB\n",
+ PGTOB(uvmexp.npages),
+ PGTOB(uvmexp.npages - uvmexp.free),
+ PGTOB(uvmexp.free),
+ 0L,
+ 0L,
+ 0L,
+ PGTOB(uvmexp.swpages),
+ PGTOB(uvmexp.swpginuse),
+ PGTOB(uvmexp.swpages - uvmexp.swpginuse),
+ PGTOKB(uvmexp.npages),
+ PGTOKB(uvmexp.free),
+ 0L,
+ 0L,
+ 0L,
+ PGTOKB(uvmexp.swpages),
+ PGTOKB(uvmexp.swpages - uvmexp.swpginuse));
+
+ if (len == 0)
+ return 0;
+
+ len -= uio->uio_offset;
+ cp = buf + uio->uio_offset;
+ len = imin(len, uio->uio_resid);
+ if (len <= 0)
+ error = 0;
+ else
+ error = uiomove(cp, len, uio);
+ return error;
+}
+
+int
+procfs_docpuinfo(struct proc *curp, struct proc *p, struct pfsnode *pfs,
+ struct uio *uio)
+{
+ char buf[512], *cp;
+ int len, error;
+
+ len = sizeof buf;
+ if (procfs_getcpuinfstr(buf, &len) < 0)
+ return EIO;
+
+ if (len == 0)
+ return 0;
+
+ len -= uio->uio_offset;
+ cp = buf + uio->uio_offset;
+ len = imin(len, uio->uio_resid);
+ if (len <= 0)
+ error = 0;
+ else
+ error = uiomove(cp, len, uio);
+ return error;
+}
+
+/*
+ * XXX 1.5 branch only.
+ */
+#ifndef __i386__
+int
+procfs_getcpuinfstr(char *buf, int *len)
+{
+ *len = 0;
+
+ return 0;
+}
+#endif
Home |
Main Index |
Thread Index |
Old Index