示例#1
0
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;
	}
}
示例#2
0
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);
}