summaryrefslogtreecommitdiff
path: root/driver
diff options
context:
space:
mode:
authorVasiliy Ulyanov <v.ulyanov@samsung.com>2013-02-13 17:34:49 +0400
committerVasiliy Ulyanov <v.ulyanov@samsung.com>2013-02-13 17:34:49 +0400
commitf037bdcecfb148ffdedbe53070b9f0f64e027f25 (patch)
tree65a7cfb9bd721ae57f46bfbfa0557a9ad18b987d /driver
parent12e62824cb1bd4e916acb7f845984fb28fcfc643 (diff)
parent79c3b3c07cafc8dc4608cfd178773e17a87e5ae0 (diff)
downloadswap-modules-f037bdcecfb148ffdedbe53070b9f0f64e027f25.tar.gz
swap-modules-f037bdcecfb148ffdedbe53070b9f0f64e027f25.tar.bz2
swap-modules-f037bdcecfb148ffdedbe53070b9f0f64e027f25.zip
Merge branch 'dev' of 106.109.8.71:/srv/git/dbi into dev
Diffstat (limited to 'driver')
-rw-r--r--driver/events.h40
-rw-r--r--driver/probes_manager.c56
2 files changed, 20 insertions, 76 deletions
diff --git a/driver/events.h b/driver/events.h
index 8be66b5d..b644ab70 100644
--- a/driver/events.h
+++ b/driver/events.h
@@ -62,7 +62,7 @@ static char *PackArguments (char *pBuffer, unsigned long nLen, const char *szFor
nLengthOfDescriptor = strlen (szFormat) + 1;
nSizeOfDescriptor = ALIGN_VALUE(nLengthOfDescriptor);
if(nFree < nSizeOfDescriptor)
- return NULL; // no space for descriptor
+ return NULL; // no space for descriptor
memcpy (pResult, szFormat, nLengthOfDescriptor);
pResult += nSizeOfDescriptor;
nFree -= nSizeOfDescriptor;
@@ -152,15 +152,15 @@ static char *PackArguments (char *pBuffer, unsigned long nLen, const char *szFor
}
#ifdef __KERNEL__
if((void *)s < (void *)TASK_SIZE) {
- const char __user *S = (const char __user *) s;
- nLengthOfString = strlen_user (S);
+ const char __user *user_s = (const char __user *)s;
+ nLengthOfString = strlen_user(user_s);
if(nFree < nLengthOfString)
return NULL; // no space for arg
if(strncpy_from_user(pResult,
- S,
+ user_s,
nLengthOfString) != (nLengthOfString-1)) {
EPRINTF("failed to copy string from user %p, bytes %d",
- S, nLengthOfString);
+ user_s, nLengthOfString);
}
}
else
@@ -209,8 +209,8 @@ static char *PackArguments (char *pBuffer, unsigned long nLen, const char *szFor
return pResult;
}
-static UNUSED TYPEOF_EVENT_LENGTH VPackEvent(char *buf, unsigned long buf_len, int mask, TYPEOF_PROBE_ID probe_id,
- TYPEOF_EVENT_TYPE record_type, TYPEOF_TIME *tv, TYPEOF_PROCESS_ID pid,
+static UNUSED TYPEOF_EVENT_LENGTH VPackEvent(char *buf, unsigned long buf_len, int mask, TYPEOF_PROBE_ID probe_id,
+ TYPEOF_EVENT_TYPE record_type, TYPEOF_TIME *tv, TYPEOF_PROCESS_ID pid,
TYPEOF_THREAD_ID tid, TYPEOF_CPU_NUMBER cpu, const char *fmt, va_list args)
{
char *cur = buf;
@@ -218,7 +218,7 @@ static UNUSED TYPEOF_EVENT_LENGTH VPackEvent(char *buf, unsigned long buf_len, i
if(buf_len < sizeof(SWAP_TYPE_EVENT_HEADER))
return 0; // no space for header
-
+
pEventHeader->m_nLength = 0;
cur += sizeof(TYPEOF_EVENT_LENGTH);
pEventHeader->m_nType = record_type;
@@ -227,22 +227,22 @@ static UNUSED TYPEOF_EVENT_LENGTH VPackEvent(char *buf, unsigned long buf_len, i
cur += sizeof(TYPEOF_PROBE_ID);
//pEventHeader->m_time.tv_sec = tv->tv_sec;
//pEventHeader->m_time.tv_usec = tv->tv_usec;
- if((probe_id == EVENT_FMT_PROBE_ID) || !(mask & IOCTL_EMASK_TIME)){
+ if((probe_id == EVENT_FMT_PROBE_ID) || !(mask & IOCTL_EMASK_TIME)){
memcpy(cur, tv, sizeof(TYPEOF_TIME));
cur += sizeof(TYPEOF_TIME);
}
//pEventHeader->m_nProcessID = pid;
- if((probe_id == EVENT_FMT_PROBE_ID) || !(mask & IOCTL_EMASK_PID)){
+ if((probe_id == EVENT_FMT_PROBE_ID) || !(mask & IOCTL_EMASK_PID)){
(*(TYPEOF_PROCESS_ID *)cur) = pid;
cur += sizeof(TYPEOF_PROCESS_ID);
}
//pEventHeader->m_nThreadID = tid;
- if((probe_id == EVENT_FMT_PROBE_ID) || !(mask & IOCTL_EMASK_TID)){
+ if((probe_id == EVENT_FMT_PROBE_ID) || !(mask & IOCTL_EMASK_TID)){
(*(TYPEOF_THREAD_ID *)cur) = tid;
cur += sizeof(TYPEOF_THREAD_ID);
}
//pEventHeader->m_nCPU = cpu;
- if((probe_id == EVENT_FMT_PROBE_ID) || !(mask & IOCTL_EMASK_CPU)){
+ if((probe_id == EVENT_FMT_PROBE_ID) || !(mask & IOCTL_EMASK_CPU)){
(*(TYPEOF_CPU_NUMBER *)cur) = cpu;
cur += sizeof(TYPEOF_CPU_NUMBER);
}
@@ -255,22 +255,22 @@ static UNUSED TYPEOF_EVENT_LENGTH VPackEvent(char *buf, unsigned long buf_len, i
}
else {
// user space and dynamic kernel probes should have at least one argument
- // to identify them
+ // to identify them
if((probe_id == US_PROBE_ID) || (probe_id == VTP_PROBE_ID) || (probe_id == KS_PROBE_ID)){
char fmt2[2];
(*(TYPEOF_NUMBER_OF_ARGS *)cur) = 1;
cur += sizeof(TYPEOF_NUMBER_OF_ARGS);
// pack args using format string for the 1st arg only
- fmt2[0] = fmt[0]; fmt2[1] = '\0';
+ fmt2[0] = fmt[0]; fmt2[1] = '\0';
cur = PackArguments(cur, buf_len-(cur-buf), fmt2, args);
- if(!cur) return 0; // no space for args
+ if(!cur) return 0; // no space for args
}
else {
(*(TYPEOF_NUMBER_OF_ARGS *)cur) = 0;
cur += sizeof(TYPEOF_NUMBER_OF_ARGS);
}
}
-
+
pEventHeader->m_nLength = cur - buf + sizeof(TYPEOF_EVENT_LENGTH);
if(buf_len < pEventHeader->m_nLength)
return 0;// no space for back length
@@ -280,17 +280,17 @@ static UNUSED TYPEOF_EVENT_LENGTH VPackEvent(char *buf, unsigned long buf_len, i
return pEventHeader->m_nLength;
}
-/*static TYPEOF_EVENT_LENGTH PackEvent(char *buf, unsigned long buf_len, TYPEOF_PROBE_ID probe_id,
- TYPEOF_EVENT_TYPE record_type, TYPEOF_TIME *tv, TYPEOF_PROCESS_ID pid,
+/*static TYPEOF_EVENT_LENGTH PackEvent(char *buf, unsigned long buf_len, TYPEOF_PROBE_ID probe_id,
+ TYPEOF_EVENT_TYPE record_type, TYPEOF_TIME *tv, TYPEOF_PROCESS_ID pid,
TYPEOF_THREAD_ID tid, TYPEOF_CPU_NUMBER cpu, const char *fmt, ...)
{
va_list args;
TYPEOF_EVENT_LENGTH len;
-
+
va_start (args, fmt);
len = VPackEvent(buf, buf_len, probe_id, record_type, tv, pid, tid, cpu, fmt, args);
va_end (args);
-
+
return len;
}*/
diff --git a/driver/probes_manager.c b/driver/probes_manager.c
index 647be79a..cb17ac59 100644
--- a/driver/probes_manager.c
+++ b/driver/probes_manager.c
@@ -507,62 +507,6 @@ def_retprobe_event_handler (struct kretprobe_instance *pi, struct pt_regs *regs,
return 0;
}
-/* This is a callback that is called by module 'swap_handlers'
- * in order to register user defined handlers */
-void dbi_install_user_handlers(void)
-{
- kernel_probe_t *probe;
- struct hlist_node *node;
- unsigned long pre_handler_addr, jp_handler_addr, rp_handler_addr;
-
- // FIXME: functions 'find_jp_handler', 'find_rp_handler', 'find_pre_handler' - not found
- /* We must perform this lookup whenever this function is called
- * because the addresses of find_*_handler functions may differ. */
- // swap_handlers removed
- unsigned long (*find_jp_handler)(unsigned long) =
- // swap_handlers removed
- (unsigned long (*)(unsigned long))swap_ksyms("find_jp_handler");
- unsigned long (*find_rp_handler)(unsigned long) =
- (unsigned long (*)(unsigned long))swap_ksyms("find_rp_handler");
- unsigned long (*find_pre_handler)(unsigned long) =
- (unsigned long (*)(unsigned long))swap_ksyms("find_pre_handler");
- hlist_for_each_entry_rcu (probe, node, &kernel_probes, hlist) {
- if(find_pre_handler)
- {
- pre_handler_addr = find_pre_handler(probe->addr);
- if (find_pre_handler != NULL) {
- DPRINTF("Added user pre handler for 0x%lx: 0x%lx",
- probe->addr, find_pre_handler);
- probe->jprobe.pre_entry = (kprobe_pre_entry_handler_t)pre_handler_addr;
- }
- }
- jp_handler_addr = find_jp_handler(probe->addr);
- if (jp_handler_addr != 0) {
- DPRINTF("Added user jp handler for 0x%lx: 0x%lx",
- probe->addr, jp_handler_addr);
- probe->jprobe.entry = (kprobe_opcode_t *)jp_handler_addr;
- }
- rp_handler_addr = find_rp_handler(probe->addr);
- if (rp_handler_addr != 0)
- probe->retprobe.handler = (kretprobe_handler_t)rp_handler_addr;
- }
-}
-EXPORT_SYMBOL_GPL(dbi_install_user_handlers);
-
-void dbi_uninstall_user_handlers(void)
-{
- kernel_probe_t *probe;
- struct hlist_node *node;
-
- hlist_for_each_entry_rcu (probe, node, &kernel_probes, hlist) {
- DPRINTF("Removed user jp handler for 0x%lx", probe->addr);
- probe->jprobe.pre_entry = (kprobe_pre_entry_handler_t)def_jprobe_event_pre_handler;
- probe->jprobe.entry = (kprobe_opcode_t *)def_jprobe_event_handler;
- probe->retprobe.handler = (kretprobe_handler_t)def_retprobe_event_handler;
- }
-}
-EXPORT_SYMBOL_GPL(dbi_uninstall_user_handlers);
-
int is_pf_installed_by_user(void)
{
return (probes_flags & PROBE_FLAG_PF_INSTLD) ? 1: 0;