2.4 内核中的/usr/include/asm/page.h

本文详细介绍了x86架构下Linux内核中的内存管理宏定义,包括页大小、页掩码、大页管理等关键概念,并展示了根据不同处理器特性选择不同内存操作方式的方法。

#ifndef _I386_PAGE_H
#define _I386_PAGE_H

/* PAGE_SHIFT determines the page size */
#define PAGE_SHIFT 12
#define PAGE_SIZE (1UL << PAGE_SHIFT)
#define PAGE_MASK (~(PAGE_SIZE-1))

#define LARGE_PAGE_MASK (~(LARGE_PAGE_SIZE-1))
#define LARGE_PAGE_SIZE (1UL << PMD_SHIFT)

#ifdef __KERNEL__
#ifndef __ASSEMBLY__

#include <linux/config.h>

#ifdef CONFIG_X86_USE_3DNOW

#include <asm/mmx.h>

#define clear_page(page) mmx_clear_page((void *)(page))
#define copy_page(to,from) mmx_copy_page(to,from)

#else

/*
* On older X86 processors it's not a win to use MMX here it seems.
* Maybe the K6-III ?
*/

#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE)
#define copy_page(to,from) memcpy((void *)(to), (void *)(from), PAGE_SIZE)

#endif

#define clear_user_page(page, vaddr, pg) clear_page(page)
#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)

/*
* These are used to make use of C type-checking..
*/
#ifdef CONFIG_X86_PAE
typedef struct { unsigned long pte_low, pte_high; } pte_t;
typedef struct { unsigned long long pmd; } pmd_t;
typedef struct { unsigned long long pgd; } pgd_t;
#define pte_val(x) ((x).pte_low | ((unsigned long long)(x).pte_high << 32))
#define HPAGE_SHIFT 21
#else
typedef struct { unsigned long pte_low; } pte_t;
typedef struct { unsigned long pmd; } pmd_t;
typedef struct { unsigned long pgd; } pgd_t;
#define boot_pte_t pte_t /* or would you rather have a typedef */
#define pte_val(x) ((x).pte_low)
#define HPAGE_SHIFT 22
#endif
#define PTE_MASK PAGE_MASK

#ifdef CONFIG_HUGETLB_PAGE
#define HPAGE_SIZE ((1UL) << HPAGE_SHIFT)
#define HPAGE_MASK (~(HPAGE_SIZE - 1))
#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
#endif

typedef struct { unsigned long pgprot; } pgprot_t;

#define pmd_val(x) ((x).pmd)
#define pgd_val(x) ((x).pgd)
#define pgprot_val(x) ((x).pgprot)

#define __pte(x) ((pte_t) { (x) } )
#define __pmd(x) ((pmd_t) { (x) } )
#define __pgd(x) ((pgd_t) { (x) } )
#define __pgprot(x) ((pgprot_t) { (x) } )

#endif /* !__ASSEMBLY__ */

/* to align the pointer to the (next) page boundary */
#define PAGE_ALIGN(addr) (((addr)+PAGE_SIZE-1)&PAGE_MASK)

/*
* This handles the memory map.. We could make this a config
* option, but too many people screw it up, and too few need
* it.
*
* A __PAGE_OFFSET of 0xC0000000 means that the kernel has
* a virtual address space of one gigabyte, which limits the
* amount of physical memory you can use to about 950MB. 
*
* If you want more physical memory than this then see the CONFIG_HIGHMEM4G
* and CONFIG_HIGHMEM64G options in the kernel configuration.
*/

/*
* This much address space is reserved for vmalloc() and iomap()
* as well as fixmap mappings.
*/
#define __VMALLOC_RESERVE (128 << 20)

#ifndef __ASSEMBLY__

/* Pure 2^n version of get_order */
static __inline__ int get_order(unsigned long size)
{
int order;

size = (size-1) >> (PAGE_SHIFT-1);
order = -1;
do {
   size >>= 1;
   order++;
} while (size);
return order;
}

#endif /* __ASSEMBLY__ */

#ifdef __ASSEMBLY__
#define __PAGE_OFFSET   (0xC0000000)
#else
#define __PAGE_OFFSET   (0xC0000000UL)
#endif


#define PAGE_OFFSET   ((unsigned long)__PAGE_OFFSET)
#define VMALLOC_RESERVE   ((unsigned long)__VMALLOC_RESERVE)
#define MAXMEM    (-__PAGE_OFFSET-__VMALLOC_RESERVE)
#define __pa(x)    ((unsigned long)(x)-PAGE_OFFSET)
#define __va(x)    ((void *)((unsigned long)(x)+PAGE_OFFSET))
#define pfn_to_kaddr(pfn)      __va((pfn) << PAGE_SHIFT)
#ifndef CONFIG_DISCONTIGMEM
#define pfn_to_page(pfn) (mem_map + (pfn))
#define page_to_pfn(page) ((unsigned long)((page) - mem_map))
#define pfn_valid(pfn)   ((pfn) < max_mapnr)
#endif /* !CONFIG_DISCONTIGMEM */
#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)

