[SSI] openssi/kernel/mm oom_kill.c,1.4,1.5
Roger Tsang <[email protected]>
| Newsgroups | gmane.linux.cluster.ssic.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /cvsroot/ssic-linux/openssi/kernel/mm
In directory fdv4jf1.ch3.sourceforge.com:/tmp/cvs-serv16224/kernel/mm
Modified Files:
Tag: OPENSSI-FC
oom_kill.c
Log Message:
Bug fixes and enhancements. See ChangeLog.
Index: oom_kill.c
===================================================================
RCS file: /cvsroot/ssic-linux/openssi/kernel/mm/oom_kill.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- oom_kill.c 10 Oct 2008 08:10:34 -0000 1.4
+++ oom_kill.c 27 Oct 2009 03:18:30 -0000 1.5
@@ -264,8 +264,38 @@
return mm;
}
#else
-#warning not killing child first
+/* #warning not killing child first */
+#ifdef SSI_NOTYET
+#ifdef TASK_HOLD_VPROC
+ struct mm_struct *mm = NULL;
+ struct task_struct *c;
+ struct vproc *vc;
+ struct pvproc *pvp = PVP(p->p_vproc);
+ int error;
+
+ /* get_task_struct(p); */
+ /* read_unlock(&tasklist_lock); */
+
+ /* FIXME: nd list lock might sleep; paths leading here may be atomic */
+ VPROC_LOCK_ND_LIST_EXCL(VP(pvp), "oom_kill_process");
+
+ /* Try to kill a child first */
+ for (vc = pvp->pvp_head_childl; vc; vc = PVP(vc)->pvp_childl) {
+ if (!PV_IS_ALIVE(PVP(vc)))
+ continue;
+ c = PVP(vc)->pvp_pproc;
+ if (c->mm == p->mm)
+ continue;
+ mm = oom_kill_task(c);
+ if (mm)
+ break;
+ }
+ VPROC_UNLOCK_ND_LIST_EXCL(VP(pvp), "oom_kill_process");
+ if (mm)
+ return mm;
#endif
+#endif /* SSI_NOTYET */
+#endif /* VPROC */
return oom_kill_task(p);
}
------------------------------------------------------------------------------
Come build with us! The BlackBerry(R) Developer Conference in SF, CA
is the only developer event you need to attend this year. Jumpstart your
developing skills, take BlackBerry mobile applications to market and stay
ahead of the curve. Join us from November 9 - 12, 2009. Register now!
http://p.sf.net/sfu/devconference