-
Notifications
You must be signed in to change notification settings - Fork 40
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mm: Add notifier framework for showing memory
There are many drivers in the kernel which can hold on to lots of memory. It can be useful to dump out all those drivers at key points in the kernel. Introduct a notifier framework for dumping this information. When the notifiers are called, drivers can dump out the state of any memory they may be using. Change-Id: Ifb2946964bf5d072552dd56d8d6dfdd794af6d84 Signed-off-by: Laura Abbott <[email protected]>
- Loading branch information
1 parent
21b9c18
commit 821701a
Showing
3 changed files
with
76 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
/* | ||
* Copyright (c) 2014, The Linux Foundation. All rights reserved. | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 and | ||
* only version 2 as published by the Free Software Foundation. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
*/ | ||
|
||
#include <linux/notifier.h> | ||
|
||
int show_mem_notifier_register(struct notifier_block *nb); | ||
|
||
int show_mem_notifier_unregister(struct notifier_block *nb); | ||
|
||
void show_mem_call_notifiers(void); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
/* | ||
* Copyright (c) 2014, The Linux Foundation. All rights reserved. | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 and | ||
* only version 2 as published by the Free Software Foundation. | ||
* | ||
* This program is distributed in the hope that it will be useful, | ||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
* GNU General Public License for more details. | ||
*/ | ||
|
||
#include <linux/kernel.h> | ||
#include <linux/notifier.h> | ||
#include <linux/debugfs.h> | ||
#include <linux/fs.h> | ||
#include <linux/init.h> | ||
#include <linux/module.h> | ||
|
||
BLOCKING_NOTIFIER_HEAD(show_mem_notifier); | ||
|
||
int show_mem_notifier_register(struct notifier_block *nb) | ||
{ | ||
return blocking_notifier_chain_register(&show_mem_notifier, nb); | ||
} | ||
|
||
int show_mem_notifier_unregister(struct notifier_block *nb) | ||
{ | ||
return blocking_notifier_chain_unregister(&show_mem_notifier, nb); | ||
} | ||
|
||
void show_mem_call_notifiers(void) | ||
{ | ||
blocking_notifier_call_chain(&show_mem_notifier, 0, NULL); | ||
} | ||
|
||
static int show_mem_notifier_get(void *dat, u64 *val) | ||
{ | ||
show_mem_call_notifiers(); | ||
*val = 0; | ||
return 0; | ||
} | ||
|
||
DEFINE_SIMPLE_ATTRIBUTE(show_mem_notifier_debug_ops, show_mem_notifier_get, | ||
NULL, "%llu\n"); | ||
|
||
int show_mem_notifier_debugfs_register(void) | ||
{ | ||
debugfs_create_file("show_mem_notifier", 0664, NULL, NULL, | ||
&show_mem_notifier_debug_ops); | ||
|
||
return 0; | ||
} | ||
late_initcall(show_mem_notifier_debugfs_register); |