exec.c

来自「这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易」· C语言 代码 · 共 41 行

C
41
字号
#include	"u.h"#include	"mem.h"#include	"dat.h"#include	"fns.h"#include	"lib.h"uchar	pcbpage[64*1024+sizeof(PCB)];PCB		*pcb;void	(*kentry)(Bootconf*);voidgokernel(void){	(*kentry)(&conf);}voidkexec(ulong entry){	uvlong pcbb, paltype;	pcb = (PCB*)(((ulong)pcbpage+0xffff) & ~0xffff);	/* page align, even on 64K page Alphas */	memset(pcb, 0, sizeof(PCB));	pcb->ksp = (uvlong)&entry;	pcb->ptbr = getptbr();	pcb->fen = 1;	conf.pcb = pcb;	pcbb = paddr((uvlong)pcb);	kentry = (void(*)(Bootconf*))entry;	paltype = 2;	/* OSF/1 please */	switch (swppal(paltype, (uvlong)gokernel, pcbb, hwrpb->vptb, pcb->ksp)) {	case 1:		panic("unknown PALcode variant");	case 2:		panic("PALcode variant not loaded");	default:		panic("weird return status from swppal");	}}

⌨️ 快捷键说明

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