summaryrefslogtreecommitdiff
path: root/include/acpi/platform/aclinux.h
diff options
context:
space:
mode:
authorLen Brown <len.brown@intel.com>2006-07-10 02:39:47 -0400
committerLen Brown <len.brown@intel.com>2006-07-10 02:39:47 -0400
commitc0dc250e89cb8af77c5689b36eda851158e8573e (patch)
tree41c11fb811b31ee28bd20befdc685384f96db1fc /include/acpi/platform/aclinux.h
parent0f12b15ebcedce115a5d8e5ff741e49a7993f67c (diff)
parente21c1ca3f98529921c829a792dfdbfc5a5dc393b (diff)
Pull acpi_os_allocate into test branch
Diffstat (limited to 'include/acpi/platform/aclinux.h')
-rw-r--r--include/acpi/platform/aclinux.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/include/acpi/platform/aclinux.h b/include/acpi/platform/aclinux.h
index 1cb51bf96ec..47faf27913a 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__ */