PERFORCE change 105170 for review

Alex Lyashkov als at FreeBSD.org
Sun Aug 27 09:20:46 UTC 2006


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

Change 105170 by als at als_head on 2006/08/27 09:20:22

	export task count limit

Affected files ...

.. //depot/projects/jail2/j2_tools/jctl/jctl.c#3 edit
.. //depot/projects/jail2/sys/kern/kern_jail2_common.c#2 edit
.. //depot/projects/jail2/sys/sys/jail2.h#4 edit

Differences ...

==== //depot/projects/jail2/j2_tools/jctl/jctl.c#3 (text+ko) ====

@@ -74,7 +74,7 @@
 	printf("CPU limits\t%u:%u\n", jst->cpulow, jst->cpuhigh);
 	printf("CPU usage\t%u\n", jst->cpuusage);
 	printf("\t\tallocate limit\n");
-	printf("Task count		  %u	  \n", jst->taskcount);
+	printf("Tasks		  %u	  %u\n", jst->taskcount, jst->tasklimit);
 	printf("Message queue     %u      %u\n", jst->msq_count, jst->msq_limit);
 	printf("Semaphore         %u      %u\n", jst->sem_count, jst->sem_limit);
 	printf("Shared segments   %u      %u\n", jst->shm_count, jst->shm_limit);

==== //depot/projects/jail2/sys/kern/kern_jail2_common.c#2 (text+ko) ====

@@ -46,9 +46,9 @@
 {
 	struct prison *pr = NULL;
 	int ret = 0;
-	
+
 	jprint("jail2_command %d ctx: %d \n", JAIL2_CMD(j->cmd), j->ctx_id);
-	
+
 	if (JAIL2_CMD(j->cmd) != J_CREATE) {
 	    mtx_lock(&allprison_mtx);
 	    pr = prison_find(j->ctx_id);
@@ -58,7 +58,7 @@
 		return (ESRCH);
 	    }
 	}
