PERFORCE change 182316 for review

Gabor Kovesdan gabor at FreeBSD.org
Thu Aug 12 13:28:58 UTC 2010


http://p4web.freebsd.org/@@182316?ac=10

Change 182316 by gabor at gabor_aspire on 2010/08/12 13:28:31

	- Merge my code to hrl and containers project. This is not tested yet.

Affected files ...

.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/gen/errlst.c#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/nls/C.msg#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/nls/es_ES.ISO8859-1.msg#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/nls/gl_ES.ISO8859-1.msg#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/nls/hu_HU.ISO8859-2.msg#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/sys/Makefile.inc#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/sys/Symbol.map#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/sys/getjid.2#1 add
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/sys/getjlimit.2#1 add
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/sys/killjob.2#1 add
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/sys/makenewjob.2#1 add
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/compat/freebsd32/freebsd32_proto.h#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/compat/freebsd32/freebsd32_syscall.h#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/compat/freebsd32/freebsd32_syscalls.c#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/compat/freebsd32/freebsd32_sysent.c#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/compat/freebsd32/syscalls.master#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/conf/NOTES#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/conf/files#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/conf/options#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/init_main.c#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/init_sysent.c#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/kern_exit.c#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/kern_fork.c#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/kern_jobs.c#1 add
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/syscalls.c#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/syscalls.master#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/systrace_args.c#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/_types.h#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/errno.h#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/jobs.h#1 add
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/resource.h#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/syscall.h#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/syscall.mk#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/sysproto.h#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/types.h#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/ucred.h#2 edit
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/tools/test/irix_jobs/Makefile#1 add
.. //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/tools/test/irix_jobs/jobtest.c#1 add

Differences ...

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/gen/errlst.c#2 (text+ko) ====

@@ -151,5 +151,7 @@
 	"Link has been severed",		/* 91 - ENOLINK */
 	"Protocol error",			/* 92 - EPROTO */
 	"Capabilities insufficient",		/* 93 - ENOTCAPABLE */
+	"No such job",				/* 94 - ENOJOB */
+	"Required software not installed",	/* 95 - ENOPKG */
 };
 const int sys_nerr = sizeof(sys_errlist) / sizeof(sys_errlist[0]);

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/nls/C.msg#2 (text+ko) ====

@@ -191,6 +191,10 @@
 92 Protocol error
 $ ENOTCAPABLE
 93 Capabilities insufficient
+$ ENOJOB
+94 No such job
+$ ENOPKG
+95 Required software not installed
 $
 $ strsignal() support catalog
 $

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/nls/es_ES.ISO8859-1.msg#2 (text+ko) ====

@@ -191,6 +191,10 @@
 92 Fallo de protocolo
 $ ENOTCAPABLE
 93 Habilidades insuficientes
+$ ENOJOB
+94 Job inexistente
+$ ENOPKG
+95 Software requerido no está instalado
 $
 $ strsignal() support catalog
 $

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/nls/gl_ES.ISO8859-1.msg#2 (text+ko) ====

@@ -191,6 +191,10 @@
 92 Erro de protocolo
 $ ENOTCAPABLE
 93 Habilidades non suficientes
+$ ENOJOB
+94 Job inexistente
+$ ENOPKG
+95 Software requirido non está instalado
 $
 $ strsignal() support catalog
 $

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/nls/hu_HU.ISO8859-2.msg#2 (text+ko) ====

@@ -191,6 +191,10 @@
 92 Protokol hiba
 $ ENOTCAPABLE
 93 Elégtelen képességek
+$ ENOJOB
+94 Job nem található
+$ ENOPKG
+95 Szükséges szoftver nincs telepítve
 $
 $ strsignal() support catalog
 $

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/sys/Makefile.inc#2 (text+ko) ====

@@ -69,18 +69,18 @@
 	connect.2 cpuset.2 cpuset_getaffinity.2 dup.2 execve.2 _exit.2 \
 	extattr_get_file.2 fcntl.2 fhopen.2 flock.2 fork.2 fsync.2 \
 	getdirentries.2 getdtablesize.2 \
-	getfh.2 getfsstat.2 getgid.2 getgroups.2 getitimer.2 getlogin.2 \
-	getpeername.2 getpgrp.2 getpid.2 getpriority.2 getrlimit.2 \
-	getrusage.2 getsid.2 getsockname.2 \
+	getfh.2 getfsstat.2 getgid.2 getgroups.2 getitimer.2 getjid.2 \
+	getjlimit.2 getlogin.2 getpeername.2 getpgrp.2 getpid.2 getpriority.2 \
+	getrlimit.2 getrusage.2 getsid.2 getsockname.2 \
 	getsockopt.2 gettimeofday.2 getuid.2 \
