⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sys.c

📁 msLinux v1.0 可以在arm ads 下仿真运行的linux
💻 C
字号:
/* MShowTec - www.mshowtec.com
** msLinux sys.c ver1.0
** 20051221 lmjx create limiao@mshowtec.com
** 
*/
#define MSLINUX_SYS_C

#include "errno.h"
#include "kernel.h"
#include "sched.h"

int sys_ftime ()
{
	return -ENOSYS;
}

int sys_break ()
{
	return -ENOSYS;
}

int sys_ptrace ()
{
	return -ENOSYS;
}

int sys_stty ()
{
	return -ENOSYS;
}

int sys_gtty ()
{
	return -ENOSYS;
}

int sys_rename ()
{
	return -ENOSYS;
}

int sys_prof ()
{
	return -ENOSYS;
}

int sys_setregid (int rgid, int egid)
{
	if (rgid > 0)
	{
		if ((current->gid == rgid) || suser ())
			current->gid = rgid;
		else
			return (-EPERM);
	}
	if (egid > 0)
	{
		if ((current->gid == egid) || (current->egid == egid) || 
								(current->sgid == egid) || suser ())
			current->egid = egid;
		else
			return (-EPERM);
    }
	return 0;
}

int sys_setgid (int gid)
{
	return (sys_setregid (gid, gid));
}

int sys_acct ()
{
	return -ENOSYS;
}

int sys_phys ()
{
	return -ENOSYS;
}

int sys_lock ()
{
	return -ENOSYS;
}

int sys_mpx ()
{
	return -ENOSYS;
}

int sys_ulimit ()
{
	return -ENOSYS;
}

int sys_setreuid (int ruid, int euid)
{
	int old_ruid = current->uid;

	if (ruid > 0)
	{
		if ((current->euid == ruid) || (old_ruid == ruid) || suser ())
			current->uid = ruid;
		else
			return (-EPERM);
	}
	if (euid > 0)
	{
		if ((old_ruid == euid) || (current->euid == euid) || suser ())
			current->euid = euid;
		else
		{
			current->uid = old_ruid;
			return (-EPERM);
		}
	}
	return 0;
}

int sys_setuid (int uid)
{
	return (sys_setreuid (uid, uid));
}


int sys_setpgid (int pid, int pgid)
{
	int i;

	if (!pid)
		pid = current->pid;
	if (!pgid)
		pgid = current->pid;
	for (i = 0; i < NR_TASKS; i++)
	if (task[i] && task[i]->pid == pid)
	{
		if (task[i]->leader)
			return -EPERM;
		if (task[i]->session != current->session)
			return -EPERM;
		task[i]->pgrp = pgid;
		return 0;
	}
	return -ESRCH;
}

int sys_getpgrp (void)
{
	return current->pgrp;
}

int sys_setsid (void)
{
	if (current->leader && !suser ())
		return -EPERM;
	current->leader = 1;
	current->session = current->pgrp = current->pid;
	return current->pgrp;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -