ESXi-5.0-GA
This commit is contained in:
parent
0d186246d2
commit
763922b583
1764 changed files with 754695 additions and 647927 deletions
|
@ -0,0 +1,10 @@
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DO NOT EDIT THIS FILE - IT IS GENERATED BY THE DRIVER BUILD.
|
||||||
|
*
|
||||||
|
* If you need to change the driver's name spaces, look in the scons
|
||||||
|
* files for the driver's defineVmkDriver() rule.
|
||||||
|
*/
|
||||||
|
|
||||||
|
VMK_NAMESPACE_PROVIDES("com.vmware.vmkplexer", "1.0");
|
||||||
|
#define VMKLNX_MY_NAMESPACE_VERSION "1.0"
|
|
@ -314,7 +314,7 @@ static __inline__ void atomic64_set(atomic64_t *v, long i)
|
||||||
*/
|
*/
|
||||||
__asm__ __volatile__(
|
__asm__ __volatile__(
|
||||||
"movq %1, %0"
|
"movq %1, %0"
|
||||||
: "+m" (v->counter)
|
: "=m" (v->counter)
|
||||||
: "r" (i)
|
: "r" (i)
|
||||||
);
|
);
|
||||||
}
|
}
|
|
@ -1,6 +1,26 @@
|
||||||
#ifndef __ASM_X8664_BUG_H
|
#ifndef __ASM_X8664_BUG_H
|
||||||
#define __ASM_X8664_BUG_H 1
|
#define __ASM_X8664_BUG_H 1
|
||||||
|
|
||||||
|
#if defined(__VMKLNX__)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For vmklinux, the trick below doesn't work. It works by raising a
|
||||||
|
* ud2 exception, and then the exception handler knows the rip is
|
||||||
|
* pointing to a struct bug_frame. However, pushq can only have a
|
||||||
|
* 32-bit immediate, so we can't push the 64-address of __FILE__ into
|
||||||
|
* it (this works on linux, because linux is loaded at -2Gb, and when
|
||||||
|
* 'signed int filename' is cast to long it is sign-extended, the top
|
||||||
|
* bits filled to 0xffff... and the address is correct. Besides this,
|
||||||
|
* the vmkernel ud2 exception handler doesn't know anything about
|
||||||
|
* this. So the long and the short of it is - we don't do any of this
|
||||||
|
* arch specific BUG() stuff, and just fall back to the generic
|
||||||
|
* panic()
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <asm-generic/bug.h>
|
||||||
|
|
||||||
|
#else /* !defined(__VMKLNX__) */
|
||||||
|
|
||||||
#include <linux/stringify.h>
|
#include <linux/stringify.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -21,23 +41,7 @@ struct bug_frame {
|
||||||
the disassembler. Thanks to Jan Beulich & Suresh Siddha
|
the disassembler. Thanks to Jan Beulich & Suresh Siddha
|
||||||
for nice instruction selection.
|
for nice instruction selection.
|
||||||
The magic numbers generate mov $64bitimm,%eax ; ret $offset. */
|
The magic numbers generate mov $64bitimm,%eax ; ret $offset. */
|
||||||
/**
|
|
||||||
* BUG - Prints a message
|
|
||||||
*
|
|
||||||
* Prints a log message
|
|
||||||
*
|
|
||||||
* SYNOPSIS:
|
|
||||||
* #define BUG()
|
|
||||||
*
|
|
||||||
* ESX Deviation Notes:
|
|
||||||
* As in x86_64 most variants of Linux, generates a
|
|
||||||
* system stop (panic).
|
|
||||||
*
|
|
||||||
* RETURN VALUE:
|
|
||||||
* None
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/* _VMKLNX_CODECHECK_: BUG */
|
|
||||||
#define BUG() \
|
#define BUG() \
|
||||||
asm volatile( \
|
asm volatile( \
|
||||||
"ud2 ; pushq $%c1 ; ret $%c0" :: \
|
"ud2 ; pushq $%c1 ; ret $%c0" :: \
|
||||||
|
@ -49,3 +53,5 @@ static inline void out_of_line_bug(void) { }
|
||||||
|
|
||||||
#include <asm-generic/bug.h>
|
#include <asm-generic/bug.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif /* defined(__VMKLNX __) */
|
|
@ -209,18 +209,6 @@ static inline compat_uptr_t ptr_to_compat(void __user *uptr)
|
||||||
return (u32)(unsigned long)uptr;
|
return (u32)(unsigned long)uptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* compat_alloc_user_space - <1 Line Description>
|
|
||||||
* @<arg1>: <first argument description>
|
|
||||||
* @<arg2>: <second argument description>
|
|
||||||
*
|
|
||||||
* <full description>
|
|
||||||
*
|
|
||||||
* ESX Deviation Notes:
|
|
||||||
* <Describes how ESX implementation is different from standard Linux.>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/* _VMKLNX_CODECHECK_: compat_alloc_user_space */
|
|
||||||
#if !defined(__VMKLNX__)
|
#if !defined(__VMKLNX__)
|
||||||
static __inline__ void __user *compat_alloc_user_space(long len)
|
static __inline__ void __user *compat_alloc_user_space(long len)
|
||||||
{
|
{
|
|
@ -78,7 +78,10 @@
|
||||||
#define X86_FEATURE_CID (4*32+10) /* Context ID */
|
#define X86_FEATURE_CID (4*32+10) /* Context ID */
|
||||||
#define X86_FEATURE_CX16 (4*32+13) /* CMPXCHG16B */
|
#define X86_FEATURE_CX16 (4*32+13) /* CMPXCHG16B */
|
||||||
#define X86_FEATURE_XTPR (4*32+14) /* Send Task Priority Messages */
|
#define X86_FEATURE_XTPR (4*32+14) /* Send Task Priority Messages */
|
||||||
|
#if defined(__VMKLNX__)
|
||||||
|
/* From Linux 2.6.29 arch/x86/include/asm/cpufeature.h */
|
||||||
|
#define X86_FEATURE_DCA (4*32+18) /* Direct Cache Access */
|
||||||
|
#endif /* defined(__VMKLNX__) */
|
||||||
/* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */
|
/* VIA/Cyrix/Centaur-defined CPU features, CPUID level 0xC0000001, word 5 */
|
||||||
#define X86_FEATURE_XSTORE (5*32+ 2) /* on-CPU RNG present (xstore insn) */
|
#define X86_FEATURE_XSTORE (5*32+ 2) /* on-CPU RNG present (xstore insn) */
|
||||||
#define X86_FEATURE_XSTORE_EN (5*32+ 3) /* on-CPU RNG enabled */
|
#define X86_FEATURE_XSTORE_EN (5*32+ 3) /* on-CPU RNG enabled */
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Portions Copyright 2008, 2009 VMware, Inc.
|
* Portions Copyright 2008-2010 VMware, Inc.
|
||||||
*/
|
*/
|
||||||
#ifndef _X86_64_CURRENT_H
|
#ifndef _X86_64_CURRENT_H
|
||||||
#define _X86_64_CURRENT_H
|
#define _X86_64_CURRENT_H
|
||||||
|
@ -9,6 +9,8 @@ struct task_struct;
|
||||||
|
|
||||||
#include <asm/pda.h>
|
#include <asm/pda.h>
|
||||||
|
|
||||||
|
#if defined(__VMKLNX__)
|
||||||
|
#include <vmklinux_dist.h>
|
||||||
/**
|
/**
|
||||||
* get_current - Gets current task pointer for the current world.
|
* get_current - Gets current task pointer for the current world.
|
||||||
*
|
*
|
||||||
|
@ -20,14 +22,15 @@ struct task_struct;
|
||||||
/* _VMKLNX_CODECHECK_: get_current */
|
/* _VMKLNX_CODECHECK_: get_current */
|
||||||
static inline struct task_struct *get_current(void)
|
static inline struct task_struct *get_current(void)
|
||||||
{
|
{
|
||||||
#if defined(__VMKLNX__)
|
|
||||||
extern struct task_struct *vmklnx_GetCurrent(void);
|
|
||||||
return vmklnx_GetCurrent();
|
return vmklnx_GetCurrent();
|
||||||
|
}
|
||||||
#else /* !defined(__VMKLNX__) */
|
#else /* !defined(__VMKLNX__) */
|
||||||
|
static inline struct task_struct *get_current(void)
|
||||||
|
{
|
||||||
struct task_struct *t = read_pda(pcurrent);
|
struct task_struct *t = read_pda(pcurrent);
|
||||||
return t;
|
return t;
|
||||||
#endif /* defined(__VMKLNX__) */
|
|
||||||
}
|
}
|
||||||
|
#endif /* defined(__VMKLNX__) */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* current - Get current task pointer of current task
|
* current - Get current task pointer of current task
|
|
@ -72,7 +72,66 @@ extern void dma_free_coherent(struct device *dev, size_t size, void *vaddr,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if !defined(__VMKLNX__)
|
#if defined(__VMKLNX__)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DMA mapping functions on vmklinux are not inlined so as to
|
||||||
|
* support further revision and improvements for the behavior of
|
||||||
|
* of stable third-party binary drivers using these functions.
|
||||||
|
*/
|
||||||
|
|
||||||
|
extern int dma_mapping_error(dma_addr_t dma_addr);
|
||||||
|
|
||||||
|
#define dma_unmap_page(dev,dma_address,size,dir) \
|
||||||
|
dma_unmap_single(dev,dma_address,size,dir)
|
||||||
|
|
||||||
|
extern dma_addr_t
|
||||||
|
dma_map_single(struct device *hwdev, void *ptr, size_t size,
|
||||||
|
int direction);
|
||||||
|
|
||||||
|
extern dma_addr_t
|
||||||
|
dma_map_page(struct device *hwdev, struct page *page, unsigned long offset,
|
||||||
|
size_t size, int direction);
|
||||||
|
|
||||||
|
extern void
|
||||||
|
dma_unmap_single(struct device *dev, dma_addr_t addr,size_t size,
|
||||||
|
int direction);
|
||||||
|
extern void
|
||||||
|
dma_sync_single_for_cpu(struct device *hwdev, dma_addr_t dma_handle,
|
||||||
|
size_t size, int direction);
|
||||||
|
extern void
|
||||||
|
dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle,
|
||||||
|
size_t size, int direction);
|
||||||
|
extern void
|
||||||
|
dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle,
|
||||||
|
unsigned long offset, size_t size, int direction);
|
||||||
|
extern void
|
||||||
|
dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle,
|
||||||
|
unsigned long offset, size_t size, int direction);
|
||||||
|
extern void
|
||||||
|
dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg,
|
||||||
|
int nelems, int direction);
|
||||||
|
extern void
|
||||||
|
dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg,
|
||||||
|
int nelems, int direction);
|
||||||
|
extern int
|
||||||
|
dma_map_sg(struct device *hwdev, struct scatterlist *sg, int nents, int direction);
|
||||||
|
extern void
|
||||||
|
dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents,
|
||||||
|
int direction);
|
||||||
|
|
||||||
|
struct vmklnx_codma;
|
||||||
|
extern struct vmklnx_codma vmklnx_codma;
|
||||||
|
extern int vmklnx_dma_supported(struct vmklnx_codma *codma,
|
||||||
|
struct device *hwdev, u64 mask);
|
||||||
|
|
||||||
|
static inline int dma_supported(struct device *hwdev, u64 mask)
|
||||||
|
{
|
||||||
|
return vmklnx_dma_supported(&vmklnx_codma, hwdev, mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* !defined(__VMKLNX__) */
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dma_mapping_error - Check a bus address for a mapping error
|
* dma_mapping_error - Check a bus address for a mapping error
|
||||||
* @dma_addr: bus address previously returned by dma_map_single or dma_map_page
|
* @dma_addr: bus address previously returned by dma_map_single or dma_map_page
|
||||||
|
@ -325,58 +384,7 @@ dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents,
|
||||||
|
|
||||||
extern int dma_supported(struct device *hwdev, u64 mask);
|
extern int dma_supported(struct device *hwdev, u64 mask);
|
||||||
|
|
||||||
#else /* defined(__VMKLNX__) */
|
#endif /* !defined(__VMKLNX__) */
|
||||||
|
|
||||||
extern int dma_mapping_error(dma_addr_t dma_addr);
|
|
||||||
|
|
||||||
/* In vmklinux, virt_to_phys & phys_to_virt are real function calls, so
|
|
||||||
* until support for IOMMU is added, it's good to avoid call to
|
|
||||||
* dma_map_single() here since nommu_map_single() calls virt_to_phys().
|
|
||||||
*/
|
|
||||||
#define dma_map_page(dev,page,offset,size,dir) \
|
|
||||||
(((dma_addr_t) page_to_phys(page)) + (offset))
|
|
||||||
#define dma_unmap_page(dev,dma_address,size,dir) do { } while(0)
|
|
||||||
|
|
||||||
extern dma_addr_t
|
|
||||||
dma_map_single(struct device *hwdev, void *ptr, size_t size,
|
|
||||||
int direction);
|
|
||||||
extern void
|
|
||||||
dma_unmap_single(struct device *dev, dma_addr_t addr,size_t size,
|
|
||||||
int direction);
|
|
||||||
extern void
|
|
||||||
dma_sync_single_for_cpu(struct device *hwdev, dma_addr_t dma_handle,
|
|
||||||
size_t size, int direction);
|
|
||||||
extern void
|
|
||||||
dma_sync_single_for_device(struct device *hwdev, dma_addr_t dma_handle,
|
|
||||||
size_t size, int direction);
|
|
||||||
extern void
|
|
||||||
dma_sync_single_range_for_cpu(struct device *hwdev, dma_addr_t dma_handle,
|
|
||||||
unsigned long offset, size_t size, int direction);
|
|
||||||
extern void
|
|
||||||
dma_sync_single_range_for_device(struct device *hwdev, dma_addr_t dma_handle,
|
|
||||||
unsigned long offset, size_t size, int direction);
|
|
||||||
extern void
|
|
||||||
dma_sync_sg_for_cpu(struct device *hwdev, struct scatterlist *sg,
|
|
||||||
int nelems, int direction);
|
|
||||||
extern void
|
|
||||||
dma_sync_sg_for_device(struct device *hwdev, struct scatterlist *sg,
|
|
||||||
int nelems, int direction);
|
|
||||||
extern int
|
|
||||||
dma_map_sg(struct device *hwdev, struct scatterlist *sg, int nents, int direction);
|
|
||||||
extern void
|
|
||||||
dma_unmap_sg(struct device *hwdev, struct scatterlist *sg, int nents,
|
|
||||||
int direction);
|
|
||||||
|
|
||||||
struct vmklnx_codma;
|
|
||||||
extern struct vmklnx_codma vmklnx_codma;
|
|
||||||
extern int vmklnx_dma_supported(struct vmklnx_codma *codma,
|
|
||||||
struct device *hwdev, u64 mask);
|
|
||||||
|
|
||||||
static inline int dma_supported(struct device *hwdev, u64 mask)
|
|
||||||
{
|
|
||||||
return vmklnx_dma_supported(&vmklnx_codma, hwdev, mask);
|
|
||||||
}
|
|
||||||
#endif /* defined(__VMKLNX__) */
|
|
||||||
|
|
||||||
/* same for gart, swiotlb, and nommu */
|
/* same for gart, swiotlb, and nommu */
|
||||||
static inline int dma_get_cache_alignment(void)
|
static inline int dma_get_cache_alignment(void)
|
||||||
|
@ -386,35 +394,7 @@ static inline int dma_get_cache_alignment(void)
|
||||||
|
|
||||||
#define dma_is_consistent(h) 1
|
#define dma_is_consistent(h) 1
|
||||||
|
|
||||||
#if !defined(__VMKLNX__)
|
|
||||||
extern int dma_set_mask(struct device *dev, u64 mask);
|
extern int dma_set_mask(struct device *dev, u64 mask);
|
||||||
#else /* defined(__VMKLNX__) */
|
|
||||||
/**
|
|
||||||
* dma_set_mask - Set a device's allowable DMA mask
|
|
||||||
* @dev: device whose mask is being set
|
|
||||||
* @mask: address bitmask
|
|
||||||
*
|
|
||||||
* Sets the range in which the device can perform DMA operations.
|
|
||||||
* The mask, when bitwise-ANDed with an arbitrary machine address, expresses
|
|
||||||
* the DMA addressability of the device. This mask is used by dma_mapping
|
|
||||||
* functions (ie, dma_alloc_coherent, dma_pool_alloc) to guarantee that the
|
|
||||||
* memory allocated is usable by the device.
|
|
||||||
*
|
|
||||||
* RETURN VALUE:
|
|
||||||
* 0 on success
|
|
||||||
* -EIO if the given mask cannot be used for DMA on the system, or if the
|
|
||||||
* dma_mask has not been previously initialized.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/* _VMKLNX_CODECHECK_: dma_set_mask */
|
|
||||||
static inline int dma_set_mask(struct device *dev, u64 mask)
|
|
||||||
{
|
|
||||||
if (!dev->dma_mask || !dma_supported(dev, mask))
|
|
||||||
return -EIO;
|
|
||||||
*dev->dma_mask = mask;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif /* !defined(__VMKLNX__) */
|
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
dma_cache_sync(void *vaddr, size_t size, enum dma_data_direction dir)
|
dma_cache_sync(void *vaddr, size_t size, enum dma_data_direction dir)
|
|
@ -50,7 +50,7 @@
|
||||||
* In case of any code change below, make sure you
|
* In case of any code change below, make sure you
|
||||||
* go and update the corresponding documentation.
|
* go and update the corresponding documentation.
|
||||||
* The documentation file can be found at
|
* The documentation file can be found at
|
||||||
* vmkdrivers/src26/doc/dummyDefs.doc
|
* vmkdrivers/src_9/doc/dummyDefs.doc
|
||||||
*
|
*
|
||||||
* outb
|
* outb
|
||||||
* outb_p
|
* outb_p
|
||||||
|
@ -171,17 +171,13 @@ static inline void * phys_to_virt(unsigned long address)
|
||||||
*/
|
*/
|
||||||
#if defined(__VMKLNX__)
|
#if defined(__VMKLNX__)
|
||||||
/**
|
/**
|
||||||
* phys_to_page - machine address to a page handle
|
* phys_to_page - machine address to page handle
|
||||||
* @maddr : machine address
|
* @maddr : machine address
|
||||||
*
|
*
|
||||||
* Converts machine address @maddr to a page handle
|
|
||||||
*
|
|
||||||
* SYNOPSIS:
|
|
||||||
* #define phys_to_page(maddr)
|
|
||||||
*
|
|
||||||
* ESX Deviation Notes:
|
* ESX Deviation Notes:
|
||||||
* The resulting page handle cannot be derefenced.
|
* The resulting page handle cannot be derefenced. The returned value
|
||||||
* This page handle needs to be handled through the page api only.
|
* doesn't correspond to an address of page structure but to the actual page
|
||||||
|
* number. This page handle needs to be handled through the page api only.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
/* _VMKLNX_CODECHECK_: phys_to_page */
|
/* _VMKLNX_CODECHECK_: phys_to_page */
|
||||||
|
@ -189,15 +185,10 @@ static inline void * phys_to_virt(unsigned long address)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* page_to_phys - page handle to machine address
|
* page_to_phys - page handle to machine address
|
||||||
* @page: pointer to page handle
|
* @maddr : machine address
|
||||||
*
|
*
|
||||||
* Converts page handle @page to a machine address.
|
* ESX Deviation Notes:
|
||||||
*
|
* None.
|
||||||
* SYNOPSIS:
|
|
||||||
* #define page_to_phys(page)
|
|
||||||
*
|
|
||||||
* RETURN VALUE:
|
|
||||||
* Machine address of the page of type dma_addr_t
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
/* _VMKLNX_CODECHECK_: page_to_phys */
|
/* _VMKLNX_CODECHECK_: page_to_phys */
|
||||||
|
@ -252,8 +243,10 @@ extern void iounmap(volatile void __iomem *addr);
|
||||||
*
|
*
|
||||||
* Allow them on x86 for legacy drivers, though.
|
* Allow them on x86 for legacy drivers, though.
|
||||||
*/
|
*/
|
||||||
|
#if !defined(__VMKLNX__)
|
||||||
#define virt_to_bus virt_to_phys
|
#define virt_to_bus virt_to_phys
|
||||||
#define bus_to_virt phys_to_virt
|
#define bus_to_virt phys_to_virt
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* readX/writeX() are used to access memory mapped devices. On some
|
* readX/writeX() are used to access memory mapped devices. On some
|
||||||
|
@ -462,6 +455,23 @@ static inline void __writel(__u32 b, volatile void __iomem *addr)
|
||||||
{
|
{
|
||||||
*(__force volatile __u32 *)addr = b;
|
*(__force volatile __u32 *)addr = b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*__writeq - write a u64 value to I/O device memory
|
||||||
|
* @b: the u64 value to be written
|
||||||
|
* @addr: the iomapped memory address that is obtained from ioremap()
|
||||||
|
* or from ioremap_nocache()
|
||||||
|
*
|
||||||
|
* This is an internal function. Please call writeq instead.
|
||||||
|
*
|
||||||
|
* RETURN VALUE:
|
||||||
|
* This function does not return a value.
|
||||||
|
*
|
||||||
|
* SEE ALSO:
|
||||||
|
* ioremap(), ioremap_nocache()
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/* _VMKLNX_CODECHECK_: __writeq */
|
||||||
static inline void __writeq(__u64 b, volatile void __iomem *addr)
|
static inline void __writeq(__u64 b, volatile void __iomem *addr)
|
||||||
{
|
{
|
||||||
*(__force volatile __u64 *)addr = b;
|
*(__force volatile __u64 *)addr = b;
|
|
@ -63,18 +63,6 @@ static inline void raw_local_irq_enable(void)
|
||||||
raw_local_irq_restore((flags | (1 << 9)) & ~(1 << 18));
|
raw_local_irq_restore((flags | (1 << 9)) & ~(1 << 18));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* raw_irqs_disabled_flags - <1 Line Description>
|
|
||||||
* @<arg1>: <first argument description>
|
|
||||||
* @<arg2>: <second argument description>
|
|
||||||
*
|
|
||||||
* <full description>
|
|
||||||
*
|
|
||||||
* ESX Deviation Notes:
|
|
||||||
* <Describes how ESX implementation is different from standard Linux.>
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
/* _VMKLNX_CODECHECK_: raw_irqs_disabled_flags */
|
|
||||||
static inline int raw_irqs_disabled_flags(unsigned long flags)
|
static inline int raw_irqs_disabled_flags(unsigned long flags)
|
||||||
{
|
{
|
||||||
return !(flags & (1<<9)) || (flags & (1 << 18));
|
return !(flags & (1<<9)) || (flags & (1 << 18));
|
||||||
|
@ -92,6 +80,18 @@ static inline void raw_local_irq_enable(void)
|
||||||
__asm__ __volatile__("sti" : : : "memory");
|
__asm__ __volatile__("sti" : : : "memory");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* raw_irqs_disabled_flags - Check the irq status in the processor flags
|
||||||
|
* @flags: processor flags
|
||||||
|
*
|
||||||
|
* Tests the processor flags to see if the interrupt flag is disabled.
|
||||||
|
* The ESX implementation is x86 specific.
|
||||||
|
*
|
||||||
|
* RETURN VALUE:
|
||||||
|
* Returns 1 if the irq flags are disabled
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
/* _VMKLNX_CODECHECK_: raw_irqs_disabled_flags */
|
||||||
static inline int raw_irqs_disabled_flags(unsigned long flags)
|
static inline int raw_irqs_disabled_flags(unsigned long flags)
|
||||||
{
|
{
|
||||||
return !(flags & (1 << 9));
|
return !(flags & (1 << 9));
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue