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

📄 sched.h

📁 南京航空航天大学开发的一个类Unix和Linux的操作系统,好不好看看就知道了,
💻 H
字号:
#ifndef	_KERNSCHED_H#define	_KERNSCHED_H#include <lib/queue.h>#include <lib/string.h>#include <asm/seg.h>#include <asm/pgtbl.h>#include <mm/mm.h>#include "time.h"#include "fdes.h"#include "signal.h"#include "timer.h"/* task state */enum {	TRUN,	TSLEEP,	TWAIT, /* interruptible sleep  */	TZOMBIE, /* interruptible sleep  */	TSTOP,};/* task flags */enum {	TFWAITCHLDEXIT = 0x01,	TFUSEDMATH = 0x02,};struct filesys_t {	ushort umask;	inode_t * root, * cwd;	filesys_t * clone();	filesys_t() { umask = 066; root = cwd = NULL; }}; struct mm_t;struct tty_t;struct pgrp_t;struct session_t;struct inode_t;struct task_t;typedef queue_tl<0,sizeof(void*),task_t> Q(sibling,task_t);struct task_t {	/* various link */	CHAIN(sibling,task_t);  /* this field must be first */	Q(sibling,task_t) childq;	CHAIN(all,task_t);	CHAIN(hash,task_t); 	/* pid hash queue */	CHAIN(run,task_t); 	/* run/sleep queue */	CHAIN(member,task_t);	task_t * parent;	pgrp_t * pgrp;	/* id */	pid_t pid;	uid_t uid, euid, suid;	gid_t gid, egid, sgid;	str_tl<16> execname;	/* sched data */	volatile int state;	int flags;	int priority;	int counter;	timer_t alarm;	tick_t utick, stick, cutick, cstick, starttick;	mm_t * mm;	filesys_t * fs;	fdvec_t * fdvec;	sigset_t sigset, sigmask;	sigvec_t * sigvec;	int exitcode;	tss_t tss;	i387_t i387;	tty_t * tty();	session_t * session();	int leader();	void enter(pgrp_t * pgrp);	void leave();	int clone(task_t ** result);	~task_t();	void setcounter(int newval);	void enqrun();	void deqrun();	void wakeup();	void install();	void uninstall();	int kill(int signo);	void post(int signo);	void force(int signo);	void maskedsig(sigset_t * masked)	{		masked->bits = sigset.bits & sigmask.bits;	}	void unmaskedsig(sigset_t * unmasked)	{		unmasked->bits = sigset.bits & ~sigmask.bits;	}	int hassig()	{		sigset_t unmasked(0);		unmaskedsig(&unmasked);		return !unmasked.empty();	}};QUEUE(all,task_t);QUEUE(hash,task_t);QUEUE(run,task_t);QUEUE(member,task_t);extern task_t *	curr; /* current task */extern task_t idletask, * inittask, * lastusedmath;extern Q(all,task_t) alltaskq;#include "lock.h"extern inline int suser(){	return curr->euid == 0;}extern inline int fdtofdes(int fd, fdes_t ** fdes){	return curr->fdvec->get(fd, fdes);}extern void sched();extern void prempt();extern void schedinit();extern void doexit(int signo) __attribute__((noreturn));extern Q(all,task_t) alltaskq;extern task_t * findtask(pid_t pid);extern pgrp_t * findpgrp(pid_t pgid);extern session_t * findsession(pid_t sid);extern pid_t newpid();#endif

⌨️ 快捷键说明

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