diff options
author | Len Brown <len.brown@intel.com> | 2006-07-10 08:39:47 +0200 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2006-07-10 08:39:47 +0200 |
commit | c0dc250e89cb8af77c5689b36eda851158e8573e (patch) | |
tree | 41c11fb811b31ee28bd20befdc685384f96db1fc /include/acpi/platform | |
parent | Pull acpica-20060707 into test branch (diff) | |
parent | ACPI: acpi_os_allocate() fixes (diff) | |
download | linux-c0dc250e89cb8af77c5689b36eda851158e8573e.tar.xz linux-c0dc250e89cb8af77c5689b36eda851158e8573e.zip |
Pull acpi_os_allocate into test branch
Diffstat (limited to 'include/acpi/platform')
-rw-r--r-- | include/acpi/platform/aclinux.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h index 1cb51bf96ece..47faf27913a5 100644 --- a/include/acpi/platform/aclinux.h +++ b/include/acpi/platform/aclinux.h @@ -105,4 +105,26 @@ static inline acpi_thread_id acpi_os_get_thread_id(void) { return current; } +/* + * The irqs_disabled() check is for resume from RAM. + * Interrupts are off during resume, just like they are for boot. + * However, boot has (system_state != SYSTEM_RUNNING) + * to quiet __might_sleep() in kmalloc() and resume does not. + */ +#include <acpi/actypes.h> +static inline void *acpi_os_allocate(acpi_size size) { + return kmalloc(size, irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL); +} +static inline void *acpi_os_allocate_zeroed(acpi_size size) { + return kzalloc(size, irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL); +} + +static inline void *acpi_os_acquire_object(acpi_cache_t * cache) { + return kmem_cache_zalloc(cache, irqs_disabled() ? GFP_ATOMIC : GFP_KERNEL); +} + +#define ACPI_ALLOCATE(a) acpi_os_allocate(a) +#define ACPI_ALLOCATE_ZEROED(a) acpi_os_allocate_zeroed(a) +#define ACPI_FREE(a) kfree(a) + #endif /* __ACLINUX_H__ */ |