summaryrefslogtreecommitdiffstats
path: root/sys/compat
diff options
context:
space:
mode:
authordes <des@FreeBSD.org>2001-10-19 01:45:03 +0000
committerdes <des@FreeBSD.org>2001-10-19 01:45:03 +0000
commitcfd5c0eab6afdfe4df99e405defcfe5372232789 (patch)
tree8005449702168c265aeece9d7345a0a0a444dbe8 /sys/compat
parent393474fd4170aca38f42f133b0b46f47cbdbda86 (diff)
downloadFreeBSD-src-cfd5c0eab6afdfe4df99e405defcfe5372232789.zip
FreeBSD-src-cfd5c0eab6afdfe4df99e405defcfe5372232789.tar.gz
Adapt to pseudofs changes (dynamic initialization, not static).
Use the new linux_ifname() function from the linuxulator rather than roll our own interface name translation.
Diffstat (limited to 'sys/compat')
-rw-r--r--sys/compat/linprocfs/linprocfs.c127
1 files changed, 60 insertions, 67 deletions
diff --git a/sys/compat/linprocfs/linprocfs.c b/sys/compat/linprocfs/linprocfs.c
index 4b01cf3..57b814c 100644
--- a/sys/compat/linprocfs/linprocfs.c
+++ b/sys/compat/linprocfs/linprocfs.c
@@ -89,6 +89,7 @@ extern int ncpus;
#include <machine/md_var.h>
#endif /* __i386__ */
+#include <compat/linux/linux_ioctl.h>
#include <compat/linux/linux_mib.h>
#include <fs/pseudofs/pseudofs.h>
#include <fs/procfs/procfs.h>
@@ -627,7 +628,7 @@ linprocfs_doproccmdline(PFS_FILL_ARGS)
* Filler function for proc/pid/exe
*/
static int
-linprocfs_doexelink(PFS_FILL_ARGS)
+linprocfs_doprocexe(PFS_FILL_ARGS)
{
char *fullpath = "unknown";
char *freepath = NULL;
@@ -645,20 +646,17 @@ linprocfs_doexelink(PFS_FILL_ARGS)
static int
linprocfs_donetdev(PFS_FILL_ARGS)
{
+ char ifname[16]; /* XXX LINUX_IFNAMSIZ */
struct ifnet *ifp;
- int eth_index = 0;
- sbuf_printf(sb, "%6s|%58s|%s\n%6s|%58s|%5$s\n",
+ sbuf_printf(sb, "%6s|%58s|%s\n%6s|%58s|%58s\n",
"Inter-", " Receive", " Transmit", " face",
+ "bytes packets errs drop fifo frame compressed",
"bytes packets errs drop fifo frame compressed");
TAILQ_FOREACH(ifp, &ifnet, if_link) {
- if (strcmp(ifp->if_name, "lo") == 0) {
- sbuf_printf(sb, "%6.6s:", ifp->if_name);
- } else {
- sbuf_printf(sb, "%5.5s%d:", "eth", eth_index);
- eth_index++;
- }
+ linux_ifname(ifp, ifname, sizeof ifname);
+ sbuf_printf(sb, "%6.6s:", ifname);
sbuf_printf(sb, "%8lu %7lu %4lu %4lu %4lu %5lu %10lu %9lu ",
0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL, 0UL);
sbuf_printf(sb, "%8lu %7lu %4lu %4lu %4lu %5lu %7lu %10lu\n",
@@ -716,68 +714,63 @@ linprocfs_domodules(PFS_FILL_ARGS)
#endif
/*
- * Directory structure
+ * Constructor
*/
-
-static struct pfs_node linprocfs_proc_nodes[] = {
- PFS_THIS,
- PFS_PARENT,
- PFS_FILE( "cmdline", linprocfs_doproccmdline,
- NULL, NULL, NULL, PFS_RD),
- PFS_SYMLINK("exe", linprocfs_doexelink,
- NULL, NULL, NULL, 0),
- /* PFS_FILE( "mem", procfs_domem,
- NULL, NULL, NULL, PFS_RDWR|PFS_RAW), */
- PFS_FILE( "stat", linprocfs_doprocstat,
- NULL, NULL, NULL, PFS_RD),
- PFS_FILE( "status", linprocfs_doprocstatus,
- NULL, NULL, NULL, PFS_RD),
- PFS_LASTNODE
-};
-
-static struct pfs_node linprocfs_net_nodes[] = {
- PFS_THIS,
- PFS_PARENT,
- PFS_FILE( "dev", linprocfs_donetdev,
- NULL, NULL, NULL, PFS_RD),
- PFS_LASTNODE
-};
-
-static struct pfs_node linprocfs_root_nodes[] = {
- PFS_THIS,
- PFS_PARENT,
- PFS_FILE( "cmdline", linprocfs_docmdline,
- NULL, NULL, NULL, PFS_RD),
- PFS_FILE( "cpuinfo", linprocfs_docpuinfo,
- NULL, NULL, NULL, PFS_RD),
- PFS_FILE( "devices", linprocfs_dodevices,
- NULL, NULL, NULL, PFS_RD),
- PFS_FILE( "loadavg", linprocfs_doloadavg,
- NULL, NULL, NULL, PFS_RD),
- PFS_FILE( "meminfo", linprocfs_domeminfo,
- NULL, NULL, NULL, PFS_RD),
+static int
+linprocfs_init(PFS_INIT_ARGS)
+{
+ struct pfs_node *root;
+ struct pfs_node *dir;
+
+ root = pi->pi_root;
+
+#define PFS_CREATE_FILE(name) \
+ pfs_create_file(root, #name, &linprocfs_do##name, NULL, NULL, PFS_RD)
+ PFS_CREATE_FILE(cmdline);
+ PFS_CREATE_FILE(cpuinfo);
+ PFS_CREATE_FILE(devices);
+ PFS_CREATE_FILE(loadavg);
+ PFS_CREATE_FILE(meminfo);
#if 0
- PFS_FILE( "modules", linprocfs_domodules,
- NULL, NULL, NULL, PFS_RD),
+ PFS_CREATE_FILE(modules);
#endif
- PFS_FILE( "stat", linprocfs_dostat,
- NULL, NULL, NULL, PFS_RD),
- PFS_FILE( "uptime", linprocfs_douptime,
- NULL, NULL, NULL, PFS_RD),
- PFS_FILE( "version", linprocfs_doversion,
- NULL, NULL, NULL, PFS_RD),
- PFS_DIR( "net", linprocfs_net_nodes,
- NULL, NULL, NULL, 0),
- PFS_PROCDIR( linprocfs_proc_nodes,
- NULL, NULL, NULL, 0),
- PFS_SYMLINK("self", linprocfs_doselflink,
- NULL, NULL, NULL, 0),
- PFS_LASTNODE
-};
+ PFS_CREATE_FILE(stat);
+ PFS_CREATE_FILE(uptime);
+ PFS_CREATE_FILE(version);
+#undef PFS_CREATE_FILE
+ pfs_create_link(root, "self", &linprocfs_doselflink,
+ NULL, NULL, 0);
+
+ dir = pfs_create_dir(root, "net", NULL, NULL, 0);
+ pfs_create_file(dir, "dev", &linprocfs_donetdev,
+ NULL, NULL, PFS_RD);
+
+ dir = pfs_create_dir(root, "pid", NULL, NULL, PFS_PROCDEP);
+ pfs_create_file(dir, "cmdline", &linprocfs_doproccmdline,
+ NULL, NULL, PFS_RD);
+ pfs_create_link(dir, "exe", &linprocfs_doprocexe,
+ NULL, NULL, 0);
+ pfs_create_file(dir, "mem", &procfs_doprocmem,
+ &procfs_attr, &procfs_candebug, PFS_RDWR|PFS_RAW);
+ pfs_create_file(dir, "stat", &linprocfs_doprocstat,
+ NULL, NULL, PFS_RD);
+ pfs_create_file(dir, "status", &linprocfs_doprocstatus,
+ NULL, NULL, PFS_RD);
-static struct pfs_node linprocfs_root =
- PFS_ROOT(linprocfs_root_nodes);
+ return (0);
+}
+
+/*
+ * Destructor
+ */
+static int
+linprocfs_uninit(PFS_INIT_ARGS)
+{
+
+ /* nothing to do, pseudofs will GC */
+ return (0);
+}
-PSEUDOFS(linprocfs, linprocfs_root, 1);
+PSEUDOFS(linprocfs, 1);
MODULE_DEPEND(linprocfs, linux, 1, 1, 1);
MODULE_DEPEND(linprocfs, procfs, 1, 1, 1);
OpenPOWER on IntegriCloud