PERFORCE change 124590 for review

Roman Divacky rdivacky at FreeBSD.org
Fri Aug 3 05:56:38 PDT 2007


http://perforce.freebsd.org/chv.cgi?CH=124590

Change 124590 by rdivacky at rdivacky_witten on 2007/08/03 12:56:24

	Naive attempt to update /proc/<PID>/stat. Just for my testing purposes. Dont bother
	reviewing.

Affected files ...

.. //depot/projects/soc2007/rdivacky/linux_fixes/sys/compat/linprocfs/linprocfs.c#3 edit

Differences ...

==== //depot/projects/soc2007/rdivacky/linux_fixes/sys/compat/linprocfs/linprocfs.c#3 (text+ko) ====

@@ -85,6 +85,7 @@
 #if defined(__i386__) || defined(__amd64__)
 #include <machine/cputypes.h>
 #include <machine/md_var.h>
+#include <machine/frame.h>
 #endif /* __i386__ || __amd64__ */
 
 #include "opt_compat.h"
@@ -544,42 +545,50 @@
 	PROC_UNLOCK(p);
 	PS_ADD("tty",		"%d",	0); /* XXX */
 	PS_ADD("tpgid",		"%d",	kp.ki_tpgid);
-	PS_ADD("flags",		"%u",	0); /* XXX */
+	PS_ADD("flags",		"%lu",	(unsigned long)0); /* XXX */
 	PS_ADD("minflt",	"%lu",	kp.ki_rusage.ru_minflt);
 	PS_ADD("cminflt",	"%lu",	kp.ki_rusage_ch.ru_minflt);
 	PS_ADD("majflt",	"%lu",	kp.ki_rusage.ru_majflt);
 	PS_ADD("cmajflt",	"%lu",	kp.ki_rusage_ch.ru_majflt);
-	PS_ADD("utime",		"%ld",	T2J(tvtohz(&kp.ki_rusage.ru_utime)));
-	PS_ADD("stime",		"%ld",	T2J(tvtohz(&kp.ki_rusage.ru_stime)));
+	PS_ADD("utime",		"%lu",	T2J(tvtohz(&kp.ki_rusage.ru_utime)));
+	PS_ADD("stime",		"%lu",	T2J(tvtohz(&kp.ki_rusage.ru_stime)));
 	PS_ADD("cutime",	"%ld",	T2J(tvtohz(&kp.ki_rusage_ch.ru_utime)));
 	PS_ADD("cstime",	"%ld",	T2J(tvtohz(&kp.ki_rusage_ch.ru_stime)));
-	PS_ADD("priority",	"%d",	kp.ki_pri.pri_user);
-	PS_ADD("nice",		"%d",	kp.ki_nice); /* 19 (nicest) to -19 */
-	PS_ADD("0",		"%d",	0); /* removed field */
-	PS_ADD("itrealvalue",	"%d",	0); /* XXX */
+	PS_ADD("priority",	"%ld",	(long int)kp.ki_pri.pri_user);
+	PS_ADD("nice",		"%ld",	(long int) kp.ki_nice); /* 19 (nicest) to -19 */
+	PS_ADD("0",		"%d",	1); /* number of threads */
+	PS_ADD("itrealvalue",	"%ld",	(long int)0); /* XXX */
 	/* XXX: starttime is not right, it is the _same_ for _every_ process.
 	   It should be the number of jiffies between system boot and process
 	   start. */
-	PS_ADD("starttime",	"%lu",	T2J(tvtohz(&kp.ki_start)));
-	PS_ADD("vsize",		"%ju",	P2K((uintmax_t)kp.ki_size));
-	PS_ADD("rss",		"%ju",	(uintmax_t)kp.ki_rssize);
+	PS_ADD("starttime",	"%llu",	(unsigned long long)T2J(tvtohz(&kp.ki_start)));
+	PS_ADD("vsize",		"%lu",	(unsigned long)P2K((uintmax_t)kp.ki_size));
+	PS_ADD("rss",		"%ld",	(long int)kp.ki_rssize);
 	PS_ADD("rlim",		"%lu",	kp.ki_rusage.ru_maxrss);
