asmlinkage int solaris_utssys(u32 buf, u32 flags, int which, u32 buf2) { switch (which) { case 0: /* old uname */ /* Let's cheat */ set_utsfield(((struct sol_uname *)A(buf))->sysname, "SunOS", 1, 0); set_utsfield(((struct sol_uname *)A(buf))->nodename, system_utsname.nodename, 1, 1); set_utsfield(((struct sol_uname *)A(buf))->release, "2.6", 0, 0); set_utsfield(((struct sol_uname *)A(buf))->version, "Generic", 0, 0); set_utsfield(((struct sol_uname *)A(buf))->machine, machine(), 0, 0); return 0; case 2: /* ustat */ return -ENOSYS; case 3: /* fusers */ return -ENOSYS; default: return -ENOSYS; } }
int xnx_utsname(u_long addr) { struct xnx_utsname *utp = (struct xnx_utsname *)addr; unsigned short usvalue; long lvalue; int error=0; /* * This shouldn't be invoked by anything that isn't running * in the SCO personality. I can envisage a program that uses * this to test if utp is running on SCO or not. It probably * won't happen but let's make sure utp doesn't anyway... */ if (current->personality != PER_SCOSVR3) return -ENOSYS; down_read(&uts_sem); if (access_ok(VERIFY_WRITE, utp, sizeof (struct xnx_utsname))) { if (abi_fake_utsname) { error |= set_utsfield(utp->sysname, "SCO_SV", 0); error |= set_utsfield(utp->nodename, system_utsname.nodename, 1); error |= set_utsfield(utp->release, "3.2v5.0.0\0", 0); } else { error |= set_utsfield(utp->sysname, system_utsname.nodename, 1); error |= set_utsfield(utp->nodename, system_utsname.nodename, 1); error |= set_utsfield(utp->release, system_utsname.release, 0); } error |= set_utsfield(utp->kernelid, system_utsname.version, 0); error |= set_utsfield(utp->machine, system_utsname.machine, 0); if (EISA_bus) { error |= set_utsfield(utp->bustype, "EISA", 0); } else { error |= set_utsfield(utp->bustype, "ISA", 0); } error |= set_utsfield(utp->sysserial, sco_serial, 0); usvalue = 0xffff; error |= set_utsvalue(&utp->sysorigin, &usvalue); error |= set_utsvalue(&utp->sysoem, &usvalue); error |= set_utsfield(utp->numusers, "unlim", 0); lvalue = 1; error |= set_utsvalue(&utp->numcpu, &lvalue); } up_read(&uts_sem); return (error); }