ANDROID: Add vendor_hooks to workaround CONFIG_TASK_DELAY_ACCT
CONFIG_TASK_DELAY_ACCT cannot be enabled since `struct task_struct` is KMI frozen. Instead, use vendor hooks to allow delay accounting to be implemented in a vendor module. Bug: 327566572 Bug: 310129610 Bug: 314931189 Change-Id: If814d7834889fe162aba3dd97e935289127ca3ae Signed-off-by: Dongyun Liu <dongyun.liu@transsion.com> (cherry picked from commit bb57557246d39dba8a66df7f43983fe1ec71bff6) (cherry picked from commit 896cff873452d9a3853c489bb2a173a1e290ca95)
This commit is contained in:
parent
70fdaa07de
commit
35bb2c8c5f
@ -70,6 +70,8 @@
|
|||||||
#include <trace/hooks/regmap.h>
|
#include <trace/hooks/regmap.h>
|
||||||
#include <trace/hooks/compaction.h>
|
#include <trace/hooks/compaction.h>
|
||||||
#include <trace/hooks/suspend.h>
|
#include <trace/hooks/suspend.h>
|
||||||
|
#include <trace/hooks/delayacct.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Export tracepoints that act as a bare tracehook (ie: have no trace event
|
* Export tracepoints that act as a bare tracehook (ie: have no trace event
|
||||||
* associated with them) to allow external modules to probe them.
|
* associated with them) to allow external modules to probe them.
|
||||||
@ -380,3 +382,21 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_looper_exited);
|
|||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_spawn_new_thread);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_spawn_new_thread);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_has_special_work_ilocked);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_has_special_work_ilocked);
|
||||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_detect_low_async_space_locked);
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_binder_detect_low_async_space_locked);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_delayacct_init);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_delayacct_tsk_init);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_delayacct_tsk_free);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_blkio_start);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_blkio_end);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_add_tsk);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_blkio_ticks);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_freepages_start);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_freepages_end);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_thrashing_start);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_thrashing_end);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_swapin_start);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_swapin_end);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_compact_start);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_compact_end);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_wpcopy_start);
|
||||||
|
EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_delayacct_wpcopy_end);
|
||||||
|
|
||||||
|
@ -216,43 +216,141 @@ static inline void delayacct_wpcopy_end(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
extern void _trace_android_rvh_delayacct_init(void);
|
||||||
|
extern void _trace_android_rvh_delayacct_tsk_init(struct task_struct *tsk);
|
||||||
|
extern void _trace_android_rvh_delayacct_tsk_free(struct task_struct *tsk);
|
||||||
|
extern void _trace_android_vh_delayacct_blkio_start(void);
|
||||||
|
extern void _trace_android_vh_delayacct_blkio_end(struct task_struct *p);
|
||||||
|
extern void _trace_android_vh_delayacct_add_tsk(struct taskstats *d,
|
||||||
|
struct task_struct *tsk,
|
||||||
|
int *ret);
|
||||||
|
extern void _trace_android_vh_delayacct_blkio_ticks(struct task_struct *tsk, __u64 *ret);
|
||||||
|
extern void _trace_android_vh_delayacct_freepages_start(void);
|
||||||
|
extern void _trace_android_vh_delayacct_freepages_end(void);
|
||||||
|
extern void _trace_android_vh_delayacct_thrashing_start(bool *in_thrashing);
|
||||||
|
extern void _trace_android_vh_delayacct_thrashing_end(bool *in_thrashing);
|
||||||
|
extern void _trace_android_vh_delayacct_swapin_start(void);
|
||||||
|
extern void _trace_android_vh_delayacct_swapin_end(void);
|
||||||
|
extern void _trace_android_vh_delayacct_compact_start(void);
|
||||||
|
extern void _trace_android_vh_delayacct_compact_end(void);
|
||||||
|
extern void _trace_android_vh_delayacct_wpcopy_start(void);
|
||||||
|
extern void _trace_android_vh_delayacct_wpcopy_end(void);
|
||||||
|
extern void set_delayacct_enabled(bool enabled);
|
||||||
|
extern bool get_delayacct_enabled(void);
|
||||||
|
|
||||||
static inline void delayacct_init(void)
|
static inline void delayacct_init(void)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_rvh_delayacct_init();
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_tsk_init(struct task_struct *tsk)
|
static inline void delayacct_tsk_init(struct task_struct *tsk)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_rvh_delayacct_tsk_init(tsk);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_tsk_free(struct task_struct *tsk)
|
static inline void delayacct_tsk_free(struct task_struct *tsk)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_rvh_delayacct_tsk_free(tsk);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_blkio_start(void)
|
static inline void delayacct_blkio_start(void)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_blkio_start();
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_blkio_end(struct task_struct *p)
|
static inline void delayacct_blkio_end(struct task_struct *p)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_blkio_end(p);
|
||||||
|
}
|
||||||
|
|
||||||
static inline int delayacct_add_tsk(struct taskstats *d,
|
static inline int delayacct_add_tsk(struct taskstats *d,
|
||||||
struct task_struct *tsk)
|
struct task_struct *tsk)
|
||||||
{ return 0; }
|
{
|
||||||
|
int ret = 0;
|
||||||
|
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_add_tsk(d, tsk, &ret);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static inline __u64 delayacct_blkio_ticks(struct task_struct *tsk)
|
static inline __u64 delayacct_blkio_ticks(struct task_struct *tsk)
|
||||||
{ return 0; }
|
{
|
||||||
|
__u64 ret = 0;
|
||||||
|
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_blkio_ticks(tsk, &ret);
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
static inline int delayacct_is_task_waiting_on_io(struct task_struct *p)
|
static inline int delayacct_is_task_waiting_on_io(struct task_struct *p)
|
||||||
{ return 0; }
|
{ return 0; }
|
||||||
|
|
||||||
static inline void delayacct_freepages_start(void)
|
static inline void delayacct_freepages_start(void)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_freepages_start();
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_freepages_end(void)
|
static inline void delayacct_freepages_end(void)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_freepages_end();
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_thrashing_start(bool *in_thrashing)
|
static inline void delayacct_thrashing_start(bool *in_thrashing)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_thrashing_start(in_thrashing);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_thrashing_end(bool *in_thrashing)
|
static inline void delayacct_thrashing_end(bool *in_thrashing)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_thrashing_end(in_thrashing);
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_swapin_start(void)
|
static inline void delayacct_swapin_start(void)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_swapin_start();
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_swapin_end(void)
|
static inline void delayacct_swapin_end(void)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_swapin_end();
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_compact_start(void)
|
static inline void delayacct_compact_start(void)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_compact_start();
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_compact_end(void)
|
static inline void delayacct_compact_end(void)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_compact_end();
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_wpcopy_start(void)
|
static inline void delayacct_wpcopy_start(void)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_wpcopy_start();
|
||||||
|
}
|
||||||
|
|
||||||
static inline void delayacct_wpcopy_end(void)
|
static inline void delayacct_wpcopy_end(void)
|
||||||
{}
|
{
|
||||||
|
if (get_delayacct_enabled())
|
||||||
|
_trace_android_vh_delayacct_wpcopy_end();
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* CONFIG_TASK_DELAY_ACCT */
|
#endif /* CONFIG_TASK_DELAY_ACCT */
|
||||||
|
|
||||||
|
76
include/trace/hooks/delayacct.h
Normal file
76
include/trace/hooks/delayacct.h
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/* SPDX-License-Identifier: GPL-2.0 */
|
||||||
|
#ifdef PROTECT_TRACE_INCLUDE_PATH
|
||||||
|
#undef PROTECT_TRACE_INCLUDE_PATH
|
||||||
|
|
||||||
|
|
||||||
|
#else /* PROTECT_TRACE_INCLUDE_PATH */
|
||||||
|
|
||||||
|
#undef TRACE_SYSTEM
|
||||||
|
#define TRACE_SYSTEM delayacct
|
||||||
|
|
||||||
|
#define TRACE_INCLUDE_PATH trace/hooks
|
||||||
|
|
||||||
|
#if !defined(_TRACE_HOOK_DELAYACCT_H) || defined(TRACE_HEADER_MULTI_READ)
|
||||||
|
#define _TRACE_HOOK_DELAYACCT_H
|
||||||
|
|
||||||
|
#include <trace/hooks/vendor_hooks.h>
|
||||||
|
|
||||||
|
struct task_struct;
|
||||||
|
struct taskstats;
|
||||||
|
DECLARE_RESTRICTED_HOOK(android_rvh_delayacct_init,
|
||||||
|
TP_PROTO(void *unused),
|
||||||
|
TP_ARGS(unused), 1);
|
||||||
|
DECLARE_RESTRICTED_HOOK(android_rvh_delayacct_tsk_init,
|
||||||
|
TP_PROTO(struct task_struct *tsk),
|
||||||
|
TP_ARGS(tsk), 1);
|
||||||
|
DECLARE_RESTRICTED_HOOK(android_rvh_delayacct_tsk_free,
|
||||||
|
TP_PROTO(struct task_struct *tsk),
|
||||||
|
TP_ARGS(tsk), 1);
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_blkio_start,
|
||||||
|
TP_PROTO(void *unused),
|
||||||
|
TP_ARGS(unused));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_blkio_end,
|
||||||
|
TP_PROTO(struct task_struct *p),
|
||||||
|
TP_ARGS(p));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_add_tsk,
|
||||||
|
TP_PROTO(struct taskstats *d, struct task_struct *tsk, int *ret),
|
||||||
|
TP_ARGS(d, tsk, ret));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_blkio_ticks,
|
||||||
|
TP_PROTO(struct task_struct *tsk, __u64 *ret),
|
||||||
|
TP_ARGS(tsk, ret));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_freepages_start,
|
||||||
|
TP_PROTO(void *unused),
|
||||||
|
TP_ARGS(unused));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_freepages_end,
|
||||||
|
TP_PROTO(void *unused),
|
||||||
|
TP_ARGS(unused));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_thrashing_start,
|
||||||
|
TP_PROTO(bool *in_thrashing),
|
||||||
|
TP_ARGS(in_thrashing));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_thrashing_end,
|
||||||
|
TP_PROTO(bool *in_thrashing),
|
||||||
|
TP_ARGS(in_thrashing));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_swapin_start,
|
||||||
|
TP_PROTO(void *unused),
|
||||||
|
TP_ARGS(unused));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_swapin_end,
|
||||||
|
TP_PROTO(void *unused),
|
||||||
|
TP_ARGS(unused));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_compact_start,
|
||||||
|
TP_PROTO(void *unused),
|
||||||
|
TP_ARGS(unused));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_compact_end,
|
||||||
|
TP_PROTO(void *unused),
|
||||||
|
TP_ARGS(unused));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_wpcopy_start,
|
||||||
|
TP_PROTO(void *unused),
|
||||||
|
TP_ARGS(unused));
|
||||||
|
DECLARE_HOOK(android_vh_delayacct_wpcopy_end,
|
||||||
|
TP_PROTO(void *unused),
|
||||||
|
TP_ARGS(unused));
|
||||||
|
|
||||||
|
#endif /* _TRACE_HOOK_DELAYACCT_H */
|
||||||
|
/* This part must be outside protection */
|
||||||
|
#include <trace/define_trace.h>
|
||||||
|
|
||||||
|
#endif /* PROTECT_TRACE_INCLUDE_PATH */
|
@ -10,7 +10,7 @@ obj-y = fork.o exec_domain.o panic.o \
|
|||||||
extable.o params.o \
|
extable.o params.o \
|
||||||
kthread.o sys_ni.o nsproxy.o \
|
kthread.o sys_ni.o nsproxy.o \
|
||||||
notifier.o ksysfs.o cred.o reboot.o \
|
notifier.o ksysfs.o cred.o reboot.o \
|
||||||
async.o range.o smpboot.o ucount.o regset.o
|
async.o range.o smpboot.o ucount.o regset.o delayacct.o
|
||||||
|
|
||||||
obj-$(CONFIG_USERMODE_DRIVER) += usermode_driver.o
|
obj-$(CONFIG_USERMODE_DRIVER) += usermode_driver.o
|
||||||
obj-$(CONFIG_MODULES) += kmod.o
|
obj-$(CONFIG_MODULES) += kmod.o
|
||||||
@ -94,7 +94,6 @@ obj-$(CONFIG_HARDLOCKUP_DETECTOR_PERF) += watchdog_hld.o
|
|||||||
obj-$(CONFIG_SECCOMP) += seccomp.o
|
obj-$(CONFIG_SECCOMP) += seccomp.o
|
||||||
obj-$(CONFIG_RELAY) += relay.o
|
obj-$(CONFIG_RELAY) += relay.o
|
||||||
obj-$(CONFIG_SYSCTL) += utsname_sysctl.o
|
obj-$(CONFIG_SYSCTL) += utsname_sysctl.o
|
||||||
obj-$(CONFIG_TASK_DELAY_ACCT) += delayacct.o
|
|
||||||
obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o
|
obj-$(CONFIG_TASKSTATS) += taskstats.o tsacct.o
|
||||||
obj-$(CONFIG_TRACEPOINTS) += tracepoint.o
|
obj-$(CONFIG_TRACEPOINTS) += tracepoint.o
|
||||||
obj-$(CONFIG_LATENCYTOP) += latencytop.o
|
obj-$(CONFIG_LATENCYTOP) += latencytop.o
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
#include <linux/delayacct.h>
|
#include <linux/delayacct.h>
|
||||||
#include <linux/module.h>
|
#include <linux/module.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_TASK_DELAY_ACCT
|
||||||
|
|
||||||
DEFINE_STATIC_KEY_FALSE(delayacct_key);
|
DEFINE_STATIC_KEY_FALSE(delayacct_key);
|
||||||
int delayacct_on __read_mostly; /* Delay accounting turned on/off */
|
int delayacct_on __read_mostly; /* Delay accounting turned on/off */
|
||||||
struct kmem_cache *delayacct_cache;
|
struct kmem_cache *delayacct_cache;
|
||||||
@ -274,3 +276,105 @@ void __delayacct_wpcopy_end(void)
|
|||||||
¤t->delays->wpcopy_delay,
|
¤t->delays->wpcopy_delay,
|
||||||
¤t->delays->wpcopy_count);
|
¤t->delays->wpcopy_count);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
#include <trace/hooks/delayacct.h>
|
||||||
|
|
||||||
|
int delayacct_enabled __read_mostly; /* Delay accounting turned on/off */
|
||||||
|
bool get_delayacct_enabled(void)
|
||||||
|
{
|
||||||
|
return delayacct_enabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
void set_delayacct_enabled(bool enabled)
|
||||||
|
{
|
||||||
|
delayacct_enabled = enabled;
|
||||||
|
}
|
||||||
|
EXPORT_SYMBOL_GPL(set_delayacct_enabled);
|
||||||
|
|
||||||
|
void _trace_android_rvh_delayacct_init(void)
|
||||||
|
{
|
||||||
|
trace_android_rvh_delayacct_init(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_rvh_delayacct_tsk_init(struct task_struct *tsk)
|
||||||
|
{
|
||||||
|
trace_android_rvh_delayacct_tsk_init(tsk);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_rvh_delayacct_tsk_free(struct task_struct *tsk)
|
||||||
|
{
|
||||||
|
trace_android_rvh_delayacct_tsk_free(tsk);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_blkio_start(void)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_blkio_start(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_blkio_end(struct task_struct *p)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_blkio_end(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_add_tsk(struct taskstats *d, struct task_struct *tsk, int *ret)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_add_tsk(d, tsk, ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_blkio_ticks(struct task_struct *tsk, __u64 *ret)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_blkio_ticks(tsk, ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_freepages_start(void)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_freepages_start(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_freepages_end(void)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_freepages_end(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_thrashing_start(bool *in_thrashing)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_thrashing_start(in_thrashing);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_thrashing_end(bool *in_thrashing)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_thrashing_end(in_thrashing);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_swapin_start(void)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_swapin_start(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_swapin_end(void)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_swapin_end(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_compact_start(void)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_compact_start(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_compact_end(void)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_compact_end(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_wpcopy_start(void)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_wpcopy_start(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
void _trace_android_vh_delayacct_wpcopy_end(void)
|
||||||
|
{
|
||||||
|
trace_android_vh_delayacct_wpcopy_end(NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user