offset.c

来自「是关于linux2.5.1的完全源码」· C语言 代码 · 共 67 行

C
67
字号
/* Written 2000 by Andi Kleen *//* This program is never executed, just its assembly is examined for offsets    (this trick is needed to get cross compiling right) */  /* $Id: offset.c,v 1.13 2002/01/08 15:19:57 ak Exp $ */#define ASM_OFFSET_H 1#ifndef __KERNEL__#define __KERNEL__ #endif#include <linux/sched.h> #include <linux/stddef.h>#include <linux/errno.h> #include <asm/pda.h>#include <asm/hardirq.h>#include <asm/processor.h>#include <asm/segment.h>#include <asm/thread_info.h>#define output(x) asm volatile ("--- " x)#define outconst(x,y) asm volatile ("--- " x : : "i" (y)) int main(void) { 	output("/* Auto generated by arch/../tools/offset.c at " __DATE__ ". Do not edit. */\n"); 	output("#ifndef ASM_OFFSET_H\n");	output("#define ASM_OFFSET_H 1\n"); 	// task struct entries needed by entry.S#define ENTRY(entry) outconst("#define tsk_" #entry " %0", offsetof(struct task_struct, entry))	ENTRY(state);	ENTRY(flags); 	ENTRY(thread); #undef ENTRY#define ENTRY(entry) outconst("#define threadinfo_" #entry " %0", offsetof(struct thread_info, entry))	ENTRY(flags);	ENTRY(addr_limit);	ENTRY(preempt_count);#undef ENTRY#define ENTRY(entry) outconst("#define pda_" #entry " %0", offsetof(struct x8664_pda, entry))	ENTRY(kernelstack); 	ENTRY(oldrsp); 	ENTRY(pcurrent); 	ENTRY(irqrsp);	ENTRY(irqcount);	ENTRY(cpunumber);	ENTRY(irqstackptr);	ENTRY(__softirq_pending); 	ENTRY(__local_irq_count);	ENTRY(__local_bh_count);	ENTRY(__ksoftirqd_task);	ENTRY(level4_pgt);	ENTRY(me);#undef ENTRY	output("#ifdef __ASSEMBLY__"); #define CONST(t) outconst("#define " #t " %0", t)	CONST(TASK_SIZE);	CONST(SIGCHLD); 	CONST(CLONE_VFORK); 	CONST(CLONE_VM); #undef CONST	output("#endif"); 	output("#endif\n"); 	return(0); } 

⌨️ 快捷键说明

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