PERFORCE change 104529 for review

Chris Jones cdjones at FreeBSD.org
Sat Aug 19 08:50:06 UTC 2006


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

Change 104529 by cdjones at cdjones-impulse on 2006/08/19 08:49:17

	Introduce jtune (not yet functional), add relevant members to xprison struct, get rid of sched_td from kern_jail.

Affected files ...

.. //depot/projects/soc2006/cdjones_jail/src/sys/kern/kern_jail.c#22 edit
.. //depot/projects/soc2006/cdjones_jail/src/sys/sys/jail.h#18 edit
.. //depot/projects/soc2006/cdjones_jail/src/usr.sbin/jtune/Makefile#1 add
.. //depot/projects/soc2006/cdjones_jail/src/usr.sbin/jtune/jtune.8#1 add
.. //depot/projects/soc2006/cdjones_jail/src/usr.sbin/jtune/jtune.c#1 add

Differences ...

==== //depot/projects/soc2006/cdjones_jail/src/sys/kern/kern_jail.c#22 (text+ko) ====

@@ -99,33 +99,8 @@
 
 SYSINIT(prison, SI_SUB_INTRINSIC, SI_ORDER_ANY, init_prison, NULL);
 
+#if 0
 static void
-jsched_td(void *arg)
-{
-  struct prison *pr = arg;
-  /* int pr_id = pr->pr_id; */
-  int flags = J_SCHED_TD_ACTIVE;
-  pr->pr_scheduler_flags_ptr = &flags;
-  
-/*  printf("Starting jsched_td\n"); */
-  
-  for (;;) {
-    if (flags & J_SCHED_TD_DIE)
-      break;
-
-    mtx_lock(&pr->pr_mtx);
-    /* Scheduling stuff goes here. */
-/*    printf("jsched_td running\n"); */
-    mtx_unlock(&pr->pr_mtx);
-    
-    tsleep(pr, 0, "-", hz);
-  }
-
-  printf("Exiting jsched_td\n");
-  kthread_exit(0);
-}
-
-static void
 jpager_td(void *arg)
 {
   struct proc *p;
@@ -228,6 +203,7 @@
   printf("Exiting jpager_td\n");
   kthread_exit(0);
 }
+#endif
 
 /*
  * MPSAFE
@@ -243,8 +219,7 @@
 	struct prison *pr, *tpr;
 	struct jail j;
 	struct jail_attach_args jaa;
-	struct proc *j_sched_proc = NULL;
-	struct proc *j_pager_proc = NULL;
+	/*	struct proc *j_pager_proc = NULL; */
 	int vfslocked, error, tryprid;
 
 	error = copyin(uap->jail, &j, sizeof(j));
@@ -274,7 +249,7 @@
 		goto e_dropvnref;
 	pr->pr_ip = j.ip_number;
 	pr->pr_linux = NULL;
-	pr->pr_sched_shares = j.priority;
+	pr->pr_sched_shares = j.sched_shares;
 	pr->pr_securelevel = securelevel;
 	pr->pr_mem_limit = j.mem_limit;
 
@@ -300,16 +275,10 @@
 	prisoncount++;
 	mtx_unlock(&allprison_mtx);
 
-	/* TODO #ifdef SCHED_HIER */
-	if (kthread_create(jsched_td, pr, (void *) j_sched_proc, 0, 0, "jsched %d", pr->pr_id))
+	/*	if (kthread_create(jpager_td, pr, (void *) j_pager_proc, 0, 0, "jpager %d", pr->pr_id))
 	  goto e_dropprref;
-	KASSERT(j_sched_proc != NULL, ("NULL j_sched_proc"));
-	pr->pr_scheduler = j_sched_proc;
-	if (kthread_create(jpager_td, pr, (void *) j_pager_proc, 0, 0, "jpager %d", pr->pr_id))
-	  goto e_dropprref;
 	KASSERT(j_pager_proc != NULL, ("NULL j_pager_proc"));
-	pr->pr_pager = j_pager_proc;
-	/* TODO #endif */
+	pr->pr_pager = j_pager_proc; */
 
 	error = jail_attach(td, &jaa);
 	if (error)
@@ -435,8 +404,8 @@
 		mtx_unlock(&allprison_mtx);
 
                 /* Tell scheduler, pager to die.  No need to wait. */
-	        *pr->pr_scheduler_flags_ptr = J_SCHED_TD_DIE;
-		*pr->pr_pager_flags_ptr = J_PAGER_TD_DIE;
+/*	        *pr->pr_scheduler_flags_ptr = J_SCHED_TD_DIE;
+		*pr->pr_pager_flags_ptr = J_PAGER_TD_DIE; */
 		wakeup(pr);
 
 		TASK_INIT(&pr->pr_task, 0, prison_complete, pr);
@@ -752,6 +721,10 @@
 		strlcpy(xp->pr_path, pr->pr_path, sizeof(xp->pr_path));
 		strlcpy(xp->pr_host, pr->pr_host, sizeof(xp->pr_host));
 		xp->pr_ip = pr->pr_ip;
+		xp->pr_sched_shares = pr->pr_sched_shares;
+		xp->pr_estcpu = pr->pr_estcpu;
+		xp->pr_mem_limit = pr->pr_mem_limit;
+		xp->pr_mem_usage = pr->pr_mem_usage;
 		mtx_unlock(&pr->pr_mtx);
 		xp++;
 	}

==== //depot/projects/soc2006/cdjones_jail/src/sys/sys/jail.h#18 (text+ko) ====

@@ -18,10 +18,8 @@
 	char		*path;
 	char		*hostname;
 	u_int32_t	ip_number;
-	unsigned int	priority;
+	unsigned int	sched_shares;
         unsigned int    mem_limit;
-/*        struct thread   *scheduler;
- CJ TODO --- add reference to preferred scheduler, e.g. by name? */
 };
 
 struct xprison {
@@ -30,11 +28,12 @@
 	char		 pr_path[MAXPATHLEN];
 	char 		 pr_host[MAXHOSTNAMELEN];
 	u_int32_t	 pr_ip;
-        unsigned int     priority;
-        unsigned int     mem_limit;
-  /*        struct thread    *scheduler; */
+        unsigned int     pr_sched_shares;
+        unsigned int     pr_estcpu;
+        unsigned int     pr_mem_limit;
+        unsigned int     pr_mem_usage;
 };
-#define	XPRISON_VERSION	1
+#define	XPRISON_VERSION	2
 
 #define JAIL_DEFAULT_PRIORITY 10
 #define JAIL_MINIMUM_PRIORITY 1
@@ -101,8 +100,6 @@
 	struct mtx	 pr_mtx;
 	u_int32_t	 pr_sched_shares;		/* (p) jail priority */
 	u_int		 pr_estcpu;			/* (p) est. cpu of jail */
-        struct proc     *pr_scheduler;                  /* (c) scheduler pid */
-        int             *pr_scheduler_flags_ptr;        /* (p) communication to scheduler */
         struct proc     *pr_pager;                      /* (c) pager pid */
         int             *pr_pager_flags_ptr;            /* (p) communication to pager */
         size_t           pr_mem_limit;                  /* (p) memory allocation limit */


More information about the p4-projects mailing list