亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ksubr.c

?? TCPIP協議包
?? C
字號:
/* Machine or compiler-dependent portions of kernel
 */
#include <stdio.h>
#include <dos.h>
#include "global.h"
#include "proc.h"
#include "nospc.h"
#include "commands.h"

static char *Taskers[] = {
	"",
	"DoubleDos",
	"DesqView",
	"Windows",
	"OS/2",
};


static oldNull;

/* Template for contents of jmp_buf in Turbo C */
struct env {
	unsigned	sp;
	unsigned	ss;
	unsigned	flag;
	unsigned	cs;
	unsigned	ip;
	unsigned	bp;
	unsigned	di;
	unsigned	es;
	unsigned	si;
	unsigned	ds;
};

static int chkintstk(void);
static int stkutil(struct proc *pp);
static void pproc(struct proc *pp);

void
kinit()
{
	int i;

	/* Initialize interrupt stack for high-water-mark checking */
	for(i=0;i<Stktop-Intstk;i++)
		Intstk[i] = STACKPAT;

	/* Remember location 0 pattern to detect null pointer derefs */
	oldNull = *(unsigned short *)NULL;

	/* Initialize signal queue */
	Ksig.wp = Ksig.rp = Ksig.entry;
}
/* Print process table info
 * Since things can change while ps is running, the ready proceses are
 * displayed last. This is because an interrupt can make a process ready,
 * but a ready process won't spontaneously become unready. Therefore a
 * process that changes during ps may show up twice, but this is better
 * than not having it showing up at all.
 */
int
ps(argc,argv,p)
int argc;
char *argv[];
void *p;
{
	register struct proc *pp;
	int i;

	printf("Uptime %s Stack %x max intstk %u psp %x",tformat(secclock()),
	 getss(),chkintstk(),_psp);
	if(Mtasker != 0){
		printf(" Running under %s",Taskers[Mtasker]);
	}
	printf("\n");

	printf("ksigs %lu queued %lu hiwat %u woken %lu nops %lu dups %u\n",Ksig.ksigs,
	 Ksig.ksigsqueued,Ksig.maxentries,Ksig.ksigwakes,Ksig.ksignops,Ksig.duksigs);
	Ksig.maxentries = 0;
	printf("kwaits %lu nops %lu from int %lu\n",
	 Ksig.kwaits,Ksig.kwaitnops,Ksig.kwaitints);
	printf("PID       SP        stksize   maxstk    event     fl  in  out  name\n");

	for(pp = Susptab;pp != NULL;pp = pp->next)
		pproc(pp);

	for(i=0;i<PHASH;i++)
		for(pp = Waittab[i];pp != NULL;pp = pp->next)
			pproc(pp);

	for(pp = Rdytab;pp != NULL;pp = pp->next)
		pproc(pp);

	if(Curproc != NULL)
		pproc(Curproc);

	return 0;
}
static void
pproc(pp)
struct proc *pp;
{
	register struct env *ep;
	char insock[5],outsock[5];

	ep = (struct env *)&pp->env;
	if(fileno(pp->input) != -1)
		sprintf(insock,"%3d",fileno(pp->input));
	else
		sprintf(insock,"   ");
	if(fileno(pp->output) != -1)
		sprintf(outsock,"%3d",fileno(pp->output));
	else
		sprintf(outsock,"   ");
	printf("%-10p%-10p%-10u%-10u%-10p%c%c%c %s %s  %s\n",
	 pp,MK_FP(ep->ss,ep->sp),pp->stksize,stkutil(pp),
	 pp->event,
	 pp->flags.istate ? 'I' : ' ',
	 pp->flags.waiting ? 'W' : ' ',
	 pp->flags.suspend ? 'S' : ' ',
	 insock,outsock,pp->name);
}
static int
stkutil(pp)
struct proc *pp;
{
	unsigned i;
	register uint16 *sp;

	i = pp->stksize;
	for(sp = pp->stack;*sp == STACKPAT && sp < pp->stack + pp->stksize;sp++)
		i--;
	return i;
}
/* Return number of used words in interrupt stack */
static int
chkintstk()
{
	register int i;
	register uint16 *cp;

	i = Stktop - Intstk;
	for(cp=Intstk;*cp == STACKPAT && cp < Stktop;cp++)
		i--;
	return i;
}

/* Verify that stack pointer for current process is within legal limits;
 * also check that no one has dereferenced a null pointer
 */
