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