-	intro.2 ioctl.2 issetugid.2 jail.2 kenv.2 kill.2 \
+	intro.2 ioctl.2 issetugid.2 jail.2 kenv.2 kill.2 killjob.2 \
 	kldfind.2 kldfirstmod.2 kldload.2 kldnext.2 kldstat.2 kldsym.2 \
 	kldunload.2 kqueue.2 ktrace.2 link.2 lio_listio.2 listen.2 \
 	lseek.2 \
-	madvise.2 mincore.2 minherit.2 mkdir.2 mkfifo.2 mknod.2 mlock.2 \
-	mlockall.2 mmap.2 modfind.2 modnext.2 modstat.2 mount.2 mprotect.2 \
-	mq_close.2 mq_getattr.2 mq_notify.2 mq_open.2 mq_receive.2 mq_send.2 \
-	mq_setattr.2 \
+	madvise.2 makenewjob.2 mincore.2 minherit.2 mkdir.2 mkfifo.2 mknod.2 \
+	mlock.2 mlockall.2 mmap.2 modfind.2 modnext.2 modstat.2 mount.2 \
+	mprotect.2 mq_close.2 mq_getattr.2 mq_notify.2 mq_open.2 mq_receive.2 \
+	mq_send.2 mq_setattr.2 \
 	msgctl.2 msgget.2 msgrcv.2 msgsnd.2 \
 	msync.2 munmap.2 nanosleep.2 nfssvc.2 ntp_adjtime.2 open.2 \
 	pathconf.2 pipe.2 poll.2 posix_openpt.2 profil.2 \
@@ -131,6 +131,7 @@
 MLINKS+=getfh.2 lgetfh.2
 MLINKS+=getgid.2 getegid.2
 MLINKS+=getitimer.2 setitimer.2
+MLINKS+=getjlimit.2 setjlimit.2
 MLINKS+=getlogin.2 getlogin_r.3
 MLINKS+=getlogin.2 setlogin.2
 MLINKS+=getpgrp.2 getpgid.2

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/lib/libc/sys/Symbol.map#2 (text) ====

@@ -342,7 +342,6 @@
 	fexecve;
 	fstatat;
 	futimesat;
-	getloginclass;
 	jail_get;
 	jail_set;
 	jail_remove;
@@ -356,15 +355,24 @@
 	readlinkat;
 	renameat;
 	setfib;
-	setloginclass;
 	shmctl;
 	symlinkat;
 	unlinkat;
+};
+
+FBSD_1.2 {
+	getjid;
+	getjlimit;
+	getloginclass;
+	hrl_add_rule;
+	hrl_get_limits;
+	hrl_get_rules;
 	hrl_get_usage;
-	hrl_get_rules;
-	hrl_get_limits;
-	hrl_add_rule;
 	hrl_remove_rule;
+	killjob;
+	makenewjob;
+	setjlimit;
+	setloginclass;
 };
 
 FBSDprivate_1.0 {

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/compat/freebsd32/freebsd32_proto.h#2 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call prototypes.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_proto.h,v 1.116 2010/06/28 18:17:21 kib Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 209579 2010-06-28 18:06:46Z kib 
+ * $FreeBSD$
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.132 2010/06/28 18:06:46 kib Exp 
  */
 
 #ifndef _FREEBSD32_SYSPROTO_H_
@@ -564,6 +564,27 @@
 	char ts_l_[PADL_(const struct timespec32 *)]; const struct timespec32 * ts; char ts_r_[PADR_(const struct timespec32 *)];
 	char sm_l_[PADL_(const sigset_t *)]; const sigset_t * sm; char sm_r_[PADR_(const sigset_t *)];
 };
+struct makenewjob_args {
+	char rjid_l_[PADL_(jid_t)]; jid_t rjid; char rjid_r_[PADR_(jid_t)];
+	char user_l_[PADL_(__uid_t)]; __uid_t user; char user_r_[PADR_(__uid_t)];
+};
+struct killjob_args {
+	char jid_l_[PADL_(jid_t)]; jid_t jid; char jid_r_[PADR_(jid_t)];
+	char signal_l_[PADL_(int)]; int signal; char signal_r_[PADR_(int)];
+};
+struct getjid_args {
+	register_t dummy;
+};
+struct getjlimit_args {
+	char jid_l_[PADL_(jid_t)]; jid_t jid; char jid_r_[PADR_(jid_t)];
+	char resource_l_[PADL_(int)]; int resource; char resource_r_[PADR_(int)];
+	char rlp_l_[PADL_(struct rlimit *)]; struct rlimit * rlp; char rlp_r_[PADR_(struct rlimit *)];
+};
+struct setjlimit_args {
+	char jid_l_[PADL_(jid_t)]; jid_t jid; char jid_r_[PADR_(jid_t)];
+	char resource_l_[PADL_(int)]; int resource; char resource_r_[PADR_(int)];
+	char rlp_l_[PADL_(struct rlimit *)]; struct rlimit * rlp; char rlp_r_[PADR_(struct rlimit *)];
+};
 #if !defined(PAD64_REQUIRED) && defined(__powerpc__)
 #define PAD64_REQUIRED
 #endif