-	PS_ADD("startcode",	"%u",	(unsigned)0);
-	PS_ADD("endcode",	"%u",	0); /* XXX */
-	PS_ADD("startstack",	"%u",	0); /* XXX */
-	PS_ADD("kstkesp",	"%u",	0); /* XXX */
-	PS_ADD("kstkeip",	"%u",	0); /* XXX */
-	PS_ADD("signal",	"%u",	0); /* XXX */
-	PS_ADD("blocked",	"%u",	0); /* XXX */
-	PS_ADD("sigignore",	"%u",	0); /* XXX */
-	PS_ADD("sigcatch",	"%u",	0); /* XXX */
-	PS_ADD("wchan",		"%u",	0); /* XXX */
-	PS_ADD("nswap",		"%lu",	kp.ki_rusage.ru_nswap);
-	PS_ADD("cnswap",	"%lu",	kp.ki_rusage_ch.ru_nswap);
-	PS_ADD("exitsignal",	"%d",	0); /* XXX */
-	PS_ADD("processor",	"%u",	kp.ki_lastcpu);
-	PS_ADD("rt_priority",	"%u",	0); /* XXX */ /* >= 2.5.19 */
-	PS_ADD("policy",	"%u",	kp.ki_pri.pri_class); /* >= 2.5.19 */
+	PS_ADD("startcode",	"%lu",	(unsigned long)0);
+	PS_ADD("endcode",	"%lu",	(unsigned long)0); /* XXX */
+	PS_ADD("startstack",	"%lu",	(unsigned long)p->p_sysent->sv_usrstack);
+#if __i386__
+	PS_ADD("kstkesp",	"%lu",	(unsigned long)td->td_frame->tf_esp); /* XXX: i386 only*/
+	PS_ADD("kstkeip",	"%lu",	(unsigned long)td->td_frame->tf_eip); /* XXX: i386 only */
+#elif __amd64__
+	PS_ADD("kstkesp",	"%lu",	(unsigned long)td->td_frame->tf_rsp); /* XXX: i386 only*/
+	PS_ADD("kstkeip",	"%lu",	(unsigned long)td->td_frame->tf_rip); /* XXX: i386 only */
+#else
+	PS_ADD("kstkesp",	"%lu",	(unsigned long)0); /* XXX: i386 only*/
+	PS_ADD("kstkeip",	"%lu",	(unsigned long)0); /* XXX: i386 only */
+#endif
+	PS_ADD("signal",	"%lu",	(unsigned long)0); /* ignored */
+	PS_ADD("blocked",	"%lu",	(unsigned long)0); /* ignored */
+	PS_ADD("sigignore",	"%lu",	(unsigned long)0); /* ignored */
+	PS_ADD("sigcatch",	"%lu",	(unsigned long)0); /* ignored */
+	PS_ADD("wchan",		"%lu",	(unsigned long)0); /* ignored */
+	PS_ADD("nswap",		"%lu",	(unsigned long)0); /* defined as 0 */
+	PS_ADD("cnswap",	"%lu",	(unsigned long)0); /* defined as 0 */
+	PS_ADD("exitsignal",	"%d",	p->p_sigparent);
+	PS_ADD("processor",	"%d",	td->td_oncpu);
+	PS_ADD("rt_priority",	"%lu",	(unsigned long)0); /* XXX */ /* >= 2.5.19 */
+	PS_ADD("policy",	"%lu",	(unsigned long)kp.ki_pri.pri_class); /* >= 2.5.19 */
 #undef PS_ADD
 	sbuf_putc(sb, '\n');
 
@@ -865,7 +874,7 @@
 	vm_ooffset_t off = 0;
 	char *name = "", *freename = NULL;
 	ino_t ino;
-	unsigned int last_timestamp;
+	unsigned int last_timestamp = map->timestamp;
 	int ref_count, shadow_count, flags;
 	int error;
 	struct vnode *vp;


More information about the p4-projects mailing list