return va_arg(args, u_int32_t);
}
-void pack_event_info (probe_id_t probe_id, record_type_t record_type, const char *fmt, ...)
+void pack_task_event_info(struct task_struct *task, probe_id_t probe_id,
+ record_type_t record_type, const char *fmt, ...)
{
unsigned long spinlock_flags = 0L;
static char buf[EVENT_MAX_SIZE] = "";
TYPEOF_EVENT_LENGTH event_len = 0L;
struct timeval tv = { 0, 0 };
- TYPEOF_THREAD_ID current_pid = current->pid;
- TYPEOF_PROCESS_ID current_tgid = current->tgid;
- unsigned current_cpu = task_cpu(current);
+ TYPEOF_THREAD_ID current_pid = task->pid;
+ TYPEOF_PROCESS_ID current_tgid = task->tgid;
+ unsigned current_cpu = task_cpu(task);
va_list args;
unsigned long addr = 0;
struct cond *p_cond;
(!ET_FIELD_ISSET(p_tmpl->flags, ET_MATCH_CPU_NUM) ||
(current_cpu == p_tmpl->cpu_num)) &&
(!ET_FIELD_ISSET(p_tmpl->flags, ET_MATCH_BIN_NAME) ||
- (strcmp(current->comm, p_tmpl->bin_name) == 0)) &&
+ (strcmp(task->comm, p_tmpl->bin_name) == 0)) &&
(!ET_FIELD_ISSET(p_tmpl->flags, ET_MATCH_TIME) ||
(tv.tv_sec > last_attach_time.tv_sec + p_tmpl->sec) ||
(tv.tv_sec == last_attach_time.tv_sec + p_tmpl->sec &&
(!ET_FIELD_ISSET(p_tmpl->flags, ET_MATCH_CPU_NUM) ||
(current_cpu == p_tmpl->cpu_num)) &&
(!ET_FIELD_ISSET(p_tmpl->flags, ET_MATCH_BIN_NAME) ||
- (strcmp(current->comm, p_tmpl->bin_name) == 0))) {
+ (strcmp(task->comm, p_tmpl->bin_name) == 0))) {
spin_lock_irqsave(&ec_spinlock, spinlock_flags);
ec_info.ignored_events_count++;
spin_unlock_irqrestore(&ec_spinlock, spinlock_flags);
(!ET_FIELD_ISSET(p_tmpl->flags, ET_MATCH_CPU_NUM) ||
(current_cpu == p_tmpl->cpu_num)) &&
(!ET_FIELD_ISSET(p_tmpl->flags, ET_MATCH_BIN_NAME) ||
- (strcmp(current->comm, p_tmpl->bin_name) == 0)) &&
+ (strcmp(task->comm, p_tmpl->bin_name) == 0)) &&
(!ET_FIELD_ISSET(p_tmpl->flags, ET_MATCH_TIME) ||
(tv.tv_sec > last_attach_time.tv_sec + p_tmpl->sec) ||
(tv.tv_sec == last_attach_time.tv_sec + p_tmpl->sec &&
}
}
}
-EXPORT_SYMBOL_GPL(pack_event_info);
+EXPORT_SYMBOL_GPL(pack_task_event_info);
kernel_probe_t* find_probe (unsigned long addr)
{
Function "pack_event_info()" saves information about event into buffer. It
is used in 'probes' to pack and save event data.
*/
-extern void pack_event_info (probe_id_t probe_id, record_type_t record_type, const char *fmt, ...);
+extern void pack_task_event_info (struct task_struct *task, probe_id_t probe_id,
+ record_type_t record_type, const char *fmt, ...);
+#define pack_event_info(probe_id, record_type, fmt, ...) \
+ pack_task_event_info(current, probe_id, record_type, fmt, __VA_ARGS__)
/* Set most links from us_proc_info to data in the bundle */
int link_bundle(void);