diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2010-07-19 06:54:17 -0400 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2010-07-19 06:54:17 -0400 |
commit | a2b6bf63cb7a3e34bd2e753a6f2c2776b5c8496f (patch) | |
tree | 4134b50892d8465fc60d4b4aacd6256fb9785843 /mm/kmemleak.c | |
parent | ab0155a22ad5bda3a6dbfbbecc416cbe92619755 (diff) |
kmemleak: Add DocBook style comments to kmemleak.c
The description and parameters of the kmemleak API weren't obvious. This
patch adds comments clarifying the API usage.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Diffstat (limited to 'mm/kmemleak.c')
-rw-r--r-- | mm/kmemleak.c | 80 |
1 files changed, 59 insertions, 21 deletions
diff --git a/mm/kmemleak.c b/mm/kmemleak.c index d33e990e0668..5f2eb5b23658 100644 --- a/mm/kmemleak.c +++ b/mm/kmemleak.c | |||
@@ -843,10 +843,19 @@ out: | |||
843 | rcu_read_unlock(); | 843 | rcu_read_unlock(); |
844 | } | 844 | } |
845 | 845 | ||
846 | /* | 846 | /** |
847 | * Memory allocation function callback. This function is called from the | 847 | * kmemleak_alloc - register a newly allocated object |
848 | * kernel allocators when a new block is allocated (kmem_cache_alloc, kmalloc, | 848 | * @ptr: pointer to beginning of the object |
849 | * vmalloc etc.). | 849 | * @size: size of the object |
850 | * @min_count: minimum number of references to this object. If during memory | ||
851 | * scanning a number of references less than @min_count is found, | ||
852 | * the object is reported as a memory leak. If @min_count is 0, | ||
853 | * the object is never reported as a leak. If @min_count is -1, | ||
854 | * the object is ignored (not scanned and not reported as a leak) | ||
855 | * @gfp: kmalloc() flags used for kmemleak internal memory allocations | ||
856 | * | ||
857 | * This function is called from the kernel allocators when a new object | ||
858 | * (memory block) is allocated (kmem_cache_alloc, kmalloc, vmalloc etc.). | ||
850 | */ | 859 | */ |
851 | void __ref kmemleak_alloc(const void *ptr, size_t size, int min_count, | 860 | void __ref kmemleak_alloc(const void *ptr, size_t size, int min_count, |
852 | gfp_t gfp) | 861 | gfp_t gfp) |
@@ -860,9 +869,12 @@ void __ref kmemleak_alloc(const void *ptr, size_t size, int min_count, | |||
860 | } | 869 | } |
861 | EXPORT_SYMBOL_GPL(kmemleak_alloc); | 870 | EXPORT_SYMBOL_GPL(kmemleak_alloc); |
862 | 871 | ||
863 | /* | 872 | /** |
864 | * Memory freeing function callback. This function is called from the kernel | 873 | * kmemleak_free - unregister a previously registered object |
865 | * allocators when a block is freed (kmem_cache_free, kfree, vfree etc.). | 874 | * @ptr: pointer to beginning of the object |
875 | * | ||
876 | * This function is called from the kernel allocators when an object (memory | ||
877 | * block) is freed (kmem_cache_free, kfree, vfree etc.). | ||
866 | */ | 878 | */ |
867 | void __ref kmemleak_free(const void *ptr) | 879 | void __ref kmemleak_free(const void *ptr) |
868 | { | 880 | { |
@@ -875,9 +887,14 @@ void __ref kmemleak_free(const void *ptr) | |||
875 | } | 887 | } |
876 | EXPORT_SYMBOL_GPL(kmemleak_free); | 888 | EXPORT_SYMBOL_GPL(kmemleak_free); |
877 | 889 | ||
878 | /* | 890 | /** |
879 | * Partial memory freeing function callback. This function is usually called | 891 | * kmemleak_free_part - partially unregister a previously registered object |
880 | * from bootmem allocator when (part of) a memory block is freed. | 892 | * @ptr: pointer to the beginning or inside the object. This also |
893 | * represents the start of the range to be freed | ||
894 | * @size: size to be unregistered | ||
895 | * | ||
896 | * This function is called when only a part of a memory block is freed | ||
897 | * (usually from the bootmem allocator). | ||
881 | */ | 898 | */ |
882 | void __ref kmemleak_free_part(const void *ptr, size_t size) | 899 | void __ref kmemleak_free_part(const void *ptr, size_t size) |
883 | { | 900 | { |
@@ -890,9 +907,12 @@ void __ref kmemleak_free_part(const void *ptr, size_t size) | |||
890 | } | 907 | } |
891 | EXPORT_SYMBOL_GPL(kmemleak_free_part); | 908 | EXPORT_SYMBOL_GPL(kmemleak_free_part); |
892 | 909 | ||
893 | /* | 910 | /** |
894 | * Mark an already allocated memory block as a false positive. This will cause | 911 | * kmemleak_not_leak - mark an allocated object as false positive |
895 | * the block to no longer be reported as leak and always be scanned. | 912 | * @ptr: pointer to beginning of the object |
913 | * | ||
914 | * Calling this function on an object will cause the memory block to no longer | ||
915 | * be reported as leak and always be scanned. | ||
896 | */ | 916 | */ |
897 | void __ref kmemleak_not_leak(const void *ptr) | 917 | void __ref kmemleak_not_leak(const void *ptr) |
898 | { | 918 | { |
@@ -905,10 +925,14 @@ void __ref kmemleak_not_leak(const void *ptr) | |||
905 | } | 925 | } |
906 | EXPORT_SYMBOL(kmemleak_not_leak); | 926 | EXPORT_SYMBOL(kmemleak_not_leak); |
907 | 927 | ||
908 | /* | 928 | /** |
909 | * Ignore a memory block. This is usually done when it is known that the | 929 | * kmemleak_ignore - ignore an allocated object |
910 | * corresponding block is not a leak and does not contain any references to | 930 | * @ptr: pointer to beginning of the object |
911 | * other allocated memory blocks. | 931 | * |
932 | * Calling this function on an object will cause the memory block to be | ||
933 | * ignored (not scanned and not reported as a leak). This is usually done when | ||
934 | * it is known that the corresponding block is not a leak and does not contain | ||
935 | * any references to other allocated memory blocks. | ||
912 | */ | 936 | */ |
913 | void __ref kmemleak_ignore(const void *ptr) | 937 | void __ref kmemleak_ignore(const void *ptr) |
914 | { | 938 | { |
@@ -921,8 +945,16 @@ void __ref kmemleak_ignore(const void *ptr) | |||
921 | } | 945 | } |
922 | EXPORT_SYMBOL(kmemleak_ignore); | 946 | EXPORT_SYMBOL(kmemleak_ignore); |
923 | 947 | ||
924 | /* | 948 | /** |
925 | * Limit the range to be scanned in an allocated memory block. | 949 | * kmemleak_scan_area - limit the range to be scanned in an allocated object |
950 | * @ptr: pointer to beginning or inside the object. This also | ||
951 | * represents the start of the scan area | ||
952 | * @size: size of the scan area | ||
953 | * @gfp: kmalloc() flags used for kmemleak internal memory allocations | ||
954 | * | ||
955 | * This function is used when it is known that only certain parts of an object | ||
956 | * contain references to other objects. Kmemleak will only scan these areas | ||
957 | * reducing the number false negatives. | ||
926 | */ | 958 | */ |
927 | void __ref kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) | 959 | void __ref kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) |
928 | { | 960 | { |
@@ -935,8 +967,14 @@ void __ref kmemleak_scan_area(const void *ptr, size_t size, gfp_t gfp) | |||
935 | } | 967 | } |
936 | EXPORT_SYMBOL(kmemleak_scan_area); | 968 | EXPORT_SYMBOL(kmemleak_scan_area); |
937 | 969 | ||
938 | /* | 970 | /** |
939 | * Inform kmemleak not to scan the given memory block. | 971 | * kmemleak_no_scan - do not scan an allocated object |
972 | * @ptr: pointer to beginning of the object | ||
973 | * | ||
974 | * This function notifies kmemleak not to scan the given memory block. Useful | ||
975 | * in situations where it is known that the given object does not contain any | ||
976 | * references to other objects. Kmemleak will not scan such objects reducing | ||
977 | * the number of false negatives. | ||
940 | */ | 978 | */ |
941 | void __ref kmemleak_no_scan(const void *ptr) | 979 | void __ref kmemleak_no_scan(const void *ptr) |
942 | { | 980 | { |