}
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)
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);
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);
set_len_msg(buf, buf_end);
write_to_buffer(buf);
+ put_current_buf();
}
EXPORT_SYMBOL_GPL(terminate_msg);
set_len_msg(buf, buf_end);
write_to_buffer(buf);
+ put_current_buf();
}
EXPORT_SYMBOL_GPL(pcoc_map_msg);
set_len_msg(buf, buf_end);
write_to_buffer(buf);
+ put_current_buf();
}
EXPORT_SYMBOL_GPL(proc_unmap_msg);
int sample_msg(struct pt_regs *regs)
{
char *buf, *payload, *buf_end;
+ int ret;
if (!check_event(current))
return 0;
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);
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);
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);
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)
{
char *buf, *payload, *buf_end;
va_list args;
+ int ret;
buf = get_current_buf();
payload = pack_basic_msg_fmt(buf, MSG_ERROR);
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);