summaryrefslogtreecommitdiff
path: root/writer
diff options
context:
space:
mode:
authorDmitry Kovalenko <d.kovalenko@samsung.com>2014-03-29 00:54:16 -0700
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>2014-03-29 00:54:16 -0700
commit131ad6438f6f79af1dd12523a84c25adc9a68870 (patch)
tree1134e54bca051dfa0d66053647e900c1b7b245aa /writer
parente616ee26921cbfa2e365f54a26c8edcb331eca82 (diff)
parente59a021411e33fee8d2e374974fd78ad198eb7d7 (diff)
downloadswap-modules-131ad6438f6f79af1dd12523a84c25adc9a68870.tar.gz
swap-modules-131ad6438f6f79af1dd12523a84c25adc9a68870.tar.bz2
swap-modules-131ad6438f6f79af1dd12523a84c25adc9a68870.zip
Merge "[FIX] smp_processor_id bug message" into prod_rel
Diffstat (limited to 'writer')
-rw-r--r--writer/swap_writer_module.c46
1 files changed, 38 insertions, 8 deletions
diff --git a/writer/swap_writer_module.c b/writer/swap_writer_module.c
index 7ce60299..fc66c257 100644
--- a/writer/swap_writer_module.c
+++ b/writer/swap_writer_module.c
@@ -102,9 +102,14 @@ unsigned int get_discarded_count(void)
}
EXPORT_SYMBOL_GPL(get_discarded_count);
-static char *get_current_buf(void)
+static inline char *get_current_buf(void)
{
- return cpu_buf[smp_processor_id()];
+ return cpu_buf[get_cpu()];
+}
+
+static inline void put_current_buf(void)
+{
+ put_cpu();
}
static inline u64 timespec2time(struct timespec *ts)
@@ -357,6 +362,7 @@ static char *pack_proc_info(char *payload, struct task_struct *task,
int proc_info_msg(struct task_struct *task, struct dentry *dentry)
{
char *buf, *payload, *buf_end;
+ int ret;
buf = get_current_buf();
payload = pack_basic_msg_fmt(buf, MSG_PROC_INFO);
@@ -364,7 +370,10 @@ int proc_info_msg(struct task_struct *task, struct dentry *dentry)
set_len_msg(buf, buf_end);
- return write_to_buffer(buf);
+ ret = write_to_buffer(buf);
+ put_current_buf();
+
+ return ret;
}
EXPORT_SYMBOL_GPL(proc_info_msg);
@@ -400,6 +409,7 @@ void terminate_msg(struct task_struct *task)
set_len_msg(buf, buf_end);
write_to_buffer(buf);
+ put_current_buf();
}
EXPORT_SYMBOL_GPL(terminate_msg);
@@ -440,6 +450,7 @@ void pcoc_map_msg(struct vm_area_struct *vma)
set_len_msg(buf, buf_end);
write_to_buffer(buf);
+ put_current_buf();
}
EXPORT_SYMBOL_GPL(pcoc_map_msg);
@@ -480,6 +491,7 @@ void proc_unmap_msg(unsigned long start, unsigned long end)
set_len_msg(buf, buf_end);
write_to_buffer(buf);
+ put_current_buf();
}
EXPORT_SYMBOL_GPL(proc_unmap_msg);
@@ -515,6 +527,7 @@ static char *pack_sample(char *payload, struct pt_regs *regs)
int sample_msg(struct pt_regs *regs)
{
char *buf, *payload, *buf_end;
+ int ret;
if (!check_event(current))
return 0;
@@ -525,7 +538,10 @@ int sample_msg(struct pt_regs *regs)
set_len_msg(buf, buf_end);
- return write_to_buffer(buf);
+ ret = write_to_buffer(buf);
+ put_current_buf();
+
+ return ret;
}
EXPORT_SYMBOL_GPL(sample_msg);
@@ -687,7 +703,10 @@ int entry_event(const char *fmt, unsigned long func_addr, struct pt_regs *regs,
set_len_msg(buf, buf_end);
- return write_to_buffer(buf);
+ ret = write_to_buffer(buf);
+ put_current_buf();
+
+ return ret;
}
EXPORT_SYMBOL_GPL(entry_event);
@@ -834,7 +853,10 @@ int exit_event(char ret_type, struct pt_regs *regs, unsigned long func_addr,
buf_end = payload + ret;
set_len_msg(buf, buf_end);
- return write_to_buffer(buf);
+ ret = write_to_buffer(buf);
+ put_current_buf();
+
+ return ret;
}
EXPORT_SYMBOL_GPL(exit_event);
@@ -870,13 +892,17 @@ static char *pack_msg_context_switch(char *payload, struct pt_regs *regs)
static int context_switch(struct pt_regs *regs, enum MSG_ID id)
{
char *buf, *payload, *buf_end;
+ int ret;
buf = get_current_buf();
payload = pack_basic_msg_fmt(buf, id);
buf_end = pack_msg_context_switch(payload, regs);
set_len_msg(buf, buf_end);
- return write_to_buffer(buf);
+ ret = write_to_buffer(buf);
+ put_current_buf();
+
+ return ret;
}
int switch_entry(struct pt_regs *regs)
@@ -925,6 +951,7 @@ int error_msg(const char *fmt, ...)
{
char *buf, *payload, *buf_end;
va_list args;
+ int ret;
buf = get_current_buf();
payload = pack_basic_msg_fmt(buf, MSG_ERROR);
@@ -935,7 +962,10 @@ int error_msg(const char *fmt, ...)
set_len_msg(buf, buf_end);
- return write_to_buffer(buf);
+ ret = write_to_buffer(buf);
+ put_current_buf();
+
+ return ret;
}
EXPORT_SYMBOL_GPL(error_msg);