SysIII/usr/src/uts/vax/os/utssys.c
#include "sys/param.h"
#include "sys/buf.h"
#include "sys/filsys.h"
#include "sys/mount.h"
#include "sys/dir.h"
#include "sys/user.h"
#include "sys/var.h"
#include "sys/utsname.h"
utssys()
{
register i;
register struct a {
char *cbuf;
int mv;
int type;
} *uap;
uap = (struct a *)u.u_ap;
switch(uap->type) {
case 0: /* uname */
if (copyout(&utsname, uap->cbuf, sizeof(struct utsname)))
u.u_error = EFAULT;
return;
/* case 1 was umask */
case 2: /* ustat */
for(i=0; i<v.v_mount; i++) {
register struct mount *mp;
mp = &mount[i];
if(mp->m_flags == MINUSE && mp->m_dev==uap->mv) {
register struct filsys *fp;
fp = mp->m_bufp->b_un.b_filsys;
if(copyout(&fp->s_tfree, uap->cbuf, 18))
u.u_error = EFAULT;
return;
}
}
u.u_error = EINVAL;
return;
default:
u.u_error = EFAULT;
}
}