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

📄 genassym.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic	char	*sccsid = "@(#)genassym.c	4.1	(ULTRIX)	7/2/90";#endif lint/* * Copyright (c) 1982, 1986 Regents of the University of California. * All rights reserved.  The Berkeley software License Agreement * specifies the terms and conditions for redistribution. * *	@(#)genassym.c	7.1 (Berkeley) 6/5/86 *//* * genassym.c -- generate struct offset constants for assembler files * * NOTE: genassym should only be used for struct offsets, or other constants * that cannot be easily #defined.  Constants which appear as #defines and are * needed by assembler files should be obtained by including the appropriate * .h file (adding #ifndef LOCORE's as necessary). *//* * Revision History * * * 16-Apr-90 -- jaw/gmm *	move kstackflg to per-cpu structure. * * 29-Mar-90 gmm/jaw *	Added cpu_fpe_event and cpu_fpe_sendsig * * 03-Mar-90 jaw *	primitive change to optimize mips. *  * 12-Dec-89 -- burns *	Moved SYSPTSIZE calculation here to get better control over *	the size of the SYSMAP. * * 09-Nov-89 -- jaw *	remove unused vmmeter words. * * 13-Oct-89  -- gmm *	smp support * */#include "../machine/pte.h"#include "../h/param.h"#include "../h/buf.h"#include "../h/vmmeter.h"#include "../h/vmparam.h"#include "../h/dir.h"#include "../h/user.h"#include "../h/cmap.h"#include "../h/map.h"#include "../h/proc.h"#include "../h/text.h"#include "../h/mbuf.h"#include "../h/cpudata.h" #ifdef old#include "../h/msgbuf.h"#endif old#ifdef PROFILING#include "prof.h"#endif PROFILING#define CNT_TLBMISS_HACK 0/* * Support for defineition of SYSPTSIZE based upon physmem, * and the buffer cache. */#ifdef	PHYSMEMint	physmem_est = PHYSMEM;#elseint	physmem_est = MINMEM_MB;	/* The way the vax does it. */#endif#ifdef	BUFCACHEint	bufcache = BUFCACHE;#elseint	bufcache = 10;#endifmain(){	register struct proc *p = (struct proc *)0;	register struct vmmeter *vm = (struct vmmeter *)0;	register struct user *up = (struct user *)0;	register struct rusage *rup = (struct rusage *)0;	struct text *tp = (struct text *)0;	struct pcb *pcb = (struct pcb *)0;	struct cpudata *cpu = (struct cpudata *)0;	struct lock_t *l = (struct lock_t *) 0;	int nbufs;	/* number of buffer headers */	int bufptes;	/* # of PTEs for buffer cache */#if CNT_TLBMISS_HACK==1	register struct user *aup = &u;#endif CNT_TLBMISS_HACK#ifdef PROFILING#if PROFTYPE == 4	struct tostruct *tos = (struct tostruct *)0;#endif PROFTYPE == 4#endif PROFILING	printf("#ifdef LOCORE\n");	printf("#define\tP_LINK %d\n", &p->p_link);	printf("#define\tP_RLINK %d\n", &p->p_rlink);	printf("#define\tP_XLINK %d\n", &p->p_xlink);	printf("#define\tP_ADDR %d\n", &p->p_addr);	printf("#define\tP_TLBPID %d\n", &p->p_tlbpid);	printf("#define\tP_TLBINFO %d\n", &p->p_tlbinfo);	printf("#define\tP_PRI %d\n", &p->p_pri);	printf("#define\tP_STAT %d\n", &p->p_stat);	printf("#define\tP_WCHAN %d\n", &p->p_wchan);	printf("#define\tP_TSIZE %d\n", &p->p_tsize);	printf("#define\tP_SSIZE %d\n", &p->p_ssize);	printf("#define\tP_TEXTBR %d\n", &p->p_textbr);	printf("#define\tP_DATABR %d\n", &p->p_databr);	printf("#define\tP_STAKBR %d\n", &p->p_stakbr);	printf("#define\tP_TEXTPT %d\n", &p->p_textpt);	printf("#define\tP_DATAPT %d\n", &p->p_datapt);	printf("#define\tP_STAKPT %d\n", &p->p_stakpt);	printf("#define\tP_TEXTP %d\n", &p->p_textp);	printf("#define\tP_SCHED %d\n", &p->p_sched);	printf("#define\tP_FP %d\n", &p->p_fp);	printf("#define\tP_AFFINITY %d\n", &p->p_affinity);#if CNT_TLBMISS_HACK==1	printf("#define\tCNT_UTLBMISS %d\n", &aup->u_ru.ru_inblock);	printf("#define\tCNT_TLBMISS %d\n", &aup->u_ru.ru_oublock);#endif CNT_TLBMISS_HACK	printf("#define\tX_CADDR %d\n", &tp->x_caddr);	printf("#define\tV_PDMA %d\n", &vm->v_pdma);	printf("#define\tV_FAULTS %d\n", &vm->v_faults);	printf("#define\tV_PGREC %d\n", &vm->v_pgrec);	printf("#define\tV_FASTPGREC %d\n", &vm->v_fastpgrec);#ifdef old	printf("#define\tMSGBUFPTECNT %d\n", btoc(sizeof (struct msgbuf)));#endif old	printf("#define\tNBPW %d\n", NBPW);	printf("#define\tNPTEPG %d\n", NPTEPG);	printf("#define\tU_PROCP %d\n", &up->u_procp);	printf("#define\tU_RU %d\n", &up->u_ru);	printf("#define\tRU_MINFLT %d\n", &rup->ru_minflt);	printf("#define\tPCB_REGS %d\n", pcb->pcb_regs);	printf("#define\tPCB_SSWAP %d\n", &pcb->pcb_sswap);	printf("#define\tPCB_RESCHED %d\n", &pcb->pcb_resched);	printf("#define\tPCB_OWNEDFP %d\n", &pcb->pcb_ownedfp);	printf("#define\tPCB_FPREGS %d\n", pcb->pcb_fpregs);	printf("#define\tPCB_FPC_CSR %d\n", &pcb->pcb_fpc_csr);	printf("#define\tPCB_FPC_EIR %d\n", &pcb->pcb_fpc_eir);	printf("#define\tPCB_C2REGS %d\n", pcb->pcb_c2regs);	printf("#define\tPCB_C3REGS %d\n", pcb->pcb_c3regs);	printf("#define\tPCB_BD_EPC %d\n", &pcb->pcb_bd_epc);	printf("#define\tPCB_BD_CAUSE %d\n", &pcb->pcb_bd_cause);	printf("#define\tPCB_BD_RA %d\n", &pcb->pcb_bd_ra);	printf("#define\tPCB_BD_INSTR %d\n", &pcb->pcb_bd_instr);	printf("#define\tPCB_SOFTFP_PC %d\n", &pcb->pcb_softfp_pc);	printf("#define\tPCB_CPUPTR %d\n", &pcb->pcb_cpuptr);	printf("#define\tCPU_HLOCK %d\n", &cpu->cpu_hlock);	printf("#define\tCPU_FPE_EVENT %d\n", &cpu->cpu_fpe_event);	printf("#define\tCPU_FPE_SENDSIG %d\n", &cpu->cpu_fpe_sendsig);	printf("#define\tCPU_KSTACK %d\n", &cpu->cpu_newpc);	printf("#define\tL_PLOCK %d\n",&l->l_plock);	printf("#define\tL_PC %d\n",&l->l_pc);	printf("#define\tL_WON %d\n",&l->l_won);	printf("#define\tL_LOST %d\n",&l->l_lost);	printf("#define\tCPU_FPOWNER %d\n", &cpu->cpu_archdep.cp_fpowner);	printf("#define\tCPU_NOFAULT %d\n", &cpu->cpu_archdep.cp_nofault);	printf("#define\tCPU_NOFAULT_CAUSE %d\n", &cpu->cpu_archdep.cp_nofault_cause);	printf("#define\tCPU_NOFAULT_BADVADDR %d\n", &cpu->cpu_archdep.cp_nofault_badvaddr);	printf("#define\tCPU_MASK %d\n", &cpu->cpu_mask);#ifdef PROFILING#if PROFTYPE == 4	printf("#define\tTOS_LINK %d\n", &tos->link);	printf("#define\tTOS_COUNT %d\n", &tos->count);	printf("#define\tTOS_SELFPC %d\n", &tos->selfpc);	printf("#define\tTOS_SIZE %d\n", sizeof(*tos));#endif PROFTYPE == 4#endif PROFILING	printf("#endif\n");	/* Adjust physmem_est if necessary. */	if (physmem_est < MINMEM_MB)		physmem_est = MINMEM_MB;	else if (physmem_est > MAXMEM_MB)		physmem_est = MAXMEM_MB;	/* Calculate amount of memory (in 1K units) used for buffer data. */	/* Assume 1 buffer header for every 2K of buffer data. */	nbufs = ((physmem_est * 1024) * ((float)bufcache / 100)) / 2;	/* Calculate # of ptes needed for buffer data. */	bufptes = ((nbufs * MAXBSIZE) /NBPG);	/* the current mips assembler has a bug that causes lcomm directives of	   odd amounts to mess up. This badly trashes the sysmap scheme. Thus this	   hack */	if (bufptes & 1)		bufptes++;	printf("/*physmem=%d bufcache=%d, SYSPTSIZE=%d*/ \n", physmem_est, bufcache, bufptes);	printf("#ifdef SAS\n");	printf("#include \"md.h\"\n");	printf("#define\tSYSPTSIZE (%d+NMD)\n", bufptes);	printf("#else SAS\n");	printf("#define\tSYSPTSIZE %d\n", bufptes);	printf("#endif SAS\n");	exit (0);}

⌨️ 快捷键说明

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