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

📄 devintrts.c

📁 著名操作系统Plan 9的第三版的部分核心源代码。现在很难找到了。Plan 9是bell实验室开发的Unix后继者。
💻 C
字号:
/* */#include "u.h"#include "../port/lib.h"#include "mem.h"#include "dat.h"#include "fns.h"#include "../port/error.h"enum {	Qdir,	Qintrts,};static Dirtab intrtsdir[] = {	"intrts",	{ Qintrts, 0 },		0,	0666,};void (*saveintrts)(void) = nil;/* interrupt timestamps, trap() fills intrts each interrupt */uvlong	intrts;static	struct {	Lock;	int	vno;		/* vector to save timestamps for */	int	n;		/* number of valid timestamps in ts[] */	uvlong	ts[128];	/* time stamps */} tsalloc;/* called with interrupts off by interrupt routine */void_saveintrts(void){	ilock(&tsalloc);	if(tsalloc.n < nelem(tsalloc.ts))		tsalloc.ts[tsalloc.n++] = m->intrts;	iunlock(&tsalloc);}/* read interrupt timestamps */static longreadintrts(void *buf, int n){	n /= sizeof(uvlong);	if(n <= 0)		return 0;	ilock(&tsalloc);	if(n > tsalloc.n)		n = tsalloc.n;	memmove(buf, tsalloc.ts, n*sizeof(uvlong));	tsalloc.n = 0;	iunlock(&tsalloc);	return n*sizeof(uvlong);}static voidintrtsreset(void){	saveintrts = _saveintrts;}static Chan*intrtsattach(char* spec){	return devattach('Z', spec);	/* everything good was taken */}intintrtswalk(Chan* c, char* name){	return devwalk(c, name, intrtsdir, nelem(intrtsdir), devgen);}static voidintrtsstat(Chan* c, char* dp){	devstat(c, dp, intrtsdir, nelem(intrtsdir), devgen);}static Chan*intrtsopen(Chan* c, int omode){	return devopen(c, omode, intrtsdir, nelem(intrtsdir), devgen);}static voidintrtsclose(Chan*){}static longintrtsread(Chan* c, void* a, long n, vlong){	switch(c->qid.path & ~CHDIR){	case Qdir:		return devdirread(c, a, n, intrtsdir, nelem(intrtsdir), devgen);	case Qintrts:		return readintrts(a, n);	}	error(Eperm);	return 0;}static longintrtswrite(Chan*, void*, long, vlong){	error(Eperm);	return 0;}Dev intrtsdevtab = {	'Z',	"intrts",	intrtsreset,	devinit,	intrtsattach,	devclone,	intrtswalk,	intrtsstat,	intrtsopen,	devcreate,	intrtsclose,	intrtsread,	devbread,	intrtswrite,	devbwrite,	devremove,	devwstat,};

⌨️ 快捷键说明

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