#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)

#define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | /
     VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC)

#endif /* __KERNEL__ */

#endif /* _I386_PAGE_H */

 

 

 

===============

此文件转载自

http://hi.baidu.com/bbps/blog/item/aeaeda2a879c219c023bf657.html

 

参考

http://xmecity.5d6d.com/viewthread.php?tid=75

================================

 

root@ubuntu:/usr/include/asm# ls

a.out.h        fcntl.h     mman.h            posix_types.h      sigcontext32.h  termbits.h

auxvec.h       ioctl.h     msgbuf.h          prctl.h            sigcontext.h    termios.h

bitsperlong.h  ioctls.h    msr.h             processor-flags.h  siginfo.h       types.h

boot.h         ipcbuf.h    msr-index.h       ptrace-abi.h       signal.h        ucontext.h

bootparam.h    ist.h       mtrr.h            ptrace.h           socket.h        unistd_32.h

byteorder.h    kvm.h       param.h           resource.h         sockios.h       unistd_64.h

debugreg.h     kvm_para.h  poll.h            sembuf.h           statfs.h        unistd.h

e820.h         ldt.h       posix_types_32.h  setup.h            stat.h          vm86.h

errno.h        mce.h       posix_types_64.h  shmbuf.h           swab.h          vsyscall.h

把这个文件,放入到这里。

 

