Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
include
acpi
platform
aclinux.h
Go to the documentation of this file.
1
/******************************************************************************
2
*
3
* Name: aclinux.h - OS specific defines, etc. for Linux
4
*
5
*****************************************************************************/
6
7
/*
8
* Copyright (C) 2000 - 2012, Intel Corp.
9
* All rights reserved.
10
*
11
* Redistribution and use in source and binary forms, with or without
12
* modification, are permitted provided that the following conditions
13
* are met:
14
* 1. Redistributions of source code must retain the above copyright
15
* notice, this list of conditions, and the following disclaimer,
16
* without modification.
17
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
18
* substantially similar to the "NO WARRANTY" disclaimer below
19
* ("Disclaimer") and any redistribution must be conditioned upon
20
* including a substantially similar Disclaimer requirement for further
21
* binary redistribution.
22
* 3. Neither the names of the above-listed copyright holders nor the names
23
* of any contributors may be used to endorse or promote products derived
24
* from this software without specific prior written permission.
25
*
26
* Alternatively, this software may be distributed under the terms of the
27
* GNU General Public License ("GPL") version 2 as published by the Free
28
* Software Foundation.
29
*
30
* NO WARRANTY
31
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
34
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
40
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41
* POSSIBILITY OF SUCH DAMAGES.
42
*/
43
44
#ifndef __ACLINUX_H__
45
#define __ACLINUX_H__
46
47
/* Common (in-kernel/user-space) ACPICA configuration */
48
49
#define ACPI_USE_SYSTEM_CLIBRARY
50
#define ACPI_USE_DO_WHILE_0
51
#define ACPI_MUTEX_TYPE ACPI_BINARY_SEMAPHORE
52
53
54
#ifdef __KERNEL__
55
56
#include <linux/string.h>
57
#include <linux/kernel.h>
58
#include <linux/ctype.h>
59
#include <linux/sched.h>
60
#include <
linux/atomic.h
>
61
#include <asm/div64.h>
62
#include <asm/acpi.h>
63
#include <linux/slab.h>
64
#include <
linux/spinlock_types.h
>
65
#include <asm/current.h>
66
67
/* Host-dependent types and defines for in-kernel ACPICA */
68
69
#define ACPI_MACHINE_WIDTH BITS_PER_LONG
70
#define ACPI_EXPORT_SYMBOL(symbol) EXPORT_SYMBOL(symbol);
71
#define strtoul simple_strtoul
72
73
#define acpi_cache_t struct kmem_cache
74
#define acpi_spinlock spinlock_t *
75
#define acpi_cpu_flags unsigned long
76
77
#else
/* !__KERNEL__ */
78
79
#include <stdarg.h>
80
#include <string.h>
81
#include <
stdlib.h
>
82
#include <ctype.h>
83
#include <unistd.h>
84
85
/* Host-dependent types and defines for user-space ACPICA */
86
87
#define ACPI_FLUSH_CPU_CACHE()
88
#define ACPI_CAST_PTHREAD_T(pthread) ((acpi_thread_id) (pthread))
89
90
#if defined(__ia64__) || defined(__x86_64__)
91
#define ACPI_MACHINE_WIDTH 64
92
#define COMPILER_DEPENDENT_INT64 long
93
#define COMPILER_DEPENDENT_UINT64 unsigned long
94
#else
95
#define ACPI_MACHINE_WIDTH 32
96
#define COMPILER_DEPENDENT_INT64 long long
97
#define COMPILER_DEPENDENT_UINT64 unsigned long long
98
#define ACPI_USE_NATIVE_DIVIDE
99
#endif
100
101
#ifndef __cdecl
102
#define __cdecl
103
#endif
104
105
#endif
/* __KERNEL__ */
106
107
/* Linux uses GCC */
108
109
#include <
acpi/platform/acgcc.h
>
110
111
112
#ifdef __KERNEL__
113
#include <
acpi/actypes.h
>
114
/*
115
* Overrides for in-kernel ACPICA
116
*/
117
static
inline
acpi_thread_id
acpi_os_get_thread_id
(
void
)
118
{
119
return
(
acpi_thread_id
)(
unsigned
long
)
current
;
120
}
121
122
/*
123
* The irqs_disabled() check is for resume from RAM.
124
* Interrupts are off during resume, just like they are for boot.
125
* However, boot has (system_state != SYSTEM_RUNNING)
126
* to quiet __might_sleep() in kmalloc() and resume does not.
127
*/
128
static
inline
void
*
acpi_os_allocate
(acpi_size
size
)
129
{
130
return
kmalloc
(size,
irqs_disabled
() ?
GFP_ATOMIC
:
GFP_KERNEL
);
131
}
132
133
static
inline
void
*acpi_os_allocate_zeroed(acpi_size size)
134
{
135
return
kzalloc(size,
irqs_disabled
() ?
GFP_ATOMIC
:
GFP_KERNEL
);
136
}
137
138
static
inline
void
*
acpi_os_acquire_object
(
acpi_cache_t
*
cache
)
139
{
140
return
kmem_cache_zalloc(cache,
141
irqs_disabled
() ?
GFP_ATOMIC
:
GFP_KERNEL
);
142
}
143
144
#define ACPI_ALLOCATE(a) acpi_os_allocate(a)
145
#define ACPI_ALLOCATE_ZEROED(a) acpi_os_allocate_zeroed(a)
146
#define ACPI_FREE(a) kfree(a)
147
148
#ifndef CONFIG_PREEMPT
149
/*
150
* Used within ACPICA to show where it is safe to preempt execution
151
* when CONFIG_PREEMPT=n
152
*/
153
#define ACPI_PREEMPTION_POINT() \
154
do { \
155
if (!irqs_disabled()) \
156
cond_resched(); \
157
} while (0)
158
#endif
159
160
/*
161
* When lockdep is enabled, the spin_lock_init() macro stringifies it's
162
* argument and uses that as a name for the lock in debugging.
163
* By executing spin_lock_init() in a macro the key changes from "lock" for
164
* all locks to the name of the argument of acpi_os_create_lock(), which
165
* prevents lockdep from reporting false positives for ACPICA locks.
166
*/
167
#define acpi_os_create_lock(__handle) \
168
({ \
169
spinlock_t *lock = ACPI_ALLOCATE(sizeof(*lock)); \
170
\
171
if (lock) { \
172
*(__handle) = lock; \
173
spin_lock_init(*(__handle)); \
174
} \
175
lock ? AE_OK : AE_NO_MEMORY; \
176
})
177
178
#endif
/* __KERNEL__ */
179
180
#endif
/* __ACLINUX_H__ */
Generated on Thu Jan 10 2013 14:50:48 for Linux Kernel by
1.8.2