PERFORCE change 113090 for review
Jung-uk Kim
jkim at FreeBSD.org
Thu Jan 18 02:43:39 UTC 2007
http://perforce.freebsd.org/chv.cgi?CH=113090
Change 113090 by jkim at jkim_hammer on 2007/01/18 02:43:32
- Add Linux kernel version strings to /proc/sys/kernel.
- Properly implement OS build date string instead of using fake one.
Affected files ...
.. //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#8 edit
Differences ...
==== //depot/projects/linuxolator/src/sys/compat/linprocfs/linprocfs.c#8 (text+ko) ====
@@ -416,6 +416,37 @@
}
/*
+ * Get OS build date
+ */
+static void
+linprocfs_osbuild(struct thread *td, struct sbuf *sb)
+{
+ char osbuild[256];
+ int kern_ver[2];
+ size_t size;
+ char *cp1, *cp2;
+
+ cp1 = NULL;
+ kern_ver[0] = CTL_KERN;
+ kern_ver[1] = KERN_VERSION;
+ osbuild[0] = '\0';
+ size = sizeof(osbuild);
+ if (kernel_sysctl(td, kern_ver, 2, &osbuild, &size, 0, 0, 0, 0) == 0) {
+ cp1 = strstr(osbuild, "\n");
+ cp2 = strstr(osbuild, ":");
+ if (cp1 && cp2) {
+ *cp1 = *cp2 = '\0';
+ cp1 = strstr(osbuild, "#");
+ } else
+ cp1 = NULL;
+ }
+ if (cp1)
+ sbuf_printf(sb, "%s%s", cp1, cp2 + 1);
+ else
+ sbuf_printf(sb, "#4 Sun Dec 18 04:30:00 CET 1977");
+}
+
+/*
* Filler function for proc/version
*/
static int
@@ -426,10 +457,11 @@
linux_get_osname(td, osname);
linux_get_osrelease(td, osrelease);
+ sbuf_printf(sb, "%s version %s (des at freebsd.org) (gcc version "
+ __VERSION__ ") ", osname, osrelease);
+ linprocfs_osbuild(td, sb);
+ sbuf_cat(sb, "\n");
- sbuf_printf(sb,
- "%s version %s (des at freebsd.org) (gcc version " __VERSION__ ")"
- " #4 Sun Dec 18 04:30:00 CET 1977\n", osname, osrelease);
return (0);
}
@@ -925,6 +957,46 @@
}
/*
+ * Filler function for proc/sys/kernel/osrelease
+ */
+static int
+linprocfs_doosrelease(PFS_FILL_ARGS)
+{
+ char osrelease[LINUX_MAX_UTSNAME];
+
+ linux_get_osrelease(td, osrelease);
+ sbuf_printf(sb, "%s\n", osrelease);
+
+ return (0);
+}
+
+/*
+ * Filler function for proc/sys/kernel/ostype
+ */
+static int
+linprocfs_doostype(PFS_FILL_ARGS)
+{
+ char osname[LINUX_MAX_UTSNAME];
+
+ linux_get_osname(td, osname);
+ sbuf_printf(sb, "%s\n", osname);
+
+ return (0);
+}
+
+/*
+ * Filler function for proc/sys/kernel/version
+ */
+static int
+linprocfs_doosbuild(PFS_FILL_ARGS)
+{
+ linprocfs_osbuild(td, sb);
+ sbuf_cat(sb, "\n");
+
+ return (0);
+}
+
+/*
* Filler function for proc/sys/kernel/msgmni
*/
static int
@@ -1136,6 +1208,12 @@
dir = pfs_create_dir(root, "sys", NULL, NULL, 0);
/* /proc/sys/kernel/... */
dir = pfs_create_dir(dir, "kernel", NULL, NULL, 0);
+ pfs_create_file(dir, "osrelease", &linprocfs_doosrelease,
+ NULL, NULL, PFS_RD);
+ pfs_create_file(dir, "ostype", &linprocfs_doostype,
+ NULL, NULL, PFS_RD);
+ pfs_create_file(dir, "version", &linprocfs_doosbuild,
+ NULL, NULL, PFS_RD);
pfs_create_file(dir, "msgmni", &linprocfs_domsgmni,
NULL, NULL, PFS_RD);
pfs_create_file(dir, "pid_max", &linprocfs_dopid_max,
More information about the p4-projects
mailing list