-	
+
 	switch(JAIL2_CMD(j->cmd)) {
 	case J_CREATE:
 	{
@@ -102,23 +102,25 @@
 	case J_SETFLAGS:
 	{
 	    uint32_t flags;
-	    
+
 	    ret = copyin(j->data, &flags, sizeof(flags));
 	    if (ret)
 		    return (ret);
-		    
+
 	    JAIL_SET_FLAGS(pr, flags);
 	    break;
 	}
 	case J_STATS:
 	{
 	    struct jail2_stats st;
-	    
+
 	    memset(&st,0,sizeof(st));
 	    st.version = JAIL2_STATS_VER;
 	    st.id = pr->pr_id;
 	    st.v1.flags = JAIL_GET_FLAGS(pr);
+	    /* */
 	    st.v1.taskcount = JAIL_NPROCS(pr);
+	    st.v1.tasklimit = JAIL_MAXPROC(pr);
 	    /* */
 	    st.v1.msq_count = JAIL_IPC_MSG_GETCOUNT(pr);
 	    st.v1.msq_limit = JAIL_IPC_MSG_GETLIMIT(pr);
@@ -128,167 +130,20 @@
 	    st.v1.shm_limit = JAIL_IPC_SHM_GETLIMIT(pr);
 	    /* */
 	    st.v1.fdcount = JAIL_FILE_GETCOUNT(pr);
-	    st.v1.fdlimit = JAIL_FILE_GETLIMIT(pr);  
+	    st.v1.fdlimit = JAIL_FILE_GETLIMIT(pr);
 
 	    ret = copyout(&st,j->data,sizeof(st));
-	    
+
 	    break;
 	}
 	default:
 	    ret = EOPNOTSUPP;
 	    break;
 	}
-	
+
 	/* remove refs from find/create */
 	if (pr!=NULL)
-	    prison_free(pr); 
-	jprint("jail2_command return %d\n", ret);
-	return (ret);
-}
-/*
- * Copyright (c) 2004 Alex Lyashkov <shadow at psoft.net>
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-#include <sys/errno.h>
-#include <sys/param.h>
-#include <sys/proc.h>
-#include <sys/systm.h>
-#include <sys/lock.h>
-#include <sys/mutex.h>
-
-#include <sys/jail.h>
-#include <sys/jail2.h>
-#include <sys/jail2_flags.h>
-#include <sys/jail2_file.h>
-
-#define jprint(a...)
-/*  printf(a) */
-
-int jail2_common(struct thread *td, struct jail_2 *j)
-{
-	struct prison *pr = NULL;
-	int ret = 0;
-	
-	jprint("jail2_command %d ctx: %d \n", JAIL2_CMD(j->cmd), j->ctx_id);
-	
-	if (JAIL2_CMD(j->cmd) != J_CREATE) {
-	    mtx_lock(&allprison_mtx);
-	    pr = prison_find(j->ctx_id);
-	    mtx_unlock(&allprison_mtx);
-	    if (pr == NULL) {
-		printf("Prison not found for command %x\n", j->cmd);
-		return (ESRCH);
-	    }
-	}
-	
-	switch(JAIL2_CMD(j->cmd)) {
-	case J_CREATE:
-	{
-	    /* not found - create */
-	    pr = prison_alloc(j->ctx_id);
-	    jprint("prison_alloc return %p\n",pr);
-	    if (pr == NULL) {
-		ret = ENOMEM;
-		break;
-	    }
-	    prison_hold(pr);
-	    break;
-	}
-	case J_DESTROY:
-	{
-	    /* remove hold */
 	    prison_free(pr);
-	    break;
-	}
-	case J_ENTER:
-	{
-	    ret = suser(td);
-	    if (ret) {
-		ret = EPERM;
-		break;
-	    }
-
-	    ret = jail_migrate(td, pr);
-	    break;
-	}
-	case J_START:
-	{
-	    JAIL_SET_STARTED(pr);
-	    break;
-	}
-	case J_STOP:
-	{
-	    JAIL_CLEAR_STARTED(pr);
-	    break;
-	}
-	case J_SETFLAGS:
-	{
-	    uint32_t flags;
-	    
-	    ret = copyin(j->data, &flags, sizeof(flags));
-	    if (ret)
-		    return (ret);
-		    
-	    JAIL_SET_FLAGS(pr, flags);
-	    break;
-	}
-	case J_STATS:
-	{
-	    struct jail2_stats st;
-	    
-	    memset(&st,0,sizeof(st));
-	    st.version = JAIL2_STATS_VER;
-	    st.id = pr->pr_id;
-	    st.v1.flags = JAIL_GET_FLAGS(pr);
-	    st.v1.taskcount = JAIL_NPROCS(pr);
-	    /* */
-	    st.v1.msq_count = JAIL_IPC_MSG_GETCOUNT(pr);
-	    st.v1.msq_limit = JAIL_IPC_MSG_GETLIMIT(pr);
-	    st.v1.sem_count = JAIL_IPC_SEM_GETCOUNT(pr);
-	    st.v1.sem_limit = JAIL_IPC_SEM_GETLIMIT(pr);
-	    st.v1.shm_count = JAIL_IPC_SHM_GETCOUNT(pr);
-	    st.v1.shm_limit = JAIL_IPC_SHM_GETLIMIT(pr);
-	    /* */
-	    st.v1.fdcount = JAIL_FILE_GETCOUNT(pr);
-	    st.v1.fdlimit = JAIL_FILE_GETLIMIT(pr);  
-
-	    ret = copyout(&st,j->data,sizeof(st));
-	    
-	    break;
-	}
-	default:
-	    ret = EOPNOTSUPP;
-	    break;
-	}
-	
-	/* remove refs from find/create */
-	if (pr!=NULL)
-	    prison_free(pr); 
 	jprint("jail2_command return %d\n", ret);
 	return (ret);
 }

==== //depot/projects/jail2/sys/sys/jail2.h#4 (text+ko) ====

@@ -12,6 +12,7 @@
 	uint32_t	 flags;
 	/* Task & CPU */
 	uint32_t	 taskcount;
+	uint32_t	 tasklimit;
 	uint32_t	 cpulow;
 	uint32_t	 cpuhigh;
 	uint32_t	 cpuusage;


More information about the p4-projects mailing list