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
drivers
acpi
cm_sbs.c
Go to the documentation of this file.
1
/*
2
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3
*
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or (at
7
* your option) any later version.
8
*
9
* This program is distributed in the hope that it will be useful, but
10
* WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12
* General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with this program; if not, write to the Free Software Foundation, Inc.,
16
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
17
*
18
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
19
*/
20
21
#include <linux/kernel.h>
22
#include <linux/module.h>
23
#include <
linux/init.h
>
24
#include <
linux/acpi.h
>
25
#include <linux/types.h>
26
#include <
linux/proc_fs.h
>
27
#include <
linux/seq_file.h
>
28
#include <
acpi/acpi_bus.h
>
29
#include <
acpi/acpi_drivers.h
>
30
31
#define PREFIX "ACPI: "
32
33
ACPI_MODULE_NAME
(
"cm_sbs"
);
34
#define ACPI_AC_CLASS "ac_adapter"
35
#define ACPI_BATTERY_CLASS "battery"
36
#define _COMPONENT ACPI_SBS_COMPONENT
37
static
struct
proc_dir_entry
*acpi_ac_dir;
38
static
struct
proc_dir_entry
*acpi_battery_dir;
39
40
static
DEFINE_MUTEX
(cm_sbs_mutex);
41
42
static
int
lock_ac_dir_cnt;
43
static
int
lock_battery_dir_cnt;
44
45
struct
proc_dir_entry
*
acpi_lock_ac_dir
(
void
)
46
{
47
mutex_lock
(&cm_sbs_mutex);
48
if
(!acpi_ac_dir)
49
acpi_ac_dir =
proc_mkdir
(
ACPI_AC_CLASS
,
acpi_root_dir
);
50
if
(acpi_ac_dir) {
51
lock_ac_dir_cnt++;
52
}
else
{
53
printk
(
KERN_ERR
PREFIX
54
"Cannot create %s\n"
,
ACPI_AC_CLASS
);
55
}
56
mutex_unlock
(&cm_sbs_mutex);
57
return
acpi_ac_dir;
58
}
59
EXPORT_SYMBOL
(
acpi_lock_ac_dir
);
60
61
void
acpi_unlock_ac_dir
(
struct
proc_dir_entry
*acpi_ac_dir_param)
62
{
63
mutex_lock
(&cm_sbs_mutex);
64
if
(acpi_ac_dir_param)
65
lock_ac_dir_cnt--;
66
if
(lock_ac_dir_cnt == 0 && acpi_ac_dir_param && acpi_ac_dir) {
67
remove_proc_entry
(
ACPI_AC_CLASS
,
acpi_root_dir
);
68
acpi_ac_dir =
NULL
;
69
}
70
mutex_unlock
(&cm_sbs_mutex);
71
}
72
EXPORT_SYMBOL
(
acpi_unlock_ac_dir
);
73
74
struct
proc_dir_entry
*
acpi_lock_battery_dir
(
void
)
75
{
76
mutex_lock
(&cm_sbs_mutex);
77
if
(!acpi_battery_dir) {
78
acpi_battery_dir =
79
proc_mkdir
(
ACPI_BATTERY_CLASS
,
acpi_root_dir
);
80
}
81
if
(acpi_battery_dir) {
82
lock_battery_dir_cnt++;
83
}
else
{
84
printk
(
KERN_ERR
PREFIX
85
"Cannot create %s\n"
,
ACPI_BATTERY_CLASS
);
86
}
87
mutex_unlock
(&cm_sbs_mutex);
88
return
acpi_battery_dir;
89
}
90
EXPORT_SYMBOL
(
acpi_lock_battery_dir
);
91
92
void
acpi_unlock_battery_dir
(
struct
proc_dir_entry
*acpi_battery_dir_param)
93
{
94
mutex_lock
(&cm_sbs_mutex);
95
if
(acpi_battery_dir_param)
96
lock_battery_dir_cnt--;
97
if
(lock_battery_dir_cnt == 0 && acpi_battery_dir_param
98
&& acpi_battery_dir) {
99
remove_proc_entry
(
ACPI_BATTERY_CLASS
,
acpi_root_dir
);
100
acpi_battery_dir =
NULL
;
101
}
102
mutex_unlock
(&cm_sbs_mutex);
103
return
;
104
}
105
EXPORT_SYMBOL
(
acpi_unlock_battery_dir
);
Generated on Thu Jan 10 2013 13:23:52 for Linux Kernel by
1.8.2