[root@test-node1 tools]# ./opensnoop In file included from /virtual/main.c:2: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/uapi/linux/ptrace.h:143: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/ptrace.h:5: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/segment.h:266:2: error: expected '(' after 'asm' alternative_io ("lsl %[seg],%[p]", ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/alternative.h:240:2: note: expanded from macro 'alternative_io' asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:14: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/pid.h:5: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rculist.h:11: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rcupdate.h:27: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/preempt.h:78: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/preempt.h:7: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/thread_info.h:39: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/thread_info.h:12: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/page.h:12: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/page_64.h:49:2: error: expected '(' after 'asm' alternative_call_2(clear_page_orig, ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/alternative.h:256:2: note: expanded from macro 'alternative_call_2' asm_inline volatile (ALTERNATIVE_2("call %P[old]", "call %P[new1]", feature1,\ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:14: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/pid.h:5: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rculist.h:11: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rcupdate.h:27: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/preempt.h:78: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/preempt.h:7: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/thread_info.h:39: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/thread_info.h:53: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/cpufeature.h:5: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/processor.h:24: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/special_insns.h:207:2: error: expected '(' after 'asm' alternative_io(".byte " __stringify(NOP_DS_PREFIX) "; clflush %P0", ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/alternative.h:240:2: note: expanded from macro 'alternative_io' asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:14: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/pid.h:5: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rculist.h:11: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rcupdate.h:27: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/preempt.h:78: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/preempt.h:7: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/thread_info.h:39: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/thread_info.h:53: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/cpufeature.h:5: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/processor.h:786:2: error: expected '(' after 'asm' alternative_input(BASE_PREFETCH, "prefetchnta %P1", ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/alternative.h:221:2: note: expanded from macro 'alternative_input' asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:14: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/pid.h:5: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rculist.h:11: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rcupdate.h:27: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/preempt.h:78: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/preempt.h:7: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/thread_info.h:39: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/thread_info.h:53: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/cpufeature.h:5: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/processor.h:798:2: error: expected '(' after 'asm' alternative_input(BASE_PREFETCH, "prefetchw %P1", ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/alternative.h:221:2: note: expanded from macro 'alternative_input' asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:14: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/pid.h:5: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rculist.h:11: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rcupdate.h:27: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/preempt.h:78: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/preempt.h:7: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/thread_info.h:147:2: error: expected '(' after 'asm' WARN(1, "Buffer overflow detected (%d < %lu)!\n", size, count); ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/asm-generic/bug.h:124:3: note: expanded from macro 'WARN' __WARN_printf(TAINT_WARN, format); \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/asm-generic/bug.h:93:3: note: expanded from macro '__WARN_printf' __WARN_FLAGS(BUGFLAG_NO_CUT_HERE | BUGFLAG_TAINT(taint));\ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:79:2: note: expanded from macro '__WARN_FLAGS' _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags)); \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:35:2: note: expanded from macro '_BUG_FLAGS' asm_inline volatile("1:\t" ins "\n" \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:14: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/pid.h:5: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rculist.h:11: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rcupdate.h:27: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/preempt.h:78: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/preempt.h:7: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/thread_info.h:163:6: error: expected '(' after 'asm' if (WARN_ON_ONCE(bytes > INT_MAX)) ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/asm-generic/bug.h:98:3: note: expanded from macro 'WARN_ON_ONCE' __WARN_FLAGS(BUGFLAG_ONCE | \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:79:2: note: expanded from macro '__WARN_FLAGS' _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags)); \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:35:2: note: expanded from macro '_BUG_FLAGS' asm_inline volatile("1:\t" ins "\n" \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:14: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/pid.h:5: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rculist.h:11: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rcupdate.h:895:2: error: expected '(' after 'asm' WARN_ON_ONCE(func != (rcu_callback_t)~0L); ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/asm-generic/bug.h:98:3: note: expanded from macro 'WARN_ON_ONCE' __WARN_FLAGS(BUGFLAG_ONCE | \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:79:2: note: expanded from macro '__WARN_FLAGS' _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags)); \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:35:2: note: expanded from macro '_BUG_FLAGS' asm_inline volatile("1:\t" ins "\n" \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:15: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sem.h:5: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/uapi/linux/sem.h:5: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/ipc.h:7: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/rhashtable-types.h:15: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/workqueue.h:9: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/timer.h:6: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/ktime.h:171:2: error: expected '(' after 'asm' WARN_ON(div < 0); ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/asm-generic/bug.h:115:3: note: expanded from macro 'WARN_ON' __WARN(); \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/asm-generic/bug.h:90:19: note: expanded from macro '__WARN' #define __WARN() __WARN_FLAGS(BUGFLAG_TAINT(TAINT_WARN)) ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:79:2: note: expanded from macro '__WARN_FLAGS' _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags)); \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:35:2: note: expanded from macro '_BUG_FLAGS' asm_inline volatile("1:\t" ins "\n" \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:20: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/hrtimer.h:19: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/percpu.h:7: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/smp.h:68: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/smp.h:13: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/apic.h:11: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/fixmap.h:190: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/asm-generic/fixmap.h:19: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/mm_types.h:14: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/uprobes.h:49: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/uprobes.h:13: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/notifier.h:16: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/srcu.h:179:2: error: expected '(' after 'asm' WARN_ON_ONCE(idx & ~0x1); ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/asm-generic/bug.h:98:3: note: expanded from macro 'WARN_ON_ONCE' __WARN_FLAGS(BUGFLAG_ONCE | \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:79:2: note: expanded from macro '__WARN_FLAGS' _BUG_FLAGS(ASM_UD2, BUGFLAG_WARNING|(flags)); \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:35:2: note: expanded from macro '_BUG_FLAGS' asm_inline volatile("1:\t" ins "\n" \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:20: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/hrtimer.h:19: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/percpu.h:7: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/smp.h:68: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/smp.h:13: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/apic.h:11: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/fixmap.h:190: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/asm-generic/fixmap.h:38:2: error: expected '(' after 'asm' BUG_ON(vaddr >= FIXADDR_TOP || vaddr < FIXADDR_START); ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/asm-generic/bug.h:62:57: note: expanded from macro 'BUG_ON' #define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0) ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:73:2: note: expanded from macro 'BUG' _BUG_FLAGS(ASM_UD2, 0); \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/bug.h:35:2: note: expanded from macro '_BUG_FLAGS' asm_inline volatile("1:\t" ins "\n" \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ In file included from /virtual/main.c:4: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/sched.h:20: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/hrtimer.h:19: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/percpu.h:7: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/smp.h:68: In file included from /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/smp.h:13: /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/apic.h:107:2: error: expected '(' after 'asm' alternative_io("movl %0, %P1", "xchgl %0, %P1", X86_BUG_11AP, ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/arch/x86/include/asm/alternative.h:240:2: note: expanded from macro 'alternative_io' asm_inline volatile (ALTERNATIVE(oldinstr, newinstr, feature) \ ^ /lib/modules/5.4.203-1.el7.elrepo.x86_64/build/include/linux/compiler_types.h:214:24: note: expanded from macro 'asm_inline' #define asm_inline asm __inline ^ 12 errors generated. Traceback (most recent call last): File "./opensnoop", line 180, in <module> b = BPF(text=bpf_text) File "/usr/lib/python2.7/site-packages/bcc/__init__.py", line 325, in __init__ raise Exception("Failed to compile BPF text") Exception: Failed to compile BPF text
09-19
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

等风来不如迎风去

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值