#include <linux/notifier.h>
#include "sspt/sspt_procs.h"
-#ifdef OVERHEAD_DEBUG
-extern unsigned long swap_sum_time;
-extern unsigned long swap_sum_hit;
-#endif
-
extern unsigned long imi_sum_time;
extern unsigned long imi_sum_hit;
int j;
dbi_module_callback dmc_stop;
-#ifdef OVERHEAD_DEBUG
- printk("\nswap_sum_time = %ld in kprobe_handler()\n", swap_sum_time);
- printk("swap_sum_hit = %ld in kprobe_handler()\n", swap_sum_hit);
- swap_sum_time = 0;
- swap_sum_hit = 0;
-#endif
-
printk("\n### imi_sum_time = %ld in install_mapped_ips()\n", imi_sum_time);
printk("### imi_sum_hit = %ld in install_mapped_ips()\n", imi_sum_hit);
#include <ksyms.h>
#include <asm/cacheflush.h>
-
-#ifdef TRAP_OVERHEAD_DEBUG
-#include <linux/pid.h>
-#include <linux/signal.h>
-#endif
-
-#ifdef OVERHEAD_DEBUG
-#include <linux/time.h>
-#endif
-
#include <asm/traps.h>
#include <asm/ptrace.h>
#include <linux/list.h>
static void (*__swap_register_undef_hook)(struct undef_hook *hook);
static void (*__swap_unregister_undef_hook)(struct undef_hook *hook);
-#ifdef OVERHEAD_DEBUG
-unsigned long swap_sum_time = 0;
-unsigned long swap_sum_hit = 0;
-EXPORT_SYMBOL_GPL (swap_sum_time);
-EXPORT_SYMBOL_GPL (swap_sum_hit);
-#endif
-
static struct kprobe trampoline_p =
{
.addr = (kprobe_opcode_t *) & kretprobe_trampoline,
DBPRINTF ("set_current_kprobe: p=%p addr=%p\n", p, p->addr);
}
-#ifdef TRAP_OVERHEAD_DEBUG
-static unsigned long trap_handler_counter_debug = 0;
-#define SAMPLING_COUNTER 100000
-#endif
-
static int kprobe_handler(struct pt_regs *regs)
{
struct kprobe *p, *cur;
#include "../../dbi_uprobes.h"
#include <ksyms.h>
-#ifdef OVERHEAD_DEBUG
-#include <linux/time.h>
-#endif
-
#define SUPRESS_BUG_MESSAGES
unsigned int *arr_traps_original;
extern struct kprobe * per_cpu__current_kprobe;
-#ifdef OVERHEAD_DEBUG
-unsigned long swap_sum_time = 0;
-unsigned long swap_sum_hit = 0;
-EXPORT_SYMBOL_GPL (swap_sum_time);
-EXPORT_SYMBOL_GPL (swap_sum_hit);
-#endif
-
unsigned int arr_traps_template[] = { 0x3c010000, // lui a1 [0]
0x24210000, // addiu a1, a1 [1]
0x00200008, // jr a1 [2]
int ret = 0, pid = 0, retprobe = 0, reenter = 0;
kprobe_opcode_t *addr = NULL, *ssaddr = 0;
struct kprobe_ctlblk *kcb;
-#ifdef OVERHEAD_DEBUG
- struct timeval swap_tv1;
- struct timeval swap_tv2;
-#endif
#ifdef SUPRESS_BUG_MESSAGES
int swap_oops_in_progress;
#endif
swap_oops_in_progress = oops_in_progress;
oops_in_progress = 1;
#endif
-#ifdef OVERHEAD_DEBUG
-#define USEC_IN_SEC_NUM 1000000
- do_gettimeofday(&swap_tv1);
-#endif
preempt_disable ();
kcb = get_kprobe_ctlblk ();
if(!p->ainsn.boostable)
kcb->kprobe_status = KPROBE_REENTER;
preempt_enable_no_resched ();
-#ifdef OVERHEAD_DEBUG
- do_gettimeofday(&swap_tv2);
- swap_sum_hit++;
- swap_sum_time += ((swap_tv2.tv_sec - swap_tv1.tv_sec) * USEC_IN_SEC_NUM +
- (swap_tv2.tv_usec - swap_tv1.tv_usec));
-#endif
#ifdef SUPRESS_BUG_MESSAGES
oops_in_progress = swap_oops_in_progress;
#endif
if (ret)
{
DBPRINTF ("p->pre_handler[] 1");
-#ifdef OVERHEAD_DEBUG
- do_gettimeofday(&swap_tv2);
- swap_sum_hit++;
- swap_sum_time += ((swap_tv2.tv_sec - swap_tv1.tv_sec) * USEC_IN_SEC_NUM +
- (swap_tv2.tv_usec - swap_tv1.tv_usec));
-#endif
#ifdef SUPRESS_BUG_MESSAGES
oops_in_progress = swap_oops_in_progress;
#endif
no_kprobe:
preempt_enable_no_resched ();
-#ifdef OVERHEAD_DEBUG
- do_gettimeofday(&swap_tv2);
- swap_sum_hit++;
- swap_sum_time += ((swap_tv2.tv_sec - swap_tv1.tv_sec) * USEC_IN_SEC_NUM +
- (swap_tv2.tv_usec - swap_tv1.tv_usec));
-#endif
#ifdef SUPRESS_BUG_MESSAGES
oops_in_progress = swap_oops_in_progress;
#endif
#include "../../dbi_kprobes_deps.h"
#include "../../dbi_uprobes.h"
-#ifdef OVERHEAD_DEBUG
-#include <linux/time.h>
-#endif
-
#define SUPRESS_BUG_MESSAGES
extern struct kprobe * per_cpu__current_kprobe;
extern struct kprobe * current_kprobe;
-#ifdef OVERHEAD_DEBUG
-unsigned long swap_sum_time = 0;
-unsigned long swap_sum_hit = 0;
-EXPORT_SYMBOL_GPL (swap_sum_time);
-EXPORT_SYMBOL_GPL (swap_sum_hit);
-#endif
-
#define SAVE_REGS_STRING \
/* Skip cs, ip, orig_ax. */ \
" subq $24, %rsp\n" \
int ret = 0, pid = 0, retprobe = 0, reenter = 0;
kprobe_opcode_t *addr = NULL;
struct kprobe_ctlblk *kcb;
-#ifdef OVERHEAD_DEBUG
- struct timeval swap_tv1;
- struct timeval swap_tv2;
-#endif
#ifdef SUPRESS_BUG_MESSAGES
int swap_oops_in_progress;
#endif
swap_oops_in_progress = oops_in_progress;
oops_in_progress = 1;
#endif
-#ifdef OVERHEAD_DEBUG
-#define USEC_IN_SEC_NUM 1000000
- do_gettimeofday(&swap_tv1);
-#endif
preempt_disable ();
kcb = get_kprobe_ctlblk ();
kcb->kprobe_status = KPROBE_REENTER;
// FIXME should we enable preemption here??...
//preempt_enable_no_resched ();
-#ifdef OVERHEAD_DEBUG
- do_gettimeofday(&swap_tv2);
- swap_sum_hit++;
- swap_sum_time += ((swap_tv2.tv_sec - swap_tv1.tv_sec) * USEC_IN_SEC_NUM +
- (swap_tv2.tv_usec - swap_tv1.tv_usec));
-#endif
#ifdef SUPRESS_BUG_MESSAGES
oops_in_progress = swap_oops_in_progress;
#endif
DBPRINTF ("p->pre_handler[] 1");
// FIXME should we enable preemption here??...
//preempt_enable_no_resched ();
-#ifdef OVERHEAD_DEBUG
- do_gettimeofday(&swap_tv2);
- swap_sum_hit++;
- swap_sum_time += ((swap_tv2.tv_sec - swap_tv1.tv_sec) * USEC_IN_SEC_NUM +
- (swap_tv2.tv_usec - swap_tv1.tv_usec));
-#endif
#ifdef SUPRESS_BUG_MESSAGES
oops_in_progress = swap_oops_in_progress;
#endif
reset_current_kprobe ();
regs->EREG (ip) = (unsigned long) p->ainsn.insn;
preempt_enable_no_resched ();
-#ifdef OVERHEAD_DEBUG
- do_gettimeofday(&swap_tv2);
- swap_sum_hit++;
- swap_sum_time += ((swap_tv2.tv_sec - swap_tv1.tv_sec) * USEC_IN_SEC_NUM +
- (swap_tv2.tv_usec - swap_tv1.tv_usec));
-#endif
#ifdef SUPRESS_BUG_MESSAGES
oops_in_progress = swap_oops_in_progress;
#endif
kcb->kprobe_status = KPROBE_HIT_SS;
// FIXME should we enable preemption here??...
//preempt_enable_no_resched ();
-#ifdef OVERHEAD_DEBUG
- do_gettimeofday(&swap_tv2);
- swap_sum_hit++;
- swap_sum_time += ((swap_tv2.tv_sec - swap_tv1.tv_sec) * USEC_IN_SEC_NUM +
- (swap_tv2.tv_usec - swap_tv1.tv_usec));
-#endif
#ifdef SUPRESS_BUG_MESSAGES
oops_in_progress = swap_oops_in_progress;
#endif
no_kprobe:
preempt_enable_no_resched ();
-#ifdef OVERHEAD_DEBUG
- do_gettimeofday(&swap_tv2);
- swap_sum_hit++;
- swap_sum_time += ((swap_tv2.tv_sec - swap_tv1.tv_sec) * USEC_IN_SEC_NUM +
- (swap_tv2.tv_usec - swap_tv1.tv_usec));
-#endif
#ifdef SUPRESS_BUG_MESSAGES
oops_in_progress = swap_oops_in_progress;
#endif