linkage.h

来自「基于组件方式开发操作系统的OSKIT源代码」· C头文件 代码 · 共 74 行

H
74
字号
#ifndef _LINUX_LINKAGE_H#define _LINUX_LINKAGE_H#ifdef __cplusplus#define CPP_ASMLINKAGE extern "C"#else#define CPP_ASMLINKAGE#endif#if defined __i386__ && (__GNUC__ > 2 || __GNUC_MINOR__ > 7)#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))#else#define asmlinkage CPP_ASMLINKAGE#endif#ifdef OSKIT/* * The _KLUDGE macros simply add an extra level of preprocessor indirection, * allowing the #define's in global.h to apply to symbols used here. */#ifdef __ELF__#define SYMBOL_NAME_STR_KLUDGE(X) #X#define SYMBOL_NAME_STR(X) SYMBOL_NAME_STR_KLUDGE(X)#define SYMBOL_NAME(X) X#define SYMBOL_NAME_LABEL(X) X##:#else#define SYMBOL_NAME_STR_KLUDGE(X) "_"#X#define SYMBOL_NAME_STR(X) SYMBOL_NAME_STR_KLUDGE(X)#define SYMBOL_NAME_KLUDGE(X) _##X#define SYMBOL_NAME(X) SYMBOL_NAME_KLUDGE(X)#define SYMBOL_NAME_LABEL(X) _##X##:#endif#else /* not OSKIT */#define SYMBOL_NAME_STR(X) #X#define SYMBOL_NAME(X) X#ifdef __STDC__#define SYMBOL_NAME_LABEL(X) X##:#else#define SYMBOL_NAME_LABEL(X) X/**/:#endif#endif /* OSKIT */#ifdef __arm__#define __ALIGN .align 0#define __ALIGN_STR ".align 0"#else#ifdef __mc68000__#define __ALIGN .align 4#define __ALIGN_STR ".align 4"#else#if !defined(__i486__) && !defined(__i586__)#define __ALIGN .align 4,0x90#define __ALIGN_STR ".align 4,0x90"#else  /* __i486__/__i586__ */#define __ALIGN .align 16,0x90#define __ALIGN_STR ".align 16,0x90"#endif /* __i486__/__i586__ */#endif /* __mc68000__ */#endif /* __arm__ */#ifdef __ASSEMBLY__#define ALIGN __ALIGN#define ALIGN_STR __ALIGN_STR#define ENTRY(name) \  .globl SYMBOL_NAME(name); \  ALIGN; \  SYMBOL_NAME_LABEL(name)#endif#endif

⌨️ 快捷键说明

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