void
chkstk()
{
	uint16 *sbase;
	uint16 *stop;
	uint16 *sp;

	sp = MK_FP(_SS,_SP);
	if(_SS == _DS){
		/* Probably in interrupt context */
		return;
	}
	sbase = Curproc->stack;
	if(sbase == NULL)
		return;	/* Main task -- too hard to check */

	stop = sbase + Curproc->stksize;
	if(sp < sbase || sp >= stop){
		printf("Stack violation, process %s\n",Curproc->name);
		printf("SP = %p, legal stack range [%p,%p)\n",
		sp,sbase,stop);
		fflush(stdout);
		killself();
	}
	if(*(unsigned short *)NULL != oldNull){
		printf("WARNING: Location 0 smashed, process %s\n",Curproc->name);
		*(unsigned short *)NULL = oldNull;
		fflush(stdout);
	}
}
/* Machine-dependent initialization of a task */
void
psetup(pp,iarg,parg1,parg2,pc)
struct proc *pp;	/* Pointer to task structure */
int iarg;		/* Generic integer arg */
void *parg1;		/* Generic pointer arg #1 */
void *parg2;		/* Generic pointer arg #2 */
void (*pc)();		/* Initial execution address */
{
	register int *stktop;
	register struct env *ep;

	/* Set up stack to make it appear as if the user's function was called
	 * by killself() with the specified arguments. When the user returns,
	 * killself() automatically cleans up.
	 *
	 * First, push args on stack in reverse order, simulating what C
	 * does just before it calls a function.
	 */
	stktop = (int *)(pp->stack + pp->stksize);
#ifdef	LARGEDATA
	*--stktop = FP_SEG(parg2);
#endif
	*--stktop = FP_OFF(parg2);
#ifdef	LARGEDATA
	*--stktop = FP_SEG(parg1);
#endif
	*--stktop = FP_OFF(parg1);
	*--stktop = iarg;
		
	/* Now push the entry address of killself(), simulating the call to
	 * the user function.
	 */
#ifdef	LARGECODE
	*--stktop = FP_SEG(killself);
#endif
	*--stktop = FP_OFF(killself);

	/* Set up task environment. Note that for Turbo-C, the setjmp
	 * sets the interrupt enable flag in the environment so that
	 * interrupts will be enabled when the task runs for the first time.
	 * Note that this requires newproc() to be called with interrupts
	 * enabled!
	 */
	setjmp(pp->env);
	ep = (struct env *)&pp->env;
	ep->ss = FP_SEG(stktop);
	ep->sp = FP_OFF(stktop);
	ep->cs = FP_SEG(pc);	/* Doesn't hurt in small model */
	ep->ip = FP_OFF(pc);
	ep->bp = 0;		/* Anchor stack traces */
	/* Task initially runs with interrupts on */
	pp->flags.istate = 1;
}
unsigned
phash(event)
void *event;
{
	register unsigned x;

	/* Fold the two halves of the pointer */
	x = FP_SEG(event) ^ FP_OFF(event);

	/* If PHASH is a power of two, this will simply mask off the
	 * higher order bits
	 */
	return x % PHASH;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品美女久久久久aⅴ| 亚洲国产欧美日韩另类综合| 中文字幕av资源一区| 依依成人综合视频| 欧美aaaaaa午夜精品| 99精品1区2区| 亚洲精品一区在线观看| 亚洲自拍偷拍综合| 高清beeg欧美| 337p粉嫩大胆噜噜噜噜噜91av| 亚洲国产毛片aaaaa无费看| 色综合欧美在线| 亚洲国产精品成人综合| 亚洲一本大道在线| 成人av综合在线| 欧美精品一区二区三区蜜桃视频| 欧美日韩一区视频| 久久久久青草大香线综合精品| 欧美一区二区三区小说| 国产精品麻豆一区二区| 国产一区二区影院| 日韩久久免费av| 亚洲国产日韩a在线播放性色| 一区二区三区日韩精品视频| 国产大陆精品国产| 91精品久久久久久久久99蜜臂| 色欧美88888久久久久久影院| 国产成人精品网址| 日韩欧美的一区| 午夜精品久久久久久| 欧美性三三影院| 亚洲一区二区偷拍精品| 色天天综合久久久久综合片| 亚洲人成人一区二区在线观看 | 福利一区二区在线| 久久先锋影音av鲁色资源网| 亚洲一区二区在线免费观看视频| 一区二区三区高清| 色天使色偷偷av一区二区| 综合在线观看色| 色一情一伦一子一伦一区| 亚洲欧美日韩一区二区三区在线观看| 亚洲精品国产品国语在线app| 亚洲乱码中文字幕综合| 日本道免费精品一区二区三区| 97se亚洲国产综合自在线不卡 | 一区二区三区四区在线| 粉嫩av一区二区三区粉嫩| 国产亚洲视频系列| 北岛玲一区二区三区四区| 亚洲精品视频在线| 欧美日本在线播放| 毛片不卡一区二区| 久久精品网站免费观看| 91小视频在线观看| 午夜欧美一区二区三区在线播放| 国产精品一区二区在线观看不卡 | 国产日韩影视精品| 国产成人免费在线观看| 亚洲美女偷拍久久| 亚洲女女做受ⅹxx高潮| 欧美日韩免费观看一区二区三区| 国产欧美综合在线| 色综合亚洲欧洲| 视频在线观看一区二区三区| 久久青草欧美一区二区三区| 91日韩一区二区三区| 麻豆精品视频在线观看| 国产精品久久福利| 欧美日韩国产天堂| 蜜桃91丨九色丨蝌蚪91桃色| 久久嫩草精品久久久精品| 色综合久久天天| 九九久久精品视频| 亚洲美腿欧美偷拍| 久久只精品国产| 欧美色国产精品| 懂色av噜噜一区二区三区av| 亚洲第一搞黄网站| 中文在线免费一区三区高中清不卡| 美女久久久精品| 亚洲视频资源在线| 日韩女优毛片在线| 日本乱人伦aⅴ精品| 国产精一区二区三区| 亚洲一线二线三线视频| 久久综合久久鬼色| 91精品久久久久久久99蜜桃| av欧美精品.com| 国产一区二区三区久久久| 五月激情六月综合| 一区二区三区在线观看国产| 国产欧美一区视频| 日韩欧美电影一区| 欧美日韩激情在线| 日本韩国欧美一区| 成人动漫在线一区| 国产福利一区在线| 久久99久久99| 麻豆成人av在线| 石原莉奈在线亚洲二区| 亚洲人成电影网站色mp4| 国产午夜一区二区三区| 精品入口麻豆88视频| 欧美另类变人与禽xxxxx| 91亚洲国产成人精品一区二三| 亚洲美女区一区| 亚洲视频在线一区观看| 久久嫩草精品久久久久| 精品国产三级a在线观看| 欧美剧在线免费观看网站| 色婷婷av一区二区三区之一色屋| 亚洲综合免费观看高清完整版在线 | 不卡区在线中文字幕| 精品亚洲成a人| 欧洲一区二区三区免费视频| 97成人超碰视| 一本一本久久a久久精品综合麻豆| 亚洲综合在线视频| 国产精品免费视频一区| 中文字幕av免费专区久久| 久久久国产精品午夜一区ai换脸| 色综合视频在线观看| 色综合久久综合中文综合网| 99久久免费视频.com| 不卡一二三区首页| 97久久超碰精品国产| 色国产精品一区在线观看| 欧美性淫爽ww久久久久无| 欧美色视频一区| 欧美一区二区三区精品| 欧美一二三区在线观看| 久久综合资源网| 国产精品每日更新在线播放网址| 欧美精品久久久久久久久老牛影院| 国产精品综合网| 成人激情校园春色| 色视频一区二区| 欧美日韩午夜精品| 欧美成人三级在线| 国产精品国产精品国产专区不蜜| 欧美videossexotv100| 中文字幕不卡在线| 亚洲一区二区三区四区五区中文| 久久久亚洲午夜电影| ...av二区三区久久精品| 亚洲午夜三级在线| 麻豆国产精品官网| 97久久精品人人澡人人爽| 91国偷自产一区二区三区观看| 国产精品一二三在| 欧美综合久久久| 91精品国产全国免费观看| 国产日韩成人精品| 一级日本不卡的影视| 激情综合色播激情啊| 91免费版在线看| 欧美一级免费观看| 亚洲欧美日韩国产手机在线| 五月综合激情网| 成人一级黄色片| 制服丝袜中文字幕一区| 国产精品萝li| 久久国产精品露脸对白| 一本色道久久综合亚洲精品按摩| 不卡电影免费在线播放一区| 7777精品伊人久久久大香线蕉最新版| 91麻豆文化传媒在线观看| 日韩精品一区二区在线| 亚洲欧洲日产国产综合网| 麻豆精品久久精品色综合| 在线观看www91| 日本一区二区不卡视频| 午夜日韩在线电影| gogo大胆日本视频一区| 欧美成人高清电影在线| 亚洲国产精品一区二区久久| 床上的激情91.| 精品国产乱码久久久久久久久| 精品sm在线观看| 天天综合色天天| 色老汉一区二区三区| 国产精品久线观看视频| 麻豆专区一区二区三区四区五区| 久久精品国产亚洲高清剧情介绍 | 久久精品久久99精品久久| 99久久夜色精品国产网站| 久久久精品影视| 九一久久久久久| 777a∨成人精品桃花网| 亚洲高清在线精品| 色999日韩国产欧美一区二区| 欧美理论电影在线| 亚洲人成影院在线观看| 成人h动漫精品一区二| 久久久精品人体av艺术| 国产乱人伦偷精品视频免下载| 大尺度一区二区| 国产女同互慰高潮91漫画| 久草这里只有精品视频|