@@ -671,6 +692,11 @@
 int	freebsd32_msgctl(struct thread *, struct freebsd32_msgctl_args *);
 int	freebsd32_shmctl(struct thread *, struct freebsd32_shmctl_args *);
 int	freebsd32_pselect(struct thread *, struct freebsd32_pselect_args *);
+int	makenewjob(struct thread *, struct makenewjob_args *);
+int	killjob(struct thread *, struct killjob_args *);
+int	getjid(struct thread *, struct getjid_args *);
+int	getjlimit(struct thread *, struct getjlimit_args *);
+int	setjlimit(struct thread *, struct setjlimit_args *);
 
 #ifdef COMPAT_43
 
@@ -1000,6 +1026,11 @@
 #define	FREEBSD32_SYS_AUE_freebsd32_msgctl	AUE_MSGCTL
 #define	FREEBSD32_SYS_AUE_freebsd32_shmctl	AUE_SHMCTL
 #define	FREEBSD32_SYS_AUE_freebsd32_pselect	AUE_SELECT
+#define	FREEBSD32_SYS_AUE_makenewjob	AUE_NULL
+#define	FREEBSD32_SYS_AUE_killjob	AUE_NULL
+#define	FREEBSD32_SYS_AUE_getjid	AUE_NULL
+#define	FREEBSD32_SYS_AUE_getjlimit	AUE_NULL
+#define	FREEBSD32_SYS_AUE_setjlimit	AUE_NULL
 
 #undef PAD_
 #undef PADL_

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/compat/freebsd32/freebsd32_syscall.h#2 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call numbers.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscall.h,v 1.112 2010/06/28 18:17:21 kib Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 209579 2010-06-28 18:06:46Z kib 
+ * $FreeBSD$
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.132 2010/06/28 18:06:46 kib Exp 
  */
 
 #define	FREEBSD32_SYS_syscall	0
@@ -410,4 +410,16 @@
 #define	FREEBSD32_SYS_freebsd32_shmctl	512
 #define	FREEBSD32_SYS_lpathconf	513
 #define	FREEBSD32_SYS_freebsd32_pselect	522
-#define	FREEBSD32_SYS_MAXSYSCALL	523
+#define	FREEBSD32_SYS_getloginclass	523
+#define	FREEBSD32_SYS_setloginclass	524
+#define	FREEBSD32_SYS_hrl_get_usage	525
+#define	FREEBSD32_SYS_hrl_get_rules	526
+#define	FREEBSD32_SYS_hrl_get_limits	527
+#define	FREEBSD32_SYS_hrl_add_rule	528
+#define	FREEBSD32_SYS_hrl_remove_rule	529
+#define	FREEBSD32_SYS_makenewjob	530
+#define	FREEBSD32_SYS_killjob	531
+#define	FREEBSD32_SYS_getjid	532
+#define	FREEBSD32_SYS_getjlimit	533
+#define	FREEBSD32_SYS_setjlimit	534
+#define	FREEBSD32_SYS_MAXSYSCALL	535

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/compat/freebsd32/freebsd32_syscalls.c#2 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call names.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_syscalls.c,v 1.103 2010/06/28 18:17:21 kib Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 209579 2010-06-28 18:06:46Z kib 
+ * $FreeBSD$
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.132 2010/06/28 18:06:46 kib Exp 
  */
 
 const char *freebsd32_syscallnames[] = {
@@ -546,4 +546,16 @@
 	"#520",			/* 520 = pdgetpid */
 	"#521",			/* 521 = pdwait */
 	"freebsd32_pselect",			/* 522 = freebsd32_pselect */
+	"getloginclass",			/* 523 = getloginclass */
+	"setloginclass",			/* 524 = setloginclass */
+	"hrl_get_usage",			/* 525 = hrl_get_usage */
+	"hrl_get_rules",			/* 526 = hrl_get_rules */
+	"hrl_get_limits",			/* 527 = hrl_get_limits */
+	"hrl_add_rule",			/* 528 = hrl_add_rule */
+	"hrl_remove_rule",			/* 529 = hrl_remove_rule */
+	"makenewjob",			/* 530 = makenewjob */
+	"killjob",			/* 531 = killjob */
+	"getjid",			/* 532 = getjid */
+	"getjlimit",			/* 533 = getjlimit */
+	"setjlimit",			/* 534 = setjlimit */
 };

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/compat/freebsd32/freebsd32_sysent.c#2 (text+ko) ====

@@ -2,8 +2,8 @@
  * System call switch table.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/compat/freebsd32/freebsd32_sysent.c,v 1.114 2010/06/28 18:17:21 kib Exp $
