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

📄 rdb.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 C
字号:
#include "u.h"#include "../port/lib.h"#include "mem.h"#include "dat.h"#include "fns.h"#include "io.h"#include "ureg.h"#define DBG	if(0)scrprint#pragma varargck argpos scrprint 1static Ureg ureg;static voidscrprint(char *fmt, ...){	char buf[128];	va_list va;	int n;	va_start(va, fmt);	n = vseprint(buf, buf+sizeof buf, fmt, va)-buf;	va_end(va);	putstrn(buf, n);}static char*getline(void){	static char buf[128];	int i, c;	for(;;){		for(i=0; i<nelem(buf) && (c=uartgetc()) != '\n'; i++){			DBG("%c...", c);			buf[i] = c;		}		if(i < nelem(buf)){			buf[i] = 0;			return buf;		}	}}static void*addr(char *s, Ureg *ureg, char **p){	ulong a;	a = strtoul(s, p, 16);	if(a < sizeof(Ureg))		return ((uchar*)ureg)+a;	return (void*)a;}static voidtalkrdb(Ureg *ureg){	uchar *a;	char *p;	char *req;	serialoq = nil;	// turn off serial console	kprintoq = nil;	// turn off /dev/kprint if active//	scrprint("Plan 9 debugger\n");	iprint("Edebugger reset\n");	for(;;){		req = getline();		switch(*req){		case 'r':			a = addr(req+1, ureg, nil);			DBG("read %p\n", a);			iprint("R%.8lux %.2ux %.2ux %.2ux %.2ux\n", strtoul(req+1, 0, 16), a[0], a[1], a[2], a[3]);			break;		case 'w':			a = addr(req+1, ureg, &p);			*(ulong*)a = strtoul(p, nil, 16);			iprint("W\n");			break;/* *		case Tmput:			n = min[4];			if(n > 4){				mesg(Rerr, Ecount);				break;			}			a = addr(min+0);			scrprint("mput %.8lux\n", a);			memmove(a, min+5, n);			mesg(Rmput, mout);			break; * */		default:			DBG("unknown %c\n", *req);			iprint("Eunknown message\n");			break;		}	}}voidrdb(void){	splhi();	iprint("rdb...");	callwithureg(talkrdb);}

⌨️ 快捷键说明

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