From owner-p4-projects@FreeBSD.ORG Thu Aug 12 13:28:58 2010 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id E901610656A8; Thu, 12 Aug 2010 13:28:57 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AAB6A10656A6 for ; Thu, 12 Aug 2010 13:28:57 +0000 (UTC) (envelope-from gabor@freebsd.org) Received: from skunkworks.freebsd.org (skunkworks.freebsd.org [IPv6:2001:4f8:fff6::2d]) by mx1.freebsd.org (Postfix) with ESMTP id 965798FC1B for ; Thu, 12 Aug 2010 13:28:57 +0000 (UTC) Received: from skunkworks.freebsd.org (localhost [127.0.0.1]) by skunkworks.freebsd.org (8.14.4/8.14.4) with ESMTP id o7CDSvNM030675 for ; Thu, 12 Aug 2010 13:28:57 GMT (envelope-from gabor@freebsd.org) Received: (from perforce@localhost) by skunkworks.freebsd.org (8.14.4/8.14.4/Submit) id o7CDSvJ8030672 for perforce@freebsd.org; Thu, 12 Aug 2010 13:28:57 GMT (envelope-from gabor@freebsd.org) Date: Thu, 12 Aug 2010 13:28:57 GMT Message-Id: <201008121328.o7CDSvJ8030672@skunkworks.freebsd.org> X-Authentication-Warning: skunkworks.freebsd.org: perforce set sender to gabor@freebsd.org using -f From: Gabor Kovesdan To: Perforce Change Reviews Precedence: bulk Cc: Subject: PERFORCE change 182316 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 12 Aug 2010 13:28:58 -0000 http://p4web.freebsd.org/@@182316?ac=10 Change 182316 by gabor@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 #include #include +#include #include #include #include #include +#include #include #include #include @@ -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 #include #include +#include #include #include #include @@ -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 #include #include +#include /* * 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) <<<