- * created from FreeBSD: head/sys/compat/freebsd32/syscalls.master 209579 2010-06-28 18:06:46Z kib 
+ * $FreeBSD$
+ * created from FreeBSD: src/sys/compat/freebsd32/syscalls.master,v 1.132 2010/06/28 18:06:46 kib Exp 
  */
 
 #include "opt_compat.h"
@@ -583,4 +583,16 @@
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 520 = pdgetpid */
 	{ 0, (sy_call_t *)nosys, AUE_NULL, NULL, 0, 0, 0, SY_THR_ABSENT },			/* 521 = pdwait */
 	{ AS(freebsd32_pselect_args), (sy_call_t *)freebsd32_pselect, AUE_SELECT, NULL, 0, 0, 0, SY_THR_STATIC },	/* 522 = freebsd32_pselect */
+	{ AS(getloginclass_args), (sy_call_t *)getloginclass, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 523 = getloginclass */
+	{ AS(setloginclass_args), (sy_call_t *)setloginclass, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 524 = setloginclass */
+	{ AS(hrl_get_usage_args), (sy_call_t *)hrl_get_usage, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 525 = hrl_get_usage */
+	{ AS(hrl_get_rules_args), (sy_call_t *)hrl_get_rules, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 526 = hrl_get_rules */
+	{ AS(hrl_get_limits_args), (sy_call_t *)hrl_get_limits, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 527 = hrl_get_limits */
+	{ AS(hrl_add_rule_args), (sy_call_t *)hrl_add_rule, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 528 = hrl_add_rule */
+	{ AS(hrl_remove_rule_args), (sy_call_t *)hrl_remove_rule, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 529 = hrl_remove_rule */
+	{ AS(makenewjob_args), (sy_call_t *)makenewjob, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 530 = makenewjob */
+	{ AS(killjob_args), (sy_call_t *)killjob, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 531 = killjob */
+	{ 0, (sy_call_t *)getjid, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },		/* 532 = getjid */
+	{ AS(getjlimit_args), (sy_call_t *)getjlimit, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 533 = getjlimit */
+	{ AS(setjlimit_args), (sy_call_t *)setjlimit, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 534 = setjlimit */
 };

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/compat/freebsd32/syscalls.master#2 (text+ko) ====

@@ -970,3 +970,11 @@
 527	AUE_NULL	NOPROTO	{ int hrl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
 528	AUE_NULL	NOPROTO	{ int hrl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
 529	AUE_NULL	NOPROTO	{ int hrl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
+530	AUE_NULL	STD	{ jid_t makenewjob(jid_t rjid,\
+				    __uid_t user); }
+531	AUE_NULL	STD	{ int killjob(jid_t jid, int signal); }
+532	AUE_NULL	STD	{ jid_t getjid(void); }
+533	AUE_NULL	STD	{ int getjlimit(jid_t jid, int resource, \
+				    struct rlimit *rlp); }
+534	AUE_NULL	STD	{ int setjlimit(jid_t jid, int resource, \
+				    struct rlimit *rlp); }

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/conf/NOTES#2 (text+ko) ====

@@ -1163,7 +1163,8 @@
 # Hierarchical Resource Limits
 options 	HRL
 
-
+# IRIX-compatible Jobs (requires CONTAINERS)
+options		IRIX_JOBS
 #####################################################################
 # CLOCK OPTIONS
 

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/conf/files#2 (text+ko) ====

@@ -2115,6 +2115,7 @@
 kern/kern_idle.c		standard
 kern/kern_intr.c		standard
 kern/kern_jail.c		standard
+kern/kern_jobs.c		standard
 kern/kern_kthread.c		standard
 kern/kern_ktr.c			optional ktr
 kern/kern_ktrace.c		standard

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/conf/options#2 (text+ko) ====

@@ -860,3 +860,6 @@
 
 # Hierarchical Resource Limits
 HRL			opt_hrl.h
+
+# IRIX-compatible Jobs
+IRIX_JOBS		opt_jobs.h

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/init_main.c#2 (text+ko) ====

@@ -494,6 +494,9 @@
 	p->p_ucred->cr_uidinfo = uifind(0);
 	p->p_ucred->cr_ruidinfo = uifind(0);
 	p->p_ucred->cr_prison = &prison0;
+#ifdef IRIX_JOBS
+	p->p_ucred->cr_jid = 0;
+#endif
 	p->p_ucred->cr_loginclass = loginclass_find("default");
 #ifdef AUDIT
 	audit_cred_kproc0(p->p_ucred);

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/init_sysent.c#2 (text+ko) ====

@@ -564,4 +564,9 @@
 	{ AS(hrl_get_limits_args), (sy_call_t *)hrl_get_limits, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 527 = hrl_get_limits */
 	{ AS(hrl_add_rule_args), (sy_call_t *)hrl_add_rule, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 528 = hrl_add_rule */
 	{ AS(hrl_remove_rule_args), (sy_call_t *)hrl_remove_rule, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 529 = hrl_remove_rule */
+	{ AS(makenewjob_args), (sy_call_t *)makenewjob, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 530 = makenewjob */
+	{ AS(killjob_args), (sy_call_t *)killjob, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 531 = killjob */
+	{ 0, (sy_call_t *)getjid, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },		/* 532 = getjid */
+	{ AS(getjlimit_args), (sy_call_t *)getjlimit, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 533 = getjlimit */
+	{ AS(setjlimit_args), (sy_call_t *)setjlimit, AUE_NULL, NULL, 0, 0, 0, SY_THR_STATIC },	/* 534 = setjlimit */
 };

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/kern_exit.c#2 (text+ko) ====

@@ -52,10 +52,12 @@
 #include <sys/proc.h>
 #include <sys/pioctl.h>
 #include <sys/jail.h>
+#include <sys/jobs.h>
 #include <sys/tty.h>
 #include <sys/wait.h>
 #include <sys/vmmeter.h>
 #include <sys/vnode.h>
+#include <sys/resource.h>
 #include <sys/resourcevar.h>
 #include <sys/sbuf.h>
 #include <sys/signalvar.h>
@@ -777,6 +779,16 @@
 	container_proc_exit(p);
 #endif
 
+#ifdef IRIX_JOBS
+ 	/*
+	 * Release IRIX jobs resources
+	 */
+	if (p->p_ucred->cr_jid != (jid_t)0) {
+		irix_jobs_free(p, JLIMIT_NUMPROC, 1);
+		irix_jobs_remove_proc(p->p_ucred->cr_jid, p->p_pid);
+	}
+#endif
+
 	/*
 	 * Free credentials, arguments, and sigacts.
 	 */

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/kern_fork.c#2 (text+ko) ====

@@ -48,6 +48,7 @@
 #include <sys/filedesc.h>
 #include <sys/container.h>
 #include <sys/jail.h>
+#include <sys/jobs.h>
 #include <sys/kernel.h>
 #include <sys/kthread.h>
 #include <sys/sysctl.h>
@@ -105,10 +106,20 @@
 	int error;
 	struct proc *p2;
 
+#ifdef IRIX_JOBS
+	error = irix_jobs_alloc(td->td_proc, JLIMIT_NUMPROC, 1);
+	if (error != 0)
+		return (error);
+#endif
+
 	error = fork1(td, RFFDG | RFPROC, 0, &p2);
 	if (error == 0) {
 		td->td_retval[0] = p2->p_pid;
 		td->td_retval[1] = 0;
+#ifdef IRIX_JOBS
+		if (td->td_proc->p_ucred->cr_jid != 0)
+			irix_jobs_add_proc(td->td_proc->p_ucred->cr_jid, p2);
+#endif
 	}
 	return (error);
 }

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/syscalls.c#2 (text+ko) ====

@@ -537,4 +537,9 @@
 	"hrl_get_limits",			/* 527 = hrl_get_limits */
 	"hrl_add_rule",			/* 528 = hrl_add_rule */
 	"hrl_remove_rule",			/* 529 = hrl_remove_rule */
+	"makenewjob",			/* 530 = makenewjob */
+	"killjob",			/* 531 = killjob */
+	"getjid",			/* 532 = getjid */
+	"getjlimit",			/* 533 = getjlimit */
+	"setjlimit",			/* 534 = setjlimit */
 };

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/syscalls.master#2 (text+ko) ====

@@ -930,5 +930,13 @@
 527	AUE_NULL	STD	{ int hrl_get_limits(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
 528	AUE_NULL	STD	{ int hrl_add_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
 529	AUE_NULL	STD	{ int hrl_remove_rule(const void *inbufp, size_t inbuflen, void *outbufp, size_t outbuflen); }
+530	AUE_NULL	STD	{ jid_t makenewjob(jid_t rjid,\
+				    __uid_t user); }
+531	AUE_NULL	STD	{ int killjob(jid_t jid, int signal); }
+532	AUE_NULL	STD	{ jid_t getjid(void); }
+533	AUE_NULL	STD	{ int getjlimit(jid_t jid, int resource, \
+				    struct rlimit *rlp); }
+534	AUE_NULL	STD	{ int setjlimit(jid_t jid, int resource, \
+				    struct rlimit *rlp); }
 ; Please copy any additions and changes to the following compatability tables:
 ; sys/compat/freebsd32/syscalls.master

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/kern/systrace_args.c#2 (text+ko) ====

@@ -2,7 +2,7 @@
  * System call argument to DTrace register array converstion.
  *
  * DO NOT EDIT-- this file is automatically generated.
- * $FreeBSD: src/sys/kern/systrace_args.c,v 1.35 2010/06/21 09:55:56 ed Exp $
+ * $FreeBSD$
  * This file is part of the DTrace syscall provider.
  */
 
@@ -3084,6 +3084,110 @@
 		*n_args = 6;
 		break;
 	}
+	/* getloginclass */
+	case 523: {
+		struct getloginclass_args *p = params;
+		uarg[0] = (intptr_t) p->namebuf; /* char * */
+		uarg[1] = p->namelen; /* size_t */
+		*n_args = 2;
+		break;
+	}
+	/* setloginclass */
+	case 524: {
+		struct setloginclass_args *p = params;
+		uarg[0] = (intptr_t) p->namebuf; /* const char * */
+		*n_args = 1;
+		break;
+	}
+	/* hrl_get_usage */
+	case 525: {
+		struct hrl_get_usage_args *p = params;
+		uarg[0] = (intptr_t) p->inbufp; /* const void * */
+		uarg[1] = p->inbuflen; /* size_t */
+		uarg[2] = (intptr_t) p->outbufp; /* void * */
+		uarg[3] = p->outbuflen; /* size_t */
+		*n_args = 4;
+		break;
+	}
+	/* hrl_get_rules */
+	case 526: {
+		struct hrl_get_rules_args *p = params;
+		uarg[0] = (intptr_t) p->inbufp; /* const void * */
+		uarg[1] = p->inbuflen; /* size_t */
+		uarg[2] = (intptr_t) p->outbufp; /* void * */
+		uarg[3] = p->outbuflen; /* size_t */
+		*n_args = 4;
+		break;
+	}
+	/* hrl_get_limits */
+	case 527: {
+		struct hrl_get_limits_args *p = params;
+		uarg[0] = (intptr_t) p->inbufp; /* const void * */
+		uarg[1] = p->inbuflen; /* size_t */
+		uarg[2] = (intptr_t) p->outbufp; /* void * */
+		uarg[3] = p->outbuflen; /* size_t */
+		*n_args = 4;
+		break;
+	}
+	/* hrl_add_rule */
+	case 528: {
+		struct hrl_add_rule_args *p = params;
+		uarg[0] = (intptr_t) p->inbufp; /* const void * */
+		uarg[1] = p->inbuflen; /* size_t */
+		uarg[2] = (intptr_t) p->outbufp; /* void * */
+		uarg[3] = p->outbuflen; /* size_t */
+		*n_args = 4;
+		break;
+	}
+	/* hrl_remove_rule */
+	case 529: {
+		struct hrl_remove_rule_args *p = params;
+		uarg[0] = (intptr_t) p->inbufp; /* const void * */
+		uarg[1] = p->inbuflen; /* size_t */
+		uarg[2] = (intptr_t) p->outbufp; /* void * */
+		uarg[3] = p->outbuflen; /* size_t */
+		*n_args = 4;
+		break;
+	}
+	/* makenewjob */
+	case 530: {
+		struct makenewjob_args *p = params;
+		iarg[0] = p->rjid; /* jid_t */
+		iarg[1] = p->user; /* __uid_t */
+		*n_args = 2;
+		break;
+	}
+	/* killjob */
+	case 531: {
+		struct killjob_args *p = params;
+		iarg[0] = p->jid; /* jid_t */
+		iarg[1] = p->signal; /* int */
+		*n_args = 2;
+		break;
+	}
+	/* getjid */
+	case 532: {
+		*n_args = 0;
+		break;
+	}
+	/* getjlimit */
+	case 533: {
+		struct getjlimit_args *p = params;
+		iarg[0] = p->jid; /* jid_t */
+		iarg[1] = p->resource; /* int */
+		uarg[2] = (intptr_t) p->rlp; /* struct rlimit * */
+		*n_args = 3;
+		break;
+	}
+	/* setjlimit */
+	case 534: {
+		struct setjlimit_args *p = params;
+		iarg[0] = p->jid; /* jid_t */
+		iarg[1] = p->resource; /* int */
+		uarg[2] = (intptr_t) p->rlp; /* struct rlimit * */
+		*n_args = 3;
+		break;
+	}
 	default:
 		*n_args = 0;
 		break;
@@ -8191,6 +8295,185 @@
 			break;
 		};
 		break;
+	/* getloginclass */
+	case 523:
+		switch(ndx) {
+		case 0:
+			p = "char *";
+			break;
+		case 1:
+			p = "size_t";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* setloginclass */
+	case 524:
+		switch(ndx) {
+		case 0:
+			p = "const char *";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* hrl_get_usage */
+	case 525:
+		switch(ndx) {
+		case 0:
+			p = "const void *";
+			break;
+		case 1:
+			p = "size_t";
+			break;
+		case 2:
+			p = "void *";
+			break;
+		case 3:
+			p = "size_t";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* hrl_get_rules */
+	case 526:
+		switch(ndx) {
+		case 0:
+			p = "const void *";
+			break;
+		case 1:
+			p = "size_t";
+			break;
+		case 2:
+			p = "void *";
+			break;
+		case 3:
+			p = "size_t";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* hrl_get_limits */
+	case 527:
+		switch(ndx) {
+		case 0:
+			p = "const void *";
+			break;
+		case 1:
+			p = "size_t";
+			break;
+		case 2:
+			p = "void *";
+			break;
+		case 3:
+			p = "size_t";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* hrl_add_rule */
+	case 528:
+		switch(ndx) {
+		case 0:
+			p = "const void *";
+			break;
+		case 1:
+			p = "size_t";
+			break;
+		case 2:
+			p = "void *";
+			break;
+		case 3:
+			p = "size_t";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* hrl_remove_rule */
+	case 529:
+		switch(ndx) {
+		case 0:
+			p = "const void *";
+			break;
+		case 1:
+			p = "size_t";
+			break;
+		case 2:
+			p = "void *";
+			break;
+		case 3:
+			p = "size_t";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* makenewjob */
+	case 530:
+		switch(ndx) {
+		case 0:
+			p = "jid_t";
+			break;
+		case 1:
+			p = "__uid_t";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* killjob */
+	case 531:
+		switch(ndx) {
+		case 0:
+			p = "jid_t";
+			break;
+		case 1:
+			p = "int";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* getjid */
+	case 532:
+		break;
+	/* getjlimit */
+	case 533:
+		switch(ndx) {
+		case 0:
+			p = "jid_t";
+			break;
+		case 1:
+			p = "int";
+			break;
+		case 2:
+			p = "struct rlimit *";
+			break;
+		default:
+			break;
+		};
+		break;
+	/* setjlimit */
+	case 534:
+		switch(ndx) {
+		case 0:
+			p = "jid_t";
+			break;
+		case 1:
+			p = "int";
+			break;
+		case 2:
+			p = "struct rlimit *";
+			break;
+		default:
+			break;
+		};
+		break;
 	default:
 		break;
 	};

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/_types.h#2 (text+ko) ====

@@ -42,8 +42,10 @@
 typedef	__uint64_t	__fsblkcnt_t;
 typedef	__uint64_t	__fsfilcnt_t;
 typedef	__uint32_t	__gid_t;
-typedef	__int64_t	__id_t;		/* can hold a gid_t, pid_t, or uid_t */
+typedef	__int64_t	__id_t;		/* can hold a gid_t, pid_t, uid_t
+					   or jid_t */
 typedef	__uint32_t	__ino_t;	/* inode number */
+typedef	__int32_t	__jid_t;	/* job id (for IRIX jobs) */
 typedef	long		__key_t;	/* IPC key (for Sys V IPC) */
 typedef	__int32_t	__lwpid_t;	/* Thread ID (a.k.a. LWP) */
 typedef	__uint16_t	__mode_t;	/* permissions */

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/errno.h#2 (text+ko) ====

@@ -177,8 +177,11 @@
 #define	ENOTCAPABLE	93		/* Capabilities insufficient */
 #endif /* _POSIX_SOURCE */
 
+#define	ENOJOB		94		/* No such job */
+#define	ENOPKG		95		/* Required software not installed */
+
 #ifndef _POSIX_SOURCE
-#define	ELAST		93		/* Must be equal largest errno */
+#define	ELAST		95		/* Must be equal largest errno */
 #endif /* _POSIX_SOURCE */
 
 #ifdef _KERNEL

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/resource.h#2 (text+ko) ====

@@ -36,6 +36,7 @@
 #include <sys/cdefs.h>
 #include <sys/_timeval.h>
 #include <sys/_types.h>
+#include <sys/queue.h>
 
 /*
  * Process priority specifications to get/setpriority.
@@ -130,6 +131,16 @@
 #define	_RLIM_T_DECLARED
 #endif
 
+#ifndef _JID_T_DECLARED
+typedef	__jid_t		jid_t;
+#define	_JID_T_DECLARED
+#endif
+
+#ifndef _UID_T_DECLARED
+typedef	__uid_t		uid_t;
+#define _UID_T_DECLARED
+#endif
+
 struct rlimit {
 	rlim_t	rlim_cur;		/* current (soft) limit */
 	rlim_t	rlim_max;		/* maximum value for rlim_cur */
@@ -154,6 +165,19 @@
 #define	CP_IDLE		4
 #define	CPUSTATES	5
 
+/*
+ * IRIX job limits
+ */
+#define	JLIMIT_CPU	0
+#define	JLIMIT_DATA	1
+#define	JLIMIT_NOFILE	2
+#define	JLIMIT_NUMPROC	3
+#define	JLIMIT_NUMTHR	4
+#define	JLIMIT_VMEM	5
+#define	JLIMIT_PMEM	6
+#define	JLIMIT_RSS	7
+#define JLIMIT_NLIMITS	8
+
 #endif	/* __BSD_VISIBLE */
 
 #ifdef _KERNEL
@@ -165,9 +189,14 @@
 
 __BEGIN_DECLS
 /* XXX 2nd arg to [gs]etpriority() should be an id_t */
+jid_t	getjid(void);
+int	getjlimit(jid_t, int, struct rlimit *);
 int	getpriority(int, int);
 int	getrlimit(int, struct rlimit *);
 int	getrusage(int, struct rusage *);
+int	killjob(jid_t, int);
+jid_t	makenewjob(jid_t, uid_t);
+int	setjlimit(jid_t, int, struct rlimit *);
 int	setpriority(int, int, int);
 int	setrlimit(int, const struct rlimit *);
 __END_DECLS

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/syscall.h#2 (text+ko) ====

@@ -436,4 +436,9 @@
 #define	SYS_hrl_get_limits	527
 #define	SYS_hrl_add_rule	528
 #define	SYS_hrl_remove_rule	529
-#define	SYS_MAXSYSCALL	530
+#define	SYS_makenewjob	530
+#define	SYS_killjob	531
+#define	SYS_getjid	532
+#define	SYS_getjlimit	533
+#define	SYS_setjlimit	534
+#define	SYS_MAXSYSCALL	535

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/syscall.mk#2 (text+ko) ====

@@ -384,4 +384,9 @@
 	hrl_get_rules.o \
 	hrl_get_limits.o \
 	hrl_add_rule.o \
-	hrl_remove_rule.o
+	hrl_remove_rule.o \
+	makenewjob.o \
+	killjob.o \
+	getjid.o \
+	getjlimit.o \
+	setjlimit.o

==== //depot/projects/soc2010/gabor_jobs/hrl_and_jobs/sys/sys/sysproto.h#2 (text+ko) ====

@@ -1686,6 +1686,27 @@
 	char outbufp_l_[PADL_(void *)]; void * outbufp; char outbufp_r_[PADR_(void *)];
 	char outbuflen_l_[PADL_(size_t)]; size_t outbuflen; char outbuflen_r_[PADR_(size_t)];
 };
+struct makenewjob_args {
+	char rjid_l_[PADL_(jid_t)]; jid_t rjid; char rjid_r_[PADR_(jid_t)];
+	char user_l_[PADL_(__uid_t)]; __uid_t user; char user_r_[PADR_(__uid_t)];
+};
+struct killjob_args {
+	char jid_l_[PADL_(jid_t)]; jid_t jid; char jid_r_[PADR_(jid_t)];
+	char signal_l_[PADL_(int)]; int signal; char signal_r_[PADR_(int)];
+};
+struct getjid_args {
+	register_t dummy;
+};
+struct getjlimit_args {
+	char jid_l_[PADL_(jid_t)]; jid_t jid; char jid_r_[PADR_(jid_t)];
+	char resource_l_[PADL_(int)]; int resource; char resource_r_[PADR_(int)];
+	char rlp_l_[PADL_(struct rlimit *)]; struct rlimit * rlp; char rlp_r_[PADR_(struct rlimit *)];
+};
+struct setjlimit_args {
+	char jid_l_[PADL_(jid_t)]; jid_t jid; char jid_r_[PADR_(jid_t)];
+	char resource_l_[PADL_(int)]; int resource; char resource_r_[PADR_(int)];
+	char rlp_l_[PADL_(struct rlimit *)]; struct rlimit * rlp; char rlp_r_[PADR_(struct rlimit *)];
+};
 int	nosys(struct thread *, struct nosys_args *);
 void	sys_exit(struct thread *, struct sys_exit_args *);
 int	fork(struct thread *, struct fork_args *);
@@ -2052,6 +2073,11 @@
 int	hrl_get_limits(struct thread *, struct hrl_get_limits_args *);
 int	hrl_add_rule(struct thread *, struct hrl_add_rule_args *);
 int	hrl_remove_rule(struct thread *, struct hrl_remove_rule_args *);
+int	makenewjob(struct thread *, struct makenewjob_args *);
+int	killjob(struct thread *, struct killjob_args *);
+int	getjid(struct thread *, struct getjid_args *);
+int	getjlimit(struct thread *, struct getjlimit_args *);
+int	setjlimit(struct thread *, struct setjlimit_args *);
 
 #ifdef COMPAT_43
 
@@ -2732,6 +2758,11 @@
 #define	SYS_AUE_hrl_get_limits	AUE_NULL
 #define	SYS_AUE_hrl_add_rule	AUE_NULL
 #define	SYS_AUE_hrl_remove_rule	AUE_NULL
+#define	SYS_AUE_makenewjob	AUE_NULL

>>> TRUNCATED FOR MAIL (1000 lines) <<<


More information about the p4-projects mailing list