#include <sys/types.h>
#include <sys/param.h>
#include <sys/sysmacros.h>
#include <sys/signal.h>
#include <sys/pcb.h>
#include <sys/user.h>
#include <sys/systm.h>
#include <sys/sysinfo.h>
#include <sys/var.h>
#include <sys/errno.h>
#include <sys/cmn_err.h>
#include <sys/proc.h>
#include <sys/debug.h>
#include <sys/inline.h>
#include <sys/disp.h>
#include <sys/class.h>
#include <sys/kmem.h>
#include <sys/cpuvar.h>
#include <sys/priocntl.h>
pri_t sys_init(id_t, int, classfuncs_t **);
static int sys_getclpri(pcpri_t *);
static int sys_fork(kthread_t *, kthread_t *, void *);
static int sys_enterclass(kthread_t *, id_t, void *, cred_t *, void *);
static int sys_canexit(kthread_t *, cred_t *);
static int sys_nosys();
static int sys_donice(kthread_t *, cred_t *, int, int *);
static int sys_doprio(kthread_t *, cred_t *, int, int *);
static void sys_forkret(kthread_t *, kthread_t *);
static void sys_nullsys();
static pri_t sys_swappri(kthread_t *, int);
static pri_t sys_globpri(kthread_t *);
static int sys_alloc(void **, int);
struct classfuncs sys_classfuncs = {
{
sys_nosys,
sys_nosys,
sys_nosys,
sys_nosys,
sys_nosys,
sys_nosys,
sys_getclpri,
sys_alloc,
sys_nullsys,
},
{
sys_enterclass,
sys_nullsys,
sys_canexit,
sys_fork,
sys_forkret,
sys_nullsys,
sys_nosys,
sys_nullsys,
sys_nullsys,
sys_nullsys,
sys_nullsys,
sys_swappri,
sys_swappri,
sys_nullsys,
setfrontdq,
setbackdq,
sys_nullsys,
sys_nullsys,
setbackdq,
sys_donice,
sys_globpri,
sys_nullsys,
sys_nullsys,
sys_doprio,
}
};
pri_t
sys_init(cid, clparmsz, clfuncspp)
id_t cid;
int clparmsz;
classfuncs_t **clfuncspp;
{
*clfuncspp = &sys_classfuncs;
return ((pri_t)v.v_maxsyspri);
}
static int
sys_getclpri(pcpri_t *pcprip)
{
pcprip->pc_clpmax = maxclsyspri;
pcprip->pc_clpmin = minclsyspri;
return (0);
}
static int
sys_enterclass(t, cid, parmsp, reqpcredp, bufp)
kthread_t *t;
id_t cid;
void *parmsp;
cred_t *reqpcredp;
void *bufp;
{
return (0);
}
static int
sys_canexit(kthread_t *t, cred_t *reqpcredp)
{
return (0);
}
static int
sys_fork(t, ct, bufp)
kthread_t *t;
kthread_t *ct;
void *bufp;
{
return (0);
}
static void
sys_forkret(t, ct)
kthread_t *t;
kthread_t *ct;
{
register proc_t *pp = ttoproc(t);
register proc_t *cp = ttoproc(ct);
ASSERT(t == curthread);
ASSERT(MUTEX_HELD(&pidlock));
mutex_enter(&cp->p_lock);
mutex_exit(&pidlock);
continuelwps(cp);
mutex_exit(&cp->p_lock);
mutex_enter(&pp->p_lock);
continuelwps(pp);
mutex_exit(&pp->p_lock);
}
static pri_t
sys_swappri(t, flags)
kthread_t *t;
int flags;
{
return (-1);
}
static pri_t
sys_globpri(kthread_t *t __unused)
{
return (-1);
}
static int
sys_nosys()
{
return (ENOSYS);
}
static void
sys_nullsys()
{
}
static int
sys_donice(kthread_t *t, cred_t *cr, int incr, int *retvalp)
{
return (EINVAL);
}
static int
sys_doprio(kthread_t *t, cred_t *cr, int incr, int *retvalp)
{
return (EINVAL);
}
static int
sys_alloc(void **p, int flag)
{
*p = NULL;